首页/网络/抓包与流量分析速查/DNS 超时重试模式判读
应用层报文判读71 条

DNS 超时重试模式判读

UDP 查询无响应时的重试有固定节奏:多发往往换传输方式(TCP)或换服务器,抓包时间线可见"等几秒→重发/换路"。

超时与重试的节奏

查询发出后没有响应时,客户端与解析器都按各自的节奏处理:先等一个超时窗口,重发一次或几次;再不行就改用 TCP 传输,或者切换到名单里的下一台服务器。抓包的价值在于把这套节奏显性化——时间线上能直接看到「发出、等待、再发」的间隔,据此判断超时窗口有多长、是否已切换到备用路径。需要记住的是域名解析没有连接概念,所谓重传其实是重新发起一次查询。

基本信息

适用平台Wireshark / tshark,客户端与解析器两侧均可观察
观察维度同一查询名的报文时间间隔、传输方式变化、目标服务器变化
注意点重发属于新查询,查询标识会变化
常见变化UDP 无响应后改用 TCP,或转向备选服务器

典型使用场景

  • 解析偶发变慢,量化等待窗口在整体延迟中的占比
  • 确认客户端是否会切换到备用服务器,验证冗余配置有效性
  • 排查只放行 UDP 不放行 TCP 造成的间歇失败
  • 对比不同客户端实现的超时策略差异
  • 为解析器超时参数调整提供实测依据
  • 区分「链路丢包」与「服务端不响应」这两类等待

观察要点

观察要点
# 首查发出 → 约数秒无响应 → 重发或切换传输方式
# 不同实现窗口不同,以实测间隔为准
dns.time > 1                              # 筛出较慢的 DNS 应答作起点
# 重发时查询标识通常变化,属新查询而非重传
# 切换到 TCP 后仍无响应 → 故障在链路或服务端策略

时间线逐段读法

时间线片段含义下一步
发出后长时间静默等待超时窗口确认窗口长度是否与业务容忍度匹配
同一名字再次出现重发或切换服务器看目标地址是否变化以区分两者
改走 TCP 传输UDP 路径不通或响应过大检查 TCP 是否被策略拦截
多台服务器依次尝试冗余机制生效确认切换顺序与超时配置合理
单点抓包只能看到本机行为;要看清上游分支,需要在解析器侧同样采集。
两次查询之间应用可能已经超时返回错误,判断影响时要按应用的等待设定核对,而不是只看抓包间隔。

易错点

  • 把重发当重传:域名解析没有连接概念,重发是新的查询,判断逻辑与结论都要按新查询处理
  • 忽略传输方式切换:UDP 不通时改用 TCP 是标准行为,把 TCP 流量当异常拦掉会造成永久失败
  • 只看单侧抓包:看不到上游分支就无法判断是链路问题还是服务端不响应
  • 用抓包间隔直接等同于用户等待:应用侧的超时设置往往更早触发,两者要分开核对

数据来源与参考

  • RFC 1035(UDP 传输)
  • RFC 7766(DNS over TCP)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌