【发布时间】:2015-06-08 02:27:37
【问题描述】:
我正在用 C 语言编写一个 DNS 客户端,它可以向递归 DNS 服务器发出 DNS 查询并读取结果。我目前正在阅读 RFC 1035 并查看 tcpdump 中 DIG 的输出。我注意到在 DNS 查询的 hexdump 中,ARCOUNT 字段似乎设置为 1,QDCOUNT。但是,ANCOUNT 和 NSCOUNT 归零。
我知道 IP 标头是 20 字节,UDP 标头是 8 字节,因此 DNS 标头从 0x266e 开始,ID 为 9838 - 如 DIG 的输出所示。然后,0x120 是元组(QR、OPCODE 等),QDCOUNT 从行 0x0020 开始,值为 0x001。因此,ARCOUNT 似乎也为 1。为什么 DIG 会将此字段设置为 1?请求中可能包含哪些附加部分?
DIG bbc.co.uk
0x0000: 4500 0042 5164 0000 4011 d19e 0000 0000 E..BQd..@.....Qu
0x0010: 0000 0000 b325 0035 002e 6e3f 266e 0120 .....%.5..n?&n..
0x0020: 0001 0000 0000 0001 0362 6263 0263 6f02 .........bbc.co.
0x0030: 756b 0000 0100 0100 0029 1000 0000 0000 uk.......)......
0x0040: 0000
我在IP头中的源地址和目的地址都填了零。
【问题讨论】:
标签: dns packet-capture