IP分片在《TCP/IP卷二》中有详解,下面说明一下重组过程:
1)当IP需要分片时,会从原来的分组中把IP首部和IP选项复制到新的分组中,IP首部复制在一个结构中,只复制那些将被复制到每个分片中的选项。
2)设置分片包括MF比特的偏移字段(ip_off)。如果原来分组中已设置了MF比特,则在所有分片中都把MF置位。如果原来分组中没有设置MF比特,则除了最后一个分片外,其他所有分片中的MF都置位。
3)为分片设置长度,以网络字节序存储长度。
4)从原始分组中把数据复制到分片中。调整新创建的分片的mbuf分组首部,使其具有正确的全长。把新分片的接口指针清零,把ip_off转换成网络字节序,计算新分片的检验和。通过m_nextpkt把该分片与前面的分片链接起来。