转自: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递归和迭代查询相关推荐

  1. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)

    上节中提到了一些有关递归查询的内容,但说的很少,也很笼统,本节将会从原理和实例两方面入手分析DNS的递归以及迭代查询. 在此之前,我们需要了解一些背景知识,以便于更好的理解今天的主题内容. 在互联网中 ...

  2. DNS递归查询与迭代查询

    原文链接:https://www.cnblogs.com/qingdaofu/p/7399670.html DNS递归查询与迭代查询 基础知识 1.域名系统 2.域名服务器 域名解析过程 1.在浏览器 ...

  3. 进行域名解析时,递归和迭代查询方式是什么意思?

    转载: https://zhidao.baidu.com/question/208185212.html 看图:https://segmentfault.com/a/1190000019280157 ...

  4. 详解DNS递归查询与迭代查询

    关于01月23日全国范围内DNS污染,域名解析故障的根源,资深的IT人士都知道原因是什么,并非国家 互联网应急中心发出的遭受***一说. 因此这里介绍一下DNS服务器的查询原理,也就是递归查询和迭代查 ...

  5. DNS递归查询以及迭代查询

    递归查询 当客户端向本地DNS服务器发起查询请求时,DNS先查询自己有没有缓存记录,如果没有,则向根DNS发起查询请求,但是根DNS也不知道域名对应的IP地址,所以告诉它去下一级DNS服务器查询,直至 ...

  6. linux关闭dns迭代查询,DNS查询和响应过程递归和迭代的使用

    需要了解DNS查询过程的递归和迭代的机制,找到了RFC的相关章节, 对这个进行了简单的翻译(水平有限),可以留下来做个参考. RFC 1034 4.3.1. Queries and responses ...

  7. 递归和迭代的区别——以DNS为例

    递归和迭代的区别--以DNS为例 2021.7.22 可能或多或少都听说过:函数的递归调用,牛顿迭代法,在DNS(Domain Name System域名系统)中有递归查询和迭代查询两种······那 ...

  8. 例说DNS递归/迭代名称解析原理

    以下内容摘自笔者最新年度巨作,广受好评的--<深入理解计算机网络>书中.本书详细内容及读者评价可从这里了解:http://item.jd.com/11165825.htmlhttp://p ...

  9. 【计算机网络】应用层 : DNS 域名解析系统 ( 域名 | 域名服务器 | 域名解析过程 | 递归查询 | 迭代查询 | 高速缓存 )

    文章目录 一.域名 二.域名服务器 三.域名解析过程 四.递归查询 五.迭代查询 六.高速缓存 一.域名 域名 : ① 域名表示方法 : 字母 , 数字 , "-" 符号 , &q ...

最新文章

  1. python之互斥锁
  2. 佳能80d有人脸识别吗_国家地理2020年旅行者最推荐相机Top10,有你喜欢的吗?
  3. Centos7上安装oracle11g/12c的安装教程推荐及注意事项
  4. 【综述专栏】神经网络的可解释性综述
  5. Spring Cloud Stream 体系及原理介绍
  6. 2016蓝桥杯省赛---java---A---6(寒假作业)
  7. html5按钮样式具有子项目,如何使用HTML5+css3制作出12种常用的按钮开关样式(附完整代码)...
  8. 万用表测线路断点位置_如何测出电线电缆断点在哪?来看看常见的7种方法
  9. cocos2d精灵教程(三篇)
  10. Windows下同时安装Anaconda2(Python2)和Anaconda3(Python3)以及tensorflow
  11. 【HDU2825】Wireless Password,AC自动机+状态压缩DP
  12. Charles使用最全指南
  13. 根据.jgwx配准文件绘制并加载图层
  14. 关闭QQ弹出的腾讯网迷你版
  15. C# 经纬度格式化输入控件的简单实现(附html、Qt实现)
  16. 插入USB麦克风电脑没有声音了的解决方法
  17. pr2机器人手臂画圆
  18. C#开源组件NPOI处理Excel导入DataTable数据至Sheet
  19. 一篇文章理解JS中同步任务和异步任务以及宏任务与微任务的原理和执行机制
  20. 考研邱关源电路总结第一章

热门文章

  1. java eventbus 原理_EventBus的简单使用与原理
  2. 对这个java虚拟机内存的,年轻代,年老代,永久代i,搞不太清楚。年轻代、年老代存放在堆还是栈。新版虚拟机没有永久代是个啥情况
  3. CodeForces 332B Maximum Absurdity(线段树单点更新)
  4. 关于hover改变其他元素
  5. IntelliJ IDEA类和方法注释模板配置
  6. jQuery实现常见的轮播图效果
  7. 回车与换行符的区别及python中使用
  8. CrossCompiler And Auto tools
  9. backtracking及其应用
  10. pacemaker+corosync的一些总结