DNS — 域名系统
DNS(Domain Name System,域名系统)是互联网的”电话本”,负责将人类可读的域名(example.com)转换为机器可读的 IP 地址(192.0.2.1)。它是 CDN 加速的基础——CDN 通过 智能 DNS 将用户引导到最近的边缘节点。
DNS 递归查询流程
用户浏览器输入 www.example.com
↓ 1. 浏览器 DNS 缓存查询
↓ 2. 本机 hosts 文件查询
↓ 3. 本机 DNS 解析器 → LDNS(本地 DNS 服务器)
↓ 4. LDNS 递归查询:
↓ 根 DNS 服务器 → 返回 .com 顶级域服务器地址
↓ .com 顶级域服务器 → 返回 example.com 权威 DNS 地址
↓ example.com 权威 DNS → 返回 www.example.com 的 IP(或 CNAME)
↓ 5. LDNS 缓存结果 → 返回给用户
↓ 6. 浏览器拿到 IP → 发起 HTTP 请求
补充:浏览器 DNS 缓存和本机 hosts 文件是本地缓存,不涉及网络请求。LDNS 相当于”电信/联通的本地 DNS 服务器”。
DNS 记录类型
| 类型 | 作用 | 示例 | CDN 用途 |
|---|---|---|---|
| A | 域名 → IPv4 | example.com → 1.2.3.4 | 直接指向服务器 IP |
| AAAA | 域名 → IPv6 | example.com → 2001:db8::1 | IPv6 场景 |
| CNAME | 域名 → 另一个域名 | www → cdn.example.com | CDN 核心:将解析权交给 CDN |
| NS | 指定管辖 DNS 服务器 | example.com → dns1.hosting.com | 域名托管 |
| MX | 邮件交换记录 | @ → mail.example.com | 邮件路由 |
| TXT | 任意文本 | v=spf1 ... | 域名验证/SPF |
CNAME 与 CDN 的关系
用户请求 www.example.com
↓ 通过 CNAME 指向
www.example.com.cdn.cloud.com
↓ CDN 权威 DNS 根据用户地理位置
↓ 返回最近的节点 IP(如 1.2.3.4)
这就是 CDN 实现”就近访问”的核心机制——CNAME 让 CDN 服务商接管了解析权。
智能 DNS
普通 DNS 对所有用户返回相同的 IP;智能 DNS 则根据请求来源(LDNS 地址)返回不同的结果:
- 南方电信用户 → 电信机房的 IP
- 北方联通用户 → 联通机房的 IP
- 海外用户 → 海外节点的 IP
CDN 厂商的智能 DNS 就是这个原理的规模化版本。
关键概念
- TTL(Time To Live):DNS 记录的缓存时间。CDN 切 CNAME 后需等 TTL 过期才生效,通常 10-30 分钟
- LDNS(Local DNS):用户所在运营商的本地 DNS 服务器
- DNS 污染/劫持:中间的 DNS 解析被篡改,返回错误的 IP