什么是DNS的递归查询和迭代查询?

news2024/11/24 6:22:50

在这里插入图片描述
在 DNS 查询中,有两种主要的查询方式:递归查询和迭代查询。它们的工作方式和关系如下:

  1. 递归查询 (Recursive Query)

    • 当一个客户端(例如你的电脑或手机)向 DNS 服务器(通常是你的本地 DNS 服务器或 ISP 的 DNS 服务器)发送请求时,如果该服务器没有所需的信息,那么它有责任自己去其他 DNS 服务器中查找这些信息。
    • 服务器会代表客户端执行所有必要的进一步查询,直到它获得答案。然后,它将答案返回给客户端。这种查询方式称为递归查询,因为服务器必须递归地完成客户端的查询。
    • 这种查询方式简化了客户端的工作,但为服务器增加了更多的工作。
  2. 迭代查询 (Iterative Query)

    • 当一个 DNS 服务器(例如本地 DNS 服务器)向其他 DNS 服务器(例如根域服务器或 TLD 服务器)发送查询时,它可能执行一个迭代查询。
    • 在迭代查询中,被查询的服务器提供关于如何获得答案的最佳信息,但并不实际为查询者提供最终答案。例如,当本地 DNS 服务器查询根服务器以获取 example.com 的 IP 地址时,根服务器可能只告诉它去查询一个特定的 .com TLD 服务器。
    • 之后,本地 DNS 服务器再继续查询 .com TLD 服务器,然后可能被告知去查询 example.com 的权威 DNS 服务器。这个过程一直持续,直到本地 DNS 服务器得到最终的答案。
    • 这种查询方式意味着每一步都需要请求者(在这种情况下是本地 DNS 服务器)进行下一步的查询,而不是被查询的服务器自己去做。

通常,当一个终端用户的设备开始 DNS 查询时,首先是递归查询,因为它查询的本地 DNS 服务器或 ISP 的 DNS 服务器,期望得到一个完整的答案。但在 DNS 解析过程中,涉及的其他服务器间的查询是迭代的。

想象你在浏览器中键入 www.example.com。

递归查询:

你的电脑(也可以说是你的浏览器)首先会检查它的本地缓存,看是否有 www.example.com 的 DNS 记录。如果没有,它会向配置的 DNS 服务器发送请求,这通常是你的互联网服务提供商(ISP)的 DNS 服务器或者其他公共 DNS 服务,如 Google 的 8.8.8.8。
你的电脑期望这个服务器给它一个完整的答案,即 www.example.com 的 IP 地址。这种期望得到完整答案的查询称为递归查询。
迭代查询:

假设你的 ISP 的 DNS 服务器没有 www.example.com 的缓存记录。此时,它需要在 DNS 系统中查找答案。
首先,它会查询一个根 DNS 服务器。根服务器不知道 www.example.com 的 IP,但它知道哪个 TLD(顶级域)服务器负责 .com 域。于是,它告诉你的 ISP 的 DNS 服务器:“我不知道 www.example.com 的 IP,但你可以去询问这个特定的 .com TLD 服务器。” 这就是迭代查询。
接下来,你的 ISP 的 DNS 服务器会向指定的 .com TLD 服务器发送查询。.com 服务器也许也不知道 www.example.com 的具体 IP,但它知道 example.com 的权威 DNS 服务器地址,于是它再次进行迭代查询,告诉你的 ISP 的 DNS 服务器去询问 example.com 的权威服务器。
最后,你的 ISP 的 DNS 服务器查询 example.com 的权威服务器,这次它得到了 www.example.com 的 IP 地址。
返回答案:

有了答案后,你的 ISP 的 DNS 服务器将 IP 地址返回给你的电脑(浏览器),完成了递归查询的请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/861452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MAUI+Blazor:windows 打包踩坑

文章目录 前言MSIX安装文件如何发布选择Windows平台旁加载自定义签名版本号安装 总结 前言 最近打算研究一下MAUIBlazor,争取在今年年底之前彻底搞懂MAUIBlazor的安装模式, MSIX安装文件 Windows 4种安装程序格式MSI,EXE、AppX和MSIX优缺点…

Java:Lambda表达式

文章目录 描述语法关于类型推断 描述 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达…

竞赛项目 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &#x…

Openlayers实战:地理位置搜索定位

不论是google地图,异或是百度等其他地图,都有个搜索功能,可以填写搜索词做一个定位。本文调用一个插件,在openlayers中实现地理位置搜索定位,虽不是非常好用,但也能起到一定的帮助。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) …

Springboot-Retrofit HTTP工具框架快速使用

在SpringBoot项目直接使用okhttp、httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一管理。 因此,在这里推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架retrofit-spring-boot-starter,使用非常简单方便,同时又提供…

【数理知识】最小二乘法,从线性回归出发,数值举例并用最小二乘法求解回归模型

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动,平动,转动4【数理知识】向量数乘,内积,外积,matlab代码实现5【数理知识】协…

【UE4 RTS】06-Camera Edge Scroll

前言 本篇实现的效果是当玩家将鼠标移至屏幕边缘时,视野会相应的上下左右移动 效果 步骤 1. 打开玩家控制器“RTS_PlayerController_BP”,在类默认值中设置如下选项 新建一个宏,命名为“EdgeSroll”, 添加两个输入和三个输出&a…

C语言的简单基础知识

C语言的基础知识包括变量、数据类型、运算符、控制流语句、函数等。下面会对每个部分进行详细解释,并给出相应的案例。 变量和数据类型: 变量:C语言中的变量用于存储数据,并且需要先声明后使用。声明变量时需要指定其数据类型。例…

MySQL_多表查询

多表查询 概述:多表查询就是多张表之间的查询。 回顾:SELECT * FROM table_name 多表查询 from 后面就得跟多张表。如:select * from emp,dept 笛卡尔积:笛卡尔积在数学中,表示两个集合,集合 A 和集合 …

LeetCode--HOT100题(26)

目录 题目描述:142. 环形链表 II(中等)题目接口解题思路代码 PS: 题目描述:142. 环形链表 II(中等) 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返…

聊聊无锁、匿名偏向锁、偏向锁、轻量级锁、重量级锁

锁的竞争可以理解是markword的竞争。 一、简介 本文做作为知识点的补充,有些情况并没有进行测试。 二、markword结构图 64位虚拟机markword结构图: 三、锁的多种状态 我们一般认为锁的状态是:无锁、偏向锁、轻量级锁、重量级锁&#xff…

SpringBoot 整合MyBatis

整合MyBatis 官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3 整合测试 导入 MyBatis 所需要的…

springboot工程集成前端编译包,用于uni-app webView工程,解决其需独立部署带来的麻烦,场景如页面->画布->图片->pdf

前端工程 访问方式 http://127.0.0.1:8080/context/frontEnd/index放行 public class SecurityConfig extends WebSecurityConfigurerAdapter { "/frontEnd/**",SysFrontEndController import lombok.extern.slf4j.Slf4j; import nl.basjes.shaded.org.springfram…

新零售智慧生态电商系统搭建,开源多用户商城系统开发(H5、Java)

搭建新零售智慧生态电商系统和开源多用户商城系统需要进行以下具体步骤: 1. 确定需求:首先明确系统的功能需求和技术要求,包括用户注册和登录、商品管理、购物车、订单管理、支付等功能。 2. 选择技术架构:确定使用的开发语言和…

C++笔记之将定时器加入向量并设置定时器的ID为i

C笔记之将定时器加入向量并设置定时器的ID为i code review! 文章目录 C笔记之将定时器加入向量并设置定时器的ID为i关于代码中的void operator()() 运行 代码 #include <chrono> #include <iostream> #include <thread> #include <vector>// 定义定时…

shell脚本变量

shell脚本变量 1.变量概述1.1变量类型1.2变量的命令要求1.3 变量作用范围1.4几个符号作用 2.局部变量3.环境变量3.1系统内置环境变量 4. 只读变量5.位置变量6.预定义变量7.四个配置文件作用 1.变量概述 变量即在程序运行过程中它的值是允许改变的量变量是用一串固定的字符串去…

(docker)mysql镜像拉取-创建容器-容器的使用【个人笔记】

【容器的第一次创建】 容器的第一次创建&#xff0c;需要先下载镜像&#xff0c;从 镜像拉取 0、可以搜索镜像的版本 docker search mysql1、先拉取MySQL的镜像&#xff0c;默认拉取最新版&#xff0c;使用下面的命令拉取mysql镜像 docker pull mysql也可以指定mysql的版本…

日撸java_day60

文章目录 小结k近邻算法&#xff08;knn&#xff09;定义算法流程距离度量k值的选择总结 聚类定义k-means聚类步骤k-means算法小结 小结 k近邻算法&#xff08;knn&#xff09; 定义 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别…

Llms大模型中国开源项目大全(更新至2023-08-10)

一、前言 你了解中国ChatGPT相关开源项目的情况吗&#xff1f; 如果想要从事chatGPT相关项目的开发和研究&#xff0c;有哪些可以借鉴和开源项目&#xff1f; 中国的chatGPT开源项目发展如何&#xff0c;本文将给你带来答案。 二、项目概述 数据截至到&#xff1a;2023年8月1…

由于目标计算机积极拒绝,无法连接。 Could not connect to Redis at 127.0.0.1:6379

项目在启动时候报出redis连接异常 然后查看是redis 连接被计算机拒绝 解决方法 打开redis安装文件夹 先打开redis-servce.exe挂着&#xff0c;再打开redis-cli.exe 也不会弹出被拒接的问题了。而且此方法不用每次都去cmd里输入命令。