LUA wireshark dissector - 合并来自2个UDP数据包的数据

我有一个基于 UDP 的固定大小协议(假设为100)。该协议包含一个头部,指示第一个 完整的 子消息位于哪个位置(缓冲区中的位置5)。子消息从位置10开始,大小可能会有所不同。

此外,可能会出现以下情况。数据包包含一些子消息,每个子消息都是单独处理的。然而,其中一个子消息可能会大于整个数据包的长度(假设这个突发长度从位置95开始,其长度为12个字节),因此该子消息将被分成2个数据包,如下图所示 - 第一部分将在 packet x (5个字节),其余在 packet x+1 (7个字节)。 在这种情况下,在消息 x+1 中,第一个子消息位置标识符将是17而不是10。

Protocol structure

无论如何,由于子消息 N 被分割,我的应用程序无法处理整个子消息,直到整个子消息可用,因此我想在 packet x+1 中解析数据包 N(N1 + N2)。

当前,我有一个分析器,可以处理子消息不填满整个缓冲区的数据包(即子消息小于100个字节),或者在 packet x 的情况下,它将仅解析5个字节。在 packet x+1 的情况下,它将从子消息1开始,并跳过 N2。

我需要一些帮助来实现将 N1 与 packet x+1(除头部外)合并,以便可以相应地处理它。我发现我必须使用 ByteArray 来存储 packet x 和 x+1 之间的数据,但却实现不了。 一些带有说明的代码示例将是有价值的。

点赞