我有一个我无法理解的概念性问题。TCP 吞吐量可以等于带宽吗?为什么?到目前为止,我所学到的吞吐量是 (3/4)*congwing/RTT。
将其与带宽相等是否公平?我们找到的窗口大小是最小窗口大小吗?
我有一个我无法理解的概念性问题。TCP 吞吐量可以等于带宽吗?为什么?到目前为止,我所学到的吞吐量是 (3/4)*congwing/RTT。
将其与带宽相等是否公平?我们找到的窗口大小是最小窗口大小吗?
这将是一个很长的答案,所以就这样吧。首先,TCP 发送数据的速率取决于三件事——应用程序生成数据、接收窗口、拥塞窗口。有效率将由这三个中的最小值确定。
现在对于这个问题,让我们假设不需要流量和拥塞控制,并且应用程序总是有数据要发送。
现在正如您所指出的,TCP 使用缓冲区来发送数据。缓冲区大小决定了 TCP 在不等待确认的情况下可以发送的最大数据包。
现在,当 TCP 发送任何数据时,数据包将以链路速度(即 100% 链路利用率)传输并到达发送方。发件人将回复一个确认,该确认再次以链接速度传播以到达发件人。因此,此活动期间经过的时间等于 RTT。请注意,在此 RTT 时间内 TCP 发送的流量等于缓冲区大小。平均利用率由给定时间内的总数据集给出。因此利用率是:- 窗口大小/RTT。
现在,如果我们要发送平均利用率等于带宽的数据,那么
窗口大小/RTT = 带宽
因此,如果我们可以有窗口大小 = 带宽 * RTT,那么利用率等于带宽。
现在除了数学,试着理解为什么会这样。TCP 在再次传输之前必须等待等于 RTT 的时间,这就是 TCP 的工作原理。因此,我们可以控制利用率的唯一方法是在链路上一次发送数据包的数量。如果我们想在 RTT 单位时间内以全带宽连续传输,但我们不能连续泵送数据,那么我们将带宽 * RTT 数据单位一起发送。
因此,对于利用率 = 带宽 --> 窗口大小 = 带宽 * RTT