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

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

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

我想(以编程方式)了解此字段的 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
}

回答:

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

答案1

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

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

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

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

相关内容