递归服务器,路由递归

dns中递归查询与迭代查询的区别

递归查询和迭代查询都是域名系统(DNS)中的查询方法,它们之间的区别如下:

1.递归查询(Recursive Query):当一个客户端发起一个递归查询时,DNS服务器会主动去查询其他DNS服务器以获取所需的信息,并将查询结果返回给客户端。在递归查询中,客户端只需发起一次查询请求,然后等待DNS服务器返回查询结果。

2.迭代查询(Iterative Query):当一个客户端发起一个迭代查询时,DNS服务器会返回一部分已知的信息给客户端,并给出其他可能能提供所需信息的DNS服务器的地址。然后,客户端根据给出的地址继续向其他DNS服务器发起查询请求,直到获得所需信息或到达最终的DNS服务器。在迭代查询中,客户端需要多次发起查询请求和处理返回结果。总的来说,递归查询是一种由DNS服务器代为查询并返回结果的查询方式,而迭代查询是一种由客户端自行查询并处理结果的查询方式。递归查询相对于迭代查询来说更加方便简洁,因为客户端只需要发起一次查询请求并等待回复,而无需跟踪和处理多次查询。但迭代查询能够提供更高的可控性和灵活性,因为客户端可以决定下一步查询哪个DNS服务器,并可以根据需要进行多次查询和处理。

解释一下DNS的递归解析是什么含义

一个完整的域名格式应该是“www.abc.com.”最后的那个“.”就叫根域,也叫点域,通常在域名中都是省略的。

递归查询就是主机向DNS服务器发送域名查询请求,服务器直接把查询的结果返回给主机。

与递归查询相对应的是迭代查询。

迭代查询的步骤是:

1、主机将查询请求发送到本地DNS服务器。

2、本地DNS服务器查询不到结果。即将该请求转发到互联网上的根域。

3、根域将所要查询域名中的顶级域(假设要查询www.abc.com,该域名的顶级域就是com)的服务器IP地址返回到本地DNS。

4、本地DNS根据返回的IP地址,再向顶级域(就是com域)发送请求。

5、com域服务器再将域名中的二级域(即www.abc.com中的abc。如果是www.abc.com.cn,它的顶级域就是cn,com在这里就变成了二级域)的IP地址返回给本地DNS。

6、本地DNS再向二级域发送请求进行查询。

7、之后不断重复这样的过程,直到本地DNS服务器得到最终的查询结果,并返回到主机。这时候主机才能通过域名访问该网站。

DNS解析原理:递归 VS 迭代

DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询,递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。

“递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器,(又称Local DNS,可以是默认的运营商提供的Local DNS或者自己设置的DNS)不能解析的话,则后面的查询全由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从权威名称服务器得到了正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果。

下图是windows下默认获取的运营商Local DNS或者自己设置的Local DNS

在这个查询过程中,一直是以本地名称服务器(Local DNS)为中心的,DNS客户端只是发出原始的域名查询请求报文,然后就一直处于等待状态的,直到本地名称服务器发来了最终的查询结果。此时的本地名称服务器就相当于中介代理的作用。如果考虑了本地名称服务器的缓存技术(也就是在DNS服务器上对一定数量的以前查询记录保存一定时间,这样后面查询同样的域名信息时就可直接从缓存中调出来,以加速查询效率)的话,则递归解析的基本流程如下:

(1)客户端向本机配置的本地名称服务器(在此仅以首选DNS服务器为例进行介绍,所配置其它备用DNS服务器的解析流程完全一样)发出DNS域名查询请求。

(2)本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务器就直接把查询的结果返回给客户端;如果本地缓存中没有该域名的记录,则本地名称服务器再以DNS客户端的角色发送与前面一样的DNS域名查询请求发给根名称服务器。

(3)根名称服务器收到DNS请求后,把所查询得到的所请求的DNS域名中顶级域名所对应的顶级名称服务器地址返回给本地名称服务器。

(4)本地名称服务器根据根名称服务器所返回的顶级名称服务器地址,向对应的顶级名称服务器发送与前面一样的DNS域名查询请求。

(5)对应的顶级名称服务器在收到DNS查询请求后,也是先查询自己的缓存,如果有所请求的DNS域名的记录项,则相接把对应的记录项返回给本地名称服务器,然后再由本地名称服务器返回给DNS客户端,否则向本地名称服务器返回所请求的DNS域名中的二级域名所对应的二级名称服务器地址。

然后本地名称服务器继续按照前面介绍的方法一次次地向三级、四级名称服务器查询,直到最终的对应域名所在区域的权威名称服务器返回到最终的记录给本地名称服务器。然后再由本地名称服务器返回给DNS客户,同时本地名称服务器会缓存本次查询得到的记录项。

DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。

DNS递归名称解析:在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。

DNS迭代名称解析:(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

通过图片看看他们的不同:

权威 DNS是特定域名记录(例如“example.com”)在域名注册商处所设置的 DNS服务器,用于特定域名本身的管理(增加、删除、修改等)。

权威 DNS服务器只对自己所拥有的域名进行域名解析,对于不是自己的域名则拒绝访问。比如,向“example.com”的权威 DNS服务器查询“test.com”的域名肯定会查询失败。

递归 DNS(也称本地 DNS或者缓存 DNS)用于域名查询。递归 DNS会迭代权威服务器返回的应答,直至最终查询到的 IP地址,将其返回给客户端,并将请求结果缓存到本地。

对用户发出的域名解析请求,递归 DNS必须给出一个最终的 IP地址结果。完整的递归DNS查询流程需要 DNS服务器从根域名“.”服务器,顶级域名服务器(例如“.com”),一级域名服务器(例如“example.com”)等一级一级递归查询,直到最终找到权威服务器取得结果,并返回给客户。同时,递归服务器根据域名 TTL,缓存查询结果,便于相同域名重复查询。

递归 DNS服务器大多数在运营商端,负责网络接入终端的 DNS查询,即网络访问设备上配置的 DNS服务器 IP。

递归 DNS的访问过程如下图所示(递归 DNS在图中表示为 Local DNS):

阅读剩余
THE END