首页/网络/抓包与流量分析速查/TCP RST 常见触发场景
TCP 流分析82 条

TCP RST 常见触发场景

RST 的高频来源:端口未监听、连接状态丢失后收到数据、应用主动 abort(SO_LINGER=0)、中间设备超时/策略注入,以及协议栈收到不匹配连接。

RST 的高频来源

RST 表示立即中止连接,它本身是结果而不是原因。常见来源包括:端口没有监听、连接状态丢失后仍然收到数据、应用主动中止连接、中间设备因超时或策略注入重置、以及协议栈收到不属于任何连接的数据。定位的关键是把每个 RST 与它前面的报文成对看。

基本信息

常见场景端口拒绝、传输中止、空闲后状态失同步
抓包过滤tcp.flags.rst == 1
细分写法tcp.flags.rst == 1 && tcp.flags.ack == 0
判断方法把 RST 与前置报文成对分析,孤立看无效
相关字段tcp.analysis.flags 可辅助定位

典型使用场景

  • 连接刚建立就被断开,判断是否为端口或策略问题
  • 传输过程中突然失败,确认是应用中止还是设备注入
  • 长时间空闲后收到重置,核对保活与老化设置
  • 客户端报错「连接被重置」时确认重置来自哪一侧
  • 负载均衡健康检查引发的重置与业务流区分

配套过滤

配套过滤
tcp.flags.rst == 1                              # 全部重置报文
tcp.flags.rst == 1 && tcp.flags.ack == 0        # 直接重置(不回确认)
tcp.flags.rst == 1 && ip.src == 10.0.0.9        # 只看某一侧发出的重置
tcp.stream == N && tcp.flags.rst == 1           # 指定会话中的重置

场景速查

出现位置含义后续动作
SYN 后立即出现端口未监听或策略拒绝核对监听状态与访问控制
数据传输中出现连接被中止查应用关闭逻辑与中间设备
空闲一段时间后出现状态失同步核对老化时间与保活设置
不对应任何连接协议栈无法匹配检查是否存在半开连接
RST 是结果而非原因,先找出「谁先破坏了连接状态」的那一端,再谈处理方案。
负载均衡健康检查失败也会产生重置记录,与业务流区分开再统计。

补充要点

  • 统计重置数量时按方向分组,能区分是服务端拒绝还是客户端中止
  • 把重置时刻与发布、重启等运维动作对齐,常能立刻找到原因
  • 应用主动中止连接属于正常设计时,不应把它统计成异常
  • 把重置与前置报文一起导出,是给他人说明问题最有效的方式
对同一目标的大量连接集中出现重置,通常指向端口关闭或策略变更,而不是网络链路问题。

易错点

  • 把 RST 当作网络故障处理:它更多反映连接状态或应用行为
  • 孤立分析单个重置报文,缺少前置上下文导致结论不可靠
  • 把应用主动关闭造成的重置计入异常统计,虚高故障数量

数据来源与参考

  • RFC 9293(RST)
  • Linux ip-sysctl(tcp_abort_on_overflow 等)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌