首页 > 其他分享 >DNS查询的两种方式:递归查询和迭代查询

DNS查询的两种方式:递归查询和迭代查询

时间:2023-12-31 14:44:54浏览次数:35  
标签:缓存 迭代 查询 DNS 服务器 客户端

1、递归解析 当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

2、迭代解析 当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。比如说:baidu.com的服务器ip地址在192.168.4.5这里

以上两种方式,在实际场景下都不会单独存在; 常见的场景是,当所有DNS服务器都没有缓存时候,客户端向本地DNS服务器请求,本地DNS向根服务器、顶级域名服务器、权威DNS服务器分别请求,拿到相应A记录后,本地DNS服务器把A记录响应给客户端,并将A记录缓存到本地;(这个就是一次递归,多次迭代,见下图;1&8是递归查询、2-7是迭代查询)

另一种常见的场景是,当本地DNS服务器没有缓存,但是上游某个DNS服务器有缓存,且本地DNS配置了递归解析功能,该DNS请求会转发给上游DNS服务器,如果上游DNS服务器本地存在缓存,则直接返回缓存给本地DNS服务器/LDNS,如果没有命中缓存且也配置了递归解析功能,会将该DNS请求再转发给上游的DNS服务器,一级一级的转发上去,直到命中某个上游DNS服务器的缓存,然后逐级返回解析记录,并在缓存中添加该记录。

最上边两种模式介绍可以帮助我们了解什么是递归查询(当LDNS收到客户端的DNS请求之后,本地DNS记录或者缓存中没有,就向上游查询,上游也会向上上游查询,直到缓存命中或查到具体信息,然后再逐级返回解析记录,一定返回一个具体的结果/IP地址给客户端)和什么是迭代查询(当LDNS收到客户端的DNS请求之后,会直接向根服务器查询,根服务器不会返回具体信息,而是返回一个NS记录,指向到顶级域名服务器;LDNS服务器再向顶级域名服务器查询,顶级域名服务器也不会返回具体信息,也是返回一个NS记录,指向到该域名的权威域名服务器;LDNS再向权威域名服务器查询,然后查到相应的A记录,最后LDNS将该A记录返回客户端并添加缓存),但是实际环境中不会单独存在,接下来说说具体看法。

递归查询,说它不会单独存在,是因为我没有遇到过,这个说服力并不强。可以帮忙指正,多谢。

迭代查询,说它不会单独存在,是因为没有哪家企业会允许自己的真实服务器不断的尝试访问外部的DNS,都是依靠LDNS解析完成之后,将A记录缓存到本地,内网真实服务器想LDNS进行域名解析请求。所有内网服务器具有公网访问权限,是不符合安全管理规范的。

参考链接:https://cloud.tencent.com/developer/article/2166580

标签:缓存,迭代,查询,DNS,服务器,客户端
From: https://www.cnblogs.com/dier-gaohe/p/17937487

相关文章

  • MySQL 表自连接,两次自连接查询
    有一个分类表,可以有三个等级的分类,一级分类下会有二级分类,二级分类会有三级分类,表结构如下所示。现在有个一次性需求,需要将所有的分类按照如下格式保存到excel,这肯定需要表进行自连接查询,还需要连接两次:一级分类id一级分类名称二级分类id二级分类名称三级分类id三级分类名称模拟数......
  • Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立子文件夹
    1.代码实例将/Users/shiheng/desktop/测试文件目录下的图片(包含子文件夹目录下的图片)移动到了/Users/shiheng/desktop/测试结果目录下,默认不分批次建立子文件夹,重名文件只保存一个,代码如下所示:packagecom.syrdbt.java.study;importjava.io.File;importjava.util.*;/**......
  • DNS原理及解析过程详解
    相信大家在平时工作中都离不开DNS解析,DNS解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。下面我们将详细的给大家讲解DNS的相关知识。什么是DNSDNS就是域名系统,是因特网中的一项核心服务,是用于实现域......
  • 什么是DNS?
    TCP/IP提供了通过IP地址来连接到设备的功能,但对用户来讲,记住某台设备的IP地址是相当困难的,因此专门设计了一种字符串形式的主机命名机制,这些主机名与IP地址相对应。在IP地址与主机名之间需要有一种转换和查询机制,提供这种机制的系统就是域名系统DNS(DomainNameSystem)。目录......
  • oracle11gR2表空间使用查询
    SELECTa.tablespace_name"表空间名称",100-ROUND((NVL(b.bytes_free,0)/a.bytes_alloc)*100,2)"占用率(%)",ROUND(a.bytes_alloc/1024/1024,2)"容量(M)",ROUND(NVL(b.bytes_free,0)/1024/1024,2)"空闲(M)",ROUND((a.bytes_alloc-NVL(b.byte......
  • 数据库查询,按年月排序,计算每月、当年每月有几条数据
    数据库查询,按年月排序,计算每月有几条数据  数据库查询,按年月排序,计算当年每月有几条数据SELECTDATE_FORMAT(inspection_date,'%Y-%m')ASDATETIME,count(*)ASnumFROMgw_inspection_datat1WHEREYEAR(inspection_date)=YEAR(CURDATE())GROUPBY......
  • IP: dns-lookup : 查询域名的公网IP地址 解决 DNS域名解析绑架的问题例如访问 raw.git
    示例:https://github.com/orgs/community/discussions/42655https://github.com/mwaskom/seaborn-data/blob/2b29313169bf8dfa77d8dc930f7bd3eba559a906/dataset_names.txthttps://www.ip-lookup.org/dns-lookup/raw.githubusercontent.comIPDetailsDomain:Raw.githubuser......
  • linux 中实现仅对指定目录下的目录或者文件单独进行迭代
     001、测试目录如下,分别包含目录、文件[root@pc1test]#ls##测试目录dir1dir2dir3dir4file1file2file3file4 002、仅对目录进行迭代 a、[root@pc1test]#ls##测试目录dir1dir2di......
  • 算法学习Day17二叉树迭迭迭迭代
    Day17迭迭迭迭代ByHQWQF2023/12/28笔记110.平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树_每个节点_的左右两个子树的高度差的绝对值不超过1。示例1:输入:root=[3,9,20,null,null,15,7]输出:true递归法......
  • 第六十天 正反向、聚合、分组、F与Q、ORM查询
    昨日内容查询常见关键字1.filter()2.all()3.get()4.first()5.last()6.values()7.values_list()8.order_by()9.distinct()10.exclude()11.exists()12.count()13.reverse()14.raw()神奇的双下划线查询__gt__gte__lt__lte__in__range__contains__icontains......