网络层的数据包重组 libpcap

Packet reassembly at Network Layer libpcap

环境

据我了解,Network layer负责重组碎片化的数据报,然后将重组后的数据提供给上层Transport layer

我已经使用 libpcap 收集了数据包跟踪,我想自己在第 3 层重新组装碎片数据包。

This link 说我需要片段标志、片段偏移量、标识号和缓冲区值来重组段。

问题

在第一个段到达时如何知道要初始化的缓冲区大小应该是多少,以便完全重组数据报。

谢谢。

IP header 只给你片段的大小。所以你需要预留一个最大可能的 IP 数据包大小的缓冲区,即 65535 字节。只有得到最后一个分片,才能确定完整数据包的长度。