MTU对IP协议、UDP协议、TCP协议的影响

认识MTU

    MTU(最大传输单元)是指一种通讯协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口)。

     以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。

     注:如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片

MTU对IP协议的影响

   由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。将较大的IP包分成多个小包,并给每个小包打上标签,到达对端时再将这些小包按顺序重组,拼装到一起返回给传输层。一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据。

   在这里我们需要注意的是,1. IP包会进行分包  2. IP包丢失后,不会负责重新传输数据。

   这里提到ICMP协议,是一个网络层协议。由于IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因,1. ICMP正式确认IP包是否到达目标地址   2. 通知在发送过程中IP包被丢弃的原因。

MTU对UDP协议的影响

   由于UDP数据包不会自已进行分片,一旦UDP携带的数据超过1472(1500-20(IP首部)-8(UDP首部)),那么就会 在网络层分成多个IP数据报。

  注:这多个IP数据报中任意一个丢失,都会引起接收端网络层重组失败。即如果UDP数据包在网络层被分片,整个数据被丢失的概率就大大增加了。

MTU对UDP协议的影响

    MSS(最大分段大小)

    MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet上标准的MTU(最小的MTU,链路层网络为x2.5时)为576,那么如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。

    到了这里有一个问题自然就明了了,TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。

总结:UDP不会分段,就由IP来分。TCP会分段,当然就不用IP来分了!

参考:https://www.cnblogs.com/yanchengwang/p/5919676.html

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值