首页/网络/抓包与流量分析速查/TCP 在途字节与发送窗口
TCP 流分析82 条

TCP 在途字节与发送窗口

发送方"已发未确认"的数据量(FlightSize)不得超过拥塞窗口;抓包中通过发送流与确认流的推进差可近似观察在途量与"发不动"时刻。

在途字节与发送窗口

在途数据量指的是发送方已经发出但还没被确认的字节数,它不能超过拥塞窗口与接收窗口中的较小值。抓包时通过发送流与确认流的推进差,可以近似观察在途量与「发不动」的时刻,也就是发送方被窗口或拥塞控制卡住的瞬间。

基本信息

适用平台TCP 协议行为,配合 Linux 的 ss 查看内核数值
约束关系在途数据量不超过拥塞窗口与接收窗口的较小者
抓包观察时序图上两条线的间距即近似在途数据量
内核查看ss -ti 直接给出拥塞窗口与接收窗口

典型使用场景

  • 理解发送受限来源:区分拥塞窗口限制与接收窗口限制
  • 判断是否发满:间距达到上限后发送暂停,说明受限
  • 排查吞吐不足:间距小且抖动,多与丢包或拥塞控制相关
  • 与内核指标印证:用实时数值校验抓包推断
  • 评估窗口调优效果:调整前后对比在途量曲线

观察方式

观察方式
# 时序图判读
# 两条线之间的间距约等于在途数据量
# 间距达到上限后发送暂停,说明受到限制
ss -ti | grep -E 'cwnd|rwnd'   # 直接读取内核侧的窗口数值

受限来源判读

现象受限来源处理方向
间距到上限后停顿拥塞窗口或接收窗口对照内核数值确认是哪一种
间距小且抖动明显丢包与拥塞控制看重传标记与丢包率
间距始终很小请求响应模型本身很小属于正常,不是故障
接收窗口长期偏小接收端缓冲配置评估是否加大缓冲
抓包只能间接估算在途量,精确数值要从内核工具取。把抓包推断与内核的实时数值放在一起看,结论才站得住。
在途量小不一定有问题。小请求响应模型下本来就发不满窗口,此时的在途量由业务形态决定,不是链路能力不足。
拥塞窗口与接收窗口谁更小,决定了当前瓶颈在哪一侧。看到发送停顿之后,先判断属于哪一种限制,再决定查网络还是查接收端。

易错点

  • 抓包只能间接估算在途量,精确数值需内核工具配合
  • 在途量小不一定是问题:小请求响应模型下本来就发不满
  • 把拥塞窗口与接收窗口混为一谈,会找错优化方向
  • 只在发送端抓包看不到接收端缓冲配置,判断接收窗口受限需要两端对照

数据来源与参考

  • RFC 5681(FlightSize)
  • Linux ss 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌