0%

计算机网络吞吐量相关计算

在计算机网络中,吞吐量(Throughput)是衡量数据传输效率的关键指标。不同协议与网络条件下的吞吐量计算方式不同,以下将对TCP不考虑丢包时的吞吐量、考虑丢包时的TCP吞吐量、停止等待协议(Stop-and-Wait)的吞吐量以及滑动窗口协议(Sliding Window)的吞吐量进行详细总结与比较。

一、TCP在不考虑丢包时的吞吐量计算

在理想情况下,如果网络中没有丢包、没有拥塞控制限制,TCP可以近似达到其理论最大吞吐量。其吞吐量主要受限于接收窗口大小(rwnd)和往返时延(RTT)。此时的吞吐量公式如下:
$$
\text{Throughput} = \frac{\text{窗口大小(Bytes)}}{\text{RTT(Seconds)}}
$$
这个吞吐量计算等价于“带宽-时延积(Bandwidth-Delay Product)”,反映了在一个RTT内可以“在路上”的最大字节数。此时,TCP的传输效率非常高,且吞吐量与窗口大小成正比,与RTT成反比。

二、TCP在考虑丢包时的吞吐量计算(简化模型)

当存在丢包时,TCP的拥塞控制机制(如慢启动、拥塞避免、快速重传和快速恢复)会显著影响其吞吐量。基于TCP Reno的模型,Mathis等人提出的经典近似公式如下:
$$
\text{Throughput} \approx \frac{\text{MSS}}{\text{RTT} \cdot \sqrt{p}}
$$
其中:

  • MSS:最大报文段长度
  • RTT:往返时延
  • p:丢包率

该公式表明,吞吐量与丢包率的平方根成反比,这也揭示了TCP在高丢包率环境下性能下降迅速的原因。例如,丢包率从0.01变为0.04,吞吐量将减半。这一模型揭示了拥塞控制的保守性如何对TCP性能产生重大影响。

三、停止等待协议的吞吐量计算

停止等待协议是一种简单但效率较低的可靠传输协议。它要求发送方在每发送一个数据包后必须等待确认(ACK),再发送下一个包。其吞吐量计算公式为:
$$
\text{Throughput} = \frac{L}{RTT + T_{\text{trans}}}
$$
其中:

  • LL:每个数据包的数据大小(bits)
  • $T_{\text{trans}}$:数据包的发送时间 =$\frac{L}{\text{带宽}}$
  • RTT:往返时延

在高带宽高延迟环境下,$Ttrans≪RTTT_{\text{trans}} \ll RTT$,此时可以近似为:
$$
\text{Throughput} \approx \frac{L}{RTT}
$$
其效率(信道利用率)为:
$$
\eta = \frac{T_{\text{trans}}}{RTT + T_{\text{trans}}}
$$
这表明,停止等待协议在高RTT场景下会导致大量带宽浪费,吞吐量很低。


四、滑动窗口协议的吞吐量计算

滑动窗口协议(如Go-Back-N或Selective Repeat)通过允许发送多个未确认的数据包,极大提高了信道利用率。在理想情况下(无丢包、无误码),其吞吐量计算为:
$$
\text{Throughput} = \min\left( \frac{W \cdot L}{RTT + T_{\text{trans}}}, \text{带宽} \right)
$$
其中:

  • W:窗口大小(以帧为单位)
  • L:每帧数据大小(bits)
  • RTT:往返时延
  • $T_{\text{trans}}$:一帧的发送时间

若信道足够好且带宽充足,滑动窗口协议能够接近理论最大吞吐量,其最大吞吐量受限于窗口大小和RTT,即吞吐量 ≈ 带宽时延积。相较于停止等待协议,它更能充分利用信道资源。


五、小结与对比

协议或场景 吞吐量公式 主要影响因素 优缺点
TCP(无丢包) $\frac{\text{窗口大小}}{\text{RTT}}$ RTT、窗口大小 高效,理想状态,带宽利用率高
TCP(有丢包) $\frac{\text{MSS}}{\text{RTT} \cdot \sqrt{p}}$ 丢包率p、RTT、MSS 拥塞控制影响大,吞吐量下降快
停止等待 $\frac{L}{RTT + T_{\text{trans}}}$ RTT、发送时间 简单但效率低,RTT大时浪费严重
滑动窗口 $\min\left( \frac{W \cdot L}{RTT + T_{\text{trans}}}, \text{带宽} \right)$ 窗口大小、RTT、带宽 利用率高,适用于高带宽延迟产品环境