对 http 响应的 tcp 握手。哪个帧实际上是有效载荷?

网络工程 通讯协议 网络 线鲨
2021-07-25 08:37:39

我正在捕获/试图理解wireshark中的http响应捕获。

在此处输入图片说明

在数据包捕获行 78,79 上,我在捕获的有效负载中看到 HTTP 标头(无 78)和正文(无 79)。

在数据包捕获第 80 行,我看到了 78 和 79 的整个 HTTP 捕获。

但这意味着什么?
第 78 行和第 79 行是 HTTP 负载的传输。第 80 行再次是 HTTP 负载

我们传输 x2 次???或者第 80 行是wireshark 通过捕获 78 和 79 组成的?

===

附加,另一个例子,帧 37896 是由 37894 和 37895 组合而成的。它没有有效载荷和 0 字节。

那么这个帧 37896 真的被传输了吗?或者它只是由wireshark组装以澄清目的?

在此处输入图片说明

问候,

小白

3个回答

看起来这是 Wireshark 重新组装了一个在多个 TCP 段之间拆分的 HTTP PDU。PDU 被分成 78、79 和 80 段。Wireshark 将 PDU 重新组装为帧 80。

我在 Wireshark 中进行了类似的捕获。

在此处输入图片说明

HTTP PDU 分为三个 TCP 段:帧 22743、22744 和 22746。Wireshark 按原样显示前两个段,但对于第三段,HTTP PDU 重新组装为帧 22746。帧 22746 是原始帧的帧,但 TCP 有效负载(HTTP PDU)是从所有三个段重建的 PDU。

如果您查看段 22743 的详细信息:

在此处输入图片说明

它表明 PDU 被重新组装为帧 22746 的一部分。帧 22744 的详细信息也显示相同:

在此处输入图片说明

现在查看帧 22746 的详细信息:

在此处输入图片说明

它显示了帧 22746 是由帧 22743、22744 和原始帧 22746 的内容重组而成的。它还显示了这些段中的每一个的长度和重构段的总长度。以太网/IP/TCP 标头是帧 22746 的标头,但 TCP 有效载荷是完整重建的 HTTP PDU

第 78-80 行似乎是单个碎片数据包的帧(注意点)。从大小上看,MTU有问题,几百字节不正常。

HTTP 负载包含在 TCP 段中,而 TCP 段又包含在 IP 数据包中,而 IP 数据包又可以分成多个帧。您只显示每个帧的最高层,因此第一个片段仅显示为 TCP,最后一个片段显示为 HTTP。

哪个帧实际上是有效载荷?

全部是。有效载荷被分发到片段。

我们知道数据包 77、78 和 79 是同一个套接字的一部分,因为我们看到了它们的端口号。对于 76 和 80,我们不能这么说。我看到这种情况一直发生,当您不过滤客户端端口而只过滤两个 IP 时。此外,77 中的 Ack 只有 19,这将是一个非常小的 get 请求,而 500 字节将是一个非常大的 304 响应。如果它是某种重新组装(事实并非如此),则没有理由增加增量时间。这是不好的过滤。