MTU 轉 MSS 計算機
輸入
| MTU | 1,500 B |
|---|---|
| IP 標頭 | 20 B |
| TCP 標頭 | 20 B |
MTU 轉 MSS 計算機
從路徑 MTU 扣除 IP 與 TCP 標頭,算出 TCP 最大區段大小(MSS),並了解每個封包中實際承載資料的比例。
輸入
封包大小
結果
輸入數值即可顯示計算結果。
最大區段大小
酬載效率
MTU 轉 MSS
最大區段大小(MSS)是 TCP 在單一封包中所放入的最大應用資料區塊。它由路徑的最大傳輸單元(MTU)——連線能承載的最大 IP 封包——扣除 IP 與 TCP 標頭所需的空間推導而來。把 MSS 設對能讓封包保持完整:設得太大會強制分段,或更糟地造成無聲的封包遺失,而設得太小則會把容量浪費在標頭負擔上。這個計算機從三個位元組數算出 MSS 與由此而來的酬載效率。
公式
MSS=MTU−HIP−HTCP E=MTUMSS其中 是以位元組計的最大傳輸單元, 是 IP 標頭大小, 是 TCP 標頭大小, 則是酬載效率——每個全尺寸封包中承載實際資料而非標頭的比例。
標頭大小是唯一會變動的部分。基本的 IPv4 標頭是 20 位元組,基本的 TCP 標頭是 20 位元組,因此在標準乙太網路路徑上,兩者合計每個封包耗去 40 位元組。IPv6 使用較大的固定標頭、共 40 位元組,而像時間戳記與選擇性確認(SACK)等 TCP 選項可能再多加幾個位元組。
計算範例。 採用 IPv4 的標準乙太網路路徑:
MSS=1500−20−20=1460 bytes E=15001460=0.9733=97.3%所以每個 1500 位元組封包中有 1460 位元組承載酬載,約 2.7% 被 IP 與 TCP 標頭佔用。改用 IPv6、MTU 維持 1500 位元組,會多花 20 個標頭位元組,使 MSS 降到 1440 位元組、效率降到 96.0%。
為什麼 MSS 很重要
TCP 會在每次連線開始的 SYN 交握中,向另一端通告其 MSS。雙方都承諾絕不送出大於所收到數值的區段,因此兩端都不會產生路徑無法承載的封包。當 MSS 依路由上最小的 MTU 正確設定時,每個區段都能完整傳遞,TCP 也能以全效率運作。
當封包大於某段連線所能承載時,問題就會出現。路由器若不是把它分段——將一個封包拆成數個,這會增加負擔與重組工作——就是在設定「不分段」旗標時將其丟棄,並以 ICMP 訊息回報。如果那則 ICMP 訊息被防火牆濾掉,傳送端便會不斷重送一個永遠到不了的過大封包,連線因而停頓。這種失敗稱為路徑 MTU 黑洞。
標頭與常見 MTU 值
MSS 完全取決於 MTU 以及套用了哪些標頭。有幾個數值反覆出現:
| 路徑 | MTU(位元組) | IP + TCP 標頭 | MSS(位元組) |
|---|---|---|---|
| 乙太網路,IPv4 | 1500 | 20 + 20 | 1460 |
| 乙太網路,IPv6 | 1500 | 40 + 20 | 1440 |
| PPPoE(DSL),IPv4 | 1492 | 20 + 20 | 1452 |
| 巨型訊框,IPv4 | 9000 | 20 + 20 | 8960 |
像 VPN、GRE 與 IPsec 這類通道會把每個封包包進自己的外層標頭,從而縮減留給內層封包的 MTU。這也是為什麼 VPN 連線常通告遠低於 1460 的 MSS,以及為什麼路由器常「鉗制」MSS——把通告值改寫得更低——以維持流量能跨越封裝後的連線。
酬載效率與較大的 MTU
由於標頭成本對每個封包是固定的,較大的 MTU 會把這個成本分攤到更多酬載上、提升效率。1500 位元組的 MTU 在 IPv4 標頭下產生 97.3% 的效率;9000 位元組的巨型訊框則把它推到 99.5% 以上。較大的封包也代表在相同輸送量下,每秒封包數較少,這能減輕路由器、防火牆與網路卡的每封包處理負擔。因此巨型訊框在資料中心與儲存網路中很常見,因為路徑上的每個裝置都能設定成較大的 MTU。
相關計算機
若要把封包大小換算成特定連線速度下的封包速率,請使用 每秒封包數計算器 計算機。若要在已知酬載速率後估算搬移檔案需時多久,請參考 資料傳輸時間計算機 計算機。若要在同一網路上進行子網路與位址規劃,子網路(CIDR)計算機 計算機是實用的搭配工具。
常見問題(FAQ)
MTU 與 MSS 有什麼差別?
MTU(最大傳輸單元)是連線能承載的最大 IP 封包,包含所有標頭。MSS(最大區段大小)是能放進該封包的最大 TCP 酬載,因此不含 IP 與 TCP 標頭。在 1500 位元組的 MTU 與 20 位元組的 IPv4 及 TCP 標頭下,MSS 為 1500 − 20 − 20 = 1460 位元組。TCP 會在連線交握期間通告其 MSS。
為什麼預設 MTU 是 1500?
1500 位元組是乙太網路的標準酬載大小,而由於乙太網路在有線與 Wi-Fi 接取網路中佔主導地位,多數網際網路路徑從頭到尾都落在 1500 位元組的 MTU。有些連線承載得更少:PPPoE 連線常用 1492 位元組,而通道(VPN、GRE、IPsec)會扣除自身的封裝負擔,使內層封包只剩 1400 位元組或更少。
巨型訊框如何改變 MSS?
巨型訊框把 MTU 提高到約 9000 位元組,這在資料中心與儲存網路中很常見。在 9000 位元組的 MTU 與 40 位元組的 IPv4 加 TCP 標頭下,MSS 攀升到 8960 位元組。每個封包相對於其固定標頭成本能承載多得多的酬載,這提升了效率,也減少了硬體在處理一定資料量時必須處理的封包數。
什麼是路徑 MTU 探索,它為什麼重要?
路徑 MTU 探索(PMTUD)讓端點找出路由上最小的 MTU,以便調整封包大小、避免分段。它依賴 ICMP「需要分段」訊息;當防火牆封鎖這些訊息時,PMTUD 會無聲失敗,大型封包遭到丟棄,造成連線停頓——也就是所謂的「PMTU 黑洞」。調降通告的 MSS,或在路由器上將其鉗制,是常見的解決方式。