(1)什么是DNS服务器?
DNS(Domain Name System, 域名系统)是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不是用去记住能够被机器直接读取的IP数串。在互联网上域名与IP地址之间是一对一或者多对一的,如果要记住所以的IP地址,显然是不太容易的。虽然域名便于人们记住,但是主机之间只能互相认识IP地址,所以它们之间的转化就需要DNS来完成。
上图表示DNS将www.baidu.com解析后的IP地址为: 119.75.217.109
(2)DNS的系统结构
在整个互联网中,如果将数亿的主机的域名和IP地址的对应关系交给一台DNS服务器管理,并处理整个互联网中客户机的域名解析请求,恐怕很难找到能承受如此巨大负载的计算机。因此,整个域名系统采用了分布式数据库的方式,讲不同范围内的域名IP地址对应的关系交给不同的DNS服务器管理,这个分布式数据库采用树形结构。如下图
(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地址,要么告诉下一个应该去那个域名服务器查询。
上图是本地域名服务器采用的迭代的方式查询。
上图是本地域名服务器采用的递归查询
(1)DNS报文格式
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
可以明显的看到18帧是DNS请求帧,19帧是DNS回应帧
(3)分析DNS请求帧,对应的是18帧
从上图的分析可看出,请求计数为1,请求的主机域名为:www.baidu.com
(4)分析DNS响应帧,对应的是19帧
从上图可以看到,问题计数1个,也就是对应的请求帧中的问题。而回应计数3个。 分析Answer字段,如下
分析权威区段:此区段包含权威域名服务器资源记录
分析额外信息区段: