首页/网络/协议速查/DNS 递归解析全流程
DNS 与域名解析60 条

DNS 递归解析全流程

从浏览器输入域名到拿到 IP:存根解析器→递归解析器→根→顶级域→权威服务器逐级查询,结果按 TTL 逐级缓存,是全互联网访问的第一步。

协议速查网络更新于 2026-10-13

解析是怎么走完的

从在地址栏输入域名到拿到地址,中间是一整条查询链:应用调用系统解析函数,由本机存根解析器把请求发给配置好的递归解析器;递归解析器再依次询问根服务器、顶级域服务器与权威服务器,最后把结果返回给客户端,并按生存时间逐级缓存。这条链路是全互联网访问的第一步,任何一环变慢或返回异常,用户在浏览器里看到的就是「网页打不开」。

链路步骤

第一步应用调用系统解析函数,读取本机解析配置与本地记录文件
第二步存根解析器把请求交给递归解析器,并声明希望得到完整解析
第三步递归解析器问根服务器,只拿到顶级域的委派信息
第四步继续问顶级域,拿到目标域的权威服务器地址
第五步向权威服务器取得最终记录,回填并缓存,返回给客户端

一条命令看全流程

一条命令看全流程
dig +trace www.example.com A   # 从根开始逐级迭代,能看清每一级谁在回答
# 依次能看到根域、顶级域、目标域三层的委派与最终应答
dig @223.5.5.5 www.example.com A +noall +answer   # 指定公共解析器,排除本地配置干扰
getent hosts www.example.com   # 走系统解析链路,会读本地记录文件,结果可能与 dig 不同

各角色职责

角色位置典型行为
存根解析器本机或操作系统把请求转给配置好的递归解析器
递归解析器运营商、公共或自建全程代查并把结果缓存,供大量客户端复用
根服务器根区只返回顶级域的委派信息,不直接给出结果
顶级域服务器各顶级域返回目标域的权威服务器地址
权威服务器目标区域给出最终记录,是配置生效的唯一依据

排查方法

  • 先用系统链路查一次,再用工具直接查,结果不同说明本地配置或本地记录文件在起作用
  • 指定不同的递归解析器分别查询,可以判断是解析器缓存问题还是权威配置问题
  • 直接向权威服务器提问,能立刻看到配置是否已经生效,排除各级缓存干扰
  • 用迭代查询观察委派链,如果某一级返回异常,问题就在那一级的配置上
  • 记录解析耗时:首次查询与命中缓存的耗时差别很大,能帮助判断是否频繁回源
递归解析器通常是边问边缓存:第二次解析同一域名不会再访问根与顶级域,只按生存时间决定何时回源。这也是为什么修改权威配置后,不同地区生效时间并不一致。
本机能解析不等于全网能解析:权威记录没配好,或者委派关系不一致时,只有本地缓存里的旧值还生效,一旦缓存过期就会立刻全面失败,必须用权威查询验证真实配置。

三个易混淆判断

  • 结果为空与查询超时是两回事:前者说明记录不存在,后者说明链路中有节点没有应答
  • 配置生效后仍查不到,优先检查委派关系是否指向了正确的权威服务器
  • 内网环境里本地记录文件的优先级往往高于外部解析,排查时不要忘记它

易错点

  • 只验证本机解析结果就发布,忽略了其他地区缓存仍指向旧地址
  • 委派记录与区域内的权威声明不一致,造成间歇性解析失败
  • 切换解析服务商时未在新旧两侧同步全部记录,部分记录直接消失
  • 把解析慢归因于网络带宽,实际是递归解析器频繁回源或权威服务器响应缓慢

数据来源与参考

  • RFC 1034 §5.3(解析算法)
  • RFC 1035(实现与规范)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌