查看服务器的 MTU 配置:服务器
客户端 MTU 配置:网络
经过上图咱们能够观察到, 每一个网卡均可以设置本身的 MTU.3d
以太网Ethernet最大的数据帧是1518字节。以太网帧的帧头14字节和帧尾CRC校验4字节(共占18字节),剩下承载上层协议的地方也就是Data域最大就只剩1500字节. 这个值咱们就把它称之为MTU。cdn
IP层很是关心MTU,由于IP层会根据MTU来决定是否把上层传下来的数据进行分片.blog
你可能会想, 若是我将 MTU 拓大是否是就能够减小分片, 增大网络传输啦?get
理想很丰满, 现实很骨感it
若是过大,就会增长解析拆包的消耗,太大会拥塞。(这个过大指的是一次过大,就要分片分红两次传送) 过小,就会形成传输效率降低。io
你能够这么理解,一条运输公路,车太少,下降运输量。class
过大,就会堵车,形成传输缓慢,太大,堵车了,谁都过不了。效率
咱们看到一共分为四大层, 分别对应了(物理层)、(数据链路层)、(网络层)、(传输层).
因为以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的地址MAC48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(这个部门有时候你们也把它叫作FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes. 这个值咱们就把它称之为MTU。
MSS (Maxitum Transmission Unit) 最大传输单元
这里咱们的 MSS 值为 1448 字节.
MTU是协商制的, 因此对应的 MSS 在 TCP 链接创建时就协商好了, 以最小值为准
MSS就是TCP数据包每次可以传输的最大量, 决定TCP的单包传输量。为了达到最佳的传输效能,TCP协议在创建链接的时候一般要协商双方的MSS值,这个值TCP协议在实现的 时候每每用MTU值代替(须要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)因此每每MSS为1460(如图1中红色方框所示的SYN包中的MSS值)。通信双方会根据双方提供的MSS值的最小值肯定为此次链接的最大MSS值。 MSS为1460是由1500-20(IP头)-20(TCP头)计算出的。 实际场景下,TCP包头中会带有12字节的选项----时间戳。 这样,单个TCP包实际传输的最大量就缩减为1448字节。1448=1500-20(IP头)-32(20字节TCP头和12字节TCP选项时间戳)
简单公式:
(IP头 + TCP头 + 时间戳) + MSS = MTU
本文大部分来源于网络上的零碎知识, 因水平有限可能理解有误, 望指证.