请在此处找到一个小的 pcap 文件来说明我的问题。
我有一个三向 TCP 握手,然后是两个 FIX 登录。(FIX 是一种用于交易的协议。)第一次 FIX 登录(第 4 帧)被 WireShark 很好地解释和解析,但第二次登录(第 6 帧)被解释为TCP segment of a reassembled PDU
.
然而,第 6 帧不是重组 PDU 的 TCP 段。它包含一个完整的 TCP PDU,应该被解释和解析为 FIX 登录。我已经检查过序列号、ACK 号、IP 总长度等都没有问题。
为什么第 6 帧被解释为重组 PDU 的 TCP 段?
让主机编号为 .76 和 .67 有点让人头疼。
Wireshark 将帧 6 称为“重组 PDU 的 TCP 段”,因为您在 10.10.10.67 上的 TCP 实现选择发送不带负载的 ACK(“裸”ACK),而不是包括在帧 6 中发送的负载w/帧 5 中的 ACK。(这是一个依赖于 OS/IP 堆栈的行为。)这反过来会触发 TCP 解析器中的一个行为,将有效载荷从多个 TCP 段移交给 FIX 解析器。无论出于何种原因,FIX 解析器都没有解释第 6 帧。
如果您在 TCP 解析器的选项中关闭“允许子解析器取消分段 TCP 流”选项,您会发现 Wireshark 对此有不同的解释:
这是wireshark 用户列表中关于同一件事的一些讨论。