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

Do DNS messages pad names to an even number of bytes?

初步说明

Yes, I am aware of the existence of DNS libraries and easy-to-use DNS servers. I am doing this purely for academic purposes, and to get a grasp of how DNS queries work.

问题

我正在查看 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 在两个字节块的末尾结束。这是否意味着它的字节长度应该始终是二的倍数?名称的格式在前面的 RFC 中描述为一系列标签,以零长度标签结尾。这意味着,根据名称,它的长度可以任意为偶数或奇数。那么 NAME 是否需要填充到偶数个字节?如果是这样,我应该怎么填充?

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

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