首页/网络/抓包与流量分析速查/EDNS0 与 UDP 尺寸协商
应用层报文判读71 条

EDNS0 与 UDP 尺寸协商

请求带 OPT 记录声明可接收的 UDP 载荷大小(常见 1232/4096):协商值决定是否触发截断,过大值在部分链路会被分片丢弃。

EDNS0 与尺寸协商

EDNS0 是域名系统的扩展机制:查询时会附带一条选项记录,声明本方一次能接收多大的 UDP 载荷(常见 1232 或 4096 字节),同时承载扩展结果码与一些标志位。这个协商值直接决定大响应会不会被截断——值偏小会让本可一次返回的答案被迫走截断与重试,值偏大在部分链路上又会触发分片,丢一片就得整体重来。排查「响应不完整」与「解析时快时慢」时,核对这个协商值是关键一步。

基本信息

适用平台Wireshark / tshark,解析 DNS 的扩展选项记录
相关字段dns.opt.udp_size、dns.opt.do
常见声明值1232、4096
无扩展时回落到 512 字节上限,大响应必然截断

典型使用场景

  • 解析结果不完整,确认是否为协商尺寸偏小导致的截断
  • 解析偶尔变慢,判断是否因分片丢失而反复重试
  • 核对设备是否剥离或改写了扩展选项记录
  • 在 DNSSEC 场景确认关注标志位是否已置位
  • 对比改造前后协商值的变化,验证配置是否生效
  • 为解析器与中间设备的能力评估提供实测数据

过滤与查看

过滤与查看
dns.opt.udp_size > 1232                   # 声明了较大的载荷
dns.opt.udp_size >= 4096                  # 常见的大值声明
dns.opt.do == 1                           # 关注标志位置位(DNSSEC 相关)
# 无 OPT 记录时上限回落到 512 字节,大响应必然截断
# 同一域名分别抓客户端侧与解析器上联口,核对协商值是否被改写

字段逐项读法

字段含义异常信号
udp_size本方声明的可接收载荷上限明显偏小会让大响应反复截断
do 标志是否请求相关附加数据置位后响应体积会增大,需配合尺寸协商
扩展结果码承载更细的失败原因与基础结果码不一致时按工具显示为准
记录是否存在是否启用扩展机制缺失说明基础实现,上限固定为 512
声明的上限大于路径可承载的最大长度时会依赖分片,分片中丢一片就导致整体重试,实际表现可能比小值更差。
中间设备可能改写或剥离扩展记录,判断以接收端实际看到的报文为准,单看发送端配置容易得出错误结论。

易错点

  • 一味调大声明值:超过路径能力会依赖分片,丢片后整体重试,反而更慢
  • 忽略扩展记录缺失的情况:没有该记录时上限只有 512 字节,大响应必然截断
  • 只看一端配置:中间设备可能改写协商值,必须看接收侧实际收到的内容
  • 把协商值当成最终结果:协商只是上限,真正返回多少仍取决于记录数量与签名体积

数据来源与参考

  • RFC 6891(EDNS0)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌