什么是 DNS?
DNS(Domain Name System,域名系统)是互联网的分布式命名系统。它把 example.com 这类人类易读的域名,解析成计算机通信所需的 IP 地址或其他资源记录。

一句话解释:DNS 就像互联网的电话本,输入网站名字,就能查到对应的网络地址。 浏览器获得地址后,才会继续与目标服务器建立连接并请求网页;DNS 本身不负责传输网页内容。
这个“电话本”只是便于理解的比喻。真实的 DNS 不是一本集中存放的静态名册,而是一套由解析器、根域名服务器、顶级域名服务器和权威域名服务器共同工作的全球分布式系统。
为什么互联网需要 DNS?
互联网需要 DNS,是因为人更适合记名字,而网络设备发送数据时需要可路由的 IP 地址。DNS 把“方便人使用的命名方式”和“方便机器通信的寻址方式”连接起来。

例如,你更可能记住 example.com,而不是某个 IPv4 或 IPv6 地址。即使记住了地址,它也可能因为服务器迁移、云服务调整或流量调度而变化。域名可以保持不变,网站运营者只需更新 DNS 记录。
需要补充一个边界:并不是“每台设备都有一个永远不变、全球唯一的公网 IP”。家庭和企业网络常通过 NAT 共享公网地址,设备也可能使用私有地址或动态地址。但只要要在 IP 网络中把数据送往目标,就仍然需要获得当时可用的目标 IP 地址。

DNS 主要解决三个问题:
- 可记忆性:用户使用稳定、可读的域名,不必记住一串地址。
- 可变更性:服务器 IP 改变后,可以更新记录而不必更换对外名称。
- 可扩展性:全球域名由不同组织分层管理,不依赖一台中央服务器。
因此,DNS 不只是给 IP 地址起别名,它还是互联网服务发现和名称管理的基础设施。
DNS 系统由哪些角色组成?
一次常见的 DNS 查询会涉及客户端、本地递归解析器和多级权威服务器。不同角色保存的信息和承担的责任并不相同。
| 角色 | 主要职责 | 通常回答什么 |
|---|---|---|
| 浏览器与操作系统 | 发起查询并使用缓存 | 本机是否已有可用结果 |
| 递归解析器 | 代表客户端查找最终答案 | 缓存结果,或继续向外查询 |
| 根域名服务器 | 指向对应顶级域的管理者 | .com、.cn 等该去问谁 |
| 顶级域名服务器 | 指向域名的权威服务器 | example.com 的权威服务器是谁 |
| 权威域名服务器 | 保存域名区的正式记录 | 该域名的 A、AAAA、MX 等记录 |
这里的“本地 DNS 解析器”通常指递归解析器。它可能由运营商、公司网络、公共 DNS 服务或家庭路由器提供;家庭路由器也可能只负责转发查询,真正的递归工作仍由上游解析器完成。
DNS 为什么采用分布式树状结构?
DNS 采用分布式、分层的树状结构,是为了把存储、查询流量和管理责任分散到全球不同组织。如果所有人都向同一台服务器查询全部域名,它会成为容量、故障和治理上的单点瓶颈。

DNS 名称从右向左逐层细化。完整域名 www.example.com. 最右侧还有一个通常省略的根标签 .:
.
└── com
└── example
└── www
树的主要层级如下:
- 根域:位于命名空间顶端,知道各顶级域服务器的位置。
- 顶级域(TLD):管理
.com、.org、.cn等后缀的委派信息。 - 权威域:保存某个域名区域的正式资源记录。

常说“全球有 13 台根服务器”并不准确。DNS 根区有 13 个逻辑根服务器标识,名称从 A 到 M;每个标识背后可通过 Anycast 部署许多实例。因此,用户实际访问的是分布在不同地区的根服务节点,而不是全球共用的 13 台物理机器。
DNS 查询是怎么工作的?
当递归解析器没有缓存时,它通常沿着“根服务器 → 顶级域服务器 → 权威服务器”的委派链查找答案,再把结果返回给客户端。

以查询 www.example.com 的 A 记录为例,简化流程如下:
- 客户端把问题交给递归解析器,并希望得到最终答案。
- 递归解析器询问根服务器,根服务器返回
.com顶级域服务器的地址。 - 解析器询问
.com顶级域服务器,得到example.com权威服务器的信息。 - 解析器询问权威服务器,得到
www.example.com的 A 记录、CNAME,或“不存在”等正式结果。 - 解析器按 TTL 缓存结果,并把答案返回给客户端。
客户端对递归解析器的请求通常称为递归查询;解析器逐级追踪委派的过程通常由多次迭代查询组成。现实过程可能因为缓存、CNAME 跳转、多个权威服务器、DNSSEC 验证或网络重试而增加步骤,并不保证每次都恰好查询三个远端服务器。
DNS 缓存为什么能让解析更快?
DNS 缓存会在有效期内复用已经得到的答案,避免每次访问都从根区重新查起。缓存既降低延迟,也减少递归解析器和权威服务器的请求压力。

缓存可能出现在多个位置:
- 浏览器或应用自身的 DNS 缓存。
- 操作系统的解析缓存。
- 家庭路由器或企业网络的缓存转发器。
- 运营商或公共 DNS 的递归解析器缓存。
如果递归解析器已经缓存了目标记录,它可以直接返回答案。即使最终记录没有缓存,它也可能缓存了 .com 或某个域的权威服务器信息,从中间层继续查询,而不必重新访问根服务器。
DNS 还可以缓存“不存在”这类否定答案。这样,重复查询同一个错误域名时也不必每次都访问权威服务器。
TTL 如何平衡及时性和效率?
TTL(Time To Live,生存时间)规定一条 DNS 资源记录最多可被缓存多久。TTL 较短时,变更能更快被重新查询到,但查询量更大;TTL 较长时,缓存命中率更高,但旧答案可能保留更久。

假设某条 A 记录的 TTL 是 3600 秒,递归解析器可以在一小时内复用它。网站运营者随后修改 IP,并不意味着全世界立即看到新地址;已有缓存通常会等剩余 TTL 到期后再查询。
一次服务器迁移可以这样安排:
- 在迁移前至少一个原 TTL 周期,把 TTL 从
3600秒调低到300秒。 - 等旧缓存自然到期后,再切换 A 或 AAAA 记录。
- 保留旧服务一段时间,承接仍在使用旧地址的客户端。
- 确认流量稳定后,再把 TTL 调回常规值。
TTL 不是“全球同步倒计时”。不同解析器在不同时间获得记录,因此各自的缓存到期时间也不同;应用、代理或网络设备还可能有额外缓存行为。
从输入网址到拿到 IP,完整过程是什么?
用户按下回车后,浏览器会先利用本机已有信息;只有本地没有可用答案时,才把请求交给配置的 DNS 解析器。

一个便于理解的完整顺序是:
- 应用检查缓存:浏览器查看近期是否解析过这个域名。
- 操作系统解析:系统解析库检查系统缓存和本地名称配置。
- 检查
hosts文件:手动配置的静态映射可能直接给出地址。 - 询问递归解析器:请求发给网络中配置的 DNS 服务。
- 递归解析器查缓存:命中时直接返回;未命中时追踪 DNS 委派链。
- 返回资源记录:客户端获得 A、AAAA 或 CNAME 等结果。
- 建立网络连接:浏览器选择地址,随后进行 TCP/QUIC、TLS 和 HTTP 交互。
具体先后顺序由浏览器、操作系统和网络配置决定。例如有些浏览器会使用自己的加密 DNS 和缓存策略,所以 hosts 文件、系统缓存与远端解析器的实际优先级不能对所有环境一概而论。
DNS 只会返回一个 IP 地址吗?
不会。DNS 可以返回多个 IP 地址,也可以返回邮件服务器、别名、验证文本和权威服务器等多种资源记录。把 DNS 理解成“只查网站 IP”的系统并不完整。
| 记录类型 | 保存内容 | 常见用途 |
|---|---|---|
| A | IPv4 地址 | 把域名指向 IPv4 服务 |
| AAAA | IPv6 地址 | 把域名指向 IPv6 服务 |
| CNAME | 规范名称 | 把一个名称指向另一个名称 |
| MX | 邮件交换服务器 | 指定接收该域邮件的服务器 |
| NS | 权威域名服务器 | 声明由哪些服务器管理该区域 |
| TXT | 文本数据 | 域名验证、SPF 等策略信息 |
一个域名配置多个 A 或 AAAA 记录时,解析响应可以包含多个地址。客户端或解析服务可以改变地址顺序,客户端也会按自身连接策略尝试地址,因此这能分散一部分流量,但不能替代健康检查、负载均衡器和故障转移机制。
DNS 如何支持负载均衡和就近访问?
DNS 服务可以根据策略返回不同地址,把用户引导到不同节点。常见策略包括多地址轮转、按用户网络位置返回结果,以及配合 CDN 把流量导向较近或状态更合适的边缘节点。

例如,同一个业务域名可以有多个服务入口:
app.example.com. 300 IN A 203.0.113.10
app.example.com. 300 IN A 203.0.113.20
app.example.com. 300 IN A 203.0.113.30
上面的 203.0.113.0/24 属于文档示例地址段,不应当作真实公网服务地址。文章图片中的 93.184.216.34 同样用于解释“域名映射到 IP”的概念,不代表 example.com 在任何时间、地点都只返回该地址。
智能 DNS 也有局限:权威服务器通常看到的是递归解析器的位置,不一定是最终用户的精确位置;缓存还会让多个用户共享同一答案。真正的就近访问往往由 DNS、Anycast、CDN、负载均衡和客户端连接策略共同完成。
DNS 出故障时会发生什么?
DNS 出故障时,网站服务器可能仍然正常,但用户因为拿不到地址而无法建立连接。常见表现包括“找不到服务器”、解析超时、部分地区打不开或刚改完记录后仍访问旧地址。

常见原因包括:
- 递归解析器不可达、响应慢或缓存异常。
- 域名的 NS、A、AAAA 或 CNAME 记录配置错误。
- DNSSEC 签名过期或验证链配置失败。
- 域名过期、注册状态异常或权威服务器不可用。
- 本地
hosts、代理、VPN、防火墙或恶意软件干扰解析。 - 记录已经修改,但旧缓存的 TTL 尚未到期。
排查时可以先区分“解析失败”和“连接失败”。如果 dig example.com 能返回地址,但 HTTPS 连接仍然超时,问题更可能在路由、防火墙、TLS 或源站,而不是 DNS。
更换公共 DNS 能解决什么问题?
更换公共 DNS 相当于换一个递归解析器。它可能改善解析可用性、响应时间、恶意域名拦截或隐私策略,但不会直接提高网站服务器、国际链路或下载带宽的速度。

常见公共解析器包括 Google Public DNS 的 8.8.8.8、Cloudflare 的 1.1.1.1,以及面向国内网络的阿里公共 DNS 223.5.5.5、DNSPod Public DNS 119.29.29.29 等。选择时应根据所在网络实测延迟、可用性、隐私政策和功能,而不是只看一个地址是否知名。
更换解析器前要注意:
- 公司、校园或酒店网络可能依赖内部域名,绕过指定 DNS 会让内部服务失效。
- 不同解析器可能把 CDN 流量导向不同节点,公共 DNS 不一定比运营商 DNS 更快。
- 解析器可以看到查询的域名元数据,应阅读其日志保留和隐私政策。
- 浏览器启用 DoH 后,系统里修改的 DNS 地址未必就是浏览器实际使用的解析器。
DNS 有哪些安全与隐私限制?
传统 DNS 的设计重点是可扩展命名,不默认提供查询保密性,也不能单靠普通响应证明数据未被篡改。DNSSEC 和加密 DNS 解决的是两个不同问题。
| 机制 | 主要解决的问题 | 不解决什么 |
|---|---|---|
| DNSSEC | 验证 DNS 数据来源与完整性 | 不加密查询内容,也不保证目标网站可信 |
| DoT | 用 TLS 加密客户端到解析器的 DNS 传输 | 不隐藏解析器本身看到的查询 |
| DoH | 通过 HTTPS 加密客户端到解析器的 DNS 传输 | 不替代 DNSSEC,也不隐藏后续访问流量 |
| HTTPS/TLS | 验证并加密浏览器与网站之间的连接 | 不负责域名委派和 DNS 缓存正确性 |
此外,DNS 缓存可能遭遇投毒,域名账号或权威 DNS 账号也可能被接管。生产系统应保护注册商与 DNS 控制台账号、启用多因素认证、限制变更权限,并监控关键记录变化。
DNS 有哪些常见误区?
DNS 的常见误区主要来自把简化比喻当成完整实现:
- DNS 就是一台服务器:它是多层、分布式的命名系统。
- 每次查询都从根开始:缓存命中时可能一次远端查询都不需要。
- 根服务器直接返回网站 IP:根服务器通常只返回下一层的委派信息。
- 一个域名只能对应一个 IP:同一名称可以返回多个 IPv4 和 IPv6 地址。
- DNS 只保存 IP:MX、TXT、NS、CNAME 等记录同样重要。
- 修改 DNS 会立即全球生效:旧缓存通常要等 TTL 到期。
- 更换 DNS 一定让网页更快:它只可能改善解析环节,无法修复所有网络和源站问题。
常见问题
DNS 的全称是什么?
DNS 的全称是 Domain Name System,中文通常译为“域名系统”。它负责管理分层域名,并通过资源记录提供 IP 地址、邮件服务器、别名等信息。
DNS 和 IP 地址有什么区别?
域名是便于人识别和长期使用的名称,IP 地址是网络层定位通信目标所需的地址。DNS 负责在两者之间建立可更新的映射,但 DNS 记录不只包含 IP 地址。
DNS 查询一般需要多久?
没有固定时间。缓存命中时可能只需几毫秒;需要访问远端权威服务器、遇到丢包或超时重试时会更久。解析时间还取决于客户端、递归解析器、网络距离和缓存状态。
修改 DNS 记录后多久生效?
权威服务器上的新记录可以很快可查,但先前缓存的旧记录通常会持续到各自 TTL 到期。修改 NS 等委派信息时还会涉及父区和注册商流程,因此不能只用一个统一时间描述“全球生效”。
DNS 服务器和域名服务器是一回事吗?
两者在日常表达中经常混用,但最好区分角色。递归解析器替客户端寻找答案,权威域名服务器则保存某个域的正式记录;它们都提供 DNS 服务,职责却不同。
清除 DNS 缓存能解决什么问题?
清除本机缓存可以移除本地保存的旧记录或错误结果,但无法清除递归解析器、浏览器独立缓存和其他网络节点的缓存。如果问题来自权威记录配置、服务器故障或网络连接,清缓存也不会修复根因。
总结:DNS 的本质是什么?
DNS 是一套全球协作的分布式命名与查询系统。它让用户使用稳定、易记的域名,同时让客户端获得当前网络通信所需的 IP 地址和其他服务信息。

理解 DNS,可以记住五个关键点:
- 分层委派解决规模问题:根、顶级域和权威服务器各自管理有限范围。
- 递归解析器代替客户端查找答案:客户端不必自己逐层查询。
- 缓存解决速度与压力问题:热门答案通常能在更近的位置返回。
- TTL 平衡效率与变更及时性:缓存越久,查询越少,但更新传播越慢。
- DNS 不只是 IP 电话本:它还承载邮件路由、别名、验证和服务发现信息。
一句话总结:DNS 把人类使用的名字连接到机器使用的网络信息,让互联网既能被人记住,也能在全球规模上高效运行。

