这是我一直很好奇但从未问过的那些小事之一。
在 Windows DNS 服务器上,您可以启用 DNS 调试日志记录并观察数据包飞过。
该日志中的一行可能如下所示:
6/5/2013 10:00:32 AM 0E70 PACKET 00000000033397A0 UDP Rcv 10.161.60.71 5b47 Q [0001 D NOERROR] A (12)somecomputer(6)domain(3)com(0)
我感兴趣的部分是最后实际查询的名称:
(12)somecomputer(6)domain(3)com(0)
那些取代句号的数字是什么意思?
您的混淆使问题有点混乱,但您的顶级域绝对不是 com,否则它本来就是
(3)com
.在 DNS 查询中,您请求的名称 (
QNAME
) 以“pascal”风格的字符串格式表示:一个字节表示字符串的长度,后跟那么多字符。名称的每个级别都作为一个单独的字符串发送,不带.
字符,最后发送一个空字符串(长度为 0),因此对地址的查询twelveletter.domain.com.
将是(12)twelveletter(6)domain(3)com(0)
。来自RFC 的4.1.2 :