TCP/IP协议原理与应用笔记26:网际协议(IP)之 分片(Fragmentation)

1. 分片(Fragmentation)

适应在不同的MTU的物理网上传输.

备注:

MTU:最大传输单元,Maximum Transmission Unit,它是指一种通信协议的某一层上面所能通过最大数据包大小以字节为单位)。

2. 分片操作(Fragmentation Operation)

1仅由路由器执行:转发分组时

2)确实需要时才进行分片:提高传输效率

3)每个分片都要包含IP首部:无连接通信

4)数据报可被多次分片

示例:

分片操作的举例:

 

3. 重组操作(Reassembly

(1)仅由目的主机执行:将数据递交给上层时,针对所有的分片数据,只有目的主机在一定时间内(重组时限)收集到所有分片,就可以分组,如果丢失一个就不能完成分组,目的主机就会丢掉收集到的所有其他分片不会将不完整的分片数据交给上层协议。

  • IP的无连接通信 ---> 各分片的传输路径可不同
  • 有重组时限
  • 若丢失分片,则无法重组IP分组

(2)目的主机能区分和重组不同的原IP报文

  • (源IP地址,标识)

下面可以完整演示一个重组过程如下:

1)首先在主机A中,有1200+20= 1220(字节)IP分组需要转发给目的主机B

2)IP分组通过路由器R1经过Net1,发现Net1的MTU1 = 600+20,所有IP分组经过这里需要分组。

正好分为两组0~600600~1200。第1组片偏移量0/8 = 0,第2组片偏移量为600/8 = 75

 3)上面分组完毕之后,两个分片数据很顺利地到达路由器R2

4)这里,IP分组到达目的主机B,存在两个网络 Net3Net2-Net4,同样的和上面类似,还是需要分组的。

经过Net2-Net4,分片操作:0~400(片偏移量为0),400~600(片偏移量为400/8=50

经过Net3,不需要分片:600~1200(片偏移量为600/8=75

此时到达路由器R3的分片为0~400,400~600这两片,我们同事也发现Net4网络的MTU4为800+20 = 820,此时400 < 800,200 < 800。

所有这里的两个分片0~400,400~600不用再次分组,直接通过Net4将这两个分组转发至路由器R4

5)当两个分片0~400,400~600到达路由器R4的时候,分片600~1200到达目的主机B(这里分片到达顺利不定,这里只是取了一种情况)

此时两个分片0~400,400~600直接通过链路层到达主机B,然后再根据这3个分片的不同片偏移量,从而进行排序重组

原文地址:https://www.cnblogs.com/hebao0514/p/5520440.html