【发布时间】:2020-08-27 17:35:27
【问题描述】:
在阅读 RFC 1035(又名域名 - 实施和规范)时,我发现了以下内容:
4.1.4。消息压缩
为了减小消息的大小,域系统使用了一个 消除域名重复的压缩方案 信息。在此方案中,整个域名或标签列表位于 域名的结尾被替换为指向先前出现的指针 同名。
指针采用两个八位字节序列的形式:
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 1 1| OFFSET |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
前两位是 1。这允许区分指针 来自标签,因为标签必须以两个零位开始,因为 标签限制为 63 个八位字节或更少。 (10 和 01 组合 保留以供将来使用。)OFFSET 字段指定从 消息的开始(即,ID 字段的第一个八位字节) 域标头)。零偏移量指定 ID 字段的第一个字节, 等等
为什么对标签的“63 个八位字节或更少”限制可以保证以两个一 (1) 位开头的指针可以与标签区分开来?
【问题讨论】:
-
第一位是 2^7 又名 128,接下来是 64。因此,如果现在切换它,则值是 64 或更大,因此如果长度为 63 或更少,则相反为 0,另一个为 128,因此它不能是偏移量。