前言windows
在学习TCP分段与IP分片时、心有所感想把以前学习过的知识串联起来。网络
数据分段发生在传输层、分片发生在网络层。ide
相关术语:学习
MTU(Maximum Transmission Unit,MTU),最大传输单元大数据
以太网和802.3对数据帧的长度都有一个限制,其最大 值分别是1500和1492个字节。链路层的这个特性称做MTU。spa
MSS(Maxitum Segment Size)最大分段大小的缩写,是TCP协议里面的一个概念blog
MSS就是TCP数据包每次可以传输的最大数据分段。为了达到最佳的传输效能TCP协议在创建链接的时候一般要协商双方的MSS值。
get
1.分段的前提(TCP)it
传输屋接收到上层传过来的数据若是 大于 > 1500-20-20(字节)
io
2.分片的前提(IP)
若是IP层有一个数据要发送,且数据的长度比链路层的 MTU还大,那么IP层就要进行分片(fragmentation),把数据报分红若
干片,这样每个分片都小于MTU。
咱们知道一般:
TCP/IP 报头 一般状况下为20字节.而ICMP 报头为8字节.
请参考以下截图:
IP报头
TCP报头
ICMP 报头
实例演示:
实现环境:windows 7
咱们尝试验证一下 ICMP报文最大=1472字节=1500-20字节(IP报头)-8字节(ICMP报头),是否正确.
命令:ping
图-1
图-2
从上面2张图的结果,能够得出一个结果:
ICMP报文最大=1472字节=1500-20字节(IP报头)-8字节(ICMP报头),是否正确的!
而从另外一个角度来看若是咱们设定的 -l # 时,当中#>1472是没有意义的,由于数据
到达网络层后将被进行自动分片、如图-3所示,此处再也不使用-f参数。
图-3