3 查询数据包结构

查询数据包的结构主要包含了图1中的“Header”和“Question”两部分。

3.1 Header部分

Header表示消息头,其具体结构如图4所示。

wireshark dns查询 用wireshark分析dns_wireshark dns查询

图4 Header结构

3.1.1 ID

图4中的ID是“Transaction ID”即为会话ID,长度是16bit。当DNS服务器返回该查询结果时,会使用相同的ID。从图3中可以看到,此时的会话ID是0x120a。

3.1.2 Flags

Flags指的是该数据包的标志,其大小为16bit。Flags的具体结构如图4中第二行所示。

(1)QR

QR是Query Response的缩写,该标志位的长度是1bit,用来指定数据包是Query(查询)还是Response(应答)。当该位的值是0时表示Qurey,当该为的值是1时表示Response。从图3中可以看到,该位的值是0,即表示该数据包为查询。

(2)OPCODE

OPCODE是Operation Code的缩写,即为操作码。该标志位的长度是4bit,用来指定Query的类型。其中,当该标志是0是表示标准查询;该标志是1时表示反向查询;该标志是2时表示服务器状态查询;3-15暂时保留,未使用。

相关链接1:标准查询也叫正向查询,根据域名查询IP地址;反向查询时根据IP地址查询域名;服务器状态查询指的是查询哪些用户在使用DNS服务器以及统计DNS状态查询。

(3)AA

AA是Authoritative Answer的缩写,即权威应答。该标志位的长度是1bit,表示给出应答的服务器是否是权威服务器,当该为是1时表示是权威服务器,是0时表示不是权威服务器。AA标志位只在Response数据包中起作用,在Query数据包中不起作用。从图3中可以看到,在查询数据包中,没有设置该标志位。

相关链接2:权威服务器指的是在自己的配置文件中直接写明了域名与主机IP对应关系并被授权管理该域的服务器。

(4)TC

TC是Truncation的缩写,长度是1bit,指定消息是否需要被截断。当消息的长度比传输信道所允许的长度大时,则需要将该消息截断。当该标志的值是0时,表示消息没有被截断;当该标志的值是1时,表示消息被截断。从图3中可以看到,该标志的值是0,即消息没有被截断。

(5)RD

RD是Recursion Desired的缩写,长度是1bit,指定查询是否是递归查询。当该标志是0时,表示不使用递归查询;当该标志是1时,表示使用递归查询。从图3中可以看到,RD的标志位值是1,即使用递归查询。

相关链接3:递归查询,主机向本地域名服务器的查询一般采用递归查询。当进行递归查询时,如果所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询。

(6)RA

RA是Recursion Available的缩写,长度是1bit。该位的值在应答数据包中设置,指定名称服务器是否支持递归查询。当该位的值是1时表示应答的名称服务器支持递归查询,该位的值是0时,表示不支持。从图3中可以看到,因为是请求数据包,所以RA位没有设置。

(7)Z

Z数据位的长度是3bit,其中第一位暂时未使用,在请求包和应答包中都应该将Z标志位设置为0;第二位表示应答服务器是否验证了该查询的数字签名,0表示未验证,1表示已验证;第三位表示数据是否已经被服务器验证,0表示未验证的数据,1表示已验证数据。

(8)RCODE

RCODE是Response Code的缩写,该标志位的长度是4bi,在应答包中使用。该标志位的值是0时表示没有错误;1表示格式错误;2表示服务器失败;3表示名字错误;4表示没有实现;5表示请求被服务器拒绝;6-15暂时还未使用。

3.1.3 QDCOUNT

QDCOUNT表示图1中Question段中包含的条目数量,是一个16位的无符号整型。从图3中可以看到,Question段中包含的1个条目。

3.1.4 ANCOUNT

ANCOUNT表示图1中Answer段中包含的条目数量,是一个16位的无符号整型。从图3中可以看到,因为是请求数据包,因此Answer段中包含的0个条目。

3.1.5 NSCOUNT

NSCOUNT表示图1中Authority段中包含的条目数量,是一个16位的无符号整型。从图3中可以看到,因为是请求数据包,因此Authority段中包含的0个条目。

3.1.6 ARCOUNT

ARCOUNT表示图1中Additional段中包含的条目数量,是一个16位的无符号整型。从图3中可以看到,因为是请求数据包,因此Additional段中包含的0个条目。