1

初步说明

是的,我知道 DNS 库和易于使用的 DNS 服务器的存在。我这样做纯粹是为了学术目的,并了解 DNS 查询的工作原理。

问题

我正在查看RFC 1035以了解 DNS 消息的工作原理。我想我或多或少地理解了那份备忘录中的一切。然而,有一件事我无法自主解释。如果您查看第 4.1.3 节,以下是资源记录格式的描述方式:

                                   1  1  1  1  1  1
     0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   |                                               |
   /                                               /
   /                      NAME                     /
   |                                               |
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   |                      TYPE                     |
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   |                     CLASS                     |
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   |                      TTL                      |
   |                                               |
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   |                   RDLENGTH                    |
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
   /                     RDATA                     /
   /                                               /
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

在这个方案中,NAME在一个两字节块的末尾结束。这是否意味着它的字节长度应该始终是 2 的倍数?名称的格式在 RFC 前面描述为标签序列,以零长度标签终止。这意味着,根据名称,它的长度可以任意为偶数或奇数。那么是否NAME需要填充到偶数个字节?如果是这样,我应该如何填充?

我会忽略这个问题并假设不需要填充,如果不是在第 4.1.1 节中指定QNAME不需要填充。由于他们没有NAME在答案 RRs 中指定相同的值,我想知道我是否应该假设存在一些差异。

4

1 回答 1

2

没有填充。如果您有疑问,请从根服务器捕获有关根区域的查询(其名称是单个 NULL 八位字节,因此长度奇数)(可以信任它们以获取正确的协议,因为它在现实世界中使用) 并查看它。

于 2017-08-25T04:51:47.233 回答