TCP 段与报文重组
TCP 把应用数据切分成报文段发送,抓包看到的是一段一段的报文,而 Wireshark 会尝试把它们重新拼成完整的应用层消息供上层解析。重组开关在 TCP 协议首选项里,关闭之后应用层解析可能直接失败,长响应体也会显示为零散的片段。
基本信息
| 适用平台 | Wireshark(TCP 协议首选项中的重组开关) |
|---|---|
| 相关设置 | 允许下层协议重组,控制按流拼接的行为 |
| 显示表现 | 重组成功的报文会带上重组标记 |
| 物理事实 | 文件里保存的仍然是原始报文段 |
典型使用场景
- 看懂长响应:大响应会拆成多个段,重组后才能看到完整内容
- 排查解析失败:应用层字段缺失时先确认重组是否开启
- 分析分段行为:关注段大小是否接近上限
- 控制内存占用:超长会话的重组会消耗大量内存
- 丢包场景判断:缺段会导致重组不完整,需先解决底层丢包
观察与设置
观察与设置
# 长响应会显示为多个报文段
# 上层的响应体会带重组标记
# 关闭重组后应用层解析可能失败
# 文件里保存的仍是原始报文段常见现象
| 现象 | 含义 | 处理方向 |
|---|---|---|
| 应用层字段缺失 | 重组未开启或不完整 | 确认重组设置与丢包情况 |
| 提示无法完整重组 | 超出内存限制或存在缺段 | 缩小分析范围或先解决丢包 |
| 响应体显示为多个片段 | 正常的分段传输 | 开启重组后看完整内容 |
| 重组消耗大量内存 | 超长会话或高速抓包 | 按会话或时间切片分析 |
重组只作用于解析视图,抓包文件里保存的仍然是原始的报文段。把文件交给别人时,对方看到的内容取决于他自己的重组设置。
丢包会导致重组不完整,进而让上层的解析大面积失败。遇到大量应用层字段缺失时,先看底层的丢包与重传,而不是先怀疑解析设置。
高速抓包加上超长会话会让重组占用大量内存,必要时应先按会话或时间切片,只加载需要分析的那一部分。