我怎么知道当前的TCP段是否是大PDU的一部分

问题描述 投票:0回答:1

我正在使用libpcap编写一个小型应用程序,在此我解析/分析基于TCP的应用程序。我遇到了一种情况,应用程序尝试发送大量数据,例如64K,TCP层将其分割为多个较小的段。

现在,我的问题是-我如何真正分辨从pcap读取的数据包的TCP有效负载实际上是较大有效负载的一部分。因此,为了访问原始的大有效负载,需要重新组合多个段。

TCP头具有序列字段,但我不完全了解它如何回答我的问题。

此外,IP标头具有total_length字段,但与TCP分段无关,它指示current数据包的IP有效负载大小。

希望得到一些提示。谢谢。

networking tcp pcap
1个回答
0
投票

TCP无法在这里为您提供帮助,因为它既不知道也不在乎什么是PDU。您需要实现定义“大PDU”的协议。例如,如果这是HTTP over TCP,则实现HTTP协议将告诉您该段是否是大型PDU的一部分。

因为我的问题是-我怎么知道我有一小段必须重新组装成大包。

这就是消息协议的目的。例如,如果消息协议说PDU是“一系列不包含以换行符结尾的换行符的字符”,则如果您没有换行符,则知道它是较大PDU的一部分。

PDU的概念适用于消息协议,因此,如果您在谈论PDU,则必须具有消息协议。消息协议将告诉您何时具有完整的PDU。这就是它的目的。

© www.soinside.com 2019 - 2024. All rights reserved.