APP 1 通过 IP 网络通过 TCP 连接向 APP 2 发送数据。单向延迟为 10ms。TCP 连接带宽为 100 Mbps。系统以设置为 4,000 字节的 WINDOW 启动。此后,APP 2 将在确认的基础上向发送方 APP 1 通告 4,000 字节的 WINDOW。APP 2 维护一个 16,000 字节的缓冲区,它可以以 200,000 字节/秒的速率消耗接收到的数据。我如何计算它的吞吐量?
RCV 缓冲区大小 / RTT = 最大 TCP 吞吐量
RTT = 2 * 10ms = 20 * 10^-3
WINDOW 大小可以增加到 16,000 字节。那么 16,000 字节是 RCV 缓冲区大小吗?
因此,吞吐量 = (16,000 * 8)/(20 * 10^-3) / 8 = 800,000 字节/秒。
但是,这个结果比APP 2的消费率还要大。这看起来太奇怪了。如果将 16,000 替换为 4,000,则答案为 200,000。这看起来正常吗?