1、流量控制:
①流量控制解决的是发送方与接收方双方速度不匹配的问题。比如,如果发送方发送数据过快,接收方来不及接收,就会出现数据的丢失。
②解决方法:
TCP的流量控制是采用滑动窗口实现的。接收方在返回的数据中会包含自己能够接受的接收窗口的大小,以控制发送方的数据发送速率。由此看来,流量控制是由接收方控制的。
2、拥塞控制:
①拥塞控制是防止过多数据注入到网络中,导致网络阻塞。拥塞控制是一个全局的过程,它控制的是整个网络中数据的传输,涉及到所有的主机和其他降低网络性能的因素。
②解决方法:
- 慢开始:在TCP刚连接成功并开始发送TCP报文的时候,令拥塞窗口cwnd=1,即一个最大报文段长度MSS。接下来每收到一个新的报文段确认cwnd就加一,逐步增大拥塞窗口大小。但是每经过一个传输轮次(往返时延RTT),cwnd加倍,即呈指数增长。直到cwnd增长到一个固定的门限值后,就改用拥塞避免算法。
- 拥塞避免:cwnd每经过一个往返时延就增加一个最大报文段长度,即cwnd线性增长。当出现一次超时(网络拥塞)时,令慢开始门限值等于当前cwnd的一半。
- 快重传:使用冗余ACK检测丢包的发生。快重传是不必等待重传计时器超时,当发送方连续收到三个重复的ACK报文时,就直接重传接收方尚未收到的报文。
- 快恢复:送方连续收到三个重复的ACK报文时,就把慢开始的门限值设置为发生拥塞时窗口cwnd大小的一半。与慢开始不同的是,cwnd的值直接从慢开始门限改变后的值开始,然后执行拥塞避免算法使窗口线性增长,而不必使cwnd从1开始增长。所以叫快恢复。