RFC 1035-正斜杠的含义?

时间:2019-08-06 08:45:48

标签: rfc1035

我一直在研究RFC 1035以将其实现为C ++中的DNS客户端。在上述备忘录的RR定义中隐式使用语法确实有麻烦。

请查看以下数据结构定义示例。它们说明了我的理解问题。

RDATA标头的开始

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

开始进行SOA RR

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                     MNAME                     /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                     RNAME                     /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    SERIAL                     |
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

从布局中可以推断出RDATA Header的“ TYPE”成员是16位大字节序字段。但是“ NAME”成员呢?为什么定义在框的边框处有一个“ /”正斜杠?在RFC中没有明确说明,这似乎是隐式使用。

然后是具有MNAME和RNAME成员的“ SOA” RR。我开始在这里看到一种模式:所有带有正斜杠的成员似乎都是字符串。

但是有多种方式对字符串进行二进制编码:

  1. 按长度排列数据的8/16/32位长度项
read unsigned word x
read data of length x
  1. 以零结尾的字符串
read byte x until x is 0
  1. 隐式使用整个RDATA长度
cnt = 0
while cnt < RDATA_HEADER.RDLENGTH do
    read byte x and store it
    cnt++
end

所以我的问题是:在RFC定义的任何情况下,如何正确解释“ /”的使用? “ /”和“ |”的混合使用暗示成员的最小人数?是否有RFC可以更清楚地定义这些框的用途?

0 个答案:

没有答案
相关问题