流量控制
当发送方发送速率大于接收方的处理速率时,接收方会把数据包放入缓冲区,当缓冲区满了,就只能将数据包丢弃。为了应对这种情况,流量控制就可以大展身手了
流量控制的作用对象是发送方和接收方
拥塞控制
当接收方网络拥塞,未能及时ACK时,导致发送方超时重传大量数据,使网络更加拥塞。为了应对这种情况,拥塞控制就可以大战身手了,拥塞控制用来调节网络负载
拥塞控制的作用对象是整个网络
- 慢启动阶段
TCP连接刚建立时,cwnd(拥塞窗口)大小为1,发送方可以发送拥塞窗口大小的数据,当发送方接收到接收方的ack确认包时cwnd拥塞窗口大小翻倍,可以发送拥塞窗口大小的数据,当所有数据确认包都返回了,拥塞窗口继续翻倍
当拥塞窗口达到慢启动的阈值时开始进行拥塞避免 - 拥塞避免
将发送方接收到接收方的确认包后,拥塞窗口大小不在翻倍增加,而是转变为每次加1,同时阈值加1,当收到3个重复ACK时进行快速重传 - 快速重传
将阈值减半,拥塞窗口的大小减半,继续进行拥塞避免
(注:TCP Tahoe当出现丢包时直接将拥塞窗口设置为1,会导致发送速率不稳定,目前已经废弃)