4.4 Authority段

Authority表示权威名称服务器的回复,如图12所示。

wireshark只抓dns包 wireshark抓包dns解析_dns

图12 Authority段

4.4.1 Name段

其中,Name与“4.3.1 NAME段”提到的含义相同,其值为0xc02d。

4.4.2 Type段

Type表示记录类型,SOA叫做“起始授权机构”,SOA 资源记录表明此 DNS 名称服务器是为该 DNS 域中的数据的信息的最佳来源,其对应的值是0x0006。

4.4.3 Class、Time to live和Data length段

之后的Class、Time to live和Data length与“4.3.1 NAME段”提到的含义相同。

4.4.4 Primary name server段

Primary name server指的是主名字服务器,其格式与“3.2.1 QNAME”中的格式相同,即“长度 子域名”,从图12中可以看到,Primary name server的第一个字符值是0x03,表示其第一个子域名的长度是3个字节,接下来的3个字节是子域名0x6e7331,对应的字符串是“ns1”,之后使用“4.3.1 NAME段”中提到的指针方式表示子域,其值为0xc02d,即指向的子域名为“e.shifen.com”。

4.4.5 Responsible authority’s mailbox段

Responsible authority’s mailbox表示负责人(管理员)的邮箱,其格式与“3.2.1 QNAME”中的格式相同,即“长度 子域名”,从图12中可以看到,Responsible authority’s mailbox第一个字符值是0x10,即子域名的长度是16个字节,接下来的16个字节表示子域名,即“baidu_dns_master”,之后使用“4.3.1 NAME段”中提到的指针方式表示子域,其值为0xc00e,即指向的子域名为“baidu.com”,所以Responsible authority’s mailbox的值就是baidu_dns_master.baidu.com。

4.4.6 Serial Number段

Serial Number表示序列号,该序列号是区域的唯一标识符,其大小是4个字节。如图12所示,其值为0x7d8a84f4,转换成十进制是2,106,230,004。

4.4.7 Refresh Interval段

Refresh Interval是表示服务器的刷新间隔,在请求主服务器提供 SOA 记录以查看其是否已更新之前,辅助服务器应等待的时间,单位是秒,大小是4个字节。如图12所示,其值为0x00000005,即间隔5秒钟。

4.4.8 Retry Interval段

Retry Interval是表示当服务器应等待无响应时,主要名称服务器再次请求更新的时间,单位是秒,大小是4个字节。如图12所示,其值为0x00000005,即间隔5秒钟。

4.4.9 Expire limit段

Expire limit段表示过期限制时间,如果辅助服务器在这段时间内没有收到主服务器的响应,则应停止响应对该区域的查询,单位是秒,大小是4个字节。如图12所示,其值为0x00278d00,即间隔30天。

4.4.10 Minimum TTL段

Minimum TTL表示最小TTL时间,生存期(TTL)为所容许的名字服务器对数据缓存的时间长度,一旦生存期到了,名字服务器必须丢弃缓存数据并从授权的名字服务器中重新获取新的数据。这样可以确保域数据在整个网络上的一致性。如图12所示,其值为0x00000e10,即1小时后丢弃缓存。

4.5 Additional段

Additional段是DNS数据包的附加数据,如图13所示。

wireshark只抓dns包 wireshark抓包dns解析_wireshark只抓dns包_02

图13 Additional段

图13中的Additional段是一个OPT pseudo-RR,即“伪资源记录”。因为它属于特殊的传输级消息(transport level message)而不属于DNS的任何数据,所以只能叫做“伪资源记录”。“伪资源记录”包含固定长度部分和可变长度部分。

固定长度部分如图14所示。

wireshark只抓dns包 wireshark抓包dns解析_数据分析_03

图14 固定长度部分

根据图13和图14可以看出,收到的DNS应答的Additional段中的NAME是0x00,表示root域;TYPE的值是0x0029,表示OPT;CLASS即发送端UPD的有效载荷大小是0x0200,即512个字节;TTL即扩展的ROCDE和标志是0x00000005,其中,第一个字节表示0x00表示扩展的RCODE(12bit)中的前8个bit,该值是0x00表示使用的是没有扩展的RCODE,第二个字节0x00表示版本号,版本号越低,说明设置数据的方法越规范,0x00表示设置数据的方法与标准一致;最后两个字节保留,暂时未使用;RDLEN的值是0x0000,表示RDATA的长度是0,即没有RDATA。