请教,为何我tcpdump到自己在不断发dns查询
发布网友
发布时间:2022-04-20 07:11
我来回答
共1个回答
热心网友
时间:2022-07-12 03:21
1.6.3 使用tcpmp观察DNS通信过程
为了看清楚DNS通信的过程,下面我们将从ernest-laptop上运行host命令以查询主机www.baidu.com对应的IP地址,并使用tcpmp抓取这一过程中LAN上传输的以太网帧。具体的操作过程如下:
$ sudo tcpmp -i eth0 -nt -s 500 port domain
$ host –t A www.baidu.com
这一次执行tcpmp抓包时,我们使用“port domain”来过滤数据包,表示只抓取使用domain(域名)服务的数据包,即DNS查询和应答报文。tcpmp的输出如下:
1. IP 192.168.1.108.34319 > 219.239.26.42.53: 57428+ A? www.baidu.com. (31)
2. IP 219.239.26.42.53 > 192.168.1.108.34319: 57428 3/4/4 CNAME www.a.shifen.com., A 119.75.218.77, A 119.75.217.56 (226)
这两个数据包开始的“IP”指出,它们后面的内容描述的是IP数据报。tcpmp以“IP地址.端口号”的形式来描述通信的某一端;以“>”表示数据传输的方向,“>”前面是源端,后面是目的端。可见,第一个数据包是测试机器ernest-laptop(IP地址是192.168.1.108)向其首选DNS服务器(IP地址是219.239.26.42)发送的DNS查询报文(目标端口53是DNS服务使用的端口,这一点我们在前面介绍过),第二个数据包是服务器反馈的DNS应答报文。
第一个数据包中,数值57428是DNS查询报文的标识值,因此该值也出现在DNS应答报文中。“+”表示启用递归查询标志。“A?”表示使用A类型的查询方式。“www.baidu.com”则是DNS查询问题中的查询名。括号中的数值31是DNS查询报文的长度(以字节为单位)。
第二个数据包中,“3/4/4”表示该报文中包含3个应答资源记录、4个授权资源记录和4个额外信息记录。“CNAME www.a.shifen.com.,A 119.75.218.77,A 119.75.217.56”则表示3个应答资源记录的内容。其中CNAME表示紧随其后的记录是机器的别名,A表示紧随其后的记录是IP地址。该应答报文的长度为226字节。
注意 我们抓包的时候没有开启tcpmp的-X选项(或者-x选项)。如果使用-X选项,我们将能看到DNS报文的每一个字节,也就能明白上面31字节的查询报文和226字节的应答报文的具体含义。限于篇幅,这里不再讨论,读者不妨自己分析。