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