DNS 回答部分中 NAME 字段的格式是什么?

Eph*_*ral 1 domain-name-system rfc

NAME 字段在 RFC 1035 第 4.1.3 节中没有详细说明。

我想(以编程方式)了解 ANSWER 消息类型的此字段,并为此搜索了这些资源(数据表)。

我遵循了:

  • IETF RFC 2181
  • www.ccs.neu.edu

我错过了什么吗?

伪代码:

题:

byte[]{
    0x00,0x00,
    0x01,0x00,
    0x00,0x02,
    0x00,0x00,
    0x00,0x00,
    0x00,0x00,
    0x03,0x77,0x77,0x77,
    0x12,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0x13,0x74,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01
}
Run Code Online (Sandbox Code Playgroud)

回答:

byte[]{
    0x00,0x00,
    0x81,0x80,
    0x00,0x02,
    0x00,0x01,
    0x00,0x00,
    0x00,0x00,
    0x03,0x77,0x77,0x77,
    0x12,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0x13,0x74,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0xC0,0x0C, <----- answer start here , i want to understand this value
    0x00,0x00,
    0x00,0x00,0x06,0xcf,
    0x00,0x04,
    0x07,0x00,0x00,0x01
Run Code Online (Sandbox Code Playgroud)

Mic*_*ton 5

DNS 答案部分中的 NAME 部分的格式与 DNS 问题部分的 QNAME 部分完全相同。

表示为标签序列的域名,其中每个标签由一个长度的八位字节和该数量的八位字节组成。域名以根的空标签的零长度八位字节结束。请注意,该字段可能是奇数个八位字节;不使用填充。

它也受第 4.1.4 节中的压缩方案的约束,因此在典型的 DNS 响应中,您最有可能在问题部分看到全名,并在答案部分看到指向它的指针。

您在问题中明确指出的部分是第 4.1.4 节中的这些压缩值之一。高两位都设置为1,值的其余部分指向响应中引用的字节。在这种情况下,字节 12 (0x00c) 似乎是“www.the_nacketgeek.com”(这是问题部分中的 QNAME)。