最近在学习dns相关的内容,为了加深理解,我在本地进行了抓包。

sudo tcpdump -i en0 host 119.29.29.29 -X

查询的时候指定了服务器119.29.29.29

19:18:46.891014 IP wugerongdeair.60802 > pdns.dnspod.cn.domain: 34717+ [1au] CNAME? my.seeku.top. (41)
0x0000: 4500 0045 ed45 0000 4011 190f c0a8 1f71 E..E.E..@......q
0x0010: 771d 1d1d ed82 0035 0031 3df4 879d 0120 w......5.1=.....
0x0020: 0001 0000 0000 0001 026d 7905 7365 656b .........my.seek
0x0030: 7503 746f 7000 0005 0001 0000 2910 0000 u.top.......)...
0x0040: 0000 0000 00 .....
19:18:46.955087 IP pdns.dnspod.cn.domain > wugerongdeair.60802: 34717 1/0/1 CNAME baidu.com. (64)
0x0000: 4568 005c a12d 4000 2911 3ba8 771d 1d1d Eh.\.-@.).;.w...
0x0010: c0a8 1f71 0035 ed82 0048 d5e4 879d 8180 ...q.5...H......
0x0020: 0001 0001 0000 0001 026d 7905 7365 656b .........my.seek
0x0030: 7503 746f 7000 0005 0001 c00c 0005 0001 u.top...........
0x0040: 0000 0238 000b 0562 6169 6475 0363 6f6d ...8...baidu.com
0x0050: 0000 0029 1000 0000 0000 0000 ...)........

然后发现协议有一些对不上,理论上头32位应该是一致的(标识查询信息的ID),结果发现并不是。
然后怀疑是不是协议的问题,发现抓到的是IP协议全部内容。
应该多看看文档,-X在很多地方都表明了“当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析一些新协议的数据包很方便.”