在通信网络中,MTU和MSS都是决定数据包分片的,它们有什么区别?

陆仴

“我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”

如题,MTU和MSS都是决定数据包分片的,两者的区别是什么?

哟哟认为两者最重要的区别是针对数据包分片的层次不一样。一种是由数据链路层传输至网络层决定的数据包大小,另一种是由传输层至网络层决定的数据包大小。

下面哟哟来详细介绍一下两种分片的方式及区别:

MTU(Maximum Transmit Unit,最大传输单元)主要是指数据报文从数据链路层提供到网络层最大传输数据的大小;

MTU值的设定主要是链路层对于网络层数据包大小的约束,假设MTU值设定为1500Byte,那么当数据包大小大于1500字节时就会对其进行分片操作,每个分片的IP Header ID相同,用于在接收端进行重组。

MSS(Maximum Segment Size,最大报文段长度)是用于在TCP建立连接时,双方协商通信的报文段最大长度;

MSS值其实就是指TCP/IP协议栈所能允许的最大数据包,是在TCP建立连接时双方会协商MSS值的大小。举个实例来说明两者的区别:

首先要确认MTU和MSS值的关系:MTU=MSS+IP Header+TCP Header

假设主机A与主机B通信,主机A的MTU值为1500字节,主机B的MTU值为1492字节,那么可以根据公式算出主机A发送主机B的MSS值为1460字节,主机B发送主机A的MSS值为1452字节;

当两端建立TCP连接,那么主机A发送TCP SYN信息时会告知对端允许发送的最大MSS值(假设为1460字节)。同样,主机B也会告知主机A允许发送的最大MSS值(假设为1452字节)。显然,主机B的MSS值要比主机A的MSS值要小,为保证正常通信,要取两端较小的一方MSS值,即1452字节;

从上通信可以看出通信双方最终的MSS值=较小MTU-IP Header-TCP Header


分享到:


相關文章: