首页/网络/抓包与流量分析速查/Wireshark 过滤 TCP 标志组合
Wireshark 技巧75 条

Wireshark 过滤 TCP 标志组合

用 tcp.flags.syn/ack/fin/rst 等布尔字段组合过滤:纯 SYN(建连请求)、RST、FIN-ACK 一气呵成,比 BPF 位运算可读。

标志位过滤在做什么

Wireshark 把 TCP 标志位拆成独立字段:tcp.flags.syn、tcp.flags.ack、tcp.flags.fin、tcp.flags.rst 等,取值 0 或 1,用布尔组合就能表达任意标志组合,比在命令行里做位运算直观得多。需要精确匹配整套组合时,也可以用 tcp.flags 直接比较十六进制数值。它的典型用途是描述连接的生命周期:只看建连请求、只看复位、只看关闭确认,每种都对应一类明确的排查问题。

基本信息

建连请求tcp.flags.syn == 1 && tcp.flags.ack == 0
建连应答tcp.flags.syn == 1 && tcp.flags.ack == 1
复位tcp.flags.rst == 1
关闭确认tcp.flags.fin == 1 && tcp.flags.ack == 1
数值写法tcp.flags == 0x012 表示 SYN 与 ACK 同时置位

典型使用场景

  • 统计建连请求:只看纯 SYN,数量反映连接尝试
  • 定位连接被重置:只看复位标志,快速找到中断点
  • 核对关闭流程:筛关闭确认报文看是谁先发起关闭
  • 识别纯确认流量:排除带数据的报文,观察保活行为
  • 按体积描述连接:只看带推送标志的数据报文,统计真实载荷量

常用示例

常用示例
tcp.flags.syn == 1 && tcp.flags.ack == 0        # 纯 SYN
tcp.flags.syn == 1 && tcp.flags.ack == 1        # 建连应答
tcp.flags.rst == 1                              # 复位
tcp.flags.fin == 1 && tcp.flags.ack == 1        # 关闭确认
tcp.flags.ack == 1 && tcp.len == 0              # 纯确认,不带数据
tcp.flags == 0x012                              # 数值写法:SYN 与 ACK
tcp.flags.push == 1 && tcp.len == 0             # 异常组合,值得看一眼

标志组合与含义

组合含义排查方向
仅 SYN建连请求服务是否可达、请求量是否异常
SYN 加 ACK建连应答与请求配对判断应答率
仅 ACK纯确认,不带数据保活、心跳与空闲连接
RST强制复位端口未监听、进程退出或中间设备插手
FIN 加 ACK关闭确认正常关闭流程与主动关闭方判断
推送标志加零长度无数据的推送非典型组合,通常与应用实现有关
把标志位条件与流编号叠加,可以在一条连接内观察状态变化顺序:建连、传数据、关闭是否完整,比逐包阅读快得多。
只写 tcp.flags.syn == 1 会同时命中建连应答。只想看建连请求时必须补上 ACK 为零的条件,否则统计结果会偏大。

与其他条件组合

与其他条件组合
tcp.flags.syn == 1 && tcp.flags.ack == 0 && ip.dst == 10.0.0.20   # 发往某服务的建连请求
tcp.stream == 7 && tcp.flags.rst == 1                             # 某条流是否被重置
tcp.flags.syn == 1 && tcp.analysis.retransmission                 # 握手是否出现重传
tcp.flags.fin == 1 && tcp.analysis.retransmission                 # 关闭报文是否被重传

判读要点

  • 建连请求多而建连应答少,说明存在未被应答的连接尝试
  • 复位集中出现在建连阶段,优先查监听与策略;出现在传输阶段则查应用
  • 纯确认流量持续存在但业务空闲,属于保活机制,不必当成异常
  • 关闭报文数量与建连数量明显不匹配时,说明存在连接未正常关闭或被强制中断

易错点

  • 只判断一个标志位而忽略搭配条件,把建连应答也算进建连请求
  • 把复位一概归因于服务崩溃,可能只是端口未监听或被策略拒绝
  • 只看标志位不看载荷长度,把保活流量误判为业务数据
  • 用数值写法时记错位定义,结果匹配到完全不同的组合
  • 忽略抓包位置对方向的影响,把响应方向的标志位当成请求方向解读

数据来源与参考

  • Wireshark 显示过滤器参考(tcp.flags)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌