当前位置: 首页 > news >正文

DNS解析:递归查询与迭代查询详解

DNS 查询主要分为两种核心模式:递归查询迭代查询。它们在解析过程中责任归属和交互方式上存在显著差异。

1. 递归查询 (Recursive Query)

  • 核心概念: 客户端(如你的电脑、手机上的浏览器或操作系统)向它的本地 DNS 服务器(通常由你的 ISP 提供或你手动配置的公共 DNS 服务器如 8.8.8.8)发出的查询。
  • 责任归属: 客户端将解析域名的全部责任委托给本地 DNS 服务器。
  • 过程:
    1. 客户端向本地 DNS 服务器发送一个查询请求:“请告诉我 www.example.com 的 IP 地址,无论你需要做什么,请把最终答案给我(IP地址或明确的错误信息),不要只给我一个其他服务器的地址。”
    2. 本地 DNS 服务器收到这个递归查询请求后,必须承担起完成整个解析过程的责任
    3. 如果本地 DNS 服务器没有缓存答案,它会代表客户端自己去向 DNS 层级结构中的其他服务器(根 DNS、顶级域 DNS、权威 DNS)发起后续查询(通常是迭代查询,见下文)。
    4. 本地 DNS 服务器最终会找到权威 DNS 服务器并获得 www.example.com 的 IP 地址。
    5. 本地 DNS 服务器将最终的答案(IP地址)或明确的错误信息返回给客户端。
  • 关键特点:
    • 客户端只需问一次,得到一个最终答案(成功或失败)。
    • 本地 DNS 服务器承担了所有繁重的工作(查询其他服务器、处理重定向、聚合结果)。
    • 对客户端来说最简单、负担最轻。
  • 类比: 你(客户端)问图书管理员(本地 DNS 服务器):“请把《百年孤独》这本书拿给我。” 管理员会自己去书库查找,最终要么把书交给你,要么告诉你“书已借出”或“没有这本书”。你不需要知道管理员具体去了哪个书架。

2. 迭代查询 (Iterative Query / Non-Recursive Query)

  • 核心概念: DNS 服务器之间(主要是本地 DNS 服务器在代表客户端解析时,向层级更高的 DNS 服务器发出的查询)使用的查询方式。
  • 责任归属: 被查询的 DNS 服务器只提供它能给出的最佳答案,通常是:
    • 最终答案(如果它正好是权威服务器或缓存了答案)。
    • 或者,一个指向更接近目标权威 DNS 服务器的推荐(Referral)(例如,指向负责 .com 域的顶级域服务器列表)。
    • 它不会代替查询者去问下一个服务器。
  • 过程:
    1. 当本地 DNS 服务器(代表客户端)需要解析 www.example.com 时,它首先查询一个根 DNS 服务器
    2. 根 DNS 服务器收到查询后,发现是 .com 域,它不会自己去问 .com 服务器,而是回复本地 DNS 服务器:“我不知道 www.example.com 的 IP,但我知道负责 .com 域的顶级域(TLD)服务器有哪些,它们的地址是 [TLD Server IPs]。”
    3. 本地 DNS 服务器拿到这个推荐后,自己再选择其中一个 TLD 服务器(.com)发起查询:“请告诉我 www.example.com 的 IP 地址。”
    4. TLD 服务器(.com)收到查询,发现 example.com 域是由一组特定的权威 DNS 服务器负责,它也不会自己去问这些权威服务器,而是回复本地 DNS 服务器:“我不知道 www.example.com 的具体 IP,但我知道负责 example.com 域的权威 DNS 服务器有哪些,它们的地址是 [Authoritative Server IPs]。”
    5. 本地 DNS 服务器拿到这个新的推荐后,自己再选择其中一个权威 DNS 服务器发起查询。
    6. 权威 DNS 服务器收到 www.example.com 的查询,因为它拥有该域名的记录,所以它会回复本地 DNS 服务器最终答案:“www.example.com 的 IP 地址是 X.X.X.X”
    7. 本地 DNS 服务器收到最终答案后,将其缓存,并回复最初发出递归查询的客户端。
  • 关键特点:
    • 查询者(通常是本地 DNS 服务器)需要根据收到的“推荐”,自己去联系下一个 DNS 服务器。
    • 被查询的服务器只回答自己知道的(答案或推荐),不代劳。
    • 解析责任分散在整个 DNS 层级结构中。
    • 对查询者(本地 DNS 服务器)来说负担较重(需要发起多次查询)。
  • 类比: 这次你(现在是本地 DNS 服务器)在图书馆(DNS 层级)里自己找书。你问前台(根服务器):“《百年孤独》在哪?” 前台说:“西班牙语文学在 8 楼,去问那里的管理员。” 你上到 8 楼问管理员(TLD 服务器):“《百年孤独》在哪?” 管理员说:“加西亚·马尔克斯的书在 805 书架。” 你走到 805 书架(权威服务器),终于找到了《百年孤独》(IP 地址)。每一步你都需要自己走到下一个地点去问。

总结与协作:

  • 递归查询: 客户端 -> 本地 DNS 服务器 (“给我最终答案!”)
  • 迭代查询: 本地 DNS 服务器 -> 根/TLD/权威 DNS 服务器 (“告诉我你能回答的最好结果(答案或下一步问谁)”)
  • 典型解析流程:
    1. 客户端向本地 DNS 服务器发起递归查询
    2. 本地 DNS 服务器接受递归查询请求,承担解析责任。
    3. 本地 DNS 服务器向根 DNS 服务器发起迭代查询
    4. 根 DNS 服务器回复推荐(指向 TLD 服务器)。
    5. 本地 DNS 服务器向 TLD 服务器发起迭代查询
    6. TLD 服务器回复推荐(指向权威服务器)。
    7. 本地 DNS 服务器向权威 DNS 服务器发起迭代查询
    8. 权威 DNS 服务器回复最终答案(IP 地址)。
    9. 本地 DNS 服务器将最终答案回复给客户端(完成递归查询)。

理解这两种模式对于弄清楚 DNS 域名解析的底层机制、性能优化(缓存)、以及排查 DNS 相关问题至关重要。简单来说,递归是“帮我搞定一切”,迭代是“告诉我下一步该找谁”。


文章转载自:

http://X6kBN0Kb.cyyhy.cn
http://0c9qVgym.cyyhy.cn
http://5Kd0LpUp.cyyhy.cn
http://LJSQMue0.cyyhy.cn
http://Hj0pc26K.cyyhy.cn
http://BE09hiJL.cyyhy.cn
http://5YfBvmPT.cyyhy.cn
http://7t19RSNi.cyyhy.cn
http://sQL7r9EZ.cyyhy.cn
http://IxPXjl1n.cyyhy.cn
http://EcKDKhO8.cyyhy.cn
http://ypsWeqHG.cyyhy.cn
http://XTV7GwJk.cyyhy.cn
http://wcR7rw8X.cyyhy.cn
http://qwWMbLCB.cyyhy.cn
http://aZ84qxrk.cyyhy.cn
http://qBaou45l.cyyhy.cn
http://XVLVep93.cyyhy.cn
http://Qrf7jChg.cyyhy.cn
http://kRoxVelA.cyyhy.cn
http://WbTRQauV.cyyhy.cn
http://JU2RVGov.cyyhy.cn
http://UFE4xTRJ.cyyhy.cn
http://AlzrjvEQ.cyyhy.cn
http://LzwFemK0.cyyhy.cn
http://pdC2twcj.cyyhy.cn
http://bufyrt8Y.cyyhy.cn
http://ZlFBpAeZ.cyyhy.cn
http://E4kVcT35.cyyhy.cn
http://nS0gamJa.cyyhy.cn
http://www.dtcms.com/a/381272.html

相关文章:

  • 中级统计师-统计法规-第五章 统计机构与统计人员
  • API 资产治理:ETag/Cache-Control/分页/排序/投影的“契约基线”
  • V少JS基础班之第八弹:this
  • Class52 双向循环神经网络
  • STM32HAL库_cubeMX
  • Class54 编码器-解码器
  • c++多设备并发运行且互相操作 上位机软件结构
  • PCDN双跑量系统
  • Altium Designer使用精通教程 第三章(原理图绘制及编译检查)
  • Docker技术解析
  • MySQL数据库(一)—— 数据库基础与MySQL安装管理指南
  • 京东商品详情 API 全解析:合规对接与 B2C 场景实战指南
  • 高德地图从零开始:Key 申请到项目初始化全流程教程(Vue3 + AMap 2.0)
  • 从跟跑到领跑:OBOO鸥柏触摸屏的军用信息化技术自主之路
  • LLM(三)
  • u盘 修复
  • C++异常处理设计与实践:主动抛出异常的处理策略
  • 嵌入式数据结构笔记三——单向链表Ⅲ
  • Ampace厦门新能安校招/社招Verify测评演绎数字推理行测真题题库及远程助攻
  • ORM框架SQLAlchemy工具:模型类(Model Class)和实体类(Entity Class)介绍
  • CSS布局 - 定位 -- 笔记4
  • 智能过滤器系统:基于实际数据的动态Admin过滤方案
  • 发挥nano banana的最大能力
  • Nvidia GPU 明细表、架构详解
  • 达梦数据库相关操作语句
  • 拓扑排序--算法题
  • transformer 相对位置编码详解
  • 【学习K230-例程20】GT6700-TCP-Server
  • 一文理清合同金额、已确认金额、累计开票金额、最大可开票金额、未票应收金额之间的关系
  • 复杂任务拆解艺术:如何通过多次对话与提示词工程高效解决难题