精华内容
下载资源
问答
  • DNS递归和迭代

    2012-02-28 22:51:32
    DNS递归和迭代
  • DNS递归和迭代查询

    千次阅读 2019-09-18 21:10:41
    一、DNS解析分类 DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询,递归查询是默认方式,迭代查询是以DNS客户端,也...二、DNS递归解析原理 递归解析(或叫递归查询)是最常见,也是默...

    转自:https://www.jianshu.com/p/6b502d0f2ede

    一、DNS解析分类

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

    二、DNS递归解析原理

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

    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请求报头部的RD字段没有置1。相当于说”你都没有主动要求我为你进行递归查询,我当然不会为你工作了”
    • 客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0

    1)、递归
    在这里插入图片描述
    2)、迭代
    在这里插入图片描述

    展开全文
  • DNS递归和迭代过程详解

    万次阅读 2018-04-17 11:51:57
    目录 DNS原理解析 DNS进化史 DNS结构 DNS查询流程 DNS服务搭建 DNS相关软件的安装 ...手把手教你搭建基本DNS服务器 搭建主DNS服务器 ...起初域名ip地址之间的解析都是完全存放在一个名为hosts的文件当中...

    目录

    DNS原理解析

    DNS进化史

    etc/hosts –> NIS –>DNS
    起初域名和ip地址之间的解析都是完全存放在一个名为hosts的文件当中,在这个文件当中我们建立了ip和域名的一一对应的关系,在互联网初期,这样做完全是没有问题的,但是随着网络的发展,网络内的主机越来越多,这个文件会变得越来越大,而且为了保证每台主机都能有这样的解析功能,我们不得不让每台主机都有同样的文件,那么每次我们更新文件的时候,互联网每台主机都需要更新自己的hosts文件,这是一件工作量极其大的事情。

    后期,人们采用了一种名为NIS的解决方式,实现的方法是把所有ip地址和网络域名之间的对应存放在一个服务器上,每次有主机需要进行域名解析的时候,我们就让该台主机去访问这台名为NIS的服务器,后来随着网络的扩展,互联网上的主机上百亿,这样对NIS服务器的负载极大,NIS不得不退出了历史舞台。

    现在,我们使用DNS协议,来实现分布式、阶层式的系统来管理ip地址和域名之间的对应关系。

    DNS结构

    这里写图片描述
    从上图中,我们可以知道,DNS利用类似树状目录的架构,将主机名的管理分配在不同层级的DNS服务器当中,经由分层管理,所以每一部DNS服务器记忆的信息就不会很多,而且若有IP 异动时也相当容易修改!因为你如果已经申请到主机名解析的授权,那么在你自己的DNS服务器中,就能够修改全世界都可以查询到的主机名了!

    DNS是以树状目录分阶层的方式来处理主机名,我们知道树状结构的好处就是,父节点只关注他的子节点的内容,而不关注他的孙子节点的内容,这样就在很大程度上实现了分治,根节点只需要管理它的子节点.com .cn .edu等域名和ip地址之间的关系即可,再往下的baidu.com,qq.com域名就完全和他无关了。

    DNS查询流程

    我们以客户端第一次查询百度为例子解释DNS的查询流程
    这里写图片描述
    递归和迭代的区别?
    所谓 递归查询过程 就是 “查询的递交者” 更替, 而 迭代查询过程 则是 “查询的递交者”不变。

    在需要DNS解析的客户端,比如说笔记本,当我们解析www.baidu.con时我们会先进行下面的操作:
    操作系统会先检查自己本地的hosts文件—>查找本地DNS解析器缓存(笔记本的缓存)
    如果以上两步都没有找到会执行上图所示的步骤:

    1.如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,进入windows下的命令行窗口输入ipconfig/all,即可查到你当前的DNSsever.如图
    这里写图片描述
    箭头一是DHCP服务器,箭头二是DNS服务器。
    此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

    2.如果本地DNS没有该条记录,那么本地DNS就把请求发至 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。基于本例子,根服务器会发送.com服务器ip地址。(对应图中的2、3条信息记录)。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。(对应途中4、5条信息记录),以此类推下去,直至最后本地DNS得到了www.baidu.com服务器的IP地址

    3.最后一步,本地DNS把查询到的记录进行缓存并且将该条记录返回给客户端。对应图中的第10步。

    我们把该过程画成流程图则如下所示:
    这里写图片描述

    DNS服务搭建

    DNS相关软件的安装

    我们使用主流的提供DNS服务的软件,bind.下面我们先查询一下该软件的相关信息
    这里写图片描述
    安装方法:[root@CentOs7 /etc/named]# yum -y install bind

    服务器搭建规划

    规划自己搭建的局域网的域名为xiaomi.com。由于我们搭建的DNS是不接上互联网的,所以此处域名是可以随意取得,我就使用xiaomi的域名了。

    • 两台安装了CentOs7.4的虚拟机,利用这两台主机搭建Master/Slave结构的DNS服务
    • 涉及到的配置文件:
      • named.conf(主要配置文件)
      • named.xiaomi.com(涉及到xiaomi.com这个域的正解配置文件)
      • named.ca (bind软件提供的能够解析根服务器的正解配置文件)

    手把手教你搭建基本DNS服务器

    搭建主DNS服务器

    第一步:安装bind软件包,修改/etc/named.conf文件,对全局配置options修改如下:
    这里写图片描述
    第二步:在/etc/named.conf配置文件中加入一段有关xiaomi.com的zone文件。具体配置如下:
    这里写图片描述
    第三步:新建文件/var/named/xiaomi.com.zone,编辑正向解析区域文件,配置内容如下:
    这里写图片描述
    第四步:重启服务,并设置为开机自启动服务。

    搭建从DNS服务器

    步骤较为简单,连正解zone文件都不需要写,你只需要写个zone文件的类似于声明一样的东西,写在主配置文件/etc/named.conf尾部。如下所示
    这里写图片描述
    当你主配置文件的SOA记录的serial变大时,从配置文件会自动更新收到主配置文件的变化并努力保持一致。

    参考文献

    展开全文
  • DNS递归和迭代原理

    2016-09-14 16:37:00
    11.3.7 DNS递归解析原理 “递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器...

    11.3.7 DNS递归解析原理

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

    1.    DNS递归解析基本流程

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

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

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

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

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

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

    2.    DNS递归解析示例

         为了方便大家理解,下面举一个实例进行介绍。本示例中假设客户端想要访问自己并不识别的example.microsoft.com站点,并假设此客户端配置的本地名称服务器假设为dns.company.com(通常是以IP地址方式配置的),本地名称服务器上配置的根名称服务器是a.rootserver.net。整个递归名称解析过程如图11-15所示(其中的Q1~Q5表示发送DNS查询请求,A1~A5是DNS查询应答),具体描述如下:

    (1)DNS客户端向所配置的本地名称服务器dns.company.com发出解析example.microsoft.com域名的DNS请求报文(图中的Q1)。相当于对本地名称服务器说“请给我example.microsoft.com所对应的IP地址”。

    (2)本地名称服务器收到请求后,先查询本地缓存。假设没有查到该域名对应记录,则本地名称服务器向所配置的根名称服务器a.rootserver.net发出解析请求解析example.microsoft.com域名的DNS请求报文(图中的Q2)。

    (3)根名称服务器收到查询请求后,通过查询得到.com顶级域名所对应的顶级名称服务器,然后向本地名称服务器返回一条应答报文(图中的A1)。相当说“我不知道example.microsoft.com域名所对应的IP地址,但我现在告诉你.com域名所对应的顶级名称服务器地址”。

     

    图11-15 DNS递归名称解析示例

    (4)本地名称服务器在收到根名称服务器的DNS应答报文,得到.com顶级域名所对应的顶级名称服务器地址后,再次向对应的顶级名称服务器发送一条请求解析example.microsoft.com域名的DNS请求报文(图中的Q3)。

    (5).com顶级名称服务器在收到DNS请求报文后,先查询自己的缓存,假设也没有该域名的记录项,则查询microsoft.com所对应的二级名称服务器,然后也向本地名称服务返回一条DNS应答报文(图中的A2)。相当于说“我不知道example.microsoft.com域名所对应的IP地址,但我现在告诉你microsoft.com域名所对应的二级名称服务器地址”。

    (6)本地名称服务器在收到.com顶级名称服务器的DNS应答报文,得到microsoft.com二级域名所对应的二级名称服务器地址后,再次向对应的二级名称服务器发送一条请求解析example.microsoft.com域名的DNS请求报文(图中的Q4)。

    (7)microsoft.com二级名称服务器在收到DNS请求报文后,也先查询自己的缓存,假设也没有该域名的记录项,则查询example.microsoft.com所对应的权威名称服务器(因为这个名称服务器已包括了完整域名example.microsoft.com所在区域),然后也向本地名称服务器返回一条DNS应答报文(图中的A3)。相当于说“我不知道example.microsoft.com域名所对应的IP地址,但我现在告诉你example.microsoft.com域名所对应的权威名称服务器地址”。

    (8)本地名称服务器在收到microsoft.com二级名称服务器的DNS应答报文,得到example.microsoft.com三级域名所对应的权威名称服务器地址后,再次向对应的权威名称服务器发送一条请求解析example.microsoft.com域名的DNS请求报文(图中的Q5)。

    (9)权威名称服务器在收到DNS请求后,在它的DNS区域数据库中查找,最终得出了example.microsoft.com域名所对应的IP地址。然后向本地名称服务器返回到条DNS应答报文(图中的A4)。相当于说“example.microsoft.com域名的IP地址为xxx.xxx.xxx.xxx”。

    (10)本地名称服务器在收到权威名称服务器后,向DNS客户端返回一条DNS应答报文(图中的A5),告诉DNS客户端所得到的example.microsoft.com域名的IP地址。这样DNS客户端就可以正常访问这个网站了。

    如果在步骤(9)中的对应域名的权威名称服务器都说找不到对应的域名记录,则会向本地名称服务器返回一条查询失败的DNS应答报文,这条报文最终也会由本地名称服务器返回给DNS客户端。当然,如果这个权威名称服务器上配置了指向其它名称服务器的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步查询。另外,如果DNS客户端上配置了多个DNS服务器,则还会继续向其它DNS服务器查询的。

    11.3.8  DNS迭代名称解析原理

          在上节介绍的DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。而本节所介绍的DNS迭代名称解析(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

    l   在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。

    l   客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

    1.    迭代名称解析的基本流程

    使用迭代解析方式时,如果它所配置的主名称服务器(如Windows系统中的“首选DNS服务器”)不能解析的话,客户端还会继续向所配置的其它名称服务器(如Windows系统中的“备用DNS服务器”)查询。迭代名称解析的基本流程如下:

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

    (2)本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务器就直接把查询的结果返回给客户端;如果本地缓存中没有该域名的记录,则向DNS客户端返回一条DNS应答报文,报文中会给出一些参考信息,如本地名称服务器上的根名称服务器地址等。

    (3)DNS客户端在收到本地名称服务器的应答报文后,会根据其中的根名称服务器地址信息,向对应的根名称服务器再次发出与前面一样的DNS查询请求报文。
      (4)根名称服务器在收到DNS查询请求报文后,通过查询自己的DNS数据库得到请求DNS域名中顶级域名所对应的顶级名称服务器信息,然后以一条DNS应答报文返回给DNS客户端。

    (5)DNS客户端根据来自根名称服务器应答报文中的对应顶级名称服务器地址信息,向该顶级名称服务器发出与前面一样的DNS查询请求报文。

    (6)顶级名称服务器在收到DNS查询请求后,先查询自己的缓存,如果有所请求的DNS域名的记录项,则相接把对应的记录项返回给DNS客户端,否则通过查询后把对应域名中二级域名所对应的二级名称服务器地址信息以一条DNS应答报文返回给DNS客户端。

    然后DNS客户端继续按照前面介绍的方法一次次地向三级、四级名称服务器查询,直到最终的权威名称服务器返回到最终的记录。

    2. DNS迭代解析示例

          同样,为了方便大家理解,也例举一个具体的示例,看一下DNS迭代解析的工作流程。本示例也与上节介绍的DNS递归解析一样,假设客户端想要访问自己并不识别的example.microsoft.com站点,并假设此客户端配置的本地名称服务器假设为dns.company.com(仅以一个为例进行介绍),在该本地名称服务器上配置的根名称服务器是a.rootserver.net。整个迭代名称解析过程如图11-16所示(其中的Q1~Q5表示发送DNS查询请求,A1~A5是对应序号DNS查询请求的应答),具体描述如下:

     

    图11-16 DNS迭代名称解析示例

    (1)DNS客户端向所配置的本地名称服务器dns.company.com发出解析example.microsoft.com域名的DNS请求报文(图中的Q1)。

    (2)本地名称服务器收到DNS客户端的DNS查询请求报文后,先查询本地缓存。假设没有查到该域名对应记录,则本地名称服务器把所配置的根名称服务器a.rootserver.net地址信息以DNS应答报文返回给DNS客户端(图中和A1)。

    (3)DNS客户端在收到本地名称服务器的DNS应答报文后,根据其中给出的根名称服务器地址信息,向对应的根名称服务器再次发送解析example.microsoft.com域名的DNS请求报文(图中的Q2)。

    (4)根名称服务器在收到DNS查询请求后,通过查询得到.com顶级域名所对应的顶级名称服务器,然后把查询到的对应顶级域名信息以一条DNS应答报文返回给DNS客户端(图中的A2)。

    (5)DNS客户端在收到根名称服务器的DNS应答报文,得到.com顶级域名所对应的顶级名称服务器地址后,再次向对应的顶级名称服务器发送一条解析example.microsoft.com域名的的DNS请求报文(图中的Q3)。

    (6).com顶级名称服务器在收到DNS客户端的DNS查询请求报文后,先查询自己的缓存,假设也没有该域名的记录项,则查询microsoft.com所对应的二级名称服务器,然后把查询到的对应二级域名信息以一条DNS应答报文返回给DNS客户端(图中的A3)。

    (7)DNS客户端在收到.com顶级名称服务器的DNS应答报文,得到microsoft.com二级域名所对应的二级名称服务器地址后,再次向对应的二级名称服务器发送一条解析example.microsoft.com域名的DNS请求报文(图中的Q4)。

    (8)microsoft.com二级名称服务器在收到DNS客户端的DNS查询请求报文后,也先查询自己的缓存,假设也没有该域名的记录项,则查询example.microsoft.com所对应的权威名称服务器(因为这个名称服务器已包括了整个域名example.microsoft.com所在区域),然后把查询到的对应权威域名信息以一条DNS应答报文返回给DNS客户端(图中的A5)。

    (9)DNS客户端在收到microsoft.com二级名称服务器的DNS应答报文,得到example.microsoft.com三级域名所对应的权威名称服务器地址后,再次向对应的权威名称服务器发送解析example.microsoft.com域名的DNS请求报文(图中的Q5)。

    (10)权威名称服务器在收到DNS客户端的DNS查询请求报文后,在它的DNS区域数据库中查找,最终得出了example.microsoft.com域名所对应的IP地址。然后向DNS客户端返回一条DNS应答报文(图中的A5)。这样DNS客户端就可以正常访问这个网站了。

    如果在步骤(10)中的对应域名的权威名称服务器都说找不到对应的域名记录,则会向DNS客户端返回一条查询失败的DNS应答报文。当然,如果这个权威名称服务器上配置了指向其它名称服务器的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步查询。另外,如果DNS客户端上配置了多个DNS服务器,则还会继续向其它DNS服务器查询的。

     

     

    dd

    转载于:https://www.cnblogs.com/hanggegege/p/5872761.html

    展开全文
  • DNS递归和迭代解析

    千次阅读 2014-11-29 21:41:08
    11.3.7 DNS递归解析原理 “递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器代替...

    原文见 http://blog.csdn.net/lycb_gz/article/details/11720247

     

    11.3.7 DNS递归解析原理

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

     

    1.    DNS递归解析基本流程

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

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

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

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

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

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

    2.    DNS递归解析示例

         为了方便大家理解,下面举一个实例进行介绍。本示例中假设客户端想要访问自己并不识别的example.microsoft.com站点,并假设此客户端配置的本地名称服务器假设为dns.company.com(通常是以IP地址方式配置的),本地名称服务器上配置的根名称服务器是a.rootserver.net。整个递归名称解析过程如图11-15所示(其中的Q1~Q5表示发送DNS查询请求,A1~A5是DNS查询应答),具体描述如下:

    (1)DNS客户端向所配置的本地名称服务器dns.company.com发出解析example.microsoft.com域名的DNS请求报文(图中的Q1)。相当于对本地名称服务器说“请给我example.microsoft.com所对应的IP地址”。

    (2)本地名称服务器收到请求后,先查询本地缓存。假设没有查到该域名对应记录,则本地名称服务器向所配置的根名称服务器a.rootserver.net发出解析请求解析example.microsoft.com域名的DNS请求报文(图中的Q2)。

    (3)根名称服务器收到查询请求后,通过查询得到.com顶级域名所对应的顶级名称服务器,然后向本地名称服务器返回一条应答报文(图中的A1)。相当说“我不知道example.microsoft.com域名所对应的IP地址,但我现在告诉你.com域名所对应的顶级名称服务器地址”。

     

    图11-15 DNS递归名称解析示例

    (4)本地名称服务器在收到根名称服务器的DNS应答报文,得到.com顶级域名所对应的顶级名称服务器地址后,再次向对应的顶级名称服务器发送一条请求解析example.microsoft.com域名的DNS请求报文(图中的Q3)。

    (5).com顶级名称服务器在收到DNS请求报文后,先查询自己的缓存,假设也没有该域名的记录项,则查询microsoft.com所对应的二级名称服务器,然后也向本地名称服务返回一条DNS应答报文(图中的A2)。相当于说“我不知道example.microsoft.com域名所对应的IP地址,但我现在告诉你microsoft.com域名所对应的二级名称服务器地址”。

    (6)本地名称服务器在收到.com顶级名称服务器的DNS应答报文,得到microsoft.com二级域名所对应的二级名称服务器地址后,再次向对应的二级名称服务器发送一条请求解析example.microsoft.com域名的DNS请求报文(图中的Q4)。

    (7)microsoft.com二级名称服务器在收到DNS请求报文后,也先查询自己的缓存,假设也没有该域名的记录项,则查询example.microsoft.com所对应的权威名称服务器(因为这个名称服务器已包括了完整域名example.microsoft.com所在区域),然后也向本地名称服务器返回一条DNS应答报文(图中的A3)。相当于说“我不知道example.microsoft.com域名所对应的IP地址,但我现在告诉你example.microsoft.com域名所对应的权威名称服务器地址”。

    (8)本地名称服务器在收到microsoft.com二级名称服务器的DNS应答报文,得到example.microsoft.com三级域名所对应的权威名称服务器地址后,再次向对应的权威名称服务器发送一条请求解析example.microsoft.com域名的DNS请求报文(图中的Q5)。

    (9)权威名称服务器在收到DNS请求后,在它的DNS区域数据库中查找,最终得出了example.microsoft.com域名所对应的IP地址。然后向本地名称服务器返回到条DNS应答报文(图中的A4)。相当于说“example.microsoft.com域名的IP地址为xxx.xxx.xxx.xxx”。

    (10)本地名称服务器在收到权威名称服务器后,向DNS客户端返回一条DNS应答报文(图中的A5),告诉DNS客户端所得到的example.microsoft.com域名的IP地址。这样DNS客户端就可以正常访问这个网站了。

    如果在步骤(9)中的对应域名的权威名称服务器都说找不到对应的域名记录,则会向本地名称服务器返回一条查询失败的DNS应答报文,这条报文最终也会由本地名称服务器返回给DNS客户端。当然,如果这个权威名称服务器上配置了指向其它名称服务器的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步查询。另外,如果DNS客户端上配置了多个DNS服务器,则还会继续向其它DNS服务器查询的。

    11.3.8  DNS迭代名称解析原理

          在上节介绍的DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。而本节所介绍的DNS迭代名称解析(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

    l   在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。

    l   客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

    1.    迭代名称解析的基本流程

    使用迭代解析方式时,如果它所配置的主名称服务器(如Windows系统中的“首选DNS服务器”)不能解析的话,客户端还会继续向所配置的其它名称服务器(如Windows系统中的“备用DNS服务器”)查询。迭代名称解析的基本流程如下:

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

    (2)本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务器就直接把查询的结果返回给客户端;如果本地缓存中没有该域名的记录,则向DNS客户端返回一条DNS应答报文,报文中会给出一些参考信息,如本地名称服务器上的根名称服务器地址等。

    (3)DNS客户端在收到本地名称服务器的应答报文后,会根据其中的根名称服务器地址信息,向对应的根名称服务器再次发出与前面一样的DNS查询请求报文。
      (4)根名称服务器在收到DNS查询请求报文后,通过查询自己的DNS数据库得到请求DNS域名中顶级域名所对应的顶级名称服务器信息,然后以一条DNS应答报文返回给DNS客户端。

    (5)DNS客户端根据来自根名称服务器应答报文中的对应顶级名称服务器地址信息,向该顶级名称服务器发出与前面一样的DNS查询请求报文。

    (6)顶级名称服务器在收到DNS查询请求后,先查询自己的缓存,如果有所请求的DNS域名的记录项,则相接把对应的记录项返回给DNS客户端,否则通过查询后把对应域名中二级域名所对应的二级名称服务器地址信息以一条DNS应答报文返回给DNS客户端。

    然后DNS客户端继续按照前面介绍的方法一次次地向三级、四级名称服务器查询,直到最终的权威名称服务器返回到最终的记录。

    2. DNS迭代解析示例

          同样,为了方便大家理解,也例举一个具体的示例,看一下DNS迭代解析的工作流程。本示例也与上节介绍的DNS递归解析一样,假设客户端想要访问自己并不识别的example.microsoft.com站点,并假设此客户端配置的本地名称服务器假设为dns.company.com(仅以一个为例进行介绍),在该本地名称服务器上配置的根名称服务器是a.rootserver.net。整个迭代名称解析过程如图11-16所示(其中的Q1~Q5表示发送DNS查询请求,A1~A5是对应序号DNS查询请求的应答),具体描述如下:

     

    图11-16 DNS迭代名称解析示例

    (1)DNS客户端向所配置的本地名称服务器dns.company.com发出解析example.microsoft.com域名的DNS请求报文(图中的Q1)。

    (2)本地名称服务器收到DNS客户端的DNS查询请求报文后,先查询本地缓存。假设没有查到该域名对应记录,则本地名称服务器把所配置的根名称服务器a.rootserver.net地址信息以DNS应答报文返回给DNS客户端(图中和A1)。

    (3)DNS客户端在收到本地名称服务器的DNS应答报文后,根据其中给出的根名称服务器地址信息,向对应的根名称服务器再次发送解析example.microsoft.com域名的DNS请求报文(图中的Q2)。

    (4)根名称服务器在收到DNS查询请求后,通过查询得到.com顶级域名所对应的顶级名称服务器,然后把查询到的对应顶级域名信息以一条DNS应答报文返回给DNS客户端(图中的A2)。

    (5)DNS客户端在收到根名称服务器的DNS应答报文,得到.com顶级域名所对应的顶级名称服务器地址后,再次向对应的顶级名称服务器发送一条解析example.microsoft.com域名的的DNS请求报文(图中的Q3)。

    (6).com顶级名称服务器在收到DNS客户端的DNS查询请求报文后,先查询自己的缓存,假设也没有该域名的记录项,则查询microsoft.com所对应的二级名称服务器,然后把查询到的对应二级域名信息以一条DNS应答报文返回给DNS客户端(图中的A3)。

    (7)DNS客户端在收到.com顶级名称服务器的DNS应答报文,得到microsoft.com二级域名所对应的二级名称服务器地址后,再次向对应的二级名称服务器发送一条解析example.microsoft.com域名的DNS请求报文(图中的Q4)。

    (8)microsoft.com二级名称服务器在收到DNS客户端的DNS查询请求报文后,也先查询自己的缓存,假设也没有该域名的记录项,则查询example.microsoft.com所对应的权威名称服务器(因为这个名称服务器已包括了整个域名example.microsoft.com所在区域),然后把查询到的对应权威域名信息以一条DNS应答报文返回给DNS客户端(图中的A5)。

    (9)DNS客户端在收到microsoft.com二级名称服务器的DNS应答报文,得到example.microsoft.com三级域名所对应的权威名称服务器地址后,再次向对应的权威名称服务器发送解析example.microsoft.com域名的DNS请求报文(图中的Q5)。

    (10)权威名称服务器在收到DNS客户端的DNS查询请求报文后,在它的DNS区域数据库中查找,最终得出了example.microsoft.com域名所对应的IP地址。然后向DNS客户端返回一条DNS应答报文(图中的A5)。这样DNS客户端就可以正常访问这个网站了。

    如果在步骤(10)中的对应域名的权威名称服务器都说找不到对应的域名记录,则会向DNS客户端返回一条查询失败的DNS应答报文。当然,如果这个权威名称服务器上配置了指向其它名称服务器的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步查询。另外,如果DNS客户端上配置了多个DNS服务器,则还会继续向其它DNS服务器查询的。

    展开全文
  • DNS 递归和迭代

    2011-04-14 09:42:49
    只要发出递归查询,服务器必需回答目标IP与域名的映射关系。...如图所示:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。 转载于:https:...
  • DNS递归迭代

    2020-03-02 18:40:59
    迭代是本地服务器向根DNS服务器发出请求,而根DNS服务器只是给出下一级DNS服务器的地址,然后本地DNS服务器再向下一级DNS发送查询请求直至得到最终答案。 DNS解析过程:host文件-本地DNS-根域名服务器-顶级域名...
  • ②如果hosts里没有这个域名的映射,则查找本地DNS缓存,是否有这个网址映射关系,如果有,则直接返回,完成域名解析。③如果hosts与本地DNS缓存都没有相应的网址映射关系,首先会找网卡配置中TCP/IP参数的...
  • DNS递归迭代查询次数计算

    千次阅读 2016-11-26 16:06:38
    DNS递归迭代查询次数计算@(计算机网络)设计缘由 理论上说,整个因特网可以只用一个域名服务器。使它装入因特网上所有的主机域名,并回答所有对IP地址的查询。 但是这么做,这个服务器肯定扛不住,因为因特网太大...
  • http://jeffyyko.blog.51cto.com/28563/215293本节将会从原理实例两方面入手分析DNS递归以及迭代查询。在此之前,我们需要了解一些背景知识,以便于更好的理解今天的主题内容。在互联网中,一个域名的顺利解析离...
  • DNS 递归/迭代 原理

    2018-02-10 13:44:00
    一般客户机服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机; 迭代查询(反复查询)  迭代:客户端发出一次请求...
  • 递归查询 迭代查询
  • DNS递归解析和迭代解析的区别

    万次阅读 2018-12-02 15:40:55
    11.3.7 DNS递归解析原理 “递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器...
  • 上节中提到了一些有关递归查询的内容,但说的很少,也很笼统,本节将会从原理实例两方面入手分析DNS递归以及迭代查询。  在此之前,我们需要了解一些背景知识,以便于更好的理解今天的主题内容。  在互联网...
  • 只要发出递归查询,服务器必需回答目标IP与域名的映射关系。 而迭代查询是,服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也...
  • DNS 递归/迭代弄懂了没?看了就知道

    千次阅读 2019-08-12 16:03:47
    一般客户机服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机; 迭代查询(反复查询) 迭代:客户端发出一次请求,...
  • DNS递归和迭代

    2014-07-07 17:43:34
    只要发出递归查询,服务器必需回答目标IP与域名的映射关系。 而迭代查询是,服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。
  • 递归查询和迭代查询的差别 (1)递归查询 递归查询是一种DNS server的查询模式,在该模式下DNS server接收到客户机请求。必须使用一个准确的查询结果回复客户机。假设DNS server本地没有存储查询DNS 信息,那么该...
  • 例解DNS递归/迭代名称解析原理

    万次阅读 2013-09-16 08:47:54
    递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器代替DNS客户端进行查询,直到...
  • 内容简介:上节里,我们用文字的形式大致描述了DNS解析的过程,为了更好的帮助大家理解整个解析过程,我做了一张DNS域名解析的分步图,如下: 在这个图里,通过8个步骤的解析过程就使得客户端可以顺利访问...
  • 递归查询和迭代查询的区别 (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该...
  • 递归和迭代区别——以DNS为例 2021.7.22 可能或多或少都听说过:函数的递归调用,牛顿迭代法,在DNS(Domain Name System域名系统)中有递归查询和迭代查询两种······那么这二者有什么区别呢? 递归的定义...
  • 上节里,我们用文字的形式大致描述了DNS解析的过程,为了更好的帮助大家理解整个解析过程,我做了一张DNS域名解析的分步图,如下: 在这个图里,通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个...
  • DNS递归解析基本流程 在这个查询过程中,一直是以本地名称服务器为中心的,DNS客户端只是发出原始的域名查询请求报文,然后就一直处于等待状态的,直到本地名称服务器发来了最终的查询结果。此时的本地名称服务器...
  • 内容简介:上节里,我们用文字的形式大致描述了DNS解析的过程,为了更好的帮助大家理解整个解析过程,我做了一张DNS域名解析的分步图,如下: 在这个图里,通过8个步骤的解析过程就使得客户端可以顺利访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,367
精华内容 4,546
关键字:

dns递归和迭代的区别