DNS响应答案和权威部分

Jak*_*ake 5 dns response wireshark web-traffic network-traffic

我一直在关注Wireshark中的DNS响应数据包,并且无法理解答案和权威部分的十六进制编码.

考虑DNS查询:mail.abcd.com

答案部分包含名称字段,其十六进制编码因:

 0xc00c
 0xc012
Run Code Online (Sandbox Code Playgroud)

它们都导致在该字段中填充整个名称.

权威部分还包含名称字段,但通常为:

 0xc010
Run Code Online (Sandbox Code Playgroud)

这导致abcd.com在该领域居住.

任何人都可以告诉填充这些字段的惯例是什么,因为它非常令人困惑.

谢谢

Aln*_*tak 9

DNS标签使用的格式为<length><data ...>.

标签最长可以是63个字节,因此该<length>字段剩下两个比特.这些用于编码标签类型.

如果前两位是,0b11则剩余的六个位而是与后一个字节组合形成压缩指针,该压缩指针是DNS有效负载内的偏移到另一个标签的先前实例.

由于DNS协议头长度为12个字节,因此最短的合法偏移量为12个字节,给出了您在上面看到的值0xc00c.

[ 技术上,人们可能构造一个指向标题的压缩指针,但它并不严格符合协议].

我强烈建议不要试图从线程数据包中反向设计规范 - 你将不可避免地错过任何东西.只需阅读RFC 1035 - 所有核心内容都在那里.


Cel*_*ada 5

阅读规范中的名称压缩.0xc,0x12和0x10是指向数据包中名称"mail.abcd.com"和"abcd.com"的早期副本的指针.