DNS消息是否将名称填充为偶数个字节?

时间:2017-08-24 09:54:46

标签: dns rfc rfc1035

初步说明

  

是的,我知道存在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不需要填充。由于他们没有在答案RR中为NAME指定相同内容,我想知道是否应该假设存在一些差异。

1 个答案:

答案 0 :(得分:1)

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