首页/网络/抓包与流量分析速查/中间盒改写 TCP 行为的识别
TCP 流分析82 条

中间盒改写 TCP 行为的识别

负载均衡、代理与安全设备可能改写窗口、剥离选项或维持独立会话:表现为两端抓包数据不一致(选项/序列/窗口对不上),定位需比对两侧。

中间盒改写是什么

路径上的负载均衡、代理、防火墙与安全设备可能改写 TCP 行为:剥离或重写握手选项(MSS、窗口缩放、SACK)、重算通告窗口、拆分或合并报文段,代理型设备还会终止一端连接再向另一侧重建。结果就是两端抓包对不上:同一条业务会话在客户端侧与服务器侧看到的选项、窗口甚至五元组都不一致。定位这类问题必须双侧对照,只拿到一侧数据时不要急于把差异归因成丢包,先假设路径上存在改写点。

基本信息

常见改写选项剥离、窗口改写、ACK 节奏改变、连接重建
识别方法两端对同一业务会话抓包逐字段比对
代理型特征两侧是两条独立连接,五元组与流编号不同
关注字段tcp.options.*、tcp.window_size_value、tcp.stream
旁证线索TTL 变化、RTT 分布差异

典型使用场景

  • 排查选项消失:客户端发出了窗口缩放与 SACK,服务端侧却看不到对应选项
  • 证明代理存在:用五元组与握手参数差异说明中间有会话终止设备
  • 解释吞吐偏低:窗口被改写后实际可用窗口小于按链路计算的预期
  • 分析确认节奏异常:确认是否由设备缓冲与延迟确认造成
  • 变更评估:设备版本升级前后对比会话参数是否发生变化

双侧对照步骤

双侧对照步骤
# 1) 两侧各自定位业务会话对应的流编号(可能不同)
# 2) 对比 SYN 的选项集合:MSS、窗口缩放、SACK 许可
# 3) 对比相同数据段的窗口值是否一致
# 4) 看重传是否只在单侧出现,排除设备缓冲导致的假重传
tcp.options.mss_val   # 比对 MSS 是否被改写

双侧对照清单

对照项一致说明不一致说明
SYN 选项集合路径未做选项改写存在剥离或改写设备
数据段的通告窗口窗口是端到端原值中间设备重算过窗口
重传分布链路整体丢包集中在单侧,可能是设备或本机问题
五元组与流编号直连或透明转发存在代理型会话终止设备
会话型设备两侧根本不是同一条 TCP 连接,序号与确认号不具备可比性:应当分别在两侧各自找出对应业务流,再比较参数而不是逐包对齐。
只有一侧抓包时,RTT 与 TTL 的变化可以做初步判断,但结论必须标注为推测:TTL 跨网段本来就会变化,不能单独作为证据。

易错点

  • 确认中间设备存在之前,不要把单侧抓包里的差异说成网络丢包,方向判断错了会把整个排查带偏
  • 会话型设备必须从设备两侧同时抓包才能看到两条连接,只抓一侧永远看不出对应关系
  • 窗口被中间设备改写后,按原始窗口估算的吞吐预期会失效,评估带宽前先确认报文里的窗口是否仍为端侧原值
  • 把 TTL 变化直接当作设备改写或路径跳数的证据并不可靠,不同初始 TTL 与跨网段都会改变它

数据来源与参考

  • RFC 3234(中间盒问题)
  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌