当前位置:   article > 正文

【计算机网络】MTU和MSS_mtu mss

mtu mss

什么是MTU(Maximum Transmission Unit)?

最大传输单元MTU,是指网络能够传输的最大数据包大小,以字节为单位。

MTU是数据链路层的概念,指数据链路层对帧的数据部分长度的限制,即限制三层IP数据报的最大长度。

实际上,不同的厂商,甚至同一厂商的不同产品型号对MTU的定义也不尽相同

为什么需要MTU?

网络中通常以数据包为单位进行信息传递,一次传送多大的包合适、多大的包最高效

  1. 包大小设置的很大,意味着报文中的有效数据也更多,通信效率更高,但传送一个数据包的延迟也越大,数据包中bit位发生错误的概率也越大。并且如果这个报文丢掉了,重传的代价也很大。
  2. 包大小设置的过小,则意味传输相同的数据量,设备需要处理更多的报文,这样会极大的考验设备的线速转发能力。

为什么以太网MTU通常被设置为1500?

在这里插入图片描述
早期以太网使用共享链路的工作方式,为了保证CSMA/CD(载波多路复用/冲突检测)机制

  • 规定了以太帧长度最小为64字节,最大为1518字节。
  1. 最小64字节是为了保证最极端的冲突能被检测到,64字节是能被检测到的最小值;
  2. 最大不超过1518字节是为了防止过长的帧传输时间过长而占用共享链路太长时间导致其他业务阻塞。

以太网最大的数据帧是1518字节,这样刨去帧头14字节和帧尾CRC校验部分4字节,那么剩下承载上层IP报文的地方最大就只有1500字节,这个值就是以太网的默认MTU值。这个MTU就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片,如果单个IP报文长度大于MTU,则会在发送出接口前被分片,被切割为小于或等于MTU长度的IP包。

超过MTU的报文如何进行分片?

第一片报文,IP报文头固定20字节,数据载荷可以封装1480字节(MTU值1500字节-IP报文头20字节,数据载荷长度须是8的倍数);

第二片报文,复制第一片的IP头,IP报文头固定20字节,数据载荷为剩余的520字节(总数据载荷长度2000字节减去第一片中已封装的1480字节)。如果最后一片报文的长度不足46字节,会自动填充至46字节。

所有分片报文在发送至目的主机后,在目的主机进行分片重组,恢复为原报文。在进行重组时,通过IP标志位中的MF用来分辨这是不是最后一个分片,片偏移用来分辨这个分片相对原数据报的位置。通过这几个字段,可以准确的完成数据报的重组操作。请添加图片描述

TCP MSS与MTU

TCP MSS(Maximum Segment Size)是指TCP协议所允许的从对方收到的最大报文长度,即TCP数据包每次能够传输的最大数据分段,只包含TCP Payload,不包含TCP Header和TCP Option。
为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往根据MTU值来计算(需要减去IP包头20字节和TCP包头20字节),所以通常MSS为1460=1500(MTU)- 20(IP Header) -20 (TCP Header)。
请添加图片描述
参考:
https://info.support.huawei.com/info-finder/encyclopedia/zh/MTU.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/483086
推荐阅读
相关标签
  

闽ICP备14008679号