在 DNS 请求中设置了 ARCOUNT header
ARCOUNT set in DNS request header
我正在用 C 编写一个 DNS 客户端,它可以向递归 DNS 服务器发出 DNS 查询并读取结果。我目前正在阅读 RFC 1035 并在 tcpdump 中查看 DIG 的输出。我注意到在 DNS 查询的 hexdump 中,ARCOUNT 字段似乎设置为 1,QDCOUNT。但是,ANCOUNT 和 NSCOUNT 归零。
我知道 IP header 是 20 个字节,UDP header 是 8 个字节,因此 DNS header 从 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
IPheader中的源地址和目的地址我都填了零
这将是 EDNS0 的 OPT pseudo-RR。当原来的 DNS 标准变得很明显还不够时,为了不必更改任何数据格式,选择在特殊资源记录中粘贴新的 headers 字段和补充信息附加部分。这几乎肯定就是您所看到的。
有关详细信息,请参阅 RFC 6891。
我正在用 C 编写一个 DNS 客户端,它可以向递归 DNS 服务器发出 DNS 查询并读取结果。我目前正在阅读 RFC 1035 并在 tcpdump 中查看 DIG 的输出。我注意到在 DNS 查询的 hexdump 中,ARCOUNT 字段似乎设置为 1,QDCOUNT。但是,ANCOUNT 和 NSCOUNT 归零。
我知道 IP header 是 20 个字节,UDP header 是 8 个字节,因此 DNS header 从 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
IPheader中的源地址和目的地址我都填了零
这将是 EDNS0 的 OPT pseudo-RR。当原来的 DNS 标准变得很明显还不够时,为了不必更改任何数据格式,选择在特殊资源记录中粘贴新的 headers 字段和补充信息附加部分。这几乎肯定就是您所看到的。
有关详细信息,请参阅 RFC 6891。