TCP的拥塞控制是为了防止过多的数据注入网络,使得网络中的路由器或者链路过载。TCP拥塞控制的四种算法分别为慢开始,拥塞避免,快重传,快恢复。
慢开始
TCP连接双方都维护了一个拥塞窗口和一个慢开始门限值,当tcp双方建立连接时,将拥塞窗口大小设置为1个数据段(1MSS)(Maximum Segment Size),随后包的每一次往返(每次收到确认应答),窗口大小加倍,这会使窗口按指数方式增长。慢开始是指一开始向网络中注入的数据段少,而不是指拥塞窗口的增长速度。当拥塞窗口达到慢启动门限时,启动拥塞避免算法。
拥塞避免
慢启动门限值,初始值一般为65535,拥塞避免是指当拥塞窗口达到慢启动阈值,拥塞窗口的值不再以指数上升,而是以加法线性增加,每个rtt(一次往返经历的时间,不是一个恒定值)拥塞窗口大小+1,以此来避免拥塞。当出现超时重传或者快速重传时,拥塞避免分别做以下处理:
- 拥塞避免对于超时重传的处理:
超时重传时,将慢启动阈值设置为当拥塞窗口一半的大小,并将窗口大小设为初值1,然后重新进入慢开始过程。(即发生超时重传后就启动慢开始算法) - 拥塞避免