一、MTU和MSS的概念
1.1什么是MTU
MTU:最大传输单元。这是一个数据链路层的概念,在以太网中,指的是刨去以太网帧的帧头(DMAC目的地址MAC48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes,那么剩下承载上层协议的地方也就是数据部分最大就只能有1500Bytes. 这个值我们就把它称之为MTU。数据结构如下:
所以在以太网里,最大MTU值为1500字节,最小MTU值为46字节。
如果是拨号,现在一般都是用的PPPoE,也就是在以太网协议里嵌套了PPP协议,因为PPT协议头部用掉了8个字节,所以数据部分就变成了46-1492字节(因为以太网电气性能决定了整个数据包长度不能大于1518字节),数据结构如下:
因此,MTU在不同的网络协议下,它的值不同。如果内网发送的一个数据包的上层协议数据长度超过了MTU的值,则这个包就必须要拆开来分片才能传输,如果设置了DF=1,则该数据包将不能被传输,直接丢弃。
MTU值存在于每一个网络接口,不在具体数据包中,因此抓包查看数据包无法确定MTU值大小。
MTU不对可能出现的情况有:网页打开不完整、应用无法打开等,此时ping没有问题,telnet测试端口也没有问题。
1.2什么是MSS
MSS:最大分段大小。是TCP协议中的一个概念,UDP协议中不存在MSS一说。
为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(但需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes),所以往往MSS为1460,数据结构如下:
通讯双方在三次握手的SYN和SYN+ACK包中会带有各自的MSS值,根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。抓包可以看到MSS值:
一般来说,MSS的值会小于MTU的值(因为要扣除IP头和TCP头),如果MSS的值大于MTU的值,而发送的数据DF位又被置1,不允许分片,则会导致数据无法正常发送与接收。文章来源:https://www.toymoban.com/news/detail-492510.html
本节小结:
1.MSS是TCP协议的概念,UDP协议没有MSS这一说法。
2.MSS的协商是客户端和服务器在TCP三次握手的前2个包确定下来的,和中间设备的MTU是没有任何关系的。
3.PPPOE拨号环境下,MTU最大是1492,所以我们设备拨号的时候,MTU应该要修改成1492。文章来源地址https://www.toymoban.com/news/detail-492510.html
到了这里,关于MTU和MSS关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!