DNS 解析全流程

DNS 在项目里最常以"问题"的形式出现:

  • 域名突然解析到旧 IP,变更半天不生效
  • 同一个域名,你本机能访问,同事/线上机器访问不了
  • DNS 被污染/劫持,解析到奇怪的地址
  • ping 域名 失败,但 ping IP 又能通

这篇我用"知识分享 + 可验证"的方式讲清楚:

  • DNS 这条链路到底怎么走
  • 缓存/TTL 为什么会让变更延迟
  • 出问题时你怎么用命令把证据抓出来

目录(按排查顺序)

    1. DNS 到底解决什么问题
    1. 递归 vs 迭代:谁在替你跑腿
    1. 解析全链路:www.example.com 到底经历了哪些节点
    1. 缓存与 TTL:为什么变更不会立刻生效
    1. 实战:常用命令与排障闭环
    1. 最后总结

1. DNS 到底解决什么问题

  • DNS(Domain Name System)负责把 域名 解析为 IP 地址。

人类记域名更容易,网络通信最终要靠 IP。


2. 递归查询 vs 迭代查询

面试里你可以这样说:

  • 递归:你问一个"代办",它帮你查到最终答案再回来给你。
  • 迭代:你问一个"指路人",它告诉你下一站去哪,你自己再去问下一站。

典型链路:

  • 你的机器 -> 本地 DNS(递归)
  • 本地 DNS -> 根/顶级/权威 DNS(多为迭代)

3. DNS 解析全链路(按步骤讲)

以访问 www.example.com 为例。

第 1 步:浏览器/系统先查本地缓存

常见缓存位置:

  • 浏览器 DNS 缓存
  • 操作系统 DNS 缓存
  • hosts 文件(最高优先级之一)

如果命中,直接得到 IP。

第 2 步:请求本地 DNS 服务器(递归)

如果本地没有命中,就把域名发给本地 DNS(通常是运营商/公司内网 DNS)。

第 3 步:本地 DNS 开始向外查询(迭代)

本地 DNS 会按层级去问:

  • 问根服务器:.com 的服务器是谁?
  • 问 .com 顶级域名服务器:example.com 的权威服务器是谁?
  • 问 example.com 权威服务器:www.example.com 的 A/AAAA 记录是多少?

最后拿到 IP。

第 4 步:本地 DNS 返回结果并缓存

  • 把 IP 返回给你的机器
  • 同时按照 TTL 缓存

4. 缓存与 TTL:为什么变更不会立刻生效

因为会把根域名打爆。

缓存层级很多:

  • 本机缓存
  • 本地 DNS 缓存
  • 各级 DNS 服务器缓存

这就是为什么:

  • 有时候你改了域名解析,但要等一段时间才生效(TTL)。

5. 实战:常用命令与排障闭环

5.1 TTL 是什么

  • TTL(Time To Live)是 DNS 记录的缓存时间。
  • TTL 越大:解析更快但变更生效慢。
  • TTL 越小:变更更快但查询压力更大。

5.2 DNS 劫持/污染

表现:

  • 访问某域名被解析到错误 IP

应对方向:

  • 使用可信 DNS(如公司内网 DNS、公共 DNS)
  • HTTPS 能降低劫持造成的内容篡改风险(但 DNS 本身仍可能被影响)

5.3 快速排障命令(Windows)

  • nslookup 域名
  • ping 域名
  • tracert 域名(Windows)

如果你怀疑是"本机缓存导致解析不一致",可以:

bash 复制代码
ipconfig /displaydns
ipconfig /flushdns

核心思路(尽量按这个顺序缩小范围):

  • 先确认"域名能不能解析到 IP"
  • 再确认"IP 能不能通"
  • 再确认"端口服务是否可用"

6. 最后总结

6.1 你可以这样总结(写在脑子里的版本)

DNS 的作用是把域名解析成 IP。解析时客户端会先查浏览器/系统/hosts 等本地缓存,未命中则请求本地 DNS 服务器做递归查询。本地 DNS 通常通过迭代方式依次询问根服务器、顶级域名服务器和权威服务器,最终拿到域名的 A/AAAA 记录并按 TTL 缓存,返回给客户端。TTL 决定缓存时间,也解释了为什么解析变更不会立刻全网生效。

相关推荐
为思念酝酿的痛1 天前
数据链路层--帧传输与链路控制
网络·网络协议·计算机网络·数据链路层
程序员z71 天前
【从0开始学计算机网络】| HTTP 协议的进化史
网络协议·计算机网络·http
为思念酝酿的痛2 天前
NAT技术--网络地址转换原理
网络·计算机网络·智能路由器
沫璃染墨3 天前
从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》
linux·网络·网络协议·tcp/ip·计算机网络
洋不写bug5 天前
初识网络通信,网络发展背景,TCP/IP五层模型简介
计算机网络·网络编程·协议·ip·端口号·tcp/ip模型·网络发展背景
流浪0016 天前
计算机网络篇3:端口号与 socket:数据到达主机后,如何找到目标进程?
计算机网络·udp·tcp·端口·网络字节序
欣欣之王来了6 天前
5G网络基础:5G的核心特性,eMBB、uRLLC、mMTC的应用场景
网络·学习·计算机网络·安全·教程
道尔柯南7 天前
从 0 到 1 理解计算机网络:从网络基础到 Socket 编程
网络·计算机网络
沙漠之主9 天前
计算机二级考试备考全攻略:从报名到通关
计算机网络·面试
欣欣之王来了9 天前
5G的行业应用:工业互联网、车联网、智慧医疗中的网络支撑
网络·学习·计算机网络·安全·教程