DNS 解析过程是什么?递归查询、迭代查询和 DNS 缓存有什么区别?
🧑💻 面试官:输入域名以后,DNS 会依次问根服务器、顶级域服务器、权威服务器吗?
🙋♂️ 我:是的,浏览器按这个顺序查询。
🧑💻 面试官:电脑配置的 DNS 服务器在做什么?如果已经有缓存,还会完整走一遍吗?
🙋♂️ 我:应该是它帮浏览器查,缓存命中就不必全部查询。
🧑💻 面试官:那为什么改完域名指向,有的人看到新地址,有的人仍看到旧地址?
先分清谁帮你查,再看答案缓存在哪。DNS 解析不是每次从根服务器重走一遍。
面试速答(60 秒版)
DNS 的作用是查询域名对应的记录,不只查询 IP。应用通常先经过本机解析机制,再向配置的递归解析器请求结果。
递归查询是把查到答案的责任交给对方;迭代查询是对方给出答案或下一步该问的服务器,查询方继续查。递归解析器在缓存未命中时,可以沿根、顶级域和权威服务器逐步查询。
缓存会影响实际路径,也影响修改生效的时间。TTL 管的是记录能被缓存多久,不是所有客户端同时切换的闹钟。排查时要区分本地缓存、递归解析器缓存和权威记录,还要检查失败答案的负缓存。
传输上也不能说 DNS 只用 UDP;传统 DNS 需要支持 TCP,也有 DoH 等加密传输。

知识点详解:一次域名查询,到底由谁完成
先认清三个角色
假设应用要访问 api.example.com。本机的存根解析器通常不自己逐个询问根服务器,而是向配置的递归解析器求助。后者可能来自运营商、企业网络或公共 DNS 服务。
权威服务器则负责给出自己管理区域的记录。递归解析器是替客户端跑查询的人,权威服务器是持有那一片记录的人,两个角色别混在一起。
浏览器还可能采用自己的解析配置。因此排查时,不能只看操作系统里填的一个 DNS 地址就认定所有请求经过它。
递归和迭代,区别是把查找责任交给谁
递归请求的意思是:请你把这次查询的结果查出来给我。迭代查询则允许返回转介:这部分不归我管,你可以去问那个服务器。
在一个无相关缓存的简化过程里,递归解析器询问根服务器,得到顶级域的转介;再询问顶级域服务器,找到目标区域的权威服务器;最后取得所需记录。
这些是查询角色的关系,不是要求每次固定发三次请求。区域委派、CNAME、已有缓存等都会改变实际步骤。
TTL 是缓存期限,不是全网切换时间
假设某条记录的 TTL 原来是一小时。你现在把权威记录改为新 IP,并把 TTL 调成一分钟,已经缓存旧答案的解析器未必立刻知道这次修改,它可能继续按旧答案剩余的缓存时间使用。
所以迁移前应提前调整 TTL,给旧缓存留出过期时间,并让新旧服务有重叠可用期。还要考虑应用自己的连接复用:DNS 已变,已有连接也不一定马上断开。
“没有这个域名”也可能被缓存。这类负缓存意味着刚补上记录后,某些解析器仍短时间返回失败。
排查要逐层比答案
先确认应用实际使用哪个解析器,再比较该解析器和权威服务器给出的记录、TTL 与响应状态。必要时检查 A、AAAA、CNAME 是否一致,避免只看 IPv4 却忽略另一条路径。
加密 DNS 解决的是查询传输的相关隐私和安全问题,不保证答案永远正确。解析成功也不代表 TLS、路由和服务端已经可用。
面试里能说清“查到了什么”和“后续连接失败在哪里”,这道题才不会停在背流程图。
本题机制参考:DNS 概念 RFC 1034、DNS 负缓存 RFC 2308、DNS TCP RFC 7766、DoH RFC 8484。
面试官继续追问
DNS 为什么也要用 TCP?
响应大小、截断后的重试以及协议要求等都可能用到 TCP。不能把传统 DNS 简化为永远 UDP。
刷新电脑缓存就一定能看到新记录吗?
不能。递归解析器、浏览器或应用还有各自的缓存与连接状态。
DNS 只返回一个 IP 吗?
不是。记录有多种类型,同一名称也可能有多个地址;服务选择和实际连接还受客户端行为影响。
面试速记卡
- 角色:本机解析机制、递归解析器、权威服务器分开看。
- 递归:请对方查到结果;迭代:拿答案或转介继续问。
- 缓存:命中后不必完整查询链。
- TTL:缓存有效期,不是全网同步切换时间。
- 排查:记录、缓存、连接和应用错误分层检查。
公司面试真题
真题根据求职者公开面经整理,题意经过概括,非逐字原话或公司官方题库;本文为 Sunday 的独立解析。
字节跳动 · 前端 · 校招
DNS 递归查询和迭代查询怎样工作?(题意整理)
字节幸福里校招前端面经 1面+2面+3面+hr面(已意向) ↗
面试记录为 2021 年秋招;原帖编辑于 2021-10-09