数据报重组的依据是:标识,标志,片偏移量三个字段
标识:这个针对的是对传输层向网络层提供的数据报进行打标。在发送端,每一个被发送的数据报都有一个唯一(近似唯一)的数据报标识,这个标志用整型数据表示,他的产生原理就是每发送一个数据报数据值加一,当这个值增加到最大时,从最小重新开始,不要纠结数据报标识是否重复,因为这个整型数据的数值范围足以在到达第二轮的时候前一轮被标识的数据报完成发送和接收,因此可以看作没有重复。
标志:这个针对的是对数据报被分片以后的分片进行打标,但是分片的唯一标示需要结合片偏移量。标志占三个bit,第一个为0保留,第二个1表示不能分片,0表示可分片,第三个1表示不是最后一个分片,0表示最后一个分片
片偏移量:数值为每一个分片的第一个字节相对于被分片数据报的第一个字节的位置差,比如第一个分片的片偏移量就是0。
数据报在网络层被分片以后,每一个分片单独传输,分片的重组位置为宿主机,换句话说就是每一个分片在网络层是绝对独立的,独立选路。
重组的时候先是为每一个分组开辟内存空间,然后根据片偏移量依次将接收到的数据分片存放在相应的偏移位置,当接收完一个完整的数据报的时候首尾之间的内存肯定会被填满。
分片机制有一定的缺陷:分片越多,分片丢失的机率就越大,对于一个数据报,一旦一个分片丢失,那么整个数据报就要重传;每一个数据报都要复制报头(只复制ip包头),这在一定程度上增加了带宽消耗。