【计算机网络】网络层 : IP 数据报分片 ( 数据分片机制 | 分片示例 | 三种数据长度单位 )





一、最大传送单元 MTU



最大传送单元 MTU : MTU 是 链路层可封装数据 的上限 ;

MTU 值 : 以太网的 最大传送单元 MTU 是 15001500 字节 ;

分片 : 链路层的数据部分 , 就是 IP 分组 , 该分组的 MTU 是 1500 字节 , 当网络层的 IP 分组超过 1500 字节 , 此时就要进行分片 ;





二、分片机制 ( 标识、标志、片偏移 )



IP 数据报 分片 : 要根据 首部的 标识 , 标志 , 片偏移 进行相应处理 :

【计算机网络】网络层 : IP 数据报分片 ( 数据分片机制 | 分片示例 | 三种数据长度单位 )

标识 : 同一个 IP 数据报 的分片 , 使用相同的标识 ; IP 数据报大小超过 MTU 时 , 将数据报分片 , 分片完成的 IP 数据报分片 , 其标识都是相同的 ;

标志 :33 位组成 , [48,50][ 48 , 50 ] , 只有 22 位有意义 ;

  • 最高位 : 是保留位 , 没有意义 ;
  • 中间位 : DF 位 , Don’t Fragment ; DF = 1 时 , 禁止分片 ; DF = 0 时 , 允许分片 ;
  • 最低位 : MF 位 , More Fragment ; MF = 1 时 , 后面还有分片 ; MF = 0 时 , 本分片就是该分组的最后一个分片 , 后面没有分片 ;
  • 只有 DF = 0 时 , MF 才有意义 ;

片偏移 : 较长的分组的分片 , 中间的某个分片 , 在原来的 IP 分组中的相对位置 ; 单位是 88 字节 ; 也就是说除了最后一个分片 , 每个分片的长度是 88 字节的整数倍 ;





三、分片机制 示例



分片机制 示例 :

  • IP 数据报 : 首部 2020 字节 , 数据部分 38003800 字节 ;

  • 将其进行分片处理 : 每个分片不超过 14201420 字节 ;

  • 标识 : 666666 ;

  • 标志 : DF = 0 , 表示允许分片 ; MF = 0 , 表示后续没有分片 ;

  • 片偏移量 : 00


分片后的结果是 : 分成 三片 ;


第一片 :

  • 分片数据 : 首部 11 ( 2020 字节 ) + 14001400 字节数据部分 ;
  • 标识 : 666666 , 同一个分组的分片 , 标识相同 ;
  • 标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;
  • 片偏移量 : 片偏移量 是 0 , 单位是 88 字节 , 本片偏移量相当于 00 字节 ;

第二片 :

  • 分片数据 : 首部 22 ( 2020 字节 ) + 14001400 字节数据部分 ;
  • 标识 : 666666 , 同一个分组的分片 , 标识相同 ;
  • 标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;
  • 片偏移量 : 片偏移量 是 175 , 单位是 88 字节 , 本片偏移量相当于 14001400 字节 ;

第三片 :

  • 分片数据 : 首部 33 ( 2020 字节 ) + 10001000 字节数据部分 ;
  • 标识 : 666666 , 同一个分组的分片 , 标识相同 ;
  • 标志 : DF = 0 , 允许分片 ; MF = 0 , 后续没有分片 ;
  • 片偏移量 : 片偏移量 是 350 , 单位是 88 字节 , 本片偏移量相当于 28002800 字节 ;

片偏移量是从数据部分开始计数 , 数据部分的开始位置是 00 字节 , 其单位是 88 字节 , 片偏移量 11 代表 88 字节 ;





四、IP 数据报首部中的相关数据长度单位



IP 数据报首部中的相关数据长度单位 : 速记 : 一种八片的首饰

  • 总长度单位 : 11 字节 ;
  • 片偏移单位 : 88 字节 ;
  • 首部长度单位 : 44 字节 ;