什麽是 MTU (傳輸單元最大值)?

傳輸單元最大值(MTU)指通過連線到網際網路的設備可以接收的最大數據包,單位是位元組。

學習目標

閱讀本文後,您將能夠:

  • 定义「MTU 」
  • 瞭解 IP 分割如何工作
  • 瞭解 IPv4 和 IPv6 中的路徑 MTU 發現

複製文章連結

什麼是 MTU?

網路中,傳輸單元最大值(MTU)代表一個聯網裝置將接受的最大資料封包的大小。可以將它想象為高速公路地下通道或隧道的高度限制:超過這個高度限制的汽車和卡車將無法通過,同樣,超過某個網路的 MTU 的封包也無法通過該網路。

然而,不同于汽車和卡車,大小超過 MTU 的資料封包被分割成更小的片段以便通過。這個過程被稱為分割。分割后的封包在到達目的地后將被重新組裝起來。

MTU 的單位是位元組——一個「位元組」等於 8 位元資料,即 8 個 0 和 1。1500 位元組是最大的 MTU 值。

什麽是封包?

所有通過網際網路傳輸的資料都會被分解為較小的塊,這些塊被稱為封包。例如,當一個網頁從網頁服務器發送到使用者的筆記型電腦時,網頁的組成資料以一系列封包的形式在網際網路上傳輸。然後這些封包將被筆記型電腦重新組合成原始的完整網頁。

資料封包有兩個主要部分:標頭裝載。標頭包含封包的來源和目的地址,而承載是封包的實際內容。可以想象標頭是附加到一個包裹的運輸標籤,承載是包裹的內容物。(不同於包裹的是,網際網路上的封包有不同網路通訊協定附加的多個標頭。)

MTU 幾乎總是用於指 第 3 層 * 封包,即使用網際網路通信協定(IP)的封包。MTU 衡量封包的整體大小,包括所有標頭和承載。其中包括 IP 標頭和 TCP(傳輸控制通訊協定)標頭,加起來總長度最多 40 位元組。

*OSI 模型將使網際網路成為可能的功能分成 7 個層級;第 3 層為網路層,即進行路由的層級。

封包何時被分割?

在兩個運算裝置打開連線並開始交換封包時,這些封包通過多個網路路由。需要考慮的不僅僅是每次通信兩端裝置的 MTU,還有中間所有路由器交換器和伺服器的 MTU。如果封包超過網路中任何一點的 MTU,封包就會被分割。

假設伺服器 A 和電腦 A 建立了連線,但它們相互發送的資料封包在途中必須經過路由器 B 和路由器 C。伺服器 A、電腦 A 和路由器 B 的 MTU 值都是 1500 位元組。然而,路由器 C 的 MTU 值為 1400 位元組。如果伺服器 A 和電腦 A 不知道路由器 C 的 MTU 並發送 1500 位元組的封包,則它們的全部資料封包在傳輸途中都會被路由器 C 分割。

傳輸單元最大值——封包被分割以適合 1400 位元組的 MTU

分割會給網路通訊增加輕微的延遲並降低效率,因此應儘可能避免。(過時的網路設備可能容易受到利用分割的阻斷服務攻擊,例如「死亡之 ping 」攻擊。)

分割如何工作?

對於收到的每個 IP 封包,所有網路路由器都會根據將接收封包的下一個路由器的 MTU 檢查其大小。如果封包超過下一個路由器的 MTU,第一個路由器將承載拆分為兩個或更多封包,每個都有自己的標頭。

每個新的封包都擁有一個從原始封包複製過來的標頭(以便所有封包都擁有原始來源和目的地 IP 位址等),帶有重要的更改。路由器編輯 IP 標頭中的特定字段,以表明這些封包是分割並需要重組的,有多少個封包,以及它們的發送順序。

假設某家運輸公司正在處理的一件包裹超過其設施之一的重量限制。運輸公司不是拒絕遞送這件包裹,而是將其拆分為 3 件較小的包裹。它還會為每件包裹複製一份運輸標籤,並註明每件包裹是某個系列的一部分,必須同時到達——第一件包裹編號為 1/3,第二件為 2/3,以此類推(運輸公司這樣做將違反隱私權,因此在現實中不應發生)。

何時不可能發生分割?

某些情況下,封包是不能被分割的,如果它們超過網路路徑上任何路由器或裝置的 MTU,則不會被送達。

  1. IPv6 中不允許分割。IPv6 是網際網路通訊協定的最新版本,但 IPv4 仍被廣泛使用。支持 IPv6 的路由器將丟棄任何超過 MTU 的 IPv6 封包,因為它們不能被分割。
  2. 在封包 IP 標頭中的「不要分割」標誌被激活時,封包也不可能被分割。

什麽是 IP 標頭中的「不要分割」標誌?

可 IP 標頭想象為客戶向某人運送一一件包裹時填寫的表單。表格指明來源地址,目的地地址,包裹應在多長時間內送達,以及其他針對送貨員的特殊說明。

「不要分割」標誌是針對路由器的特殊說明,這是 IP 標頭「表單」中一個可選擇的選項。該標誌被設定時,所附封包不能被分割。

接收到封包的任何路由器將分析標頭並檢查「不要分割」標誌。如果標誌打開而封包超過 MTU,路由器將丟棄封包而不會進行分割。

除了丟失封包外,路由器還會向封包的來源發回一個 ICMP 訊息。ICMP 訊息是一種非常小的資料封包,用於發送狀態更新。在這種情況下,這個訊息等於在說,“這個路由器或裝置不能傳遞這些封包,原因是它們太大且不能被分割。”

什麽是 MTU 發現?

路徑 MTU 發現(PMTUD)是發現網路路徑上所有裝置、路由器和交換器的 MTU 的過程。如果上述例子中的電腦 A 和電腦 B 使用 PMTUD,則它們將發現路由器 B 的 MTU 要求並相應調整封包大小以避免分割。

取決於連線的裝置使用 IPv4 還是 IPv6,PMTUD 的工作方式略有不同。

IPv4: IPv4 允許分割,因此在其 IP 標頭中包含「不要分隔」標誌。IPv4 中的 PMTUD 的工作方式是沿著網路路徑發送「不要分隔」標誌打開的測試封包。如果該路徑上的任何路由器或裝置丟棄封包,就會發回一個帶有其 MTU 的 ICMP 訊息。原始裝置降低其 MTU 並發出另一個測試封包。這個過程將反復進行,直至測試封包足夠小,可以穿越整個網路路徑而不被丟棄。

IPv6: 對於不允許分割的 IPv6,PMTUD 工作方式基本相同。主要分別是 IPv6 標頭沒有「不要分隔」選項,因此不會設定該標誌。支持 IPv6 的路由器不會分割 IPv6 封包,因此,如果測試封包超過 MTU,則路由器會丟棄封包並發送相應的 ICMP 訊息,但不會檢查「不要分隔」標誌。IPv6 PMTUD 發送越來越小的測試封包,直至封包能穿越整個網路路徑為止,與 IPv4 一樣。

什麽是 MSS?

MSS 代表最大區段大小。MSS 由 TCP 在網際網路的第 4 層——傳輸層——使用,而非第 3 層。MSS 僅涉及每個封包的承載大小。它是通過將 TCP 的長度減去 MTU 的標頭得出的。

雖然超過一個路由器的 MTU 的封包要麽被分割,要麽被丟棄,超過 MSS 的封包總是被丟棄。

要進一步瞭解 MTU 和 MSS,請參閱什麽是 MSS?