什麼是 MSS(最大區段大小)?

MSS(最大區段大小)是指裝置將從網路連線接受的最大資料負載。

學習目標

閱讀本文後,您將能夠:

  • 瞭解什麼是封包以及什麼是封包標頭
  • 定義「裝載」
  • 瞭解如何根據 MTU 計算 MSS

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是最大區段大小 (MSS)?

MSS(最大區段大小)限制通過網路(例如網際網路)傳輸的封包或小資料塊的大小。透過網路傳輸的所有資料都被分解成封包。封包附有幾個標頭,其中包含有關其內容和目的地的資訊。MSS 測量封包的非標頭部分,稱為裝載。

如果將封包比作運輸卡車,標頭是卡車本身,裝載是拖車和貨物,那麼 MSS 就像只測量拖車的秤。如果拖車過重,則不允許卡車繼續前往目的地。

更具體地說,MSS 是聯網裝置可以接收的最大 TCP(傳輸控制通訊協定)區段大小。MSS 將「區段」定義為僅裝置的長度,而不是任何附加的標頭。MSS 以位元組為單位。

資料封包標題和裝載 - TCP 區段和 MSS

MSS 由另一個與封包大小有關的指標決定:MTU(最大傳輸單位),它包括 TCP 和 IP(網際網路通訊協定)標頭。繼續類比,MTU 測量的是卡車及其拖車和貨物的總重量,而不僅僅是拖車和貨物。

基本上,MSS 等於 MTU 減去 TCP 標頭和 IP 標頭的大小:

MTU -(TCP 標頭 + IP 標頭)= MSS

MTU 和 MSS 之間的主要區別之一是,如果封包超過裝置的 MTU,則會分解為更小的部分,或「分散」。相反,如果一個封包超過 MSS,它就會被捨棄且不會被傳遞。

什麼是 TCP?什麼是 TCP 標頭?

傳輸控制通訊協定 (TCP) 是一種確保封包按順序傳遞和接收的通訊協定,不會捨棄封包。想像一下,如果包裹遞送服務提前打電話給所有包裹收件者,以確保他們在遞送包裹之前的某個時間到家,然後將訊息傳回給寄件者以確認他們已經送達。TCP 的運作方式有點像這樣,封包就像是被遞送的「包裹」。

TCP 透過打開兩個裝置之間的連線來運作,這兩個裝置透過稱為 TCP 交握的過程進行通訊。MSS 在 TCP 交握期間達成一致:兩個裝置通訊它們能夠接收的封包的大小(這可以稱為「MSS Clamping」;見下文)。TCP 為所有封包新增一個標頭,以指示每個封包屬於哪個開啟的連線以及封包進入的順序。

TCP 和 IP 標頭有多長?

TCP 標頭幾乎總是 20 個位元組*長。IP 標頭包含來源和目的地 IP 位址等資訊,而且它們也有 20 個位元組的長度。TCP 和 IP 封包都包含可選的標頭欄位,這些欄位會使標頭更長,但這些欄位幾乎從未使用過。

*在電腦科學中,一個位元組是一個記憶體大小的單位,代表八個二進位數字;換句話說,是八個一和零的組合。

TCP MSS 範例

假設一個網路路由器的 MTU 為 1,500,這意味著它只接受長達 1,500 個位元組的封包。(較長的封包會被分散。)路由器的 MSS 應該設定為什麼?

MTU -(TCP 標頭 + IP 標頭)= MSS

1,500 - (20 + 20) = 1,460

路由器的 MSS 應該設定為 1,460 個位元組。裝載大小超過 1,460 個位元組的封包將被捨棄。(如果一個裝置不知道它和另一個裝置之間的路由器的 MTU 和 MSS 設定,它可能會錯誤地傳送這樣一個過大的封包。稱為「路徑 MTU 探索」的程序有助於避免此類事件。)

IPSec 的使用對 MSS 有何影響?

IPsec(網際網路通訊協定安全性)是 IP 的加密版本。使用 IPsec 傳送的封包被加擾,以便只有兩個連接的裝置能夠解釋它們,從而確保其裝載內容不受任何封包攔截者的影響。IPsec 通常用於設定虛擬私人網路 (VPN)

IPsec 將幾個位元組新增到封包的長度。在使用此加密的連線上,MSS 還必須考慮 IPsec:

MTU -(TCP 標頭 + IP 標頭 + IPsec)= MSS

MSS 是網路層還是傳輸層指標?

MSS 是第 4 層(傳輸層)指標。它與傳輸層通訊協定 TCP 一起使用。但是,它與 MTU 密切相關,後者適用於第 3層網路層)。

什麼是 MSS Clamping?

有時,網路路徑上的路由器設定的 MTU 值低於典型的 1,500 位元組。這可能會導致封包遺失並且很難被發現。

為了確保封包在這種情況下仍能到達目的地,一種選擇是減少傳入封包裝載的大小。這可以透過設定伺服器以套用 MSS clamp 來實現:在 TCP 交握期間,伺服器可以向 MSS 發送它願意接收的封包的訊號,「clamping」來自其他伺服器的最大裝載大小。例如,如果伺服器 A 和 B 正在建立 TCP 連線,並且伺服器 B 通訊的 MSS 為 1,436 位元組,則伺服器 A 將在連線期間傳送最大裝載大小為 1,436 位元組的封包。

MSS clamping 的另一個應用程式是在 GRE 通道的情況下,將 24 位元組的標頭新增到原始封包中,以便將其傳送到新目的地。如果原始封包大於 1,476 位元組,這可能會使新封包超過典型的 1,500 位元組 MTU;即使在套用了 GRE 標頭之後,也可以套用 MSS clamp 來要求傳入封包小於 1,500 位元組。

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