首页/网络/抓包与流量分析速查/Wireshark 观察 DNS 响应耗时
Wireshark 技巧75 条

Wireshark 观察 DNS 响应耗时

dns.time 记录查询到响应的耗时,可直接统计慢解析:超过阈值的查询通常是解析链路或权威服务器问题。

观察 DNS 响应耗时

dns.time 是 Wireshark 把 DNS 查询与响应配对之后算出的耗时,用来直接统计「这一次解析花了多久」。筛出超过阈值的查询,通常能立刻指向两种原因:本地递归解析器链路慢,或者权威服务器响应慢。它只对配对成功的查询取值,超时无响应的查询不会出现在这个字段里。

基本信息

适用平台Wireshark(dns.time 字段)
过滤语法dns.time > 0.5 / dns.time > 1
测量范围查询发出到响应到达,含网络往返与解析器处理
取值前提同一事务 ID 的响应已被捕获到

典型使用场景

  • 页面加载慢定位:先确认域名解析是否占了大头
  • 递归解析器质量评估:统计超过阈值的查询占比
  • 权威服务器排查:指定某个权威地址后统计它的响应耗时
  • 缓存命中判断:常用域名解析极快,长耗时多为未命中
  • 与本地解析日志互补:抓包说明「慢」,日志说明「为什么慢」

常用示例

常用示例
dns.time > 0.5                            # 超过 500 毫秒的解析
dns.time > 1 && dns.flags.response == 1   # 只看响应侧的长耗时
ip.dst == 10.0.0.53 && dns.time           # 指定递归解析器地址
dns.time > 2 && dns.qry.type == 1         # A 记录里特别慢的解析

耗时归属判读

现象偏向原因下一步
查询后长时间无响应解析器无响应或链路丢包看是否有重试与超时
响应很快但值不对解析结果本身有问题核对权威记录与本地缓存
少数域名特别慢该域名的权威服务器慢按域名聚合统计
所有域名都慢本地递归解析器或链路换解析器对比验证
查询超时后客户端会按配置重试,抓包里表现为同一域名出现多条请求、最后才有响应。统计「慢」时要按事务 ID 把重试合并,否则请求总数会被明显放大。
本地缓存命中不产生任何报文,抓包里「没有查询」并不等于应用没在解析。要判断真实解析次数,需要同时参考应用侧日志或解析器自身的统计。
在客户端侧抓包看到的耗时包含客户端到解析器、解析器到权威的整条链路。要把这段拆分归因,需要在解析器所在主机上再抓一份做对照。

易错点

  • 重试查询会让总量看起来多但每条都不慢,统计时要按查询 ID 合并
  • 本地缓存命中不产生流量,抓包中"没有查询"不代表应用没在解析
  • 把 dns.time 大直接归因于权威服务器:客户端到递归解析器这段同样可能慢,需分段确认
  • 抓包机与解析器之间经过代理时耗时含代理排队,数值偏大属正常,别当成解析器故障

数据来源与参考

  • Wireshark 显示过滤器参考(dns.time)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌