运输层
第五章 运输层
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
然后开始执行慢恢复算法
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Enderman_1's blog!