精华内容
下载资源
问答
  • 迭代DNS查询和递归DNS查询的区别 作者:Sarath Pillai 日期:2013月1月12日 原文:https://www.slashroot.in/difference-between-iterative-and-recursive-dns-query 翻译:tommwq 译文:...

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

    作者:Sarath Pillai

    日期:2013月1月12日

    原文:https://www.slashroot.in/difference-between-iterative-and-recursive-dns-query

    翻译:tommwq

    译文:http://tommwq.tech/blog/2021/05/06/349

    DNS是最关键的基础设施,它对所有人都是公开可用的。实际上可以这么说,如果DNS发生故障,足以摧毁万维网。

    我曾经在文章中阐述了DNS的工作原理。然而,仅用一篇或数篇文章,无法总结全部的相关话题。所以我会继续发表关于DNS主题的文章。分开发表是为了让读者更容易理解。

    阅读:DNS是如何工作的

    在这篇文章中,我们将介绍不同的DNS查询类型。客户端使用不同类型的查询,从DNS服务器获取不同类型的信息。

    1 DNS查询有哪些不同类型?

    DNS查询可以根据请求被处理的方式进行分类。通常查询可以分为以下几类:

    1. 递归查询。
    2. 迭代查询或非递归查询。
    3. 反向查询。

    1.1 什么是递归查询?

    在递归查询中,接收客户端请求的DNS服务器将完成全部的工作,然后返回结果。在工作过程中,DNS服务器可能代表客户端,向internet上的其他DNS服务器查询,以获得答案。

    让我们通过以下步骤了解递归查询的整个过程。

    假设你想浏览www.example.com网站,并且/etc/resolve.conf文件包含以下条目:

    [root@myvm ~]# cat /etc/resolv.conf
    nameserver 172.16.200.30
    nameserver 172.16.200.31
    

    这份resolve conf文件表是DNS服务器是172.16.200.30和172.16.200.31。无论你使用什么应用程序,操作系统都将向这两个DNS服务器发送查询请求。

    步骤1:你在浏览器中输入www.example.com。操作系统向DNS服务器172.16.200.30发送请求,查询A记录。

    步骤2:DNS服务器172.16.200.30在接收到查询后,检查本地缓存表,查找域名www.example.com的IP地址(A记录),没有找到。

    步骤3:因为DNS服务器172.16.200.30上没有查询到信息,这个DNS服务器发送请求到一台根服务器查询答案。这里的一个重要事实在于,根服务器只支持迭代查询。

    相关:DNS根服务器及其位置

    步骤4:DNS根服务器返回一组DNS服务器地址,这些服务器负责处理.com顶级域名。

    步骤5:我们的DNS服务器172.16.200.30将从根服务器返回的列表中选择一个顶级域名服务器继续查询www.example.com的IP地址。

    步骤6:与根服务器类似,顶级域名服务器的也是迭代的。它返回给172.16.200.30另一组DNS服务器地址列表。这些DNS服务器(权威authoritative域名服务器)负责查询域名www.example.com。

    相关:DNS区域文件及其内容

    步骤7:现在我们的DNS服务器将从权威域名服务器列表中选择一个IP,向其查询www.example.com的A记录。权威域名服务器查询后,回复如下的A记录:

    www.example.com = <XXX:XX:XX:XX>(某个IP地址)
    

    步骤8:DNS服务器172.16.200.30把IP、域名对(以及其他可用资源)返回给我们。现在浏览器将向给定的IP发送请求,获取网页www.example.com。

    下面图表可能会使概念更清楚。 递归DNS查询 如上图所示,DNS服务器172.16.200.30代表我们向其他DNS服务器进行查询。

    注:上面解释的递归查询场景之所以会发生,是因为我们的DNS服务器172.16.200.30被配置为递归DNS服务器。你也可以禁用DNS服务器的递归查询功能。

    1.2 递归查询时如何选择要查询的下一个DNS服务器?

    在上面的例子中你已经看到,DNS服务器172.16.200.30需要多次从一个服务器列表中选择一个服务器进行查询。

    例如有13台根服务器(我们常说一共有13台根服务器。13是全部服务器地址的数量。实际上在世界各地一共有数百台服务器。这13个根服务器地址是anycaste地址),要从那个根服务器查询信息呢?

    相关:什么是IP Anycast,它是如何工作的?

    几乎所有的DNS服务器都使用某种算法从列表中进行选择,以便以便分配负载,降低响应时间。

    最著名的DNS服务器软件BIND使用一种称为RTT度量(Round Trip Time metric)的技术。使用这种技术,服务器跟踪每个根服务器的往返时间,并选择RTT较低的那个。

    2 什么是迭代查询或非递归查询?

    在开始解释迭代查询之前,需要注意的一点是,所有DNS服务器都必须支持迭代(非递归)查询。

    在迭代查询中,名字服务器不会去获取完整的答案,而是返回其他可能直到答案的DNS服务器地址。在前面的示例中,DNS服务器172.16.200.30代表我们取查询信息,并为我们提供最终结果。

    但是如果我们的DNS服务器不是递归的(这意味着它是迭代的),如果答案在它的记录中,它会告诉我们答案。否则它会告诉我们根服务器的地址(它本身不会查询根服务器或其他服务器)。

    现在,操作系统中解析程序的任务是查询根服务器、.COM顶级域名服务器和权威名字服务器,以获得答案。

    让我们来看看所涉及的步骤。

    步骤1:你在浏览器中输入www.example.com。操作系统的解析程序向DNS服务器172.16.200.30发送请求,查询A记录。

    步骤2: DNS服务器172.16.200.30在接收到查询后,查看缓存表,查找www.example.com的IP地址(A记录)。但没有找到。

    步骤3:现在,我们的DNS服务器不再查询根服务器,而是把根服务器列表返回给我们。操作系统的解析程序将查询根服务器,寻求答案。

    接下来的步骤同上文一样。迭代查询的唯一区别是:

    • 如果DNS服务器没有答案,它将不会向其他服务器查询答案,而是返回DNS根服务器的地址。
    • 如果DNS服务器有答案,它将返回答案(这在迭代查询和递归查询中是一样的)。
    • 在迭代查询中,从其他DNS服务器中查询答案的任务由操作系统的解析程序完成。

    迭代DNS查询 从上图可以清楚地看出,在迭代查询中,DNS服务器不会为你向其他服务器查询答案(但如果已经有答案,则会告诉你答案)。但是会告诉你的解析程序其他DNS服务器的地址(在我们的例子中是根服务器地址)。

    我们将在另一篇文章中讨论反向查询。希望这篇文章有助于理解迭代(非递归)和递归DNS查询。

    展开全文
  • dns迭代查询和递归查询

    千次阅读 2012-10-29 01:45:27
    递归查询和迭代查询另一个区别是每次做查询的时候“发起查询的”角色不同 对于递归查询,一般是本地的客户端,本地的客户端查看本地hosts文件或者缓存未找到后,会向本地DNS服务器发送DNS查询,发起方式本地的...

    递归查询:返回的结果必须是“所查域名和对应IP的映射关系”或者“查询未果”

    迭代查询:返回的结果可以是其他DNS服务器的IP

    递归查询和迭代查询另一个区别是每次做查询的时候“发起查询的”角色不同

    对于递归查询,一般是本地的客户端,本地的客户端查看本地hosts文件或者缓存未找到后,会向本地DNS服务器发送DNS查询,发起方式本地的客户端。

    对于迭代查询,一般是本地的DNS服务器(由运营商指定),本地DNS服务器向根域名服务器查询,一级一级往下,发起方式本地的DNS服务器。

    图片from http://zhangbin.blog.51cto.com/666869/286257

    展开全文
  • DNS递归和迭代

    2012-02-28 22:51:32
    DNS递归和迭代
  • 迭代式:DNS server告诉用户:我不认识这域名,但我知道你可以问哪个DNS服务器 递归式:用户告诉DNS server:我就问你,你帮我问别人 也就是说就算本地无缓存,用户本地DNS服务器都只需要发送一次查询! ...

    背景知识:DNS数据库是树状的层次式的

    本地域名服务器并不在这个体系当中,它相当于这个体系面向用户的代理

    迭代式:DNS server告诉用户:我不认识这域名,但我知道你可以问哪个DNS服务器

     

     递归式:用户告诉DNS server:我就问你,你帮我问别人

     

    也就是说就算本地无缓存,用户和本地DNS服务器都只需要发送一次查询!

    展开全文
  • DNS三部曲之DNS迭代递归、转发

    千次阅读 2016-11-03 10:34:13
    一、DNS迭代递归 DNS的迭代和递归就是一个概念,在正常的完成一整串DNS查询流程的时候,我们需要用这么一个概念来区分它们。 递归:A查询B,如果B找不到,那么就会B向C发起请求,直到找到请求,后将结果发送給A. ...

    一、DNS迭代与递归

     

    DNS的迭代和递归就是一个概念,在正常的完成一整串DNS查询流程的时候,我们需要用这么一个概念来区分它们。

    递归:A查询B,如果B找不到,那么就会B向C发起请求,直到找到请求,后将结果发送給A.

    迭代:A查询B,如果B找不到,但是知道C有,那么告诉B的C服务器地址,让B去向C服务器发起请求。

    其实不必纠结它们细节的称呼,如果我面试一个人,能答出这句话,我就算他这题过了。

     

    1、bind关闭递归测试

    options{

            directory" /var/named";

            recursion no; 

    };

    zone "imoocc.com" {

            typemaster;

            file"imoocc.com.zone";

    };

    zone "iaskjob.com" {

            typemaster;

            file"iaskjob.com.zone";

    };

    zone "11.156.10.in-addr.arpa" {

            typemaster;

            file"10.156.11.zone";

    };

    客户端查看效果:

    2、客户端默认发起递归查询

    [root@Iaskjob opt]# dig @www.iaskjob.com www.imooccc.com

     

    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> @www.iaskjob.com www.imooccc.com

    ; (1 server found)

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 55372

    ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

    ;; WARNING: recursion requested but not available

     

    ;; QUESTION SECTION:

    ;www.imooccc.com.INA

    2、客户端发起迭代查询请求

    dig +norecurse @199.7.91.13 www.imoocc.com

    dig +norecurse @192.33.14.30 www.imoocc.com

    dig +norecurse @111.30.136.110 www.imoocc.com

     

    二、NS记录

    在我答案中,我没有确定的域名,但是能告诉你谁能有这个更精确的答案。

    服务器和服务器的的迭代查询也是一个道理,我们接触比较多的就是DNS的子域授权。

    父域

    imooc.com

    子域

    test.imoocc.com

    1、案例搭建子域授权系统

    A服务器(IP:30.96.8.232) 负责imoocc域名解析,并授权B服务器test.imoocc.com的域名解析

    A服务器:

    $TTL 7200

    @  IN  SOA  imoocc.com.   jeson.imoocc.com. (222 1H 15M 1W 1D) 

    imoocc.com.   IN    NS    dns1.imoocc.com.

    dns1  IN A  10.156.11.232

    www  IN  A  115.182.41.180

    @ IN  MX10  mail

    mail   IN   A  10.156.11.233

    test.imoocc.com.  IN  NS  ns1.test     --将test.imoocc.com的这个子域授权給了ns1.test 30.96.8.233来作

    ns1.test         IN      A    30.96.8.233

    ~                            

    B服务器(IP:30.96.8.233),完成整段子域授权:

    $TTL 7200                                                                       

    @ IN SOA  test.imoocc.com.  jeson.test.imooccc.com. (222 1H 15M 1W 1D) 

        IN NS dns1

    dns1   IN     A  30.96.8.233

    www   IN     A  30.96.8.233

     2、客户端测试

    dig @30.96.8.232 www.test.imoocc.com -trace

     

    三、DNS转发

    如果我没法解析,那么我就指定一台DNS来解析。

    注意:bind9版本后,可以支持指定域来转发。

     

    说明:这里要注意,转发器本身不用做任何设置,而是对需要转发器的其他 DNS server 做以上配置。还有,如果该 DNS Server 无法联系到转发器,那么 BIND 会自己尝试解析。
    如果你要禁止 BIND 在无法联系到转发器时不做任何操作,那么你还可以使用 forward only 命令,这样 BIND 只能使用区的权威数据和缓存来响应查询了( 在连接不到转发器的情况下 )。

    forward first说明先把dns请求转发出去然后再查本机的dns记录

    1、场景演练

    B服务(30.96.8.233)

    设置将iaskjob.com这个域,转发由A服务器解析

    vim name.conf

    zone "iaskjob.com" {

                    type forward;

                    forwarders { 30.96.8.232; };

    };

     

    A服务器(30.96.8.232)

    设置机器的权威域

    $TTL 7200

    iaskjob.com.                IN   SOA     iaskjob.com.iaskjob.163.com. ( 20140122

    100 1H 15M 1W 1D)  

    iaskjob.com.       IN   NS      dns1.iaskjob.com.

    dns1.iaskjob.com.  IN   A       10.156.11.232    

    www  IN   A       10.156.11.232   

    2、客户端测试

     dig @30.96.8.233 www.iaskjob.com -trace

    展开全文
  • DNS域名解析原理与迭代和递归区别

    万次阅读 多人点赞 2018-04-11 10:06:18
     DNS(Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机网络服务命名系统,它用于TCP/IP网络,它从事将主机名或域名转换为实际IP地址的工作。DNS就是样的一位“翻译官”,它的基本...
  • DNS规定,域名中的标号都是由英文字母数字组成,每个标号不超过63个字符,也不分大小写,(例如,www.baidu.com或WWW.BaiDU.coM在域名中是等效的).标号中除了连接符(-)外不能使用其他的标点符号。 根域名服务器 ...
  • DNS迭代查询与递归查询的区别 转载于:https://www.cnblogs.com/hanxing/p/4389192.html
  • DNS递归和迭代查询

    千次阅读 2019-09-18 21:10:41
    DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询,递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端本地名称服务器是递归,而本地名称服务器...
  • DNS迭代查询,递归查询

    2021-04-26 22:42:25
    第一,主机向本地域名服务器的查询一般为递归查询,所谓递归查询就是如果本地域名服务器不知道被查询域名的IP地址,就会以DNS客户的身份向其他根域名服务器查询(即代替主机进行查询). 第二,本地域名服务器向根域名...
  • DNS迭代查询,递归查询

    千次阅读 2012-08-31 18:39:30
    只要发出递归查询,服务器必需回答目标IP与域名的...如图所示:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。   DNS查询模式  1.递归查询:  一般客户
  • DNS中的递归查询和迭代查询,详细解释DNS服务器的查询方式!
  • :“关于dns查询,比如.com区域下面有md.com md1.com md2.com三个域,md.com下面有3主机a ,b, c! md1.com下面有主机e,f,g! a查询一个域名www.csdn.neta缓存没有,就去查它的dns服务器(这个dns服务器是a,b,c之外的...
  • DNS 迭代查询与递归查询

    千次阅读 2012-09-20 18:37:17
    DNS 查询以各种不同的方式进行解析。有时,客户端也可使用从先前的查询获得的...这个过程称为递归。 另外,客户端自己也可尝试联系其他的 DNS 服务器来解析名称。当客户端这么做的时候,它会根据来自服务器的参考答
  • 迭代DNS和递归DNS的区分

    千次阅读 2008-03-04 16:39:00
    递归dns:无论如何,请返回这个域名的ip。客户对客户的查询 (“弟鬼”客户对客户,都是不懂事的孩子,口气很蛮横,)迭代...递归查询: 一般客户机服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务
  • DNS递归和迭代过程详解

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

    2020-06-04 22:32:13
    2、dns的查询方法,有2种:递归和迭代。怎么区分的呢?通俗的说,递归:主机向本地dns问东西,然后主机就直接等结果就OK了;迭代:本地dns向其他高级的dns问东西,只会告诉你一个新的信息,然后你自己再去根据这个...
  • DNS递归解析和迭代解析的区别

    万次阅读 2018-12-02 15:40:55
    11.3.7 DNS递归解析原理 “递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器...
  • DNS递归名称解析,以本地DNS服务器为中心。...DNS迭代名称解析,以DNS客户端为中心。 http://blog.csdn.net/lycb_gz/article/details/11720247 转载于:https://www.cnblogs.com/xaf-dfg/p/3905002.html...
  • 递归查询和迭代查询的差别 (1)递归查询 递归查询是一种DNS server的查询模式,在该模式下DNS server接收到客户机请求。必须使用一个准确的查询结果回复客户机。假设DNS server本地没有存储查询DNS 信息,那么该...
  • 递归查询和迭代查询的区别 (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该...
  • DNS 递归和迭代

    2011-04-14 09:42:49
    只要发出递归查询,服务器必需回答目标IP与域名的映射关系。...如图所示:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。 转载于:https:...
  • 1.递归查询: 一般客户机服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机; 2.迭代查询(反复查询): 一般DNS服务器...
  • 只要发出递归查询,服务器必需回答目标IP与域名的映射关系。 而迭代查询是,服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也...

空空如也

空空如也

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

dns迭代和递归的区别