DNS 查询:域名的工作原理

· 12分钟阅读

目录

什么是 DNS 及其重要性

域名系统(DNS)通常被称为"互联网的电话簿",这是有充分理由的。每次您访问网站、发送电子邮件或使用任何互联网服务时,DNS 都在幕后工作,将人类可读的域名转换为机器可读的 IP 地址。

如果没有 DNS,您需要记住像 172.217.14.206 这样的数字串,而不是简单地在浏览器中输入 google.com。这种转换服务对互联网的运作如此重要,以至于当 DNS 失败时,整个网络的部分区域将无法访问。

DNS 作为一个分布式数据库系统运行,全球数百万台服务器协同工作,每天解析数十亿次查询。这种去中心化架构使互联网既可扩展又具有弹性,能够处理大量流量负载,同时保持冗余。

快速提示:DNS 不仅用于网站。它还用于电子邮件传递(MX 记录)、服务发现、负载均衡,甚至垃圾邮件防护。理解 DNS 对于任何使用网络系统的人来说都是必不可少的。

DNS 的工作原理:完整的解析过程

当您在浏览器中输入域名时,一系列复杂的事件会在几毫秒内展开。这个过程称为 DNS 解析,涉及多个服务器和缓存层协同工作,以提供您需要的 IP 地址。

DNS 解析的分步过程

  1. 浏览器缓存检查:您的浏览器首先检查自己的缓存,查找最近解析的 IP 地址。现代浏览器会在短时间内(通常为 60 秒到几分钟)缓存 DNS 记录,以加快对同一站点的重复访问。
  2. 操作系统缓存:如果浏览器缓存未命中,查询将转到操作系统的 DNS 解析器缓存。此缓存存储系统上所有应用程序的 DNS 记录,而不仅仅是您的网络浏览器。在 Windows 上,您可以使用 ipconfig /displaydns 查看此缓存。
  3. 路由器缓存:许多家庭和办公室路由器也维护自己的 DNS 缓存。这在查询离开本地网络之前提供了另一层速度优化。
  4. ISP DNS 解析器:当本地缓存没有答案时,您的查询会到达互联网服务提供商的 DNS 解析器(也称为递归解析器)。当您的设备通过 DHCP 连接到网络时,此服务器会自动配置。
  5. 根域名服务器:ISP 的解析器联系 13 个根域名服务器系统之一(实际上是使用任播路由的数百台服务器)。这些服务器不知道特定域的 IP 地址,但它们知道在哪里可以找到每个顶级域(TLD)的权威服务器。
  6. TLD 域名服务器:根服务器将查询定向到适当的 TLD 域名服务器。例如,对 .com 域的查询会转到 .com TLD 服务器,而 .org 查询会转到 .org 服务器。这些服务器维护有关哪些权威域名服务器处理其 TLD 内每个域的信息。
  7. 权威域名服务器:最后,查询到达域的权威域名服务器,该服务器由域所有者配置。此服务器包含将域映射到其 IP 地址和其他信息的实际 DNS 记录。
  8. 响应和缓存: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 记录存储任意文本数据,并已成为电子邮件安全和域验证的必需品。常见用途包括:

专业提示: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 工具相对于命令行实用程序具有优势,包括能够从多个位置查询

We use cookies for analytics. By continuing, you agree to our Privacy Policy.