初步说明
是的,我知道存在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
指定相同内容,我想知道是否应该假设存在一些差异。
答案 0 :(得分:1)
没有填充。如果您有疑问,请从根服务器捕获有关根区域(其名称是单个NULL八位字节,因此是奇数长度)的查询(可以信任它们以获得正确的协议,因为它在现实世界中使用并看看它。