透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

最大 TCP 吞吐量
10.49
Mbps
吞吐量(Kbps) 10,485.76 Kbps
吞吐量(bps) 10,485,760 bps

什麼是 TCP 吞吐量計算器?

這個工具會根據 TCP 接收視窗大小與網路來回傳輸時間(RTT),估算單一 TCP 連線在理論上的最大吞吐量。由於 TCP 在同一時間只能有「一個視窗大小」的未確認資料正在傳輸途中,因此視窗大小與 RTT 兩者結合起來,就決定了資料傳輸速度的上限——這個上限與實體線路本身的頻寬無關。這正是著名的頻寬延遲乘積(bandwidth-delay product)限制。

使用方式

請以 KB(千位元組)輸入 TCP 視窗大小,並以 ms(毫秒)輸入來回傳輸時間。計算器會將視窗換算成位元、把 RTT 換算成秒,再相除,分別以 Mbps、Kbps 與 bps 顯示吞吐量。視窗越大、RTT 越低,可達到的吞吐量就越高。

公式說明

核心公式很簡單:吞吐量 = 視窗大小 ÷ RTT。為了讓單位一致,我們會做換算:1 KB = 1024 位元組 = 8192 位元,而以毫秒為單位的 RTT 需除以 1000 換算成秒。因此以每秒位元數表示的吞吐量為(視窗 KB × 8192)÷(RTT ÷ 1000)。再除以 1,000,000 即可得到 Mbps。

$$\text{Throughput (Mbps)} = \frac{\text{Window (KB)} \times 1024 \times 8}{\text{RTT (ms)} / 1000} \times \frac{1}{10^{6}}$$

Advertisement
示意圖展示透過網路連結傳送的 TCP 資料視窗,以及經過一個往返時間後返回的確認
TCP 吞吐量取決於每個往返時間(RTT)內可以傳輸的資料量(視窗大小)。

實際範例

假設 TCP 視窗為 64 KB,RTT 為 50 ms。換算成位元:\(64 \times 1024 \times 8 = 524{,}288\) 位元。RTT 換算成秒:\(50 / 1000 = 0.05\) 秒。吞吐量 $$= \frac{524{,}288}{0.05} = 10{,}485{,}760 \text{ bps} \approx \mathbf{10.49 \text{ Mbps}}$$ 若想完整發揮更高速線路的效能,就需要更大的視窗(也就是 TCP 視窗縮放,window scaling)。

關聯吞吐量、以位元為單位的視窗大小與往返時間的公式三角形
吞吐量等於以位元為單位的視窗大小除以以秒為單位的 RTT。

常見問題

為什麼我的吞吐量達不到線路速度?因為在高 RTT 的路徑上使用較小的視窗,會限制同時能在途中傳輸的資料量。這也是長距離連線通常需要啟用視窗縮放的原因。

要達到目標速度需要多大的視窗?把公式調換一下即可:視窗(位元)= 吞吐量 × RTT。這個乘積就是頻寬延遲乘積,也就是理想的緩衝區大小。

這個計算有考慮封包遺失嗎?沒有——這是無遺失情況下的最大值。在會丟封包的線路上,實際吞吐量會更低,用 Mathis 公式來估算會更準確。

最後更新: