首页 > 其他分享 >域名解析之递归查询VS迭代查询

域名解析之递归查询VS迭代查询

时间:2023-06-16 19:45:17浏览次数:46  
标签:本地 域名解析 查询 域名 VS DNS 服务器 客户端

【大部分内容转自中科三方】

DNS解析是互联网中的重要环节,承担着将域名翻译为可由计算机直接读取的IP地址的基础功能。根据查询对象不同DNS解析可分为递归解析和迭代解析两种方式

什么是递归查询?

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

在整个递归查询过程中,除一开始客户端向本地域名服务器发起查询请求外,其余各个环节均是以本地域名服务器为中心进行迭代查询,DNS客户端一直处于等待状态,直到本地域名服务器发回最终查询结果。相当于,在整个查询环节中本地域名服务器承担了中介代理的角色。

递归解析的查询过程大致如下:

 

1.客户端向本机配置的本地域名服务器发起DNS域名查询请求;

2.本地域名服务器收到请求后,会先查询本地缓存,如果有记录值会直接返回给客户端;如果没有记录,则本地域名服务器会向根域名服务器发起请求;

3.根域名服务器收到请求后,会根据所要查询域名中的后缀将所对应的顶级域名服务器(如.com、.cn等)返回给本地域名服务器;

4.本地域名服务器根据返回结果向所对应的顶级域名服务器发起查询请求;

5.对应的顶级域名服务器在收到DNS查询请求后,也是先查询自己的缓存,如果有所请求域名的解析记录,则会直接将记录返回给本地域名服务器,然后本地域名服务器再将记录返回给客户端,完成整个DNS解析过程。

6.如果顶级域名服务器没有记录值,就会将二级域名对应的服务器地址返回给本地域名服务器,本地域名服务器再次对二级域名服务器发起请求,如此类推,直到最终对应区域的权威域名服务器返回结果给本地域名服务器。然后本地域名服务器将记录值返回给DNS客户端,同时缓存本地查询记录,以便在TTL值内用户再次查询时直接将记录返回给客户端。

什么是迭代查询?

从上面的介绍中我们看到了,递归查询除在一开始客户端发起查询请求外,其他环节都是由本地域名服务器代替客户端进行的。而迭代查询则是指所有查询工作全部由客户端自己进行,除此之外,整个查询路径和步骤与递归查询没有太大区别。

 

 

DNS迭代查询流程图

 

首先客户端向本地域名服务器发起请求,如果本地域名服务器没有缓存记录,客户端便会依次对根域名服务器、顶级域名服务器和二级域名服务器等发起迭代查询,直到获得最终的查询结果。

在以下条件之一满足时,就会采用迭代解析方式:

1.在查询本地域名服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报文中的RD字段没有设置为1。

 

2.客户端在DNS请求报文中申请使用递归查询,但所配置的本地域名服务器禁止使用递归查询,即在应答DNS报文头部的RA字段设置为0。

 

域名解析记录
主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录:

(1)A记录

A代表Address,用来指定域名对应的IP地址,如将item.taobao.com指定到115.238.23.xxx,将switch.taobao.com指定到121.14.24.xxx。A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址。

(2)MX记录

Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的 MailServer,如taobao.com域名的A记录IP地址是115.238.25.xxx,如果将MX记录设置为115.238.25.xxx,即[email protected]的邮件路由,DNS会将邮件发送到115.238.25.xxx所在的服务器,而正常通过Web请求的话仍然解析到A记录的IP地址。

(3)CNAME记录

Canonical Name,即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名,如将aaa.com解析到bbb.net、将ccc.com也解析到bbb.net,其中bbb.net分别是aaa.com和ccc.com的别名。

(4)NS记录

为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器取解析。

(5)TXT记录

为某个主机名或域名设置说明,如可以为ddd.net设置TXT记录为"这是XXX的博客"这样的说明。

标签:本地,域名解析,查询,域名,VS,DNS,服务器,客户端
From: https://www.cnblogs.com/liubenlu/p/17486382.html

相关文章

  • QGIS3.22.0+VS2019 window10编译
    首先感谢博客 济南友泉软件有限公司提供的顺序教程。博客地址:https://blog.csdn.net/qq_26221775/article/details/122792445这篇博客主要是表示编译时遇到的坑。1.一定使用vs2019进行编译。我刚开始想使用vs2017编译。因此遇到了两个坑。(1)vs2017编译qgis_cor......
  • mysql分页查询
    创建测试表t1_part,id为自增主键,然后插入5900W条测试数据CREATETABLEt1_part(idintNOTNULLAUTO_INCREMENT,avarchar(30)DEFAULTNULL,bvarchar(30)DEFAULTNULL,cvarchar(30)DEFAULTNULL,dtimestampNULLDEFAULTNULL,PRIMARYKEY(id))PARTITIONBYRA......
  • 过滤实现条件查询记录:
    publicList<TbRemouldAirVO>airQueryByMap(List<TbRemouldAirVO>airVO,Map<String,String>map){//1.改造时间if(!StringUtils.isEmpty(map.get("remouldTimeAir"))){airVO=airVO.stream().filter(x->Objects.equals......
  • VSCode - Check Keyboard Shortcuts related to commenting
    Clickthegearicon,thenselect'KeyboardShortcuts':Search'comment': ......
  • 怎样利用SEO查询提升网站建设?
    作为一名网站管理员或SEO从业者,你肯定知道每个网站的排名对于流量和曝光率有着重要的影响。那么如何利用SEO查询,提升网站排名呢?今天,我将和大家分享一些我自己的经验和技巧。1.了解网站关键词在进行SEO查询之前,我们需要先了解我们网站的关键词。关键词是指用户在搜索引擎中输入的......
  • vscode+cmake c++ hello world!
    1.新建一个测试目录hello及一些必要文件D:\HELLO\HELLOCPP│CMakeLists.txt└─main.cppCMakeLists.txt#工程名project(Hello)#生成目标add_executable(Hellomain.cpp)hello.cpp#include<iostream>usingnamespacestd;intmain(){cout<<"hellowo......
  • MySQL索引优化与查询优化
    一:优化方式及数据准备1:优化方式在日常开发中都有哪些维度可以进行数据库调优?如下:①:索引失效、没有充分利用到索引--需要合理建立索引和利用索引②:关联查询太多JOIN(设计缺陷或不得已的需求) --需要对SQL优化③:服务器......
  • solr 模拟数据库like查询(不使用分词)
    IK分词个别拆分的不够完美,另外个别业务逻辑是需要替代数据库的like查询。所以本篇文章是介绍如何在solr中使用类似数据库的like查询。本片文章是介绍如何在solr中使用类似数据库的like操作。首先我们抛弃text_ik。IK分词,因为使用的是like操作,所以这块不能在使用分词了。我们需......
  • RK3568 vs 树莓派4: 嵌入式计算的巅峰之争
    ▎引言  嵌入式计算领域一直以来都有着激烈的竞争,RK3568和树莓派4作为两个备受瞩目的平台,引起了广泛的关注。本文将以处理器性能、扩展性、功耗和软件支持等方面对RK3568和树莓派4进行综合比较,以帮助读者更好的了解这两个平台的优势和适用场景。  ▎RK3568   经......
  • C#Word开发,VSTO中自定义右键菜单,CommandBarButton的Click事件不触发,或者只触发一次
    C#Word开发,VSTO中自定义右键菜单,CommandBarButton的Click事件不触发,或者只触发一次_vsto右键快捷方式word_话与山鬼听的博客-CSDN博客 Word2016不会响应WindowBeforeRightClick事件的Bug问题 ......