为什么 DNS 请求中句点的十六进制值不是 0x2E,为什么它会改变?

Mic*_*ake 3 dns networking udp

在wireshark中查看DNS请求www.google.com及其十六进制是03 77 77 77 06 67 6f 6f 67 6c 65 03 63 6f 6d 00

有点困惑为什么第一个句点是03(以及为什么它在那里),第二个是06,最后一个是03

Ste*_*ich 6

DNS 协议层在RFC 1035中定义。引用“3.1.命名空间定义”:

消息中的域名以标签序列的形式表示。每个标签都表示为一个八位位组长度字段,后跟该八位位组数。由于每个域名都以根的空标签结尾,因此域名以长度字节零终止。

因此www.google.com在 DNS 数据包中编码为:

03 77 77 77                  length 3, "www"
06 67 6f 6f 67 6c 65         length 6, "google"
03 63 6f 6d                  length 3, "com"
00                           length 0 (end of label)
Run Code Online (Sandbox Code Playgroud)