【基础服务】简单理解DNS的递归、迭代查询 - DNS(一)

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)

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)把最终的结果返回给我。

再看DNS的named.conf配置:

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

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

上面说过:

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

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

RD位的解析如下:

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

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

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

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

客户端使用迭代查询:

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

dig www.baidu.com +norecurse @199.7.91.13

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

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

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

【基础服务】简单理解DNS的递归、迭代查询 - DNS(一),布布扣,bubuko.com

时间: 2024-11-12 19:22:17

【基础服务】简单理解DNS的递归、迭代查询 - DNS(一)的相关文章

DNS递归查询和迭代查询的区别

转载地址:http://blog.csdn.net/wuchuanpingstone/article/details/6720723 递归查询和迭代查询的区别 (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机.如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机. (2)迭代查询 DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能

DNS递归查询与迭代查询

基础知识 1.域名系统 2.域名服务器 域名解析过程 1.在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析. 2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析. 3.如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器, 此服务器收到查

DNS递归查询和迭代查询

迭代查询和递归查询的区别 1.递归查询:{一次查询} 是一般客户机和本地DNS服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会代替用户向另外的DNS服务器发出查询请求,直到得到结果然后转交给客户机.2.迭代查询;{反复查询}    一般DNS服务器之间属迭代查询,假如DNS服务器A不能响应DNS服务器B的请求,则它会将DNS服务器C的IP给DNS服务器A,以便其再向DNS服务器C发出请求.

DNS的递归查询和迭代查询

百度运维部二面,直接懵逼的节奏 (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求, 必须使用一个准确的查询结果回复客户机. 如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机. 客户机和服务器之间的查询是递归查询 是递归查询告诉客户机IP (2)迭代查询 DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址, 当客户机发送查询请求时,

【Linux 基础服务之DNS】

转自:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名.我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出

Linux基础服务_DNS原理以及正反向DNS配置

DNS服务的原理介绍:         dns(Domain Name Service,域名解析服务)    为c/s架构的服务 通常默认的监听的端口为:53/tcp     53/udp 将dns服务实现的应用程序为:bind        (rpm包 )          DNS的树状结构:                                  根域为:.  tld:(Top Level Domain  顶级域)                         组织域:.com,

SICP 关于递归迭代的重新理解以及尾递归的引入...

看了线性的递归和迭代以及树形递归迭代这部分的内容,感觉对递归和迭代又有了新的理解...所以记录一下,也算对这部分内容的总结吧. 首先书中提到的递归与迭代和我以前想的有点不一样,我感觉书中提到的递归和迭代是站在编译器/解释器的基础上来看的,而我之前是站在语言(类C语言的)的具体实现的角度看的.理解这个需要先看书中提到的两个概念: 1.递归过程                    2.递归的计算过程 可以用书中举出的阶乘的例子来看 实现1: 1 (factorial 6) 2 (* 6 (fact

简单理解DNS解析流程(一)

0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如何知道? 向知道的人查询,也就是向dns服务器查询 0x1 dns解析流程 -> 以客户端浏览器访问 www.rootkit.org 域名为例,首先,它会去检查当前浏览器缓存是否有对应IP,如果有,就直接响应,如果没有,就继续往下找 -> 接着,操作系统会去检查自己的host文件,如果从中没找到对

DNS解析原理:递归 && 迭代

DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询. 先不说那么多,看两张图你应该就明白了. 递归: 迭代: 再介绍几个概念: 本地名称服务器 又称Local DNS, 可以是默认的运营商提供的Local DNS 或者自己设置的DNS. 下图是windows下默认获取的运营商Local DNS或者 自己设置的Local DNS 权威DNS 权威 DNS 由域名解析服务商建设,提供域名管理服务,维护域