你有没有想过,当你打开浏览器输入 www.baidu.com,网页是怎么神奇地出现的?

这背后,有一个你每天都在用却从未注意的超级英雄 ——DNS(Domain Name System)域名系统

今天我们就用最通俗的方式,把这个“幕后英雄”讲明白!

一、什么是 DNS?

DNS 全称是Domain Name System,中文叫做“域名系统”。

它的作用就是:
把我们能看懂的域名(比如 www.baidu.com),翻译成计算机能认识的 IP 地址(比如 220.181.38.148)。

因为计算机只能通过 IP 地址通信,而人类更喜欢记名字。DNS 就是“翻译官”,帮你把域名翻译成 IP。

🧭 二、DNS 是怎么工作的?

假设你访问百度,背后会发生这样的流程:

  1. 你输入网址:www.baidu.com
  2. 浏览器先查缓存里有没有这个域名的 IP
  3. 如果没有,就问本地 DNS 服务器(通常是你家的路由器或运营商)
  4. 本地 DNS 服务器也不知道?那它会一级一级问:
  • 根域名服务器 .
  • 顶级域名服务器 .com
  • 权威域名服务器 baidu.com
  1. 最终获取到 IP,比如:220.181.38.148
  2. 浏览器拿着 IP 去找百度服务器,请求网页
  3. 页面加载成功!

完整的流程图,我放在了第七节里边了,你会更直观的看到

这叫做:DNS 解析过程,也叫做“域名解析”。

三、为什么我们需要 DNS?

你能想象这样记网址吗?

http://142.251.43.174/
http://157.240.8.35/
http://104.193.88.123/

😵‍💫 太痛苦了!

所以有了 DNS:

  • 我们记名字(百度、淘宝、抖音)
  • 计算机认 IP(220.181.x.x)
  • DNS 在中间翻译,两边都开心!

四、常见 DNS 问题 & 小技巧

Q1:为什么有时候打开网页很慢?

可能是 DNS 响应慢或解析失败,可以尝试换一个更快的 DNS(比如 114.114.114.114 或 8.8.8.8)

Q2:能不能换 DNS?

可以!你可以在电脑 / 手机的网络设置中手动指定 DNS 服务器,提高访问速度。

常用公共 DNS:

名称 IP 地址 特点
阿里 DNS 223.5.5.5 / 223.6.6.6 国内快、稳定
百度 DNS 180.76.76.76 国内优化
114 DNS 114.114.114.114 很多人在用
Google DNS 8.8.8.8 / 8.8.4.4 国外访问快
Cloudflare DNS 1.1.1.1 重隐私、速度快

推介使用114.114.114.114的,如果你开梯子的话可以配置谷歌的8.8.8.8和8.8.4.4(这个懂得都懂)

五、延伸知识:DNS 劫持 & 安全

  • 有些不良运营商或黑客会“劫持”DNS,强行跳转网页,比如你访问百度,它让你打开广告网站。

  • 建议使用加密 DNS(DoH 或 DoT)服务,比如 Cloudflare 提供的 DNS over HTTPS,保护隐私。

六、自己动手查一下 DNS 吧!

在终端(cmd 或 Linux)输入以下命令:

dig www.baidu.com
#输出
Name:    www.baidu.com
Address:  220.181.38.148
域名解析

这张图的信息一个一个解释一下

1. 头部信息

; <<>> DiG 9.10.6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
  • 表示你使用的是 dig 工具,版本是 9.10.6。
  • +cmd 是默认选项,表示显示命令行参数说明。
  • Got answer 表示已经收到 DNS 查询的响应。

2. DNS协议头信息

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63857
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
  • opcode: QUERY 表示这是一个查询请求。
  • status: NOERROR 表示查询成功,没有错误。
  • id: 63857 是本次查询的唯一标识符,用于匹配请求和响应。
  • flags:
    1. qr:Query Response,表示这是响应包。
    2. rd:Recursion Desired,表示客户端希望 DNS 服务器递归查询。
    3. ra:Recursion Available,表示服务器支持递归查询。
  • ANSWER: 3:表示返回了 3 条记录(后面会看到)。
  • AUTHORITY: 0:表示没有权威 DNS 服务器信息。
  • ADDITIONAL: 1:有一个附加记录(通常是 EDNS 扩展信息)。

3. 扩展信息

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
  • 这是 EDNS0 扩展协议的信息,允许更大的 UDP 包(这里是 4096 字节),提升 DNS 性能。
  • 不属于实际数据记录,只是辅助信息。

4. 问题部分

;; QUESTION SECTION:
;www.baidu.com.			IN	A
  • 表示你问的问题是:“请告诉我 www.baidu.com 的 A 记录(IPv4 地址)”。

5. 回答部分

;; ANSWER SECTION:
www.baidu.com.		1049	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	31	IN	A	110.242.69.21
www.a.shifen.com.	31	IN	A	110.242.70.57
  • www.baidu.com 的 CNAME(别名)指- 向了 www.a.shifen.com。
  • 然后这个 www.a.shifen.com 解析为两个 IP 地址:
    • 110.242.69.21
    • 110.242.70.57

也就是说:

www.baidu.com → www.a.shifen.com → 110.242.69.21 或 110.242.70.57

6. 统计信息

;; Query time: 21 msec
;; SERVER: 223.6.6.6#53(223.6.6.6)
;; WHEN: Mon May 26 10:45:48 CST 2025
;; MSG SIZE  rcvd: 104
  • Query time: 整个 DNS 查询耗时 21 毫秒。
  • SERVER: 使用的 DNS 服务器是 223.6.6.6(阿里云公共 DNS)。
  • WHEN: 查询时间是 2025年5月26日 上午10:45:48。
  • MSG SIZE: 收到的 DNS 响应数据包大小是 104 字节。
  • 这通常是因为百度使用了 CDN 加速服务,通过 shifen.com 域名来分发全球节点

7. 总结一下就是

当你执行 dig www.baidu.com 时,DNS 返回的结果如下:

类型 名称 TTL 数据
CNAME www.baidu.com 1049s → www.a.shifen.com
A www.a.shifen.com 31s 110.242.69.21
A www.a.shifen.com 31s 110.242.70.57

这个是我连上wifi以后,自动配置的DNS服务器,你也可以指定DNS服务器,或者多配置几个DNS服务器也可以

小知识:什么是 TTL?

  • TTL(Time To Live)表示这条记录在缓存中可以保留的时间(单位是秒)。
  • 比如 CNAME 记录的 TTL 是 1049 秒 ≈ 17 分钟,意味着你的本地 DNS 或浏览器在这段时间内不会再重新查询,而是直接使用缓存的结果。

是不是很酷!你正在亲自体验“域名解析”的全过程!

七、总结一张图

这个图的逻辑就是浏览器访问一个没有缓存过的域名,或者是已经过期了的解析缓存,切记

详细的解释一下就是

1️⃣ 用户发起请求

  1. 用户:在浏览器中输入www.icescn.com并发起访问请求。
  2. DNS客户端:首先检查本地缓存是否有该域名对应的IP地址。这里面会有两个DNS,一个是浏览器缓存,一个是本地缓存;
    查看谷歌(chrome)浏览器DNS缓存

查看操作系统本地DNS缓存(macOS)

他们两解析出来的ip是一样的
因为浏览器默认是使用的操作系统的DNS

还有一个情况,大家千万不要把www.baidu.combaidu.com混为一谈,在学习DNS的时候是不一样的;它们是两个完全不同的域名,DNS 系统会为每一个域名单独设置记录,互不影响

有的同学看到这里突然就想起来了,我们学习计算机网络的时候老师说过www(World Wide Web)就是代表万维网,早期的时候很多网站都习惯使用www来代表“这个是一个网页服务”,但这不是必须的,你可以替换或者就不加么,加上了那么www.baidu.com就是baidu.com的一个字域名。

建议大家去理解一下: 互联网、万维网、网络协议、网站具体指的是什么,如果有时间,留言多的话,后期我再出一篇,专门解释四个名词的文章。

2️⃣ 检查本地缓存

如果缓存中有记录,则直接返回结果给用户。
如果没有命中缓存,进入下一步。

3️⃣ 递归查询开始

  1. DNS代理服务器:用户的请求被转发到一个DNS代理服务器(通常是ISP提供的DNS服务器)。这个IPS就指的是网络运营商;
  2. DNS代理服务器:它会代表用户进行递归查询,直到找到目标域名的IP地址。

4️⃣ 迭代查询开始

  1. 查询根域名服务器
  • 根域名服务器:DNS代理服务器首先向根域名服务器(.com 的上级服务器)询问 www.icescn.com 的IP地址。
  • 根域名服务器不知道具体IP,但知道 .com 域名服务器的位置,于是告诉DNS代理服务器去问 .com 域名服务器。
  1. 查询 .com 域名服务器
  • .com 域名服务器:DNS代理服务器接着向 .com 域名服务器询问 www.icescn.com 的IP地址。
  • .com 域名服务器也不知道具体IP,但它知道 icescn.com 的权威域名服务器位置,于是告诉DNS代理服务器去问 icescn.com 的权威域名服务器。
  1. 查询 icescn.com 域名服务器
  • icescn.com 域名服务器:DNS代理服务器最后向 icescn.com 的权威域名服务器询问 www.icescn.com 的IP地址。
  • icescn.com 域名服务器有该域名的详细记录,返回 www.icescn.com 对应的IP地址 6.6.6.6。

5️⃣ 返回结果并缓存

  1. DNS代理服务器:收到IP地址后,将结果返回给用户,并将 www.icescn.com -> 6.6.6.6 的映射关系放入本地缓存中。
  2. 用户:最终得到 www.icescn.com 的IP地址,可以正常访问网站。

总结:递归查询 vs 迭代查询

类型 特点
递归查询 DNS代理服务器负责全程查询直至获取结果,用户只需等待最终结果,可能涉及多次迭代查询
迭代查询 各级域名服务器逐级查找,每次查询只返回下一级服务器的信息

八、建议

👉 不用把 DNS 的技术细节背下来,但你一定要知道它:

  1. 是什么?
  2. 干嘛的?
  3. 不通了会出什么问题?
  4. 怎么用公共 DNS 提高上网体验?
  5. 这比死记 IP 地址要实用太多了!

🧡 欢迎点赞 + 收藏 + 关注

Logo

全面兼容主流 AI 模型,支持本地及云端双模式

更多推荐