为什么';t此DNS q的QNAME。以空字符结尾?

为什么';t此DNS q的QNAME。以空字符结尾?,dns,mdns,Dns,Mdns,我用WireShark监视端口5353(mDNS),遇到以下DNS问题: 根据QNAME第4.1.2节: 一种表示为一系列标签的域名,其中每个标签由一个长度八位字节加上该数量的八位字节组成。域名以根的空标签的零长度八位字节结尾 这似乎与我在上面的截图中所看到的相矛盾。最后一个标签以c0 12结尾,而不是00。这是为什么?为什么没有在RFC中记录?显然,当标签序列以c0 12结尾时,这表示一个间接指针。这大致相当于声明“在DNS查询中转到此偏移量并从那里继续读取” 前两位是常量(c0),其余14

我用WireShark监视端口5353(mDNS),遇到以下DNS问题:

根据QNAME第4.1.2节:

一种表示为一系列标签的域名,其中每个标签由一个长度八位字节加上该数量的八位字节组成。域名以根的空标签的零长度八位字节结尾


这似乎与我在上面的截图中所看到的相矛盾。最后一个标签以
c0 12
结尾,而不是
00
。这是为什么?为什么没有在RFC中记录?

显然,当标签序列以
c0 12
结尾时,这表示一个间接指针。这大致相当于声明“在DNS查询中转到此偏移量并从那里继续读取”

前两位是常量(
c0
),其余14位是从查询开始的偏移量。例如,在我的问题中,
c012
表示QNAME的下一部分应该来自查询中的47个字节

05 6c 6f 63 61 6c 00    .local.

可能相关:我在WireShark source code.yep中的DNS解析器中找到了,记录在4.1中。4@DusanBajic我发现他们稍后在文档中记录它,而不是在该部分中介绍它,这有点违反直觉。答案似乎在4.1.2中:
该部分包含QDCOUNT(通常为1)条目…
-看起来同一消息中有多个查询的情况应该非常罕见。顺便说一句,我发现你的问题很有趣,而且我进行了调查,因为我不知道答案,我迟到了几秒钟:),不过,我学到了一些新东西。@DusanBajic,这很酷:)我只是通过阅读WireShark DNS剖析器的源代码才知道发生了什么。