先来看看IP V4头的格式,Identification字段是一个16位的短整型,查看RFC描述
This field is an identification field and is primarily used for uniquely identifying fragments of an original IP datagram;我暂且把它理解一个唯一的分片的分组ID
在我的程序里我用一个65536大小的FragQueue数组来记录所有分组队列;每个数组存储一个双链表,每个数组对应一个time_t记录当前时间以便于检查分组队列timeout,当X ID 的IP fragement packet到来时,找到相应的链表队列,确认flow(五元组)信息是否一致,然后比较offset找到合适的位置插入链表中,等X ID的IP分片凑齐之后,就取出来重组;同时还有另外一个线程做超时检测的机制