網絡延遲頻寬計算器

輸入鏈路速率、往返時間和傳輸大小,即可查看單個 TCP 流的真實上限 —— 標明瓶頸所在、傳輸時間以及每個代入步驟。

路徑

路徑上最慢的一站 —— 通常是你的服務計劃標稱速度。
到遠端的 Ping 時間 —— 請使用你在負載下預期的最大值。

傳輸

要傳輸的負載 —— 檔案、備份或數據集。

TCP 參數

接收端可緩衝的位元組數。65,535 為未縮放的最大值;留空 = 無視窗限制。
每個封包的負載位元組 —— 1,460 可填滿標準乙太網路訊框。留空 = 忽略協定開銷與遺失。
平均封包遺失概率。留空或輸入 0 = 無遺失限制。

吞吐量與傳輸時間

預期 TCP 吞吐量

請輸入鏈路速率、往返時間和數據大小。

公式與數值代入

吞吐量 = min(速率 × 效率, 視窗 ÷ RTT, MSS ÷ RTT ÷ √p) · BDP = 速率 × RTT

    你輸入的每個數值都會在此瀏覽器中進行計算 —— 不會發送至任何地方。

    常見問題

    為什麼我的傳輸速度慢過我付費訂閱的鏈路速率?

    單個 TCP 流面臨三個獨立的上限,並以最低者為準。協定開銷會將鏈路本身削減約 5% —— 標準乙太網路訊框在線路上的 1,538 位元組中攜帶 1,460 位元組的負載。接收視窗將吞吐量限制在「視窗 ÷ RTT」,因此無論鏈路有多快,經典的 65,535 位元組視窗都會將 50 ms 路徑限制在約 10.5 Mbit/s。而封包遺失則將其限制在 (MSS ÷ RTT) ÷ √遺失率。上方的計算結果會指出哪一個上限正在限制你的數據。

    什麼是頻寬時延乘積?為什麼它會決定視窗大小?

    BDP(頻寬時延乘積,即鏈路速率 × 往返時間)是指在任何給定時刻傳輸中的數據量。TCP 最多只能有一個未確認的視窗在傳輸,因此小於 BDP 的視窗會讓管道處於半空狀態:在 100 Mbit/s 速率和 50 ms RTT 下,管道可容納 625 kB,而一個 65,535 位元組的視窗僅能填滿其十分之一。這就是為什麼快速且長途的路徑需要 TCP 視窗縮放 (RFC 7323),它將可協商的最大值從 65,535 位元組提高到約 1 GB。

    封包遺失是如何限制 TCP 吞吐量的?

    TCP 將遺失視為網絡擁塞,並在每次發生遺失事件時將其發送速率減半,因此即使是極微小的遺失率,在快速路徑上也會產生重大影響。Mathis 模型估算的上限為 (MSS ÷ RTT) ÷ √p —— 在 50 ms 路徑、1,460 位元組 MSS 且有 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 即可完全對應。

    評估單個 TCP 流的真實效能上限

    網絡延遲頻寬計算器是一款免費的線上工具,專門用於根據網絡路徑的實際狀況,計算單個 TCP 流在現實環境中的效能上限。使用者只需輸入鏈路速率、往返時間(RTT)以及傳輸數據大小,即可即時識別出限制連線速度的關鍵瓶頸,並檢視預期的 TCP 吞吐量與總傳輸時間估算。

    本工具完全在你的瀏覽器中進行本地計算,你輸入的每個數值都會在此瀏覽器中進行計算 —— 不會發送至任何地方。

    輸入參數與配置說明

    要準確模擬網絡路徑與傳輸表現,你需要配置以下輸入參數:

    • 鏈路速率:路徑上最慢的一站 —— 通常是你的服務計劃標稱速度。此數值必須大於零。
    • 往返時間 (RTT):到遠端的 Ping 時間 —— 請使用你在負載下預期的最大值。此數值必須大於零。
    • 數據大小:要傳輸的負載 —— 檔案、備份或數據集。此數值必須大於零。
    • 接收視窗:接收端可緩衝的位元組數。此數值必須大於零,且不能超過 1,073,725,440 位元組。留空則表示無視窗限制。
    • MSS (位元組):每個封包的負載位元組 —— 1,460 可填滿標準乙太網路訊框。此數值必須是介乎 1 至 65,495 位元組之間的整數。留空則會忽略協定開銷與遺失。
    • 封包遺失 (%):平均封包遺失概率。數值必須介乎 0% 至 100% 之間。留空或輸入 0 表示無遺失限制。
    • 顯示小數位數:控制輸出結果的十進制精確度。

    介面同時提供載入範例按鈕以快速填入範例數據,以及清空按鈕以重設所有輸入欄位。

    輸出結果與動態系統提示

    計算完成後,工具會在三個主要區塊中呈現詳細分析:

    吞吐量與傳輸時間

    • 預期 TCP 吞吐量:顯示預估的實際吞吐量,並附帶子標籤說明當前的瓶頸來源:「受限於 ‹constraint›」,其中的限制因素會動態顯示為鏈路容量接收視窗封包遺失
    • 傳輸時間
    • 到首個位元組的時間 (1 RTT)
    • 大容量傳輸時間
    • 頻寬時延乘積
    • 填滿路徑所需視窗
    • 受視窗限制的吞吐量
    • 受遺失限制的吞吐量 (Mathis)
    • 扣除開銷後的鏈路上限
    • 協定效率

    動態系統提示訊息

    根據輸入的數值組合,系統會顯示相應的技術提示:

    • 「填滿此路徑需要 ‹window› 的視窗 —— 已超出 65,535 位元組的未縮放最大值,因此兩端必須協商 TCP 視窗縮放 (RFC 7323)。」
    • 「填滿此路徑需要 ‹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› × ‹eff› = ‹value›
    • BDPBDP = 速率 × RTT = ‹rate› × ‹rtt› = ‹bdp› = ‹bytes›
    • 填滿路徑所需視窗填滿路徑所需視窗 = BDP ÷ 8 = ‹bdp› → ‹window›
    • 視窗上限視窗上限 = 視窗 ÷ RTT = ‹window› ÷ ‹rtt› = ‹value›
    • 遺失上限 (Mathis)遺失上限 (Mathis) = MSS ÷ RTT ÷ √p = ‹mss› ÷ ‹rtt› ÷ √‹p› = ‹value›
    • 預期吞吐量預期吞吐量 = 以下上限的最低值 = ‹value› → 受限於 ‹constraint›
    • 傳輸時間傳輸時間 = RTT + 8 × 大小 ÷ 吞吐量 = ‹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 視窗縮放限制:未啟用縮放的 TCP 視窗最大值為 65,535 位元組。若填滿路徑所需的視窗超過此值,必須透過 RFC 7323 協商視窗縮放。依據 RFC 7323,TCP 可協商的最大視窗上限為 1,073,725,440 位元組。
    • 排除的現實因素:本模型僅針對穩態下的單個 TCP 流進行計算。實際網絡傳輸中的 TCP 慢啟動、擁塞控制動態調整、接收端處理延遲以及 TLS 握手等因素均不在計算範圍內,因此實際傳輸開始時的速度會較慢,整體表現亦可能低於理論上限。

    錯誤訊息與輸入驗證

    當輸入數據不符合規範時,系統會顯示相應的錯誤提示:

    • 輸入無法解析:"‹field›:「‹token›」不是數字。"
    • 鏈路速率非正數:"鏈路速率必須大於零。"
    • 往返時間非正數:"往返時間必須大於零。"
    • 數據大小非正數:"數據大小必須大於零。"
    • 接收視窗非正數:"接收視窗必須大於零。"
    • 接收視窗超出 RFC 7323 上限:"TCP 無法協商超過 1,073,725,440 位元組的視窗(RFC 7323 視窗縮放)。"
    • MSS 超出範圍:"MSS 必須是介乎 1 至 65,495 位元組之間的整數。"
    • 封包遺失率超出範圍:"遺失率必須介乎 0% 至 100% 之間。"
    • 計算數值溢位:"數值或中間計算結果超出支援的數字範圍。"

    常見問題解答

    什麼是頻寬時延乘積?為什麼它會決定視窗大小?

    BDP(頻寬時延乘積,即鏈路速率 × 往返時間)是指在任何給定時刻傳輸中的數據量。TCP 最多只能有一個未確認的視窗在傳輸,因此小於 BDP 的視窗會讓管道處於半空狀態:在 100 Mbit/s 速率和 50 ms RTT 下,管道可容納 625 kB,而一個 65,535 位元組的視窗僅能填滿其十分之一。這就是為什麼快速且長途的路徑需要 TCP 視窗縮放 (RFC 7323),它將可協商的最大值從 65,535 位元組提高到約 1 GB。

    為什麼我的傳輸速度慢過我付費訂閱的鏈路速率?

    單個 TCP 流面臨三個獨立的上限,並以最低者為準。協定開銷會將鏈路本身削減約 5% —— 標準乙太網路訊框在線路上的 1,538 位元組中攜帶 1,460 位元組的負載。接收視窗將吞吐量限制在「視窗 ÷ RTT」,因此無論鏈路有多快,經典的 65,535 位元組視窗都會將 50 ms 路徑限制在約 10.5 Mbit/s。而封包遺失則將其限制在 (MSS ÷ RTT) ÷ √遺失率。上方的計算結果會指出哪一個上限正在限制你的數據。

    封包遺失是如何限制 TCP 吞吐量的?

    TCP 將遺失視為網絡擁塞,並在每次發生遺失事件時將其發送速率減半,因此即使是極微小的遺失率,在快速路徑上也會產生重大影響。Mathis 模型估算的上限為 (MSS ÷ RTT) ÷ √p —— 在 50 ms 路徑、1,460 位元組 MSS 且有 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 即可完全對應。