前言

在学习TCP分段与IP分片时、心有所感想把之前学习过的知识串联起来。

数据分段发生在传输层、分片发生在网络层。

相关术语:

MTU(Maximum Transmission Unit,MTU),最大传输单元

     以太网和802.3对数据帧的长度都有一个限制,其最大 值分别是1500和1492个字节。链路层的这个特性称作MTU。

MSS(Maxitum Segment Size)最大分段大小的缩写,是TCP协议里面的一个概念

    MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值。



1.分段的前提(TCP)

    传输屋接收到上层传过来的数据如果 大于 > 1500-20-20(字节) 

2.分片的前提(IP)

    如果IP层有一个数据要发送,且数据的长度比链路层的 MTU还大,那么IP层就要进行分片(fragmentation),把数据报分成若

    干片,这样每一个分片都小于MTU。


我们知道通常:

   TCP/IP 报头 通常情况下为20字节.而ICMP 报头为8字节.

    请参考如下截图:

    IP报头                                                         

   

 wKiom1j3B6aj9l6-AADntaoNDeo634.png

  

  TCP报头                                                               

   wKioL1j3FXyCBaoKAADH-x7QRZo423.png


  ICMP 报头                                                            


  wKiom1j3DtigiFzTAACLMATkBPw129.png



实例演示:

 实现环境:windows 7

 我们尝试验证一下 ICMP报文最大=1472字节=1500-20字节(IP报头)-8字节(ICMP报头),是否正确.

 

 命令:ping

 wKioL1j3D2vykxzcAABqHOAG7UQ286.png


 图-1

 wKioL1j3EQqjeLRAAABiPh_8jf0457.png


 图-2

 wKioL1j3EZqiZy9lAAA6KrHt8Mw937.png


  从上面2张图的结果,可以得出一个结果:

 ICMP报文最大=1472字节=1500-20字节(IP报头)-8字节(ICMP报头),是否正确的!

 而从另一个角度来看如果我们设定的 -l # 时,当中#>1472是没有意义的,因为数据

 到达网络层后将被进行自动分片、如图-3所示,此处不再使用-f参数。

 

 图-3

 wKiom1j3E0OyCE6hAABURIXvQc0682.png