TCP拥塞控制
提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性,这就是拥塞控制。
拥塞控制包括四部分:慢启动、拥塞避免、快速重传、快速恢复
发送端向网络一次连续写入的数据量,我们称为SWND(Send Window,发送窗口).但是发送端最终以TCP报文段来发送数据,所以SWND的大小限制了能连续发送的TCP报文段数量。这些TCP报文段的最大长度(仅数据部分)称为SMSS(Sender Maximum Segment Size,发送者最大段大小),其值一般等于MSS。
发送端需要合理的选择SWND的大小,如果SWND太小,会引起明显的网络延迟;反之,如果SWND太大,则容易导致网络拥塞。所以还需要引入一个称为拥塞窗口(Congestion Window,CWND)的状态变量
(1)慢启动
发送方维持一个拥塞窗口CWND的状态变量。它的大小取决于网络的拥塞程度,并且在动态的变化,发送方会让自己的发送窗口等于这个拥塞窗口。
发送方控制拥塞窗口的原则是:
(1)只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。
(2)但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
慢启动算法:因为不清楚网络状况,所以需要进行试探,将发送窗口逐渐增大,也就是逐渐增大拥塞窗口的数值。在刚开始发送的时候,先把