IP数据报的分片与重组

原文源自:https://blog.csdn.net/holyshit666/article/details/52601024

IP数据报格式:

IP数据报的分片与重组


在IP数据报头中有三个字段与数据报的分片与重组有很大的关系,分别是标识符、标志和片偏移量。

1.其中标志占3位,该字段目前只有后两位有意义。

其中,最低位记为MF(More Fragment),用于把数据报最后一片与前面其它各片区分开来。MF = 1代表片未完,即钙片不是原始数据报的最后一片;MF = 0表示钙片是原始数据报的最后一片。

次低位DF(Don't Fragment),用来控制数据报是否允许分片。DF = 1表示该数据报不允许分片;DF = 0允许分片。

其实,数据报的分片和重组都是由机器自动完成的,因此设置DF位的真正意义在于,程序员可以控制数据报的分片过程,这为程序调试提供了方便和灵活性。

2.标识占16位,用于目的主机将数据报的各个分片重装成原来的数据报。当数据报分片时,该标识字段的值被复制到所有的数据报片的标识字段中。这样,目的主句就可以正确的将标识字段值相同的各数据报分片重装成原来的数据报。

3.片偏移占13位,表示本片在原数据报中的偏移,偏移量以8字节为单位。由于各片数据均按照独立数据报方式传输,因此到达目的站的片序是不定的,目的主机在重装数据报时需要该字段提供偏移量。

例:

有一数据报总长度4820,字节,首部20字节,数据4800字节。某一网络能传送的数据报的最大长度是1420字节,该如何分片?

IP数据报的分片与重组

片偏移以以8字节为单位。

        当需要进行分片时,在每个数据报片的首部存放着该数据报的标识、标志位和片偏移,在进行重组时,标识用来分辨该数据报片的原数据报是哪个,标志位中的MF用来分辨这是不是原数据报的最后一片,片偏移用来分辨这个数据报片相对原数据报的位置。通过这几个字段,可以稳定的完成数据报的分片与重组操作。