Domain IP Lookup

一次递归 DNS 查询,逐跳详解

浏览器

想访问 example.com

解析器

运营商 / 1.1.1.1

根 + TLD

谁负责 .com?

权威服务器

真正的答案

这条链路上的每一跳本身都是一次 DNS 查询,之后都会被缓存

DNS 基础

什么是 DNS?它是如何工作的

4 分钟阅读

互联网上的每台设备,都可以通过一个数字地址访问,也就是 IP 地址。没有人愿意去记 172.64.80.1,所以我们改用名称:example.com。DNS,即域名系统,就是这样一项目录服务,它把您输入的名称,转换成计算机真正需要的地址。正因为它在您发出的几乎每个网络请求的背后都运行得如此可靠,人们才很容易觉得它理所当然。

查询过程,逐步拆解

当您第一次访问某个域名时,您的设备并不知道它的 IP 地址。它会请求一个解析器去查明,解析器通常由您的 ISP 运营,或是 Cloudflare、Google 这样的公共服务商。这个解析器也未必知道答案,于是它沿着一条权威链路逐级查找:

  1. 根服务器把它指向负责该域名顶级域(.com、.org、.io 等)的服务器。
  2. TLD 服务器把它指向该具体域名的权威域名服务器,也就是域名所有者实际配置的那些服务器。
  3. 权威域名服务器返回真正的记录:域名当前指向的 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 工具。