Let's say the cwnd currently is set to 100. And TCP (Reno) sends out the whole window. And the first packet gets lost. So basically the window should be set to approx half. But won't that cause the other unacked packets to be sent again. What does tcp do in this scenario?

  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer.
    – Ron Maupin
    Apr 6, 2018 at 2:09

1 Answer 1


The congestion window (CWND) would be cut in half, which in your example would be 50, and now your ssthresh. The CWND would be 1 due to the packet loss. The other packets would be sent again in subsequent RTTs but only after the lost packet has been sent and an ACK received. So, packet 100 would be sent, and when an ACK is received for said packet, then packets 101 and 102 would be retransmitted, so on and so forth.

In the attached figure, see the red boxes. The protocol I described takes place no matter the state: slow start, congestion avoidance, or fast recovery.

Finite State Machine for TCP Reno

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.