DNS 查询:域名的工作原理
· 12分钟阅读
目录
什么是 DNS 及其重要性
域名系统(DNS)通常被称为"互联网的电话簿",这是有充分理由的。每次您访问网站、发送电子邮件或使用任何互联网服务时,DNS 都在幕后工作,将人类可读的域名转换为机器可读的 IP 地址。
如果没有 DNS,您需要记住像 172.217.14.206 这样的数字串,而不是简单地在浏览器中输入 google.com。这种转换服务对互联网的运作如此重要,以至于当 DNS 失败时,整个网络的部分区域将无法访问。
DNS 作为一个分布式数据库系统运行,全球数百万台服务器协同工作,每天解析数十亿次查询。这种去中心化架构使互联网既可扩展又具有弹性,能够处理大量流量负载,同时保持冗余。
快速提示:DNS 不仅用于网站。它还用于电子邮件传递(MX 记录)、服务发现、负载均衡,甚至垃圾邮件防护。理解 DNS 对于任何使用网络系统的人来说都是必不可少的。
DNS 的工作原理:完整的解析过程
当您在浏览器中输入域名时,一系列复杂的事件会在几毫秒内展开。这个过程称为 DNS 解析,涉及多个服务器和缓存层协同工作,以提供您需要的 IP 地址。
DNS 解析的分步过程
- 浏览器缓存检查:您的浏览器首先检查自己的缓存,查找最近解析的 IP 地址。现代浏览器会在短时间内(通常为 60 秒到几分钟)缓存 DNS 记录,以加快对同一站点的重复访问。
- 操作系统缓存:如果浏览器缓存未命中,查询将转到操作系统的 DNS 解析器缓存。此缓存存储系统上所有应用程序的 DNS 记录,而不仅仅是您的网络浏览器。在 Windows 上,您可以使用
ipconfig /displaydns查看此缓存。 - 路由器缓存:许多家庭和办公室路由器也维护自己的 DNS 缓存。这在查询离开本地网络之前提供了另一层速度优化。
- ISP DNS 解析器:当本地缓存没有答案时,您的查询会到达互联网服务提供商的 DNS 解析器(也称为递归解析器)。当您的设备通过 DHCP 连接到网络时,此服务器会自动配置。
- 根域名服务器:ISP 的解析器联系 13 个根域名服务器系统之一(实际上是使用任播路由的数百台服务器)。这些服务器不知道特定域的 IP 地址,但它们知道在哪里可以找到每个顶级域(TLD)的权威服务器。
- TLD 域名服务器:根服务器将查询定向到适当的 TLD 域名服务器。例如,对
.com域的查询会转到 .com TLD 服务器,而.org查询会转到 .org 服务器。这些服务器维护有关哪些权威域名服务器处理其 TLD 内每个域的信息。 - 权威域名服务器:最后,查询到达域的权威域名服务器,该服务器由域所有者配置。此服务器包含将域映射到其 IP 地址和其他信息的实际 DNS 记录。
- 响应和缓存:IP 地址通过链路返回,每个服务器根据记录的生存时间(TTL)值缓存结果。您的浏览器接收 IP 地址,现在可以建立与 Web 服务器的连接。
整个过程通常在 20-120 毫秒内完成,尽管当缓存结果可用时可能会快得多。您可以使用我们的 DNS 查询工具测试 DNS 解析速度,以查看不同 DNS 服务器的响应速度。
专业提示:由于缓存的原因,域的第一次 DNS 查询总是比后续查询慢。这就是为什么即使您清除浏览器缓存,网站在重复访问时通常也会感觉更快。
递归与迭代 DNS 查询
DNS 查询有两种类型:递归和迭代。理解这两者之间的区别有助于解释 DNS 服务器如何相互通信。
递归查询将查找答案的负担放在 DNS 服务器上。当您的计算机向 ISP 的解析器发送递归查询时,该服务器负责跟踪整个链路,直到获得明确的答案。解析器完成所有工作并返回 IP 地址或错误。
迭代查询用于 DNS 服务器之间。当您的 ISP 解析器查询根服务器时,它会收到对链中下一个服务器的引用,而不是最终答案。然后解析器查询该服务器,收到另一个引用,并继续直到到达权威域名服务器。
DNS 记录类型详解
DNS 记录是存储在权威域名服务器上的指令,提供有关域的信息。不同的记录类型服务于不同的目的,从将域指向服务器到验证电子邮件真实性。
| 记录类型 | 用途 | 示例 |
|---|---|---|
A |
将域映射到 IPv4 地址 | example.com → 192.0.2.1 |
AAAA |
将域映射到 IPv6 地址 | example.com → 2001:db8::1 |
CNAME |
创建指向另一个域的别名 | www.example.com → example.com |
MX |
指定域的邮件服务器 | example.com → mail.example.com (优先级 10) |
TXT |
存储文本信息(SPF、DKIM、验证) | "v=spf1 include:_spf.google.com ~all" |
NS |
将子域委托给域名服务器 | example.com → ns1.example.com |
PTR |
反向 DNS 查询(IP 到域) | 192.0.2.1 → example.com |
SRV |
指定服务的位置 | _sip._tcp.example.com → sipserver.example.com:5060 |
CAA |
指定哪些 CA 可以颁发证书 | 0 issue "letsencrypt.org" |
A 和 AAAA 记录:基础
A 记录是最基本的 DNS 记录类型,将域名直接映射到 IPv4 地址。当您访问网站时,浏览器通常首先查找 A 记录以找到服务器的 IP 地址。
AAAA 记录(发音为"四个 A")为 IPv6 地址提供相同的目的。随着互联网向 IPv6 过渡,越来越多的域在其 A 记录旁边添加 AAAA 记录以支持两种协议。
CNAME 记录:域别名
CNAME(规范名称)记录创建指向其他域名的别名。它们通常用于将 www.example.com 指向 example.com,或将多个子域指向单个服务器。
一个重要的限制:CNAME 记录不能与同一名称的其他记录类型共存。这意味着您不能为同一域同时拥有 CNAME 和 MX 记录,这就是为什么 CNAME 通常用于子域而不是根域。
MX 记录:电子邮件路由
MX(邮件交换)记录告诉电子邮件服务器将邮件发送到您域的何处。每个 MX 记录都包含一个优先级值——数字越小表示优先级越高。如果主邮件服务器不可用,发件人将尝试具有更高优先级值的服务器。
例如,Google Workspace 使用具有不同优先级的多个 MX 记录,以确保即使一台服务器宕机也能传递电子邮件。您可以使用我们的 MX 查询工具检查您域的 MX 记录。
TXT 记录:验证和安全
TXT 记录存储任意文本数据,并已成为电子邮件安全和域验证的必需品。常见用途包括:
- SPF 记录:指定哪些服务器可以代表您的域发送电子邮件
- DKIM 记录:提供用于电子邮件签名验证的公钥
- DMARC 记录:定义处理失败电子邮件身份验证的策略
- 域验证:向 Google Search Console 等服务证明域所有权
- 站点验证:确认各种 Web 服务和平台的所有权
专业提示:TXT 记录每个字符串有 255 个字符的限制,但您可以在单个记录中连接多个字符串。长 DKIM 密钥通常使用此技术以适应 DNS 约束。
DNS 查询命令和工具
无论您是在排查连接问题、验证 DNS 更改还是调查域配置,几个命令行工具和在线服务都可以帮助您查询 DNS 记录。
命令行 DNS 工具
nslookup 是最广泛可用的 DNS 查询工具,包含在 Windows、macOS 和大多数 Linux 发行版中。基本用法很简单:
nslookup example.com
nslookup -type=MX example.com
nslookup example.com 8.8.8.8
第一个命令执行基本的 A 记录查询。第二个专门查询 MX 记录。第三个使用 Google 的 DNS 服务器(8.8.8.8)而不是您的默认解析器进行查询。
dig(域信息搜索器)功能更强大,提供详细的输出。它是 DNS 专业人员的首选工具,默认情况下在 macOS 和 Linux 上可用:
dig example.com
dig example.com MX
dig example.com +short
dig @8.8.8.8 example.com
dig example.com +trace
+short 标志提供仅包含答案的简洁输出。+trace 标志显示从根服务器到权威域名服务器的完整解析路径,这对于故障排除非常宝贵。
host 是 dig 的更简单替代方案,提供干净的输出而没有额外的细节:
host example.com
host -t MX example.com
host -a example.com
在线 DNS 查询工具
基于 Web 的 DNS 工具相对于命令行实用程序具有优势,包括能够从多个位置查询