计算机网络第3章-TCP协议(2)

TCP拥塞控制

TCP拥塞控制的三种方式:

慢启动、拥塞避免、快速恢复

慢启动

当一条TCP连接开始时,cwnd的值是一个很小的MSS值,这使得初始发送速率大约为MSS/RTT。

在慢启动状态,cwnd的值以1个MSS开始并且每当传输的报文段首次被确认就增加一个MSS,直

到出现超时或者丢包现象。

每增加一个MSS的长度,就会多发送一个MSS长度的报文段。

因此慢启动状态下,发送速率是以指数形式增加的。

例如:

一个MSS/RTT的速率被记作一个α。

则第一次传输后为2α。(2的一次方)

第二次传输后为4α。(2的二次方)

第三次传输后为8α(2的三次方)

计算机网络第3章-TCP协议(2)_第1张图片

慢启动的结束也是很有意思的:

如果存在一个拥塞,则TCP发送方将cwnd重新置为1并重新开始慢启动过程。

并且将第二个状态变量ssthresh(“慢启动阈值”)设置为cwnd/die

第二种方式是:

速率直接与ssthresh相关联,即检测到拥塞的时候,ssthresh就减少一半,当到达或者超过

ssthresh时,结束慢启动并且TCP转移到拥塞避免模式。

最后一种方式:

检测到三个亢余ACK,TCP就执行一种快速重传,并且进入到快速恢复状态。

拥塞避免

一旦进入拥塞避免状态,cwnd的值大约为上一次遇到阻塞的值的一半。

这也导致TCP无法通过一个RTT就将cwnd的值翻倍,而时每个RTT只将cwnd的值增加一个MSS,

而不是像慢启动一样进行指数形式增长。

拥塞避免的结束和慢启动差不太多,如果出现超时,cwnd的值被置为1个MSS。

丢包出现,ssthresh的值被置为cwnd的一半。

快速恢复

在快速恢复中,对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个亢余ACK,cwnd增

加一个MSS。最终,当对丢失报文段的最后一个ACK到达时,TCP在降低cwnd后进入拥塞避免状态。

但是如果出现超时,快速恢复在执行如同在慢启动和拥塞避免中相同的动作后,迁移到慢启动状态。

总结

TCP拥塞控制在每个RTT时间内,cwnd线性(加性)增加1MSS,然后出现三个亢余ACK事件时,

cwnd减半(乘性减)。

因此TCP拥塞控制通常被称为“加性增、乘性减。”

下面是TCP拥塞控制造成的一种“锯齿”行为。

计算机网络第3章-TCP协议(2)_第2张图片

你可能感兴趣的:(计算机网络,计算机网络,tcp/ip,网络)