🌐 什么是 DNS?
DNS 全称:Domain Name System(域名系统)
它是互联网的“电话簿”或“翻译官”,核心作用是:
将人类友好的域名(如
www.baidu.com)转换为机器可识别的 IP 地址(如14.215.177.39)
因为网络通信最终依赖的是 IP 地址,但记 IP 太难了,所以有了域名。DNS 就是连接这两者的桥梁。
为什么需要 DNS?
- 用户友好:记住
google.com比记住172.217.3.14容易得多。 - 灵活性:一个域名可以指向多个 IP(负载均衡),IP 变了也不影响用户访问。
- 分布式设计:全球数十亿网站,不可能用一个中心服务器管理所有映射,所以 DNS 是分布式数据库系统。
每个域名所对应的ip地址不是唯一的,一个域名的背后,有一堆的服务器,在多地的机房,就近原则。
通过负载均衡算法。如果某个服务器 down 了,还有其他的服务器可以用——容灾,高性能。
DNS 解析的过程
当你在浏览器输入 http://www.baidu.com 并回车时,第一步就是 DNS 解析。
整个过程遵循“先查缓存 → 未命中则逐级查询”的原则,按优先级顺序如下:
第一步:补全 URL
浏览器先判断你输入的内容是否是完整 URL:
- 如果只输入
baidu.com,会自动补全为http://www.baidu.com - 然后提取出主机名(hostname):
www.baidu.com
第二步:查找 DNS 缓存(本地优先)
- DNS 查询遵循“由近及远”的策略,依次检查以下缓存:
1️⃣ 浏览器缓存(最快)
- 现代浏览器(Chrome、Firefox 等)自带 DNS 缓存。
- 查看方式:
chrome://net-internals/#dns
-
特点:
- 快速响应
- 通常缓存几分钟(TTL 控制)
- 第一次访问无缓存,需继续向下查询
2️⃣ 操作系统缓存
- OS 层也有 DNS 缓存机制
- Windows 命令查看:
ipconfig /displaydns
清除缓存命令:
ipconfig /flushdns
3️⃣ Hosts 文件(手动配置,最高优先级)
- 路径(Windows):
C:\Windows\System32\drivers\etc\hosts - 格式:
IP地址 域名
127.0.0.1 bilibili.com
192.168.1.10 myproject.local
- 用途:
- 开发调试:把本地服务绑定到正式域名,模拟线上环境
- 屏蔽广告/恶意网站
- 内部测试:不依赖 DNS 服务器即可完成解析
⚠️ 注意:Hosts 文件的优先级高于网络 DNS 查询! 只要配置了,就不会再去网上查。
完整流程如下:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 补全 URL | 输入 baidu.com → 自动补全为 http://www.baidu.com |
| 2 | 浏览器 DNS 缓存 | Chrome 内置缓存,查看地址:chrome://net-internals/#dns |
| 3 | 操作系统 DNS 缓存 | Windows 命令:ipconfig /displaydns清除缓存: ipconfig /flushdns |
| 4 | Hosts 文件检查 | 路径:C:\Windows\System32\drivers\etc\hosts格式: IP 域名例: 127.0.0.1 bilibili.com✅ 优先级最高!配置后直接返回,不走网络查询 |
第三步:递归解析器
如果以上三层本地缓存都未命中,系统就会向 ISP(互联网服务提供商)指定的 DNS 递归解析器发起请求。
比如你的路由器默认使用电信/联通的 DNS,或你手动设置为:
8.8.8.8(Google Public DNS)1.1.1.1(Cloudflare DNS)114.114.114.114(国内公共 DNS)
这个递归解析器会帮你完成后续的“全球查询”。
第四步:递归解析器的“全球寻址”之旅(迭代查询)
递归解析器开始层层向上查询,直到找到目标 IP。这个过程是 迭代查询 ,主要包括以下几步:
1️⃣ 向根域名服务器(Root Server)查询
- 全球有 13 组根服务器(逻辑上的)
问:“
.com域由谁管理?”
- 返回:负责
.com的顶级域名服务器地址
2️⃣ 向顶级域名服务器(Top-Level Domain Server, TLD)
- 如
.com、.org、.cn
问:“
baidu.com的权威服务器是谁?”
- 返回:
baidu.com的权威 DNS 服务器地址(如ns1.baidu.com)
3️⃣ 向权威域名服务器(Authoritative Name Server)
- 这是真正存储域名与 IP 映射的地方
问:“
www.baidu.com对应什么 IP?”
- 返回:最终的 IP 地址(如
14.215.177.39)
✅至此,递归解析器拿到了结果,返回给你的电脑,并缓存起来。
总结:DNS 解析全过程图解
用户输入 www.baidu.com
↓
补全 URL & 提取域名
↓
[1] 浏览器缓存? → 是 → 返回 IP
↓ 否
[2] 系统缓存? → 是 → 返回 IP
↓ 否
[3] Hosts 文件? → 是 → 返回 IP
↓ 否
[4] 向递归解析器请求
↓
根服务器 → .com TLD 服务器 → baidu.com 权威服务器
↓
获得 IP 地址 → 返回客户端 + 缓存
↓
浏览器发起 HTTP 请求