IT技术互动交流平台

简单理解DNS的递归、迭代查询DNS(一)

作者:hxw168  发布日期:2014-05-13 16:05:04

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

 

简单理解DNS的递归、迭代查询过程:

 

客户端发出查询www.163.com 域名对应IP地址的请求,下图是在dns服务端使用tcpdump抓取的通迅过程。

 

客户端(192.168.198.1)服务端(192.168.198.190)

 

wKioL1Nt3dKQKgwdAAP_fIrdmmU946.jpg

 

wKiom1Nt3hCzu84AAARplzLuVT8420.jpg

 

1、客户端发一个dns查询请求到dns服务器

2、190收到请求后先查询本地缓存,若是没缓存有记录,则直接返回给客户机,若没有,服务端向根服务器发出dns查询请求。

3、根会返回负责.com的服务器190,190又向这个IP发起查询,直到找出www.163.com对应的IP地址。(www.163.com是一个CNAME,com服务器会返回lxdns.com给190,直到找出163所对应的A记录)

4、190把查询出来的结果返回给客户端。

 

递归:客户端只发一次请求,要求对方给出最终结果。

 

迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。

 

授权回答:向dns服务器查询一个域名,刚好这个域名是本服务器负责,返回的结果就是授权回答。

 

环境如下:

客户端-----本地dns服务端----外网

 

从递归和迭代查询可以看出:

客户端-本地dns服务端:这部分属于递归查询。

本地dns服务端---外网:这部分属于迭代查询。

 

一般情况下,dns client发送的请求,都是属于递归查询请求。

回到客户机查询163.com的场景,看下图:这个是客户机发出的请求,他的flags标中的RD位是1,即这个是递归查询请求,要求dns服务器(190)把最终的结果返回给我。

 

wKioL1Nt3lzz9XF0AASUwWmpBbc846.jpg

 

再看DNS的named.conf配置:

 

wKiom1Nt3ofiE8R6AAGZNC7XO-0465.jpg

 

190这台dns服务器named.conf配置文件中的recursion设成yes,表示这台服务器接收递归的dns查询请求。

 

wKiom1Nt3sODlMx6AAN-TdkQ408141.jpg

 

 

Dig出来的结果中的flags行,有个ra标志,这个表示这台服务器允许递归。

 

上面说过:

本地dns服务端---外网:这部分属于迭代查询。

 

OK,看190这台机器的查询请求数据包,可以看到190这台机发出去的dns查询请求,他的RD位都为0:

 

wKioL1Nt3r_Rx1b5AAVCTOTcrzc081.jpg

 

 

RD位的解析如下:

wKiom1Nt30qTxvKJAAVvS3Qdsjo494.jpg

如果named.conf设置:recursion no; 重启named服务。

 

wKioL1Nt30LgUMfYAAG7fywz_Dc643.jpg

 

Flags里的ra已没有了,说明这台服务器不允许我这个IP地址递归。

并提示递归请求,但不可用。recursion requested but not available

 

 

查这台服务器负责的域名,返回有结果,并且flags里有个aa,这个表示返回的是权威答案。

 

wKiom1Nt34vSH78FAAJo_7ST_V4870.jpg

 

 

客户端使用迭代查询:

向根服务器发一个迭代查询

dig www.baidu.com +norecurse @199.7.91.13

+norecurse 表示发出去的dns请求是迭代查询,里面的rd标志位为0

 

由于根服务器没有授权回答,所以它返回能解答该查询的其他名字服务器列表。如下图:

wKioL1Nt32CDIk8AAAMvK7QYJkQ512.jpg

 

注:根服务器flags没有ra,所以这台根服务器关闭递归查询。

Tag标签: DNS  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规