① 計算機網路那些事之 MTU 篇
大家好,我是咸魚,今天我們將探討計算機網路中的一個重要概念——MTU(Maximum Transmission Unit,最大傳輸單元)。
MTU是指數據鏈路層允許傳輸的最大數據幀大小,以位元組為單位。以 CentOS 7 為例,通過ifconfig命令可以查看其MTU值。MTU的設定涉及到數據傳輸效率和網路延遲的問題。
數據在數據鏈路層以數據幀形式傳輸,設定合適的MTU大小可以減少傳輸次數,降低網路開銷。過大的MTU可能導致網路延遲增加,因為一次傳輸的數據量大,佔用鏈路時間長,且數據包一旦出錯,就需要整體重傳,代價很大。
乙太網的標准MTU值為1500位元組,這個值源於早期乙太網的共享鏈路設計,為了保證CSMA/CD機制,規定了幀長度限制。盡管技術發展,但這個值基本未變。隨著網路速度提升,一些廠商提出巨型幀(Jumbo Frame),但標准尚未確定。
當發送的數據超過MTU時,需要進行分片,例如,大於1500位元組的數據會被拆分成幾個小於MTU的包發送。對於小於最小幀長度的,需要添加填充數據以滿足要求。
要確保數據不超過MTU,需要上層協議如IP和TCP配合。比如,TCP知道自己的MSS(最大段大小),並在建立連接時協商雙方的MSS值,以避免數據過大導致的分片。TSO(TCP Segmentation Offload)技術則減輕了主機的分片負擔,提高網路性能。
總的來說,MTU是網路設計中的關鍵參數,影響著數據傳輸效率和網路性能,理解並正確配置MTU對於網路優化至關重要。