天天看点

TCP/IP/ICMP 学习实践

前言

在学习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报头                                                         

TCP/IP/ICMP 学习实践

  TCP报头                                                               

TCP/IP/ICMP 学习实践

  ICMP 报头                                                            

TCP/IP/ICMP 学习实践

实例演示:

 实现环境:windows 7

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

 命令:ping

TCP/IP/ICMP 学习实践

 图-1

TCP/IP/ICMP 学习实践

 图-2

TCP/IP/ICMP 学习实践

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

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

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

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

 图-3

TCP/IP/ICMP 学习实践

继续阅读