DNS 工作原理
你在浏览器输入 shop.example.com,0.1 秒内页面就打开了。这背后发生的事情,和你的站点能不能稳定上线直接相关。
DNS 是什么
DNS(Domain Name System)是互联网的"电话簿"。它把人能记住的域名(example.com)翻译成机器能理解的 IP 地址(104.21.3.5)。
没有 DNS:你需要记住每个网站的 IP 地址来访问它。 有了 DNS:你只需要记住域名,DNS 帮你查 IP。
一次 DNS 解析的完整旅程
sequenceDiagram
participant B as 你的浏览器
participant R as 本地解析器
(ISP/路由器) participant RC as 根域名服务器 participant TLD as 顶级域名服务器
(.com) participant NS as 权威域名服务器
(你的 DNS 托管商) B->>R: 查询 shop.example.com R->>R: 检查本地缓存 R->>RC: 缓存没有,问根服务器 RC-->>R: 去问 .com 的服务器 R->>TLD: 查 example.com 在哪 TLD-->>R: 去问 example.com 的权威服务器 R->>NS: 查 shop.example.com 的 IP NS-->>R: IP 是 104.21.3.5,TTL=300 R-->>B: IP 是 104.21.3.5 B->>B: 连接 104.21.3.5
(ISP/路由器) participant RC as 根域名服务器 participant TLD as 顶级域名服务器
(.com) participant NS as 权威域名服务器
(你的 DNS 托管商) B->>R: 查询 shop.example.com R->>R: 检查本地缓存 R->>RC: 缓存没有,问根服务器 RC-->>R: 去问 .com 的服务器 R->>TLD: 查 example.com 在哪 TLD-->>R: 去问 example.com 的权威服务器 R->>NS: 查 shop.example.com 的 IP NS-->>R: IP 是 104.21.3.5,TTL=300 R-->>B: IP 是 104.21.3.5 B->>B: 连接 104.21.3.5
关键节点说明:
| 节点 | 作用 | 谁控制 |
|---|---|---|
| 本地解析器 | 缓存结果、转发查询 | ISP 或路由器 |
| 根域名服务器 | 全球只有 13 组,知道所有 TLD 在哪 | ICANN |
| 顶级域名服务器 | 管 .com / .net / .io 等 | Verisign 等注册局 |
| 权威域名服务器 | 存放你的 DNS 记录 | 你(托管在 Cloudflare、Namecheap 等) |
你真正需要管的只有最后一个:权威域名服务器。
为什么这对你很重要
场景 1:域名指向错误
你改了 A 记录,但网站还是打开旧服务器。 → 原因:本地解析器还在用缓存,TTL 没过期。
场景 2:CDN 接入
你用 Cloudflare,流量经过 Cloudflare 节点再到你的服务器。 → 原因:CNAME 指向 Cloudflare 的边缘节点,由 Cloudflare 再回源。
场景 3:邮件发不出去
你配了 MX 记录,但邮件还是被退。 → 可能原因:MX 记录指向了错误的主机名,或者 SPF 记录缺失。
DNS 解析层级
graph TD
A[".(根域)"] --> B[".com (顶级域 TLD)"]
A --> C[".net"]
A --> D[".io"]
B --> E["example.com (二级域)"]
E --> F["shop.example.com (三级域/子域)"]
E --> G["blog.example.com"]
E --> H["mail.example.com"]
你注册的 example.com 是二级域。你可以在它下面创建任意数量的子域(三级域),每个子域单独配置 DNS 记录。
本章执行清单
- [ ] 打开 dnschecker.org 查询你的域名,看看解析结果是否正确
- [ ] 确认你的域名托管在哪个权威 DNS 服务器(注册商后台 → Nameservers)
- [ ] 记录当前所有 DNS 记录(做一份备份,迁移时用)
下一节:DNS 记录类型全解——A、CNAME、MX、TXT 各自的用途和配置方法。