【问题标题】:ARCOUNT set in DNS request header在 DNS 请求标头中设置 ARCOUNT
【发布时间】: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


    【解决方案1】:

    这将是 EDNS0 的 OPT 伪 RR。当很明显原始 DNS 标准还不够时,为了不必更改任何数据格式,选择将新的标头字段和补充信息粘贴在附加部分的特殊资源记录中。这几乎肯定是您所看到的。

    有关详细信息,请参阅 RFC 6891。

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 2020-12-22
      • 2023-04-03
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      相关资源
      最近更新 更多