DNS 工作原理:域名解析完整指南
· 12分钟阅读
目录
什么是 DNS?
域名系统(DNS)通常被称为"互联网的电话簿"。它将人类友好的域名(如 google.com)转换为机器可读的 IP 地址(如 142.250.80.46)。如果没有 DNS,你需要记住长串数字才能访问任何网站——考虑到现有数十亿个网站,这是一项不切实际的任务。
DNS 作为一个分布式的分层数据库运行,遍布全球数百万台服务器。这种分布式架构确保没有单点故障可以使整个系统崩溃,并且通过在多个级别利用缓存来快速解析查询。
每次你打开网页、发送电子邮件或播放视频时,DNS 都在幕后工作,将你的请求路由到正确的服务器。理解 DNS 的工作原理对于 Web 开发人员、系统管理员以及任何想要排查互联网连接问题的人来说都是必不可少的。
🛠️ 亲自尝试:使用我们的 DNS 查询工具查看实时 DNS 解析过程。
为什么 DNS 对你的网站很重要
DNS 性能直接影响你网站的速度和可用性。缓慢的 DNS 提供商可能会给每次页面加载增加数百毫秒的延迟,让用户感到沮丧并损害你的搜索引擎排名。谷歌将页面速度视为排名因素,而 DNS 解析时间是其中的一部分。
除了性能之外,DNS 配置还会影响电子邮件的可送达性、子域名路由、CDN 集成和安全性。配置错误的 DNS 记录可能会完全破坏你的网站,或使你暴露于 DNS 欺骗和缓存投毒等攻击。
DNS 解析过程
当你在浏览器中输入域名时,会在毫秒内发生一系列令人着迷的查询。以下是 DNS 查询从你的设备到答案的传递过程:
步骤 1:浏览器缓存
你的浏览器首先检查自己的缓存中是否有最近解析的 IP 地址。Chrome、Firefox 和 Safari 等现代浏览器维护自己的 DNS 缓存以加快重复访问的速度。如果最近访问过该域名且 TTL(生存时间)尚未过期,浏览器会立即使用缓存的 IP 地址。
你可以在 Chrome 中访问 chrome://net-internals/#dns 查看浏览器的 DNS 缓存。这会显示所有缓存的 DNS 条目及其过期时间。
步骤 2:操作系统缓存
如果浏览器缓存未命中,操作系统会检查其 DNS 缓存和 hosts 文件。在 Linux 和 macOS 上,这是 /etc/hosts。在 Windows 上,它是 C:\Windows\System32\drivers\etc\hosts。hosts 文件允许手动 IP 到域名的映射,完全覆盖 DNS。
系统管理员经常使用 hosts 文件进行本地开发、阻止不需要的域名或创建自定义内部网络映射。
步骤 3:递归解析器
查询会发送到你配置的 DNS 解析器,通常由你的 ISP 提供,或者是像谷歌的 8.8.8.8 或 Cloudflare 的 1.1.1.1 这样的公共 DNS 服务。递归解析器负责追踪权威答案的繁重工作。
这个解析器充当中介,代表你进行多次查询并缓存结果以加快未来的请求。大多数用户从不直接与递归解析器交互——当你连接到网络时,它们会通过 DHCP 自动配置。
步骤 4:根名称服务器
如果递归解析器没有缓存答案,它会联系 13 个根名称服务器集群之一(标记为 A 到 M)。这些服务器不知道特定域名的 IP 地址,但它们知道应该询问哪些 TLD(顶级域名)服务器。
例如,如果你正在查询 example.com,根服务器会响应 .com TLD 服务器的地址。尽管被称为"13 台服务器",但实际上有数百台物理服务器使用任播路由分布在全球各地。
步骤 5:TLD 名称服务器
然后解析器查询相应的 TLD 服务器(如 .com、.org 或 .net)。TLD 服务器响应特定域名的权威名称服务器。这些服务器实际托管 example.com 的 DNS 记录。
TLD 服务器由注册管理机构运营商管理。对于 .com 和 .net,那就是 Verisign。每个 TLD 都有由不同组织维护的自己的名称服务器集。
步骤 6:权威名称服务器
最后,解析器查询域名的权威名称服务器。该服务器拥有实际的 DNS 记录并响应 IP 地址。解析器缓存此答案并将其返回给你的设备。
权威名称服务器通常由你的域名注册商或 DNS 托管服务提供。流行的选项包括 Cloudflare、AWS Route 53、Google Cloud DNS 以及 GoDaddy 或 Namecheap 等传统注册商。
专业提示:使用 DNS 传播检查器验证 DNS 更改是否已在全球名称服务器上传播。DNS 更新可能需要 24-48 小时才能完全传播。
递归查询与迭代查询
DNS 查询有两种类型。递归查询意味着解析器必须返回最终答案或错误——它不能将你引导到其他地方。迭代查询允许服务器返回对另一台服务器的引用。
你的设备向解析器发出递归查询,然后解析器向根、TLD 和权威服务器发出迭代查询。这种分工使系统保持高效和可扩展。
理解 DNS 层次结构
DNS 被组织为倒置的树状结构,根在顶部,各个域名向下分支。这种层次结构使 DNS 具有分布式特性,并允许不同的组织管理命名空间的不同部分。
根区域
层次结构的顶部是根区域,用点(.)表示。当你输入 example.com 时,完整的域名实际上是 example.com.,带有尾随点。大多数系统为了方便而隐藏这个尾随点。
根区域由 ICANN(互联网名称与数字地址分配机构)管理,包含指向所有 TLD 服务器的指针。根区域文件只有大约 2MB,变化相对不频繁。
顶级域名(TLD)
TLD 是域名末尾的扩展名。它们分为几类:
- 通用 TLD(gTLD):
.com、.org、.net、.info、.biz - 国家代码 TLD(ccTLD):
.uk、.de、.jp、.ca - 赞助 TLD:
.gov、.edu、.mil(限制使用) - 新 gTLD:
.app、.dev、.blog、.tech(2013 年后引入)
每个 TLD 都有自己的注册管理机构运营商,负责维护 TLD 区域文件和运营 TLD 名称服务器。一些 TLD 有特定要求——例如,.edu 仅限于经认证的教育机构。
二级域名和子域名
二级域名是你注册的内容——比如 example.com 中的 example。你对此域名拥有完全控制权,可以在其下创建无限的子域名。
像 blog.example.com 或 api.example.com 这样的子域名允许你组织服务并以不同方式路由流量。每个子域名都可以有自己的 DNS 记录,指向不同的服务器或服务。
DNS 记录类型详解
DNS 记录是存储在权威名称服务器上的指令。不同的记录类型服务于不同的目的,从将域名指向 IP 地址到配置电子邮件和验证域名所有权。
| 记录类型 | 用途 | 示例 |
|---|---|---|
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 |
SOA |
授权起始(区域元数据) | 包含序列号、刷新间隔 |
PTR |
反向 DNS 查询(IP 到域名) | 192.0.2.1 → example.com |
SRV |
服务位置(端口和优先级) | _sip._tcp.example.com |
CAA |
证书颁发机构授权 | 0 issue "letsencrypt.org" |
A 和 AAAA 记录
这些是最基本的 DNS 记录。A 记录将域名映射到 IPv4 地址(如 192.0.2.1),而 AAAA 记录映射到 IPv6 地址(如 2001:db8::1)。
你可以为同一个域名设置多个 A 记录,这可以实现简单的负载均衡。DNS 解析器通常返回所有 IP 地址,客户端选择一个(通常是第一个)。一些 DNS 提供商提供地理路由功能,根据用户的位置返回不同的 IP。
CNAME 记录
CNAME(规范名称)从一个域名创建到另一个域名的别名。例如,你可以使用 CNAME 将 www.example.com 指向 example.com。当有人查询 CNAME 时,DNS 会跟随链接到最终的 A 记录。
重要限制:你不能在根域名(也称为顶点或裸域名)使用 CNAME。这是因为 CNAME 记录必须是该名称的唯一记录,但根域名需要 NS 和 SOA 记录。一些 DNS 提供商提供专有解决方案,如 Cloudflare 的 CNAME 扁平化或 AWS Route 53 的 ALIAS 记录来解决这个问题。
MX 记录
邮件交换(MX)记录告诉电子邮件服务器将邮件发送到你域名的哪里。每个 MX 记录都有一个优先级值——数字越小优先级越高。如果主邮件服务器不可用,发送者会尝试下一个优先级。
Google Workspace 的 MX 配置示例:
example.com. MX 1 aspmx.l.google.com.
example.com. MX 5 alt1.aspmx.l.google.com.
example.com. MX 5 alt2.aspmx.l.google.com.
example.com. MX 10 alt3.aspmx.l.google.com.
example.com. MX 10 alt4.aspmx.l.google.com.
TXT 记录
TXT 记录存储任意文本数据,已成为电子邮件身份验证和域名验证的必需品。常见用途包括:
- SPF(发件人策略框架):列出授权的邮件服务器以防止电子邮件欺骗
- DKIM(域名密钥识别邮件):用于电子邮件身份验证的加密签名
- DMARC(基于域名的消息身份验证):处理身份验证失败的策略
- 域名验证:向 Google 等服务证明所有权