一、MTU简介
MTU的产生:以太网最初对报文长度没有限制,网络层最大可以接收65535个字节,但是以太网对于长报文无法可靠地传输,而且丢失后重传也会占用大量的网络资源,而将报文限制在一定的长度,以太网可以将报文大概率传输到目的地,于是就有了MTU。
MTU定义:Maximum Transmission Unit,即最大传输单元,以太网的数据链路层对网络层数据包的长度会有一个限制,其最大值默认是1500字节,链路层的这个特性称为MTU,由硬件网卡设置,是 数据链路层对网络层 的硬性限制。
这个地方可以稍微记一下,题主曾经面试的时候,有被问过MTU是在TCP/IP那一层做的限制?
答:数据链路层,在硬件网卡上设置
MTU表示网络层必须将发给网卡API的包 <= 1500byte,否则调用失败, 这个1500字节数据长度是针对网络层的,不包含链路层的头部和尾部。
简单理解:MTU其实就是在每一个节点的管控值,只要是大于这个值的数据帧,要么选择分片,要么直接丢弃。就像红绿灯的时间不能设置过长和过短一样。
每个节点都有一个MTU值,正常传输的情况如下:
当发送一个MTU=1700的包时,如果此时的IP包DF=1(表示不可以分片),则这个1700的包会直接被丢弃。
那么问题来了?
二、为什么MTU会出现大于1600导致客户业务丢包的情况呢?
CHATGPT给出的答案,以供大家参考学习
MTU(Maximum Transmission Unit)是指在网络通信中,数据链路层可以传输的最大数据包大小。通常情况下,以太网的MTU为1500字节。然而,MTU的值可能会因为以下几个原因而不等于1500:
1. 网络设备限制:某些网络设备(如路由器、交换机)可能会对MTU进行限制,以适应特定的网络环境或协议要求。这些设备可能会将MTU设置为小于或大于1500字节的值。
2. VLAN标签:在虚拟局域网(VLAN)中,数据包可能会被添加额外的VLAN标签头,这会增加数据包的大小。因此,MTU可能会被设置为小于1500字节,以适应VLAN标签的添加。
3. 隧道协议:在使用隧道协议(如IPSec、GRE)进行网络通信时,数据包会被封装在额外的协议头中,这也会增加数据包的大小。因此,MTU可能会被设置为小于1500字节,以适应隧道协议的封装。
4. 网络拥塞:在网络拥塞的情况下,为了减少传输延迟和丢包率,可以降低MTU的值。通过减小数据包的大小,可以提高传输效率和可靠性。
5. 特定应用需求:某些特定的应用程序可能对MTU有特殊的要求,需要设置不同于标准的MTU值。
小小总结下:大家有不同意见,可以在评论区敲出来哦
数据包在网络中传输的路径是:服务端-网络设备-客户端
第一:客户本身的业务,应用程序对MTU有特殊的要求
第二:网络协议如:VLAN、IPsecVPN、GRF等协议给数据包添加额外的数据包头
第三:网络设备节点:路由器、交换机对MTU进行限制,为了让数据包适应特定的网络环境