考虑使用10 Mbps链接的单个TCP (Reno)连接。假设此链路不缓冲数据,且接收方的接收缓冲区比拥塞窗口大得多。每个TCP段的大小为1500字节,发送方和接收方之间连接的双向传播延迟为200毫秒。另外,假设TCP连接始终处于拥塞避免阶段(忽略慢速启动)。
此TCP连接可以达到的段中的最大窗口大小是多少?
所以我们知道连接的吞吐量和延迟,我认为我们应该能够操作下面的公式,这样我们就能够找到窗口的大小。
吞吐量=窗口大小/ RTT
吞吐量* RTT =窗口大小
10 Mbps * 200 msec =窗口大小
我不确定这是否正确。除了这个公式外,我很难找到其他与窗口大小有关的东西。
发布于 2014-04-30 04:24:41
以段的形式表示的最大窗口大小可以达到2^30/ MSS,其中MSS是最大的段大小。2^30 = (2^16*2^14)就像Michael在回答中提到的那样。如果您的网络带宽和延迟产品超过TCP接收器窗口大小,则TCP连接将启用缩放选项,并且大多数OS都支持此功能。缩放支持窗口大小的14位乘法移位。您可以阅读以下内容以获得更好的解释:
发布于 2011-03-09 05:32:00
我想你要问的是,我如何才能在网上得到最终的数据。那样的话,你就很亲密了。吞吐量*RTT单元: B/S *S是电线容纳的数量。忽略PMTU、数据包开销、硬件编码等等,那么Throughput*RTT/PacketSize就会给出估计值。等等,我用的是RTT。我的接收窗口实际上是多少可以装在一个方向的电线上,所以把它分成两半。
如果您的实现不支持窗口缩放,则使用2^16最小化,如果支持,则使用2^30最小化。
发布于 2016-01-02 20:26:27
如果最大发送速率超过链路容量,将丢弃数据包。
(最大窗口大小*1段大小)/ RTT =链路容量
(max窗口大小* 1500*8) / 200* 10 ^-3 =10* 10^-6
您可以为最大窗口大小解决这个问题。
我们除以RTT,因为在这之后,一个ACK将被接收,这样发送者就可以发送更多的段,而不需要增加窗口大小。
https://stackoverflow.com/questions/5208215
复制相似问题