域名解析(DNS 解析)
1. 本地缓存查询(浏览器 / 操作系统)
补充说明:
- 浏览器缓存的有效期由域名的 TTL(Time To Live,单位秒)决定,过期后会重新发起解析。
- 系统级缓存优先于网络查询,比如 Windows 的
hosts
文件、Linux/macOS 的/etc/hosts
,一旦在这些文件中配置了域名与 IP 的映射,会直接生效(常用于开发中临时绑定域名)。
工具命令:
- 查看系统 DNS 缓存:
- Windows:
ipconfig /displaydns
- Linux/macOS:
sudo systemd-resolve --statistics
或sudo nscd -g
- Windows:
- 清理缓存(解决解析异常时常用):
- Windows:
ipconfig /flushdns
- macOS:
sudo killall -HUP mDNSResponder
- Windows:
- 修改 hosts 文件路径:
- Windows:
C:\Windows\System32\drivers\etc\hosts
- Linux/Mac:
/etc/hosts
- Windows:
2. 本地 DNS 服务器(递归解析的起点)
补充说明:
- 本地 DNS 服务器通常由网络服务商(如电信、联通)提供,也可手动设置公共 DNS(如 Google 的 8.8.8.8、Cloudflare 的 1.1.1.1)。它的角色类似 “中间人”,会替用户完成后续的所有查询步骤。
- 这一步是多数解析的终点 —— 因为本地 DNS 会缓存大量常用域名的解析结果,不用每次都查全球服务器。
工具命令:
- 指定 DNS 服务器查询:
nslookup www.example.com 8.8.8.8
(用 Google 的 DNS 查百度域名) - 更详细的解析信息:
dig @8.8.8.8 www.example.com
(能看到解析过程中的服务器、TTL 等细节)
3. 根域名服务器(Root Server)
补充说明:
- 全球共 13 组根服务器(标记为 A 到 M),每组有多个镜像节点分布在全球各地。它们不直接存储具体域名的 IP,只负责告诉本地 DNS:“去查这个顶级域名(比如.com)的服务器”。
- 根服务器的 IP 是固定的,本地 DNS 出厂时就预存了这些 IP,不用额外查询。
工具命令:
- 查看根服务器列表:
dig . NS
- 直接向根服务器查询(比如 A 根服务器的 IP 是 198.41.0.4):
dig www.example.com @198.41.0.4
4. 顶级域名服务器(TLD Server)
补充说明:
- 顶级域名(如.com、.org、.cn)由专门机构管理,比如.com 由 Verisign 运营,.cn 由 CNNIC 管理。
- 顶级域名服务器的作用是告诉本地 DNS:“负责这个域名(比如example.com)的权威服务器是谁”。
工具命令:
- 查看.com 的顶级域名服务器:
dig com. NS
- 查看example.com的权威服务器:
dig example.com NS
5. 权威域名服务器(Authoritative Server)
补充说明:
- 这是真正存储域名解析记录的地方,包括 A 记录(域名→IP)、CNAME(别名)、MX(邮件服务器)、TXT(验证信息)等。
- 权威服务器通常由域名注册商提供(如阿里云、腾讯云的 DNS 服务),也可以是自己搭建的服务器(如 PowerDNS、Bind)。
工具命令:
- 直接向权威服务器查询:
dig www.example.com @ns1.example.com
(ns1.example.com是该域名的权威服务器) - 查看该域名的所有解析记录:
dig ANY example.com
6. 结果返回与缓存
补充说明:
- 本地 DNS 服务器拿到权威服务器返回的 IP 后,会按 TTL 值缓存起来,下次同一域名查询时直接用缓存结果,减少重复步骤。
- 浏览器也会自己缓存一份,所以有时候改了 DNS 记录,本地仍显示旧 IP,就是缓存没过期导致的。
工具命令:
- 在浏览器开发者工具的 Network 面板中,查看 Timing 标签可看到 DNS 解析的耗时。
- 用基础命令验证:
ping www.example.com
(返回的 IP 就是解析结果)、nslookup www.example.com
特殊:CNAME 解析
补充说明:
- CNAME(别名记录)是让一个域名指向另一个域名,比如www.example.com指向server.example.com。
- 这种情况需要多一步解析:先查www.example.com得到 CNAME 记录,再解析server.example.com,直到拿到最终 IP。
- 常见场景:CDN 会用 CNAME 让域名指向边缘节点,实现负载均衡。
工具命令:
- 查看 CNAME 跳转:
dig www.example.com
(结果中会显示 CNAME 字段)
调试与开发实践
用途 | 命令示例(Windows/Linux) |
---|---|
查某域名所有解析 | dig example.com ANY |
查某域名的邮件服务器 | dig example.com MX |
验证邮件 SPF 记录 | dig example.com TXT |
跟踪完整解析过程 | dig +trace www.example.com |
Windows 快速查询 | nslookup www.example.com |
查看网络路径 | tracert www.example.com (Win)或traceroute www.example.com (Linux) |
想记住整个过程其实不难:DNS 解析就像 “找地址”—— 先翻自己的小本儿(浏览器、系统缓存),找不到就问小区保安(本地 DNS),保安不知道就一层层往上问:先问国家总局(根服务器),总局说去查省厅(顶级域名服务器),省厅说去找具体负责的街道办(权威服务器),最后街道办告诉你门牌号(IP)。中间每一步都会记下来(缓存),下次就不用再跑一趟了
ok结束