最大傳輸單元

網絡傳輸中一個數據包的最大長度

最大傳輸單元(英語:Maximum Transmission Unit,縮寫MTU)是指數據鏈路層上面所能通過的最大數據包大小(以字節為單位)。最大傳輸單元這個參數通常與通信接口有關(網絡卡串口等)。

因特網協議允許IP分片,這樣就可以將數據報包分成足夠小的片段以通過那些最大傳輸單元小於該數據報原始大小的鏈路了。這一分片過程發生在IP層(OSI模型的第三層,即網絡層),它使用的是將分組發送到鏈路上的網絡接口的最大傳輸單元的值。原始分組的分片都被加上了標記,這樣目的主機的IP層就能將分組重組成原始的數據報了。

在因特網協議中,一條因特網傳輸路徑的「路徑最大傳輸單元」被定義為從源地址到目的地址所經過「路徑」上的所有IP的最大傳輸單元的最小值。或者從另外一個角度來看,就是無需進一步分片就能穿過這條「路徑」的最大傳輸單元的最大值。

RFC 1191 描述了「路徑最大傳輸單元發現方法(PMTUD)」[1],這是一種確定兩個IP主機之間路徑最大傳輸單元的技術,其目的是為了避免IP分片。在這項技術中,源地址將設置數據報的DF(Don't Fragment,不要分片)標記位,再逐漸增大發送的數據報的大小——路徑上任何需要將分組進行分片的設備都會將這種數據報丟棄並返回一個「數據報過大」的ICMP響應到源地址——這樣,源主機就「獲取」到了不用進行分片就能通過這條路徑的最大的最大傳輸單元了。

RFC 4821 描述了「分組層路徑最大傳輸單元發現方法(PLPMTUD)」[2]。該方法通過藉助傳輸層協議(例如 TCP 協議),在不依賴 ICMP 的情況下探測兩個主機之間路徑上的 MTU[3]RFC 8899 對 PLPMTUD 進行了增補,提出了「數據報分組層路徑最大傳輸單元發現方法(DPLPMTUD)」[4],使得可以使用 UDP 協議探測路徑 MTU[5]

對於時下大多數使用以太網局域網來說,最大傳輸單元的值是1,500字節。但是像PPPoE這樣的系統會減小這個數值,通常是1492(=1500-2(PPP)-6(oE)),這就使得在使用最大傳輸單元發現方法時可能會產生這樣的結果:一些處於配置不當的防火牆之後的站點變得不可達了。對於這種情況,還是可能找到變通的方法的,但這取決於你控制的是網絡的哪一部分。這些方法包括改變用來在防火牆一端建立TCP連接的第一個分組的MSS(Maximum Segment Size,最大分段大小)。

常見媒體的MTU表

網絡 MTU(Byte)
超通道 65535
16Mb/s令牌環 17914
4Mb/s令牌環 4464
FDDI 4352
以太網 1500
IEEE 802.3/802.2 1492
X.25 576
點對點(低時延) 296
ATM 48

參見

外部連結

參考文獻

  1. ^ RFC 1191
  2. ^ RFC 4821
  3. ^ Mathis, Matt; Heffner, John. Packetization Layer Path MTU Discovery. Internet Engineering Task Force. 2007-03 [2023-09-27]. (原始內容存檔於2023-10-03). 
  4. ^ RFC 8899
  5. ^ Fairhurst, Gorry; Jones, Tom; Tüxen, Michael; Ruengeler, Irene; Völker, Timo. Packetization Layer Path MTU Discovery for Datagram Transports. Internet Engineering Task Force. 2020-09 [2023-09-27]. (原始內容存檔於2023-09-30).