最大傳輸單元

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

最大傳輸單元(英語: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).