第五章 运输层

TCP的拥塞控制

拥塞控制和流量控制的区别

主要的区别在于:控制发送速率的 目的 不同。

流量控制的目的是:

当接收方处理接收信息的速率很慢,需要发送方调小发送的速率。

拥塞控制的目的是:

当信道十分繁忙拥塞,需要发送方调小发送的速率,以减轻信道压力。

TCP的拥塞控制方法

四种算法:

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

1. 慢开始和拥塞避免

慢开始:

每收到一个对新的报文的确认后,可以把拥塞窗口增加最多一个smss的数值。

也就是说:

拥塞窗口cwnd每次增加量= min(N,SMSS)

例子:p242

慢开始门限ssthresh:

当cwnd小于门限时,使用慢开始算法

当cwnd大于门限时,使用拥塞避免算法

当cwnd等于门限时,两种均可

拥塞避免算法:

cwnd线性增长(人话:cwnd每次加1、2、3或者。。。。。)

例子:p243

2. 快重传和快恢复算法

快重传:

如果接收方仅仅只是少收了一个包,但是一直没有给发送方发送确认的话,那么发送方就会认为出现了超时并误认为网络拥塞。而实际上只是少发了一个包而已。

那么,这就需要接收方即使没收到这个包也得给一点反馈。这个反馈就是:无论收到后续的包有多少,只要不是它接下来想要的包,那就一直发送想要的包前一个包的确认。

当发送方连续三次收到这样的确认之后,就不会认为是网络拥塞了(收到了反馈,说明网络正常)。

快恢复:

使门限ssthresh = cwnd / 2

设置拥塞窗口cwnd = ssthresh

然后开始执行慢恢复算法