TCP/IP协议-最大传输单元MTU和最大分段大小MSS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuzhixiong_521/article/details/86091145

一 概述

MTU和MSS

MTU和MSS都是TCP/IP协议中的重要概念。其中

  • MTU解释为网络最大传输单元,它的大小由硬件决定,例如以太网的MTU为1500字节。
  • MSS解释为网络传输数据最大值,实际指的是TCP数据部分的传输最大值。

MTU与MSS的关系为

MTU = MSS + TCP首部 + IP首部

分片

当IP数据包在相应链路层传输前,若检测到IP数据包的长度大于MTU的值,则IP数据包在IP层进行分片,使得每个数据包的长度小于MTU,且每个数据包到达目的地之前不会被重组。

二 多网下的MTU

假如,一个以太网上的主机需要与另外一个令牌环网上的主机传输数据,以太网的MSS=1500-20(TCP包首部长度)-20(IP包首部长度)=1460,令牌环网的MSS=4096,那么,最终的MSS是更小的MSS,即1460,取最小值。

三 MSS值的选择

MSS是TCP的一个选项,表示的是TCP报文中数据部分的最大长度(注意只是数据部分,不包括首部)。在TCP三次握手建立连接的时候,双方通信获取MSS,如果一方不接收另一方的MSS,则取默认值536字节。

MSS太大或者太小都不合适,太小的话每一个报文数据都需要消耗20KB的TCP首部和20KB的IP首部,传输效率低;太大的话,那么在IP传输过程中需要分片传输,那么接收方就需要对接收到的IP包进行重组,资源和时间开销比较大。所以选择合理的MSS值比较重要,以太网的MSS值最大可达到1460字节。

四 TCP与UDP

若数据长度超过MSS长度,则TCP协议就会分片。而不是等到IP层再分片。
若数据长度超过MSS长度,UDP协议不会分片,而是将全力交给IP层,若IP层判断报文长度超过MTU,则进行分片。

TCP分片过程中,每一个报文都包含TCP首部。IP分片过程中,只有第一个分片包含TCP首部,其余只包含IP首部。

猜你喜欢

转载自blog.csdn.net/liuzhixiong_521/article/details/86091145