有一数据报长1300B,传送该数据报网络的MTU为620B,试写出每个分段的格式?
---------------------------------------------------------------
数据报分为三段,第一、二段的大小等于MTU,第三段就是剩余的长度。
过程是先将第一段传送,因为第二段仍然大于MTU,重复分段过程,
然后发送第三段。
下面我们给出一个定义:
FO - 段偏移
IHL - Internet包头长度
DF - 不分段标记
MF - 多段标记
TL - 总长度
OFO - 原段偏移
OIHL - 原Internet包头长度
OMF - 原多段标记
OTL - 原总长度
NFB - 段数
MTU - 最大传输单元
过程:
IF TL <= MTU THEN 将此数据报提交给下一处理阶段
ELSE IF DF = 1 THEN 抛弃数据报
ELSE 产生第一段:
(1) 复制源internet包头;
(2) OIHL <- IHL;OTL <- TL;OFO <- FO;OMF <- MF;
(3) NFB <- (MTU-IHL*4)/8;
(4) 附加第一个NFB*8个数据字节;
(5) 校正包头:MF <- 1;TL <- (IHL4)+(NFB8);重新计算校验码;
(6) 提交数据段到下一个数据报处理阶段;
产生第二个段:
(7) 有选择地复制internet头;
(8) 附加剩余数据;
(9) 校正包头:IHL <- (((OIHL*4)-(未复制的选项长度))+3)/4;
TL <- OTL - NFB*8 - (OIHL-IHL)*4);
FO <- OFO + NFB;MF <- OMF;重新计算校验码;
(10) 将此段提交分段检测;结束。
除了第三段外,前两段都达到了MTU的大小。