TCP流量控制与拥塞控制

  为了更好地对传输层进行拥塞控制,因特网建议标准定义了如下四种算法:慢启动、拥塞避免、快重传和快恢复。算法

1 接收窗口rwnd与拥塞窗口cwnd

  发送方在肯定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。由于,TCP协议要求发送方维护如下两个窗口:网络

  (1)接收窗口rwnd:接收方向发送方告知的当前还能接收的数据容量,通常所说的窗口大小即rwnd;事件

  (2)拥塞窗口cwnd:发送方根据本身估算的网络拥塞程序而设置的窗口值,反映了网络的当前容量。原理

  发送窗口的上限应当取接收窗口rwnd和拥塞窗口cwnd中较小的一个。程序

2 慢启动与拥塞避免

  (1)慢启动方法

  作法:TCP链接刚创建,开始发送TCP报文段时,先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。而在每收到一个对新的报文段的确认后,将cwnd加1,即增大一个MSS。技术

  使用慢启动算法后,每通过一个RTT,拥塞窗口cwnd就会加倍,即cwnd的大小呈指数形式增加。这样慢启动算法一直把拥塞窗口cwnd增大到一个规定的慢启动门限ssthresh(阈值),而后改用拥塞避免算法。数据

  (2)拥塞避免协议

  作法:发送端的拥塞窗口cwnd每通过一个RTT就会增长一个MSS的大小,而不是加倍,使cwnd按线性规律缓慢增加,而当出现一次超时(网络拥塞)时,则令慢启动门限ssthresh等于当前cwnd的一半(但不能小于2),且此时拥塞窗口cwnd又变为1。时间

  可概括以下:

  (1)当cwnd<ssthresh时,使用慢启动算法;

  (2)当cwnd>ssthresh时,中止使用慢启动算法而改用拥塞避免算法。

  (3)当cwnd=ssthresh时,既可使用慢启动算法,也可以使用拥塞避免算法(一般作法)。

3 快重传与快恢复

  快重传和快恢复算法是对慢启动和拥塞避免算法的改进。

  (1)快重传

  有两种事件会致使TCP对报文段进行重传:超时和冗余ACK。

  超时即超过了规定的时间没有收到接收端对于某报文段的ACK。

  快重传技术使用冗余ACK方法来实现对未收到的报文段的快速重传:当发送方连续收到三个重复的ACK报文时,表示该ACK对应的下一个报文段丢失,则没必要等待那个报文段设置的重传计时器,直接重传该报文段。

  (2)快恢复

  原理:当发送端链接收到连续三个冗余ACK(即发生超时)时,就将慢启动门限ssthresh设置为出现拥塞时发送方cwnd的一半,与慢启动不一样之处是它把cwnd的值设置为慢启动门限ssthresh改变后的数值,而不是1,而后开始执行拥塞避免算法。

  因为跳过了cwnd从1起始的慢启动过程,因此被称为快恢复。

相关文章
相关标签/搜索