DNS CNAME类型记录的RDLENGTH字段不正确?

DNS CNAME类型记录的RDLENGTH字段不正确?,dns,cname,Dns,Cname,我一直在使用RFC 1035.4.1.3作为DNS RR格式的参考: RFC说RDLENGTH是“一个无符号的16位整数,指定RDATA字段的长度(以八位字节为单位)”,但在数据报中,我得到的RDLENGTH有时比它应该的长度小2。我已经与wireshark进行了检查,以确保正确获取数据报。这是我在搜索谷歌时得到的一条CNAME记录: C0 0C 00 05 00 01 00 03 95 FC 00 10 03 77 77 77 01 6C 06 67 6F 6F 67 6C 65 03

我一直在使用RFC 1035.4.1.3作为DNS RR格式的参考:

RFC说RDLENGTH是“一个无符号的16位整数,指定RDATA字段的长度(以八位字节为单位)”,但在数据报中,我得到的RDLENGTH有时比它应该的长度小2。我已经与wireshark进行了检查,以确保正确获取数据报。这是我在搜索谷歌时得到的一条CNAME记录:

C0 0C 00 05 00 01 00 03  95 FC 00 10 03 77 77 77
01 6C 06 67 6F 6F 67 6C  65 03 63 6F 6D 00
这就是名字:C0 0C(dgram前面指向www.google.com的指针)
然后输入:00 05(CNAME)
然后班级:00 01(英寸)
然后TTL:00 03 95 FC(无论什么)

然后RDLENGTH:0010(这是16字节,是吗?)

然后是RDATA:
03 77 77 01 6C 06 67 6F 6F 67 6C 65 03 63 6F 6D 00(www.l.google.com-格式正确)

如您所见,RDATA的长度为18字节。18字节是0x12,而不是0x10

之后的A型记录正确报告地址数据的RDLENGTH 4。我是不是遗漏了什么?我认为这是一个错误,但对于每个DNS服务器和每个域,我都会这样做

我想我真正想问的是为什么RDATA比RDLENGTH长,我应该遵循什么规则来适应它,这样我就可以解析任何类型的记录。(具体来说,我能从其他RR类型中期待这种事情吗?)


提前向任何提供建议的人表示感谢。:)

响应数据似乎有误-RDLENGTH应该是18(0x00 0x12),或者RDATA应该不同

我只是在这里运行了一些google查找,我没有看到这个问题。 我得到了要匹配的RDLength 7和RDATA(一个压缩名称)


您的数据包有什么问题吗?

:(它似乎在一夜之间就自我纠正了。它现在报告0x12。我的路由器可能正在做一些wierd吗?谢谢你的回答。我真的准备把我的头发拔出来了。现在我只是感到困惑。我检查了这么多东西,现在它们都工作了。??典型的低端路由器和CPE经常错误地代理DNS protocol。见RFC 5625。