(1)DNS报文格式
上图就是DNS报文的格式,从上图可以看出,DNS报文格式分为五大部分。分别为: 报文头Header, 问题区段(Question),回答区段(Answer),权威区段(Authority), 额外信息区段(Additional)。但是不是五个段必须存在,只有Header必须存在,别的段在不同情况下不存在。
首先看看Header段中每个字段的含义:
DNS ID号(DNS ID Number): 用来对应DNS查询和DNS响应
查询/响应(Query/Response, QR): 用来指明这个报文是DNS查询还是响应,占1个比特位。为1代表响应,0代表查询
操作代码(OpCode):用来定义消息中请求的类型
权威应答(Authoritative Answer, AA):这个比特位在响应的时候才有意义。则说明这个响应是由域内权威域名服务器发出的
截断(Truncation, TC):用来指出报文比允许的长度还要长,导致被截断
期望递归(Recursion Desired, RD):如果设置了RD,就建议域名服务器进行递归解析,递归查询的支持是可选的。
支持递归(Recursion Available, RA): 当响应中设定了这个值,说明域名服务器支持递归查询
保留(Z): 未使用,用0表示
响应代码(Response Code): 在DNS响应中指明错误,占4个比特位。
问题计数(Question Count): 问题区段中的问题记录数
回答计数(Answer Count):回答区段中的回答记录数
域名服务计数(Name Server Count):权威区段中的记录数
额外记录数(Additional Records Count):在额外信息区段中的记录数
问题区段(Question Section):包含有被发送到DNS服务器的一条或者多条信息
回答区段(Answer Section):含有用来回答查询的一条或者多条资源记录
权威区段(Authority Section):包含权威域名服务器的资源记录
额外信息区段(Additional Information Section): 包含资源记录且大小可变的区段。
(2)捕获DNS数据包
打开Wireshark,捕捉数据,然后打开浏览器,输入网址:www.baidu.com
可以明显的看到18帧是DNS请求帧,19帧是DNS回应帧
(3)分析DNS请求帧,对应的是18帧
从上图的分析可看出,请求计数为1,请求的主机域名为:www.baidu.com
(4)分析DNS响应帧,对应的是19帧
从上图可以看到,问题计数1个,也就是对应的请求帧中的问题。而回应计数3个。 分析Answer字段,如下
分析权威区段:此区段包含权威域名服务器资源记录
分析额外信息区段: