最大傳輸單元
出自 MBA智库百科(https://wiki.mbalib.com/)
最大傳輸單元(Maximum Transmission Unit,MTU)
目錄 |
最大傳輸單元是指一種通信協議的某一層上面所能通過的最大數據報大小(以位元組為單位)。最大傳輸單元這個參數通常與通信介面有關(網路介面卡、串口等)。
網際網路協議允許IP分片,這樣就可以將數據報分成足夠小的片段以通過那些最大傳輸單元小於該數據報原始大小的鏈路了。這一分片過程發生在IP層(OSI模型的第三層,即網路層),它使用的是將分組發送到鏈路上的網路介面的最大傳輸單元的值。原始分組的分片都被加上了標記,這樣目的主機的IP層就能將分組重組成原始的數據報了。
在網際網路協議中,一條網際網路傳輸路徑的“路徑最大傳輸單元”被定義為從源地址到目的地址所經過“路徑”上的所有IP跳的最大傳輸單元的最小值。或者從另外一個角度來看,就是無需進一步分片就能穿過這條“路徑”的最大傳輸單元的最大值。
RFC1191描述了“路徑最大傳輸單元發現方法”,這是一種確定兩個IP主機之間路徑最大傳輸單元的技術,其目的是為了避免IP分片。在這項技術中,源地址將數據報的DF(Don't Fragment,不要分片)位置位,再逐漸增大發送的數據報的大小——路徑上任何需要將分組進行分片的設備都會將這種數據報丟棄並返回一個“數據報過大”的ICMP響應到源地址——這樣,源主機就“學習”到了不用進行分片就能通過這條路徑的最大的最大傳輸單元了。
不幸的是,越來越多的網路封殺了ICMP的傳輸(譬如說為了防範DOS攻擊)——這使得路徑最大傳輸單元發現方法不能正常工作,其常見表現就是一個連接在低數據流量的情況下可以正常工作,但一旦有大量數據同時發送,就會立即掛起(例如在使用IRC的時候,客戶會發現在發送了一個禁止IP欺騙的ping之後就得不到任何響應了,這是因為該連接被大量的歡迎消息堵塞了)。而且,在一個使用網際網路協議的網路中,從源地址到目的地址的“路徑”常常會為了響應各種各樣的事件(負載均衡、擁塞、斷電等等)而被動態地修改——這可能導致路徑最大傳輸單元在傳輸過程中發生改變——有時甚至是反覆的改變。其結果是,在主機尋找新的可以安全工作的最大傳輸單元的同時,更多的分組被丟失掉了。
對於時下大多數使用乙太網的區域網來說,最大傳輸單元的值是1500位元組。但是像PPPoE這樣的系統會減小這個數值,這就使得在使用最大傳輸單元發現方法時可能會產生這樣的結果:一些處於配置不當的防火牆之後的站點變得不可達了。對於這種情況,還是可能找到變通的方法的,但這取決於你控制的是網路的哪一部分。這些方法包括改變用來在防火牆一端建立TCP連接的第一個分組的MSS(Maximum Segment Size,最大分段大小)。
對於一些支持老版本乙太網協議的IBM系統(例如XSeries),可能只有在把最大傳輸單元設為1492之後才能在當下常見的區域網上進行運作。