| HowItWorksLab · 系统
简体中文

DNS 域名解析是如何运转的

你输入的是名字,网络要的却是地址。跟着解析器走一遍层级,看它如何一步步查到你想要的那个 IP 地址。

DNS 域名解析 · 一次完整查询 浏览器 → 递归解析器 → 根 → TLD → 权威服务器:逐级查询(蓝)· 应答沿原路回传(绿) 浏览器(客户端) 发起域名解析请求 递归解析器(本地 DNS) 代表客户端逐级查询 根域名服务器(Root) 返回 TLD 服务器地址 顶级域服务器(TLD · .com) 返回权威服务器地址 权威域名服务器 返回 example.com 的 IP 地址 本地缓存 暂存记录 · 加速下次访问 解析结果(IP 地址) example.com → 93.184.216.34 查询 查询根 查询 TLD 查询权威 应答返回 返回 IP 写入缓存 查询请求(逐级向下) 应答返回(沿原路回传)
查询的顺序 输入域名 → 询问解析器 → 根 → TLD → 权威 → 返回 IP → 写入缓存
显示模式

详细说明

什么是域名解析?

域名解析就是把人们记得住的名字(比如 example.com)转换成计算机真正使用的数字 IP 地址。名字是给人用的,地址是给机器用的,DNS 就是让两者保持对应的那套系统。

因为没有任何一台服务器掌握全部目录,答案要靠一小串服务器依次询问才能找到,每台只知道自己那一小块地图。这张图跟着的就是这条查询链。

为什么一次查询要分好几步?

DNS 数据库被刻意按层级分散存放,这样才能扩展。根服务器并不认识每个网站,它只知道处理某个顶级域(如 .com)的服务器在哪里;那台服务器又只知道某个具体域名该由哪台服务器负责。只有权威服务器手里才有真正的记录。

每一级回答都会把搜索范围收窄一点,直到某一台服务器能给出最终地址,再沿原路逐级返回。

部件及其作用

1. 浏览器提出域名查询

一切从你输入网址开始。页面还没法加载,浏览器必须先把域名换成 IP 地址,于是它把问题交给一台递归解析器。

2. 递归解析器接手

解析器不会让你的设备自己去跑层级,而是替你把查询跑完。它先查自己的缓存;如果没有结果,就代表你向其他服务器发起查询。

3. 根服务器指向 TLD

解析器的第一站是根域名服务器。根并不认识这个网站,但它知道哪个服务器负责这个顶级域——也就是域名里的 .com 部分——并让解析器去那里问。

4. TLD 服务器指向该域名

.com 服务器同样不保存这个站点的记录,它指向该域名对应的权威域名服务器,那才是真正拥有这条记录的地方。

5. 权威服务器返回 IP

权威域名服务器查到这个域名,返回对应的 IP 地址。整条链路上,只有它被允许给出最终的权威答案。

6. 应答被缓存

在返回的路上,解析器把这条记录保存一段时间,并把 IP 交给浏览器。下次再请求同一个域名时,可以直接用缓存中的答案,跳过整条链路。

DNS 到底在做什么?

DNS 把人能记住的域名(如 example.com)转换成计算机用来互相查找的数字 IP 地址。名字保持好读好记,网络内部则始终用地址工作。

什么是递归解析器?

它是你的设备最先询问的那台服务器,通常由运营商或公共 DNS 服务提供。它替你去逐级查询,而不是让你自己去跑整个层级,最后只交回一个确定的结果。

为什么一次查询要经过好几台服务器?

DNS 数据库按层级拆开存放。根服务器知道顶级域服务器在哪里,TLD 服务器知道某个域名对应的权威服务器,而只有权威服务器手里才有真正的记录。

根、TLD 与权威服务器有什么区别?

它们回答的问题范围逐级缩小。根指向顶级域,TLD 指向该域名自己的服务器,权威服务器则是最终来源,返回这个具体域名对应的地址。

为什么缓存过的答案更快?

解析器拿到记录后会保存一段时间。再次查询同一个域名时,可以直接用缓存里的答案回应,不必重走整条层级链路。

浏览器每次都要重走整个查询吗?

不会。浏览器、操作系统和解析器都保存短期缓存。缓存命中时会跳过整条链路,这也是第二次访问同一个网站往往感觉更快的原因。

常见误区

一台服务器存着所有域名。 人们以为有一个存放全部网站的巨型目录。
目录按层级拆开存放。 根、TLD 与权威服务器各自只知道地图里的一小块。
浏览器每次都走完整条链路。 以为每次查询都会访问根、TLD 和权威服务器。
缓存通常能跳过大部分步骤。 若记录已在缓存中,直接返回答案,不必重走链路。
根服务器返回网站的 IP。 以为最先联系的那台服务器就知道最终地址。
只有权威服务器才知道地址。 根与 TLD 服务器只是把解析器指向下一个该问的地方。
免责声明:本图解为教学目的做了大幅简化,真实系统变量与复杂度远超此处。不可用于工程生产用途,也不构成金融、政治或专业建议。