MTU和MSS关系

一、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,不允许分片,则会导致数据无法正常发送与接收。

本节小结:
1.MSS是TCP协议的概念,UDP协议没有MSS这一说法。
2.MSS的协商是客户端和服务器在TCP三次握手的前2个包确定下来的,和中间设备的MTU是没有任何关系的。
3.PPPOE拨号环境下,MTU最大是1492,所以我们设备拨号的时候,MTU应该要修改成1492。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值