1.MTU是一个二层的概念,即最大传输单元(Maximum Transmission Unit,MTU);以太网最大的mtu就是1500(它是不包含二层头部的,加上头部应该为1518 bytes,2bit的以太网类型+6bit的DMAC+6bit的SMAC+4bit的FCS),每个以太网帧都有最小的大小64bytes,最大不能超过1518bytes
注:
1)小于64Bytes的数据帧一般是由于以太网冲突产生的 “碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518Bytes的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生
2)以太网EthernetII最大的数据帧是1518Bytes,是指包含以太网帧的帧头(DMAC目的MAC地址 48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes (这个部份有时候大家也把它叫做FCS)
2.IP MTU是一个三层概念,它包含了三层头部及所有载荷,根据下层为上层服务的,上层基于下层才能做进一步的扩展的原则,尽管IP MTU的变化范围很大(68-65535),但也不得不照顾以太网MTU的限制,说白了就是ip对以太网的妥协。
网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理
3.MSS是TCP里面的一个概念,它是TCP数据包每次能够传输的最大数据分段,不包含包头部分,它与IP MTU满足如下关系:
IP MTU=MSS+20bytes(IP包头)+20bytes(TCP包头)
当然,如果传输的时候还承载有其他协议,还要加些包头在前面。
注:为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包报头的大小20Bytes和TCP数据段的包头20Bytes),所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
4.简言之,mtu就是总的最后发出去的报文大小,MSS就是需要发出去的数据大小,比如PPPoE,就是在以太网上承载PPP协议(点到点连接协议),它包括6bytes的PPPoE头部和2bytes的PPP协议ID号,此时,由于以太网的MTU值为1500,所以上层PPP负载数据不能超过1492字节,也就是相当于在PPPOE环境下的MTU是1492字节,MSS是1452字节(1492字节-20-20)。
重点:
MTU 不包含 帧头(18byte) 指帧头后面的所有负载,与ip mtu的区别就是在帧头和ip头之间可能会有其他协议头(比如GRE头、pppoe头、MPLS标签,这些协议头都是在帧头后ip头前)
ip MTU 包含 ip头(20byte) 指ip头本身及后面的所有负载,一个普通的以太网数据包mtu=ip mut,只有封装了其他协议头部时mtu=ip mut+其他协议头部+负载(tcp头+tcp-mss)
TCP-MSS 不包含 tcp头(20byte) 指tcp头后面的所有负载
IP MTU=tcp-MSS+20bytes(IP包头)+20bytes(TCP包头)
文章出自:https://blog.csdn.net/alone_map/article/details/79736724