TCP的拥塞控制
TCP模块为了防止过多的数据注入网络,使网络中的路由器或链路不致于过载。以此提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性而采取的控制手段。拥塞控制包含四部分内容:慢启动、拥塞避免、快速重传和快速恢复。
慢启动
网络传输刚开始时,并不知道网络的实际情况,所以采取一种试探的方式控制数据的发送速率。
慢启动阶段,数据的发送速率以指数方式增长,即拥塞窗口的增长,每次都是收到确认报文段数量的2倍。可以看出慢启动并不慢,拥塞窗口增长的速度很快。所以为其设置了一个慢启动门限,当达到门限时,就进入到拥塞避免阶段。
拥塞避免
当拥塞窗口的大小采用慢启动方式增长到慢启动门限时,就进入到拥塞避免阶段。
拥塞避免阶段不再以指数形式增长拥塞窗口,而是每经过一个往返时间RTT就将发送方的拥塞窗口+1,使其增长速度减缓。如果发生网络拥塞,比如丢包时,就将慢启动门限设为原来的一半,然后将拥塞窗口设置为1,开始执行慢启动算法。(较低的起点,指数级增长)。
快速重传
假设发送方发送的报文段分别为:M1,M2,M3,M4,M5,M6,当接收方收到M1和M2后,M3报文段丢失,接着收到的M4,M5,M6都不做处理,而是每接收到一个报文段就对M2重复确认,发送方接收到重复的三次确认报文段,就对其后的报文段进行重新发送,而不需要等待超时时间到达。当快速重传后,立即进入到快速恢复阶段。
快速恢复
将慢启动门限设置为原来的一半,然后将拥塞窗口设置为现在的慢启动门限值,不再执行慢启动算法,而是直接进入拥塞避免阶段。是发送窗口成线性方式增大。