递归解析器

递归解析器(也称为 DNS 递归器)是一种 DNS 服务器,充当客户端和 DNS 名称服务器之间的中间人。当您尝试访问网站时,递归解析器会接收您的请求,并通过查询多个 DNS 服务器来全权负责追踪 IP 地址。它代表您处理整个查询过程,并缓存结果以加快未来的查询速度。

How it works

递归 DNS 解析器是 DNS 查询的第一站。它从客户端设备接收域名请求,并全权负责将其解析为 IP 地址。解析器会在必要时查询多个 DNS 服务器,遵循 DNS 层次结构从根服务器到顶级域服务器再到权威服务器,整个过程无需客户端的任何额外操作。

递归解析过程的工作原理如下: **1. 客户端查询:** 您的设备向配置的递归解析器发送 www.example.com 的 DNS 查询(通常由您的 ISP 提供,或使用 Google DNS 8.8.8.8 或 Cloudflare 1.1.1.1 等服务) **2. 缓存检查:** 解析器首先检查其缓存,查看最近是否解析过该域名。如果找到且未过期(基于 TTL),它会立即返回缓存的 IP 地址。这是最快的路径,只需几毫秒即可完成。 **3. 根服务器查询(如果缓存未命中):** 如果没有缓存答案,解析器会查询 13 个根 DNS 服务器之一,请求 www.example.com 的信息。根服务器会响应 .com 顶级域名服务器的 IP 地址。 **4. 顶级域服务器查询:** 解析器随后查询 .com 顶级域服务器,该服务器会响应 example.com 的权威名称服务器的 IP 地址。 **5. 权威服务器查询:** 最后,解析器查询 example.com 的权威名称服务器,该服务器提供 www.example.com 的 IP 地址。 **6. 响应和缓存:** 解析器将 IP 地址返回给您的设备,并根据记录的 TTL 指定的时长缓存该结果。整个过程通常在几毫秒内完成。 **关键区别 - 递归 vs. 迭代:** 在递归查询中,解析器完成所有工作 - 客户端只需询问一次就能获得最终答案。在迭代查询中,解析器会返回引用,让客户端负责跟进每个服务器。

Key Points

  • 递归解析器代表客户端执行整个 DNS 查询过程
  • 它们按顺序查询根服务器、顶级域服务器和权威服务器
  • 结果根据 TTL 进行缓存,以提高后续查询的性能
  • 常见的公共递归解析器包括 Google DNS (8.8.8.8)、Cloudflare (1.1.1.1) 和 Quad9 (9.9.9.9)
  • 除非手动配置不同的解析器,否则大多数用户会自动使用其 ISP 的递归解析器

Common Use Cases

  • 互联网浏览: 每次访问网站时,浏览器都会使用递归解析器将域名转换为加载页面所需的 IP 地址
  • DNS 性能优化: 拥有大量缓存的大型递归解析器可以提供比缓存容量有限的小型本地解析器更快的 DNS 响应
  • 内容过滤和安全: 一些递归解析器(如 OpenDNS 或 Quad9)提供内容过滤、恶意域名拦截和家长控制功能
  • 隐私增强: 注重隐私的递归解析器(如 Cloudflare 1.1.1.1)不记录查询日志,并可能使用 DNS over HTTPS (DoH) 来防止 ISP 监听

code 递归 DNS 查询流程示例

TypeHost / NameValue / Points toTTL
步骤 1客户端 → 解析器查询: www.example.com
步骤 2解析器 → 根服务器.com 在哪里?
步骤 3解析器 → 顶级域服务器example.com 在哪里?
步骤 4解析器 → 权威服务器www.example.com 是什么?
步骤 5解析器 → 客户端192.0.2.13600

* 此示例展示了递归解析器如何查询多个服务器来解析 www.example.com。

Frequently Asked Questions

递归解析器和权威名称服务器有什么区别?expand_more
递归解析器是一个中间人,通过查询其他服务器代表客户端执行 DNS 查询。权威名称服务器是最终的真实来源,实际存储并提供域名的官方 DNS 记录。可以这样理解:递归解析器负责提问和搜索答案,而权威名称服务器提供确定的答案。递归解析器位于 DNS 查询的开始,权威服务器位于查询的末端。
我可以更换递归解析器吗?expand_more
可以,您可以配置设备或路由器使用不同的递归解析器,而不是 ISP 的默认解析器。常见选项包括 Google DNS (8.8.8.8 和 8.8.4.4)、Cloudflare (1.1.1.1 和 1.0.0.1) 以及 Quad9 (9.9.9.9)。每个解析器都提供不同的功能 - 有些侧重速度,有些侧重隐私、恶意软件拦截或内容过滤。您可以在网络设置或路由器配置中更改此设置。
为什么有人会使用公共递归解析器而不是 ISP 的解析器?expand_more
人们切换到公共递归解析器有几个原因:更快的性能(大型提供商拥有更好的缓存和基础设施)、改善隐私(一些 ISP 会记录或利用 DNS 查询获利)、安全功能(拦截恶意软件和钓鱼域名)、可靠性(具有更好正常运行时间的冗余基础设施)以及访问权限(一些 ISP 使用基于 DNS 的审查,而公共解析器可以绕过)。但是,使用非 ISP 解析器可能会以不同方式路由流量,并可能增加 CDN 内容的延迟。
递归解析器中的缓存是如何工作的?expand_more
当递归解析器成功解析域名时,它会将答案存储(缓存)记录的 TTL(生存时间)指定的时长。如果另一个客户端在 TTL 过期之前查询同一域名,解析器会立即返回缓存的答案,而无需再次查询其他服务器。这大大提高了性能并减少了权威服务器的负载。热门域名可能会被缓存数小时,而访问较少的域名可能具有较短的 TTL。
如果递归解析器宕机会发生什么?expand_more
如果您的主递归解析器不可用,您的设备通常会尝试您配置的辅助解析器(如果有)。大多数操作系统和路由器允许您配置多个 DNS 服务器以实现冗余。如果所有配置的解析器都无法访问,您将无法通过域名访问网站(但如果您知道 IP 地址,仍然可以通过 IP 地址访问)。这就是为什么建议在网络设置中至少配置两个递归解析器。