首页/网络/抓包与流量分析速查/Wireshark 过滤 TCP 选项
Wireshark 技巧75 条

Wireshark 过滤 TCP 选项

握手包里的 TCP 选项决定连接行为:tcp.options.mss_val 看 MSS,tcp.options.wscale 看窗口缩放;异常大量小 MSS 或缺少选项值得注意。

TCP 选项过滤是什么

握手报文里的选项决定连接的运行参数:MSS 决定单个报文最大载荷,窗口缩放决定窗口能放大多少倍,选择性确认与时间戳影响恢复效率与时延测量。用 tcp.options 前缀可以直接过滤这些选项,排查吞吐上不去或握手参数与预期不符时特别有用。

基本信息

适用工具Wireshark 3.x / 4.x
字段前缀tcp.options
常见子字段mss_val、wscale.shift、sack_permitted、timestamp
出现位置仅限 SYN 与 SYN-ACK 报文
配合过滤tcp.flags.syn == 1

典型使用场景

  • 核查两端声明的 MSS 是否与路径匹配
  • 确认窗口缩放是否协商成功,评估吞吐上限
  • 检查选择性确认是否启用,判断恢复效率
  • 核对时间戳选项是否存在,影响时延测量精度
  • 排查中间设备是否改写了握手选项

常用示例

常用示例
tcp.options.mss_val < 1400                # MSS 偏小的握手
tcp.options.wscale                         # 含窗口缩放选项
tcp.options.sack_permitted                 # 含选择性确认协商
tcp.options.timestamp                      # 含时间戳选项
tcp.flags.syn == 1 && tcp.options.mss_val   # 只在握手中核对 MSS

选项与异常表现

选项含义异常时的表现
mss_val单段最大载荷明显偏小说明封装开销大
wscale.shift窗口缩放因子缺失会把窗口限制在 64KB 内
sack_permitted选择性确认协商未协商时丢包恢复更慢
timestamp时间戳选项缺失影响往返时延测量精度
选项只出现在握手报文中,想核对参数必须先过滤出 SYN 或 SYN-ACK。
两端声明的取值可能不同,实际生效的通常是较小或受路径改写限制的那一方。

补充要点

  • 把 MSS 与窗口缩放放在一起核对,能一次判断路径封装与吞吐上限
  • 选项缺失不一定是故障:老旧设备与特殊链路本身可能不支持某些选项
  • 中间设备改写选项会导致两端认知不一致,跨设备问题要分段抓包验证
  • 握手中的选项组合是连接行为的基础,分析异常前先把它看一遍
把握手报文的选项区截图或导出,是给他人说明连接参数最直观的方式。
握手选项是连接行为的基础参数,分析吞吐与恢复问题前先把握手报文看一遍,通常能省下大量排查时间。

易错点

  • 在不含握手的抓包片段里找选项,过滤结果为空便误判为未协商
  • 只看一端的声明就推断生效值,忽略另一端声明与路径改写
  • 把选项缺失直接定性为故障,忽略设备或链路的支持能力差异

数据来源与参考

  • Wireshark 显示过滤器参考(tcp.options)
  • RFC 9293(TCP 选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌