在TCP协议中,通过慢开始、拥塞避免、快重传、快恢复4个机制来实现TCP的拥塞控制。对于以上机制,数据的发送方需要维护慢开始门限值、拥塞窗口的大小、接收方窗口大小。
慢开始
TCP连接开始时,将拥塞窗口的的初始值为1,然后向接收方发送拥塞窗口大小的数据,当受到接收方的确认信号,将拥塞窗口的大小改成之前的两倍(若拥塞窗口的大小大于接收窗口,则拥塞窗口就等于接收窗口)。当拥塞窗口的大小大于等于慢开始门限值时,则拥塞窗口不再指数增加,而是线性增加。
拥塞避免
当网络发送拥塞,即发送方长时间未收到接收方的确认信号,则会触发超时重传。此时则会认为当前网络发生了拥塞,会将慢开始门限设置成当前拥塞窗口的大小的二分之一,然后将拥塞窗口的大小重新设为1,重复慢开始动作。
快重传
所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。要求接收方立即发送确认信号,即使收到了失序的报文端也要立即发送对已收到的报文段的重复确认(接收方接收到的报文序号不是连续的,则会重复发送上一次有序报文确认信号)。而发送方一旦收到连续3个的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为当前网络拥塞而将拥塞窗口置为1。
快恢复
发送方一旦收到3个重复确认,就知道现在是某个报文段丢失了,于是不启动慢开始算法,而执行快恢复算法:发送方将慢开始门限和拥塞窗口的大小调整至当前窗口的一半,然后开始开始执行拥塞避免动作。