14.1.5 实际的DNS报文数据

14.1.5  实际的DNS报文数据

在客户机利用域名访问一台主机时,首先要向所设的DNS服务器发送查询报文,以获得该域名所对应的IP地址,DNS服务器要根据具体情况返回给客户端应答。下面通过抓包工具Ethereal捕获这些数据包,并进行观察,以便更深入地理解DNS协议。

假设在一台IP地址为10.10.91.252的客户机上执行ping www.baidu.cn命令,成功执行完成后,用Ethereal抓到的数据包如图14-10所示。在命令执行前,先用ipconfig /flushdns清除本地的DNS缓存,否则客户机有可能不发送DNS报文而是直接从DNS缓存中得到IP地址。

从图14-10可以看出,客户机10.10.91.252ping一个域名时,要先通过DNS查询获得该域名所对应的IP地址,因此向所设的DNS服务器10.10.1.29发送了数据包1,可以看出查询类型为ADNS服务器10.10.1.29通过数据包2告诉客户机,www.baidu.cn域名所对应的IP地址是220.181.6.18。于是,ping命令向220.181.6.18发送了数据包3579四个ICMP请求,而220.181.6.18则通过46810四个数据包进行了回复。

从数据包2还可以看出,DNS服务器返回了一条CNAME资源记录和两条A资源记录,客户端根据自己的算法取出了第一条A资源记录中所包含的IP地址。另外,从图4-10中所示窗口的中间部分还可以看出,DNS报文是通过UDP协议发送的,服务器的端口号是53号。

14-10  Ethereal抓到的DNS数据包

%说明:以上是DNS客户端与服务器的报文交互情况。实际上,DNS服务器为了解析www.baidu.cn域名,可能还需要与其他DNS服务器进行交互,这些交互数据包不能在客户机上捕获。

你可能感兴趣的:(14.1.5 实际的DNS报文数据)