TCP uses a number of mechanisms to achieve high performance and avoid 'congestion collapse' where network performance can fall by several orders of magnitude. These mechanisms control the rate of data entering the network keeping the data flow below a rate that would trigger collapse. Acknowledgments for data sent, or lack of acknowledgments are used by senders to infer network conditions between the TCP sender and receiver. Coupled with timers TCP senders and receivers can alter the behavior of the flow of data. This is more generally referred to as congestion control or network congestion avoidance.
Modern implementations of TCP contain four intertwined algorithms:
1.Slow-start -A requirement for TCP software implementations is a mechanism used by the sender to control the transmission rate, otherwise known as sender-based flow control. This is accomplished through the return rate of acknowledgments from the receiver.
2. Congestion avoidance -There may be a point during Slow Start that the network is forced to drop one or more packets due to overload or congestion. If this happens, Congestion Avoidance is used to slow the transmission rate. However, Slow Start is used in conjunction with Congestion Avoidance as the means to get the data transfer going again so it doesn't slow down and stay slow. In the Congestion Avoidance algorithm a retransmission timer expiring or the reception of duplicate ACKs can implicitly signal the sender that a network congestion situation is occurring.
3.Fast retransmit -When three or more duplicate ACKs are received, the sender does not even wait for a retransmission timer to expire before retransmitting the segment (as indicated by the position of the duplicate ACK in the byte stream. This process is called the Fast Retransmit algorithm.
4 Fast recovery -Since the Fast Retransmit algorithm is used when duplicate ACKs are being received, the TCP sender has implicit knowledge that there is data still flowing to the receiver. Rather than start at a window of one segment as in Slow Start mode, the sender resumes transmission with a larger window, incrementing as if in Congestion Avoidance mode. This allows for higher throughput under the condition of only moderate congestion.