计网八股--DNS的域名解析过程?
深入浅出:DNS 域名解析全过程 —— 从输入网址到打开网页
每次在浏览器输入网址按下回车,背后都有一场精密的"全球寻址"接力赛。DNS 就是那张让人类记住名字、机器识得数字的全球电话簿。
目录
- 一、什么是 DNS?
- 二、域名空间结构
- 三、DNS 解析完整过程
- 四、DNS 缓存机制
- 五、常见 DNS 记录类型
- 六、常见问题与排查
- 七、总结
一、什么是 DNS?
1.1 为什么需要 DNS?
计算机之间通信靠的是IP 地址(如223.5.5.5),但人类根本记不住一串串数字。于是DNS(Domain Name System,域名系统)登场了。
| 记忆对象 | 例子 | 谁能记住 |
|---|---|---|
| 域名 | www.baidu.com | 人类 ✅ |
| IP 地址 | 110.242.68.66 | 计算机 ✅ |
💡核心观点:DNS 就像手机的通讯录—— 你记名字(域名),它负责翻译成号码(IP),拨号的事情交给系统。
1.2 DNS 的三个核心功能
| 功能 | 说明 | 类比 |
|---|---|---|
| 域名解析 | 域名 → IP | 📖 查电话簿 |
| 域名反向解析 | IP → 域名 | 📖 倒查电话簿 |
| 负载均衡 | 一个域名映射多个 IP | 📞 客服分线 |
二、域名空间结构
2.1 树形分层的域名体系
域名不是一坨字符串,而是分层的树形结构,从右往左逐级递进。
根域 (.) └── 顶级域 .com / .cn / .org └── 二级域 baidu.com / google.com └── 三级域 www.baidu.com / blog.csdn.net以www.example.com为例,从右往左:
| 层级 | 部分 | 含义 |
|---|---|---|
| 根域 | . | 域名树的根,全球共 13 组根服务器 |
| 顶级域(TLD) | .com | 商业机构、国家代码等 |
| 二级域 | example | 组织自己注册的名称 |
| 主机名 | www | 具体的服务器主机 |
💡记住:域名解析顺序是从右往左逐级查询,先找根,再找顶级,再找二级,最后定位到主机。
三、DNS 解析完整过程
3.1 递归查询 vs 迭代查询
DNS 查询分两种角色配合完成:
| 查询类型 | 谁是"办事人" | 特点 |
|---|---|---|
| 递归查询 | 客户端 → 本地 DNS 服务器 | 只管"要结果",查不到层层转交 |
| 迭代查询 | 本地 DNS → 各级服务器 | 被问者只回复"该问谁",逐级指路 |
3.2 一次完整的解析流程(访问 www.example.com)
浏览器(你) 本地DNS 根服务器 .com服务器 example服务器 │ ① 浏览器缓存查:没有 │ │ │ │ │───────────────────▶ │ │ │ │ │ ② 系统/路由器缓存查:没有 │ │ │ │ │───────────────────▶ │ │ │ │ │ ③ 递归查询 │ │ │ │ │───────────────────────────▶ │ ④ 迭代:根服务器在哪? │ │ │ │ │──────────────────────▶ │ │ │ │ │ ⑤ 去问 .com 顶级域 │ │ │ │ │◀────────────────────── │ │ │ │ │──────────────────────▶ │ │ │ │ │ ⑥ 去问 example 权威 │ │ │ │ │◀────────────────────── │ │ │ │ │──────────────────────▶ │ │ │ │ │ ⑦ 返回 IP 并缓存 │ │ │ │◀─────────────────────────── │ │ │ │ │ ⑧ 浏览器拿到 IP,建立连接发起请求 │ │ │| 步骤 | 查询方 | 被查询方 | 结果 |
|---|---|---|---|
| ①② | 浏览器/系统 | 各级缓存 | 未命中,继续 |
| ③ | 浏览器 | 本地 DNS(递归) | 委托本地 DNS 全权处理 |
| ④ | 本地 DNS | 根服务器 | 告诉你 .com 服务器地址 |
| ⑤ | 本地 DNS | .com 服务器 | 告诉你 example 权威服务器 |
| ⑥ | 本地 DNS | example 权威服务器 | 返回www的 IP |
| ⑦⑧ | 本地 DNS | 浏览器 | 缓存 + 返回 IP,发起连接 |
💡核心观点:浏览器只做一次递归请求,真正的"跑腿"全是本地 DNS 干的;本地 DNS 与根/顶级/权威服务器之间是逐级指路的迭代查询。
四、DNS 缓存机制
4.1 五级缓存:层层拦截
每一次查询结果都会被各级"留底",下次直接命中,不用再跑一次全球:
| 层级 | 缓存位置 | 命中速度 | 说明 |
|---|---|---|---|
| ① | 浏览器缓存 | 最快 | 你访问过的域名 |
| ② | 操作系统缓存 | 快 | 系统级 hosts 文件等 |
| ③ | 路由器缓存 | 中 | 家用路由器的 DNS 记录 |
| ④ | 本地 DNS 缓存 | 中 | ISP / 公共 DNS(如 114.114.114.114) |
| ⑤ | 根 / 顶级服务器缓存 | 慢 | 最底层兜底 |
4.2 TTL:缓存的保质期
每条 DNS 记录都带一个TTL(Time To Live),控制缓存存活时间:
www.example.com A 93.184.216.34 TTL=300 └── 300 秒后过期,需重新查询| TTL | 效果 | 适用 |
|---|---|---|
| 大(如 3600s) | 查询快,但改动生效慢 | 稳定的域名 |
| 小(如 60s) | 生效快,但查询频繁 | 频繁变动的服务 |
⚠️ 常见坑:改了 DNS 记录却"不生效",多半是旧缓存没过期—— 要么等 TTL,要么清浏览器/系统缓存。
五、常见 DNS 记录类型
| 类型 | 全称 | 作用 | 示例值 |
|---|---|---|---|
| A | Address | 域名 → IPv4 | 1.2.3.4 |
| AAAA | Address v6 | 域名 → IPv6 | ::1 |
| CNAME | Canonical Name | 别名 → 另一个域名 | www → example.com |
| MX | Mail Exchange | 邮件服务器 | 10 mail.example.com |
| NS | Name Server | 指定权威 DNS 服务器 | ns1.example.com |
| TXT | Text | 任意文本(验证、SPF 等) | v=spf1 ... |
💡常见套路:
CNAME是"转交",A是"直达"。CDN 加速常靠CNAME把流量引向最近的节点。
六、常见问题与排查
6.1 高频故障与解决
| 现象 | 可能原因 | 解决 |
|---|---|---|
| 域名解析失败 | 本地 DNS 挂了 | 换公共 DNS:114.114.114.114/8.8.8.8 |
| 改记录不生效 | 缓存未过期 | 等 TTL / 清缓存 /ipconfig /flushdns |
| 能上微信不能开网页 | DNS 污染或劫持 | 改用 HTTPS DNS / 加密 DNS |
| 时好时坏 | 多个 IP 有故障节点 | 检查负载均衡配置 |
6.2 排查工具
# Windows 下查看 / 刷新 DNS 缓存ipconfig /displaydns# 查看缓存ipconfig /flushdns# 清空缓存# nslookup:交互式查询(Windows / Linux 通用)nslookupwww.example.comnslookupwww.example.com8.8.8.8# 指定 DNS 服务器查询# dig:更详细的查询(Linux / macOS)digwww.example.comdig@8.8.8.8 www.example.com +trace# 查看完整迭代路径| 工具 | 平台 | 亮点 |
|---|---|---|
| nslookup | 全平台 | 简单快查 |
| dig | Linux/macOS | 支持+trace追踪逐级解析 |
七、总结
7.1 核心要点
- DNS是域名与 IP 之间的"翻译官",全球树形分布式数据库
- 域名层级:根域 → 顶级域 → 二级域 → 主机名,解析从右往左
- 两种查询:客户端递归、服务器迭代,配合完成全流程
- 五级缓存 + TTL:决定查询快慢与改动生效快慢
- 常见记录:
A直达、CNAME转交、MX邮件、NS权威
7.2 最后的话
💡核心观点:一次网页访问背后,是 13 组根服务器 + 无数层级服务器共同完成的"接力寻址"。理解了解析流程与缓存,排障与调优就都有了方向。
记住:
- 排障三板斧:
nslookup、ipconfig /flushdns、换公共 DNS - 面试常考:递归 vs 迭代、查询顺序、TTL 作用,必背
- 进阶方向:DoH/DoT 加密 DNS、DNSSEC 安全扩展、HTTPDNS 移动端优化
参考资料:
- 《计算机网络(第7版)》谢希仁 —— DNS 章节
- RFC 1034 / 1035 —— DNS 协议规范
- IANA 根区数据库 —— 根服务器与 TLD 权威数据
标签:计算机网络, DNS, 域名解析, 递归查询, 迭代查询, 排查工具
