一次递归 DNS 查询,逐跳详解
浏览器
想访问 example.com
解析器
运营商 / 1.1.1.1
根 + TLD
谁负责 .com?
权威服务器
真正的答案
这条链路上的每一跳本身都是一次 DNS 查询,之后都会被缓存
什么是 DNS?它是如何工作的
互联网上的每台设备,都可以通过一个数字地址访问,也就是 IP 地址。没有人愿意去记 172.64.80.1,所以我们改用名称:example.com。DNS,即域名系统,就是这样一项目录服务,它把您输入的名称,转换成计算机真正需要的地址。正因为它在您发出的几乎每个网络请求的背后都运行得如此可靠,人们才很容易觉得它理所当然。
查询过程,逐步拆解
当您第一次访问某个域名时,您的设备并不知道它的 IP 地址。它会请求一个解析器去查明,解析器通常由您的 ISP 运营,或是 Cloudflare、Google 这样的公共服务商。这个解析器也未必知道答案,于是它沿着一条权威链路逐级查找:
- 根服务器把它指向负责该域名顶级域(.com、.org、.io 等)的服务器。
- TLD 服务器把它指向该具体域名的权威域名服务器,也就是域名所有者实际配置的那些服务器。
- 权威域名服务器返回真正的记录:域名当前指向的 IP 地址(一个或多个)。
整个链路通常在不到一秒内完成,结果随后会被缓存,这样就不必在每次请求时重复这个过程,下面的 TTL 部分会详细说明。
一次具体的追踪,从头到尾
假设一个缓存为空的解析器,被要求解析 blog.example.com。它首先询问根服务器,根服务器不知道答案,但知道谁负责 .com,于是把解析器指向那里。.com 的 TLD 服务器同样不知道最终答案,但知道 example.com 本身委派给了哪些域名服务器,比如 ns1.dnshost.com 和 ns2.dnshost.com,于是又把解析器指向它们。直到这时,解析器才询问一台真正保存着 example.com 记录的服务器,这台权威服务器给出真正的答案:一条 A 记录,或者一条还要再跟进一跳的 CNAME。这条链路上的每一步,本身都是一次 DNS 查询,所以对一个域名的第一次(冷缓存)查询,明显比中间应答被缓存之后的所有查询都要慢。
缓存发生的层级,不止解析器这一层
递归解析器并不是唯一缓存应答的地方。大多数操作系统会保留自己的短期 DNS 缓存,有些浏览器还会在此之上另设一份。这是对“同一个”域名的两次查询看起来结果不一致的第二个常见原因:并不总是不同的解析器给出了不同的答案,有时是您自己的机器提供了一份稍微过期的本地副本,而一次全新的直接查询,其实早已显示出当前的结果。
您真正会遇到的记录类型
“DNS 记录”并不是单一的东西,一个域名会并列保存好几种不同的记录类型,每一种回答不同类别的问题。查询域名的 IP 地址,只会用到其中两种,其余各种有着完全不同的用途。
| 记录类型 | 回答的问题 | 示例 |
|---|---|---|
| A | 这个域名的 IPv4 地址是什么? | 192.0.2.10 |
| AAAA | 这个域名的 IPv6 地址是什么? | 2606:4700::6810:84e5 |
| CNAME | 我应该改去查询哪个别的主机名? | cdn.provider.net |
| MX | 哪台服务器负责处理这个域名的邮件? | mail.example.com(优先级 10) |
| TXT | 这个名称上附带了什么自由格式的文本? | SPF、DKIM、域名验证 |
| NS | 哪些域名服务器是这个域名的权威? | ns1.dnshost.com |
即使您从不直接接触 DNS 记录,这也很重要
理解这一流程,能让许多原本令人困惑的现象变得合理:为什么 DNS 变更不会立即生效,为什么一个域名在某个网络上解析正常,换一个网络却失败,以及为什么“网站挂了”有时竟然是 DNS 问题,而根本不是服务器问题。本工具这类工具会直接跳到最后一步,也就是直接查询一个靠近权威来源的公共解析器,并把它的返回内容原样展示给您,这样您无需猜测,就能看到一个域名 DNS 的实际当前状态。
这也解释了为什么在日常排障中,“DNS”和“互联网”常常被混为一谈。DNS 并不承载您的流量,不托管您的内容,也不运行您的应用,它始终只回答一个问题:“这个名称此刻指向哪个地址。”此后发生的一切(实际的连接、页面加载、API 响应)都属于另一套完全不同的系统,这恰恰是为什么在假设出了更大的问题之前,值得先把 DNS 作为一个独立的、可单独检查的步骤隔离出来。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
相关阅读
三个层级都被称作“DNS 服务器”
存根解析器
您自己的设备
递归解析器
运营商、路由器或 1.1.1.1
权威服务器
域名自己的 DNS
域名 IP 地址查询:如何解读结果
弄清域名 IP 地址查询结果的含义,包括多个地址、IPv4 与 IPv6 记录、CDN 边缘节点,以及反向归属判断的局限。
三个层级都被称作“DNS 服务器”
存根解析器
您自己的设备
递归解析器
运营商、路由器或 1.1.1.1
权威服务器
域名自己的 DNS
什么是 DNS 服务器?解析器与域名服务器的角色
了解 DNS 服务器的作用,递归解析器与权威域名服务器有何不同,以及如何判断是哪台服务器回应了某次查询。
一次递归 DNS 查询,逐跳详解
浏览器
想访问 example.com
解析器
运营商 / 1.1.1.1
根 + TLD
谁负责 .com?
权威服务器
真正的答案
这条链路上的每一跳本身都是一次 DNS 查询,之后都会被缓存
DNS 解析详解:从查询到应答
跟随一次 DNS 查询穿过缓存、递归解析器、引荐和权威服务器,了解主机名是如何变成地址的。