TCP 流分析82 条

TCP 排障检查单

按固定顺序过一遍:连接是否建立 → 谁先发数据 → 确认推进是否正常 → 重传/窗口/乱序标注 → 两侧视角差异 → 应用层证据;避免跳步导致的误判。

TCP 排障检查单

排 TCP 问题最怕跳步:还没确认握手是否完整就去查重传,或者拿单侧抓包给全局下定论。按固定顺序过一遍能避免这类误判——连接是否建立、谁先发数据、确认是否正常推进、有无异常标注、两侧结论是否一致、应用日志能否对上时间线。每一步无论有没有发现,都值得记录。

基本信息

适用平台所有基于抓包的 TCP 排障场景
核心价值用固定顺序避免跳步带来的误判
输出要求每一步的结论都要写下,包括「无异常」
配套手段两端抓包、ss 状态、应用日志

典型使用场景

  • 新问题快速过一遍:用统一顺序保证不漏环节
  • 交接与复核:别人能按同一套顺序复现你的结论
  • 定位归属:把网络侧与应用侧的责任分开
  • 判断证据充分性:明确哪一步还没做、结论还缺什么
  • 沉淀到团队文档:把顺序固化成排障规范

检查单

检查单
# 1) 握手三步是否齐全?失败看 RST 还是无响应
# 2) 数据方向与首字节出现的时间点
# 3) ACK 是否正常推进,有无重复确认堆积
# 4) tcp.analysis 有哪些标注(重传、乱序、窗口)
# 5) 两端抓包的结论是否一致
# 6) 应用日志与抓包时间线能否对齐

常见跳步后果

跳过的步骤典型误判正确做法
未确认握手完整性把建连问题当成数据问题先看 SYN、SYN-ACK、ACK
忽略方向与首字节时间责任被错判到网络侧按时间线分段落归因
未看窗口状态把窗口受限当成丢包检查窗口填充与零窗口
只用单侧抓包把局部现象当成全局事实两端同时取数对照
每个「没有异常」的检查点都要写进报告,它们同样有价值:能证明某个方向已被排除,避免后续重复排查同一件事。
抓包时长必须覆盖完整现象窗口。周期性抖动、定时任务引发的故障往往要抓满一个完整周期才能复现,抓两分钟就收工通常什么都看不到。
两侧同时抓包时先确认时钟。未同步的情况下,可用一次已知往返时延做基准平移,再对比其余时间点,比直接相减可靠得多。

易错点

  • 每个"没有异常"的检查点都要写进报告,它们同样有价值
  • 抓包时长要覆盖完整现象窗口,过短会漏掉周期性问题
  • 从结论倒推证据:先认定「一定是网络问题」再去找支持它的包,很容易漏掉反证
  • 只做单侧抓包就下结论,两端一致才算硬证据

数据来源与参考

  • Wireshark User's Guide
  • RFC 9293
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌