I recently studied TCP congestion control, but one question bothers me ...
If I understand everything correctly, TCP will not send NEW data if it is allowed by cwnd (overload window) and rwnd (receive side window). In other words:
if(flightSize < MIN(cwnd, rwnd))
{
}
Where flightSize is the amount of data that has been sent but not yet acknowledged.
Suppose TCP goes by sending data and increasing cwnd accordingly. Say cwnd = [10 full packages] and flightSize == cwnd. Then there is packet loss on the network, and the sender retransmission timer goes off. How / When does New Reno retransmit unconfirmed data?
Here is my current understanding / misunderstanding:
When the timer goes off, cwnd will reset to [1 full packet], the oldest sent but unconfirmed packet will be resent, rto will be doubled, and the retransmit timer will reset. Therefore, if we say that rto was 1 second, when the timer went out, it will be updated to 2 seconds, and the retransmission timer will start again with a wait time of 2 seconds.
This is why I am confused:
TCP . ACKed, TCP - , cwnd , FlightSize. ? , , ? , ? reset FlightSize ?
RFC, , TCP. , , - ...
:
, TCP SACK.
, TCP ack ack ( retrasmit) 4- ack ( ). , , TCP 3 ?