評估單一 TCP 連線的實際效能上限
在評估跨網路路徑的資料傳輸時,單純依賴服務供應商提供的合約頻寬往往無法反映真實的傳輸表現。網路延遲與頻寬計算器是一款免費的線上工具,能根據實際的網路路徑狀況,計算出單一 TCP 連線(TCP flow)的實質效能天花板。
透過輸入線路速率、往返時間(RTT)以及預計傳輸的資料大小,此工具能立即為您指出限制連線速度的關鍵瓶頸,並顯示預期的 TCP 吞吐量與總傳輸時間。本工具完全在您的網頁瀏覽器中進行本地端計算,您輸入的所有數值都會在此瀏覽器中進行計算 — 不會傳送到任何地方。
影響 TCP 吞吐量的關鍵輸入參數
要精確模擬網路路徑的傳輸表現,需要設定以下三組核心參數:
1. 路徑參數
- 線路速率:路徑上最慢的一站 — 通常是您方案的額定速度。此數值必須大於零。
- 往返時間 (RTT):到遠端的 Ping 時間 — 請使用您在負載下預期的最大值。此數值必須大於零。
2. 傳輸參數
- 資料大小:要傳輸的負載 — 檔案、備份或資料集。此數值必須大於零。
3. TCP 協定參數
- 接收視窗:接收端可緩衝的位元組。65,535 位元組為未縮放的最大值;留空則代表無視窗限制。此數值必須大於零,且最高不得超過 1,073,725,440 位元組。
- MSS (位元組):最大分段大小(Maximum Segment Size),即每個封包的負載位元組。例如輸入 1,460 可填滿標準乙太網路訊框。此欄位必須是介於 1 到 65,495 位元組之間的整數,留空則代表忽略協定開銷與遺失。
- 封包遺失 (%):平均封包遺失機率。數值必須介於 0% 到 100% 之間,留空或輸入 0 代表無遺失限制。
此外,您可以使用顯示小數位數來調整輸出結果的精確度。介面亦提供載入範例按鈕快速填入測試資料,以及清空按鈕重設所有輸入欄位。
輸出指標與動態系統提示
計算完成後,工具會將結果呈現在三大區塊中:
吞吐量與傳輸時間
- 預期 TCP 吞吐量:核心輸出值,並會動態標示受限於線路容量、接收視窗或封包遺失。
- 傳輸時間、到第一個位元組的時間 (1 RTT) 與 大量傳輸時間。
- 頻寬延遲乘積(BDP)與填滿路徑所需視窗。
- 受視窗限制的吞吐量、受遺失限制的吞吐量 (Mathis) 以及扣除開銷後的線路上限。
- 協定效率。
動態系統提示
根據輸入的數值組合,系統會自動顯示對應的技術提示:
- 當填滿路徑所需視窗超過 65,535 位元組時,顯示:填滿此路徑需要
‹window›的視窗 — 已超出 65,535 位元組的未縮放最大值,因此兩端必須協商 TCP 視窗縮放 (RFC 7323)。 - 當所需視窗超出 TCP 協定極限時,顯示:填滿此路徑需要
‹window›— 已超出 TCP 可協商的最大視窗 (1,073,725,440 位元組)。此路徑上的單一連線永遠無法超過‹value›。 - 若調整接收視窗可提升速度,顯示:將接收視窗提高到
‹window›可讓此傳輸達到最高‹value›。 - 當遺失率過高時,顯示:遺失率高於 1% 已超出 Mathis 模型的可靠範圍 — 請將此遺失上限視為樂觀估計。
核心計算公式與代入步驟
本工具依據標準網路協定公式進行逐步推導,並於介面展示詳細的公式與數值代入過程:
- 主公式: 吞吐量 = min(速率 × 效率, 視窗 ÷ RTT, MSS ÷ RTT ÷ √(p)) BDP = 速率 × RTT
- 協定效率: 協定效率 = MSS ÷ (MSS + 78 B) = mss ÷ frame = eff (其中包含 40 B 封包標頭與 38 B 實體線路開銷)
- 線路上限: 線路上限 = rate × efficiency = rate × eff = value
- BDP 計算: BDP = rate × RTT = rate × rtt = bdp = bytes
- 填滿路徑所需視窗: 填滿路徑所需視窗 = BDP ÷ 8 = bdp → window
- 視窗上限: 視窗上限 = window ÷ RTT = window ÷ rtt = value
- 遺失上限 (Mathis): 遺失上限 (Mathis) = MSS ÷ RTT ÷ √(p) = mss ÷ rtt ÷ √(p) = value
- 預期吞吐量: 預期吞吐量 = 上述上限的最小值 = value → 受限於constraint
- 傳輸時間: 傳輸時間 = RTT + 8 × size ÷ throughput = rtt + 8 × size ÷ throughput = time
運作規則、邊界條件與限制
在分析計算結果時,必須注意以下底層協定規則與模型限制:
- 十進位與二進位單位差異:本工具所有單位均為十進位(例如 1 kbit = 1,000 位元,1 MB = 1,000,000 位元組)。然而,作業系統與檔案管理器通常以 1024 為底計算二進位單位(例如 100 MB 的檔案在二進位下實際為 100 MiB,約等於 104.86 十進位 MB)。
- 封包開銷估算:開銷計算是以標準乙太網路為基準,每個封包加上 78 位元組(包含 40 位元組的 TCP/IP 標頭與 38 位元組的實體線路開銷)。
- Mathis 遺失模型限制:Mathis 模型假設封包遺失是均勻且獨立分佈的,僅在遺失率低於約 1% 時才可靠。若遺失率高於 1%,突發性遺失造成的損害會比模型預測更嚴重,此時計算出的遺失上限應視為樂觀估計。
- TCP 視窗縮放限制:根據 RFC 7323 規範,未縮放的 TCP 視窗最大值為 65,535 位元組。透過視窗縮放協商,TCP 可支援的最大視窗極限為 1,073,725,440 位元組。若輸入的接收視窗超出此值,系統將會阻擋並顯示錯誤。
- 模型排除範圍:本工具模擬的是穩態下的單一 TCP 連線。實際網路傳輸中的慢啟動(Slow Start)、壅塞控制動態調整、慢速接收端效能以及 TLS 握手等因素皆不在模型範圍內,因此實際傳輸開始時較慢,且整體表現可能低於計算出的理論上限。
常見問題 (FAQ)
為什麼我的傳輸速度比我付費的線路速率還要慢?
單一 TCP 連線面臨三個獨立的上限,並以最低者為準。協定開銷會使線路本身減少約 5% — 標準乙太網路訊框在線路上傳輸的 1,538 位元組中,僅含有 1,460 位元組的負載。接收視窗會將吞吐量限制在 window ÷ RTT,因此無論線路多快,傳統的 65,535 位元組視窗都會將 50 ms 的路徑限制在約 10.5 Mbit/s。而封包遺失則會將其限制在 (MSS ÷ RTT) ÷ √loss。上方的計算結果會指出哪一個上限正在限制您的數值。
什麼是頻寬延遲乘積 (BDP)?為什麼它會決定視窗大小?
BDP (頻寬延遲乘積) — 即線路速率 × 往返時間 — 是指在任何給定時刻傳輸中 (in flight) 的資料量。TCP 最多只能有一個未確認的視窗在傳輸,因此小於 BDP 的視窗會讓管道無法填滿:在 100 Mbit/s 且 RTT 為 50 ms 的情況下,管道可容納 625 kB,而 65,535 位元組的視窗僅能填滿不到十分之一。這就是為什麼快速且長途的路徑需要 TCP 視窗縮放 (RFC 7323),它將可協商的最大值從 65,535 位元組提高到約 1 GB。
封包遺失是如何限制 TCP 吞吐量的?
TCP 會將遺失視為網路壅塞,並在每次發生遺失時將其發送速率減半,因此即使在快速路徑上,極低的遺失率也會產生影響。Mathis 模型估算的上限為 (MSS ÷ RTT) ÷ √p — 在 RTT 為 50 ms 且 MSS 為 1,460 位元組的路徑上,若有 0.01% 的遺失,上限約為 23 Mbit/s,不論線路速度為何。該模型假設遺失事件是均勻分佈且獨立的;在遺失率低於約 1% 時,它能很好地貼近現實,而對於突發性遺失,其估算則偏向樂觀。
這裡的 MB 與我檔案管理器中的 MB 相同嗎?
不完全相同。本頁面使用網路界慣用的十進位單位:1 kbit = 1,000 位元,1 MB = 1,000,000 位元組。大多數檔案管理器使用以 1024 為底的單位,且經常誤標為 MB — 那裡的「100 MB」檔案通常是 100 MiB ≈ 104.86 十進位 MB,因此傳輸時間會比十進位數值所顯示的時間多出約 5%。在此輸入 104.86 MB 即可完全吻合。