DNS 解析
DNS 把域名翻译成 IP,是互联网的通讯录。面试主线:域名结构、解析流程、缓存、故障排查。
域名层级
www.example.com.
│ │ │ └─ 根(.)
│ │ └────── 顶级域(com)
│ └─────────── 二级域(example)
└──────────────── 主机名(www)- 层级从右到左:根 → TLD → 权威域
- 每层有对应服务器:根服务器(13 组)、TLD 服务器、权威 DNS(域名所有者配置)
解析流程
解析: 本地缓存 → 递归 → 逐级迭代
- 递归查询:本地 DNS 替客户端跑完整个查询
- 迭代查询:本地 DNS 逐级问(根 → TLD → 权威),每级只指路
- 权威 DNS 返回的 IP 会逐级缓存(TTL 控制)
缓存与 TTL
| 层级 | 缓存 | 影响 |
|---|---|---|
| 浏览器 | 短 | 本机 |
| 操作系统 | 短 | 本机 |
| 本地 DNS | 按 TTL | 区域用户 |
| 权威 | 无(源) | 变更源头 |
- TTL 决定变更生效速度:改 DNS 记录后要等旧 TTL 过期(改 IP 前先降 TTL 是标准操作)
- DNS 缓存污染:缓存了错误记录(劫持/配置错),排查“改了 DNS 不生效”先清缓存
常见问题
| 现象 | 排查 |
|---|---|
| 域名解析慢 | dig/nslookup 看耗时,换本地 DNS |
| 改了记录不生效 | 等 TTL 或清缓存 |
| 解析到错误 IP | 缓存污染、被劫持(换 DNS over HTTPS) |
| 域名被墙 | 检测 + 换解析(国内网络话题,面试少考) |
面试追问
- 递归和迭代查询? 递归是本地 DNS 全包(对客户端只问一次),迭代是逐级问(每级只指路)
- DNS 为什么有缓存? 根/TLD 查询昂贵,缓存按 TTL 加速。代价是变更生效延迟
- 改 DNS 多久生效? 取决于旧记录 TTL(几分钟到几天)。先降 TTL 再改是标准流程
- DNS 污染是什么? 缓存了错误解析(配置错/攻击)。清缓存、用加密 DNS(DoH)
- CDN 怎么用 DNS? 权威 DNS 按用户位置返回最近节点 IP(智能解析)。见 CDN 篇