(1)什么是DNS服务器?

    DNS(Domain Name System, 域名系统)是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不是用去记住能够被机器直接读取的IP数串。在互联网上域名与IP地址之间是一对一或者多对一的,如果要记住所以的IP地址,显然是不太容易的。虽然域名便于人们记住,但是主机之间只能互相认识IP地址,所以它们之间的转化就需要DNS来完成。

   

wireshark过滤dns查询请求 wireshark过滤dns域名_Wireshark

     上图表示DNS将www.baidu.com解析后的IP地址为: 119.75.217.109

(2)DNS的系统结构

    在整个互联网中,如果将数亿的主机的域名和IP地址的对应关系交给一台DNS服务器管理,并处理整个互联网中客户机的域名解析请求,恐怕很难找到能承受如此巨大负载的计算机。因此,整个域名系统采用了分布式数据库的方式,讲不同范围内的域名IP地址对应的关系交给不同的DNS服务器管理,这个分布式数据库采用树形结构。如下图


wireshark过滤dns查询请求 wireshark过滤dns域名_域名服务器_02

(3)DNS系统解析过程

    接下来以www.abc.com.cn域名为例子讲解DNS系统解析的过程

    a:DNS客户端向本地域名服务器发送一个查询递归查询,请求查找www.abc.com.cn的IP地址。

    b: 本地域名服务器采用迭代的方式查询。它先向一个根域名服务器查询。

    c:根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器cn的IP地址

    d:本地域名服务向顶级域名服务器cn查询,顶级域名服务器告诉本地域名服务器,下一次应查询com.cn二级域名服务器

    e:本地域名服务器再向com.cn二级域名服务器发出查询请求,二级域名服务器告诉本地域名服务器,下一次查询三级域名服务器abc.com.cn

    f:本地域名服务器再向abc.com.cn发送查询请求, 三级域名服务器abc.com.cn找到了www.abc.com.cn,就将这个地址发给本地域名服务器‘

    g:本地域名服务器会将这个地址发给DNS客户机,客户机发起与www.abc.com.cn的连接

     以上就是DNS的域名解析过程,在该解析过程中通常会用到两种查询方式,分别是递归查询和迭代查询。

    所谓递归查询: 主机向本地域名服务器的查询一般都是采用递归查询。 如果主机所询问的本地域名服务器不知道被查寻的域名的IP地址时,那么本地服务器就以DNS客户机的身份,向其他根域名服务器继续发送查询请求

   所谓迭代查询: 本地域名服务器向根域名服务器的查询通常采用迭代查询方式。当根域名服务器收到本地域名服务器的迭代请求时,要么给出所要查询的IP地址,要么告诉下一个应该去那个域名服务器查询。

  

wireshark过滤dns查询请求 wireshark过滤dns域名_wireshark过滤dns查询请求_03

       上图是本地域名服务器采用的迭代的方式查询。


wireshark过滤dns查询请求 wireshark过滤dns域名_IP_04

  上图是本地域名服务器采用的递归查询

(1)DNS报文格式


wireshark过滤dns查询请求 wireshark过滤dns域名_Wireshark_05

Authority), 额外信息区段(Additional)。但是不是五个段必须存在,只有Header必须存在,别的段在不同情况下不存在。

    首先看看Header段中每个字段的含义:

    DNS ID号(DNS ID Number): 用来对应DNS查询和DNS响应

    查询/响应(Query/Response, QR): 用来指明这个报文是DNS查询还是响应,占1个比特位。为1代表响应,0代表查询

    操作代码(OpCode):用来定义消息中请求的类型

    权威应答(Authoritative Answer, AA):这个比特位在响应的时候才有意义。则说明这个响应是由域内权威域名服务器发出的

):用来指出报文比允许的长度还要长,导致被截断

    期望递归(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

   

wireshark过滤dns查询请求 wireshark过滤dns域名_DNS_06

   可以明显的看到18帧是DNS请求帧,19帧是DNS回应帧

(3)分析DNS请求帧,对应的是18帧

   

wireshark过滤dns查询请求 wireshark过滤dns域名_wireshark过滤dns查询请求_07

   从上图的分析可看出,请求计数为1,请求的主机域名为:www.baidu.com

(4)分析DNS响应帧,对应的是19帧


wireshark过滤dns查询请求 wireshark过滤dns域名_域名服务器_08

从上图可以看到,问题计数1个,也就是对应的请求帧中的问题。而回应计数3个。 分析Answer字段,如下

 

wireshark过滤dns查询请求 wireshark过滤dns域名_DNS_09

   分析权威区段:此区段包含权威域名服务器资源记录

    

wireshark过滤dns查询请求 wireshark过滤dns域名_wireshark过滤dns查询请求_10

   

   分析额外信息区段:

  

wireshark过滤dns查询请求 wireshark过滤dns域名_域名服务器_11