TCP congestion-control questions look unpredictable only when the window is updated mentally. Put one row per round-trip time on paper, record the phase, and apply exactly one rule at each boundary. The sawtooth then becomes bookkeeping rather than guesswork.
Slow start and congestion avoidance
The congestion window, cwnd, limits how much data a TCP sender may have outstanding. Exam questions usually measure it in maximum segment sizes, or MSS. The slow-start threshold, ssthresh, decides which growth rule applies.
In slow start, cwnd grows by roughly one MSS for every acknowledgement. Over a full RTT, all segments are acknowledged, so the window approximately doubles:
1, 2, 4, 8, 16, ... MSS
Despite its name, slow start is the faster growth phase. It starts cautiously from a small window but grows exponentially.
Once cwnd reaches ssthresh, TCP enters congestion avoidance. Its additive-increase rule grows cwnd by about one MSS per RTT:
8, 9, 10, 11, ... MSS
For a numerical, state your observation point. In this post, a row's cwnd is the window at the start of that RTT. A successful row shows the window to be used at the start of the next RTT. This prevents the classic one-round offset.
Timeout versus triple duplicate ACKs
TCP treats two loss signals differently because they suggest different network conditions.
Timeout
A timeout suggests serious congestion. Under the standard exam rule:
Set ssthresh = cwnd / 2 using the window at the loss.
Set cwnd = 1 MSS.
Restart slow start.
If cwnd is odd, follow the rounding convention supplied in the question. Do not silently invent one.
Triple duplicate acknowledgements
Three duplicate ACKs suggest that one segment is missing but later segments are still reaching the receiver. The sender can perform fast retransmit without waiting for a timer.
What happens to cwnd next depends on the TCP variant:
TCP Tahoe: set ssthresh to half and cwnd to 1 MSS, then slow start again.
TCP Reno: set ssthresh to half, enter fast recovery, and follow the stated inflation and deflation rule. A common model temporarily sets cwnd to ssthresh + 3 MSS, then sets it to ssthresh when a fresh ACK arrives.
GATE-style questions usually state a Tahoe-style rule or identify the TCP variant. Follow the convention in the question. A correct Reno answer and a correct Tahoe answer can differ even with the same loss event.
Worked cwnd evolution, RTT by RTT
Suppose the initial cwnd is 1 MSS and the initial ssthresh is 16 MSS. A timeout occurs during RTT 5, when cwnd is 16 MSS. Find the window evolution through RTT 10. At cwnd = ssthresh, use congestion avoidance.
RTT | cwnd at start (MSS) | Phase | Result during RTT | cwnd for next RTT | ssthresh after RTT |
|---|---|---|---|---|---|
1 | 1 | Slow start | ACKs received | 2 | 16 |
2 | 2 | Slow start | ACKs received | 4 | 16 |
3 | 4 | Slow start | ACKs received | 8 | 16 |
4 | 8 | Slow start | ACKs received | 16 | 16 |
5 | 16 | Congestion avoidance | Timeout | 1 | 8 |
6 | 1 | Slow start | ACKs received | 2 | 8 |
7 | 2 | Slow start | ACKs received | 4 | 8 |
8 | 4 | Slow start | ACKs received | 8 | 8 |
9 | 8 | Congestion avoidance | ACKs received | 9 | 8 |
10 | 9 | Congestion avoidance | ACKs received | 10 | 8 |
Check the loss calculation separately. At the timeout, cwnd is 16 MSS, so:
new ssthresh = 16 / 2 = 8 MSS
new cwnd = 1 MSS
The next three successful slow-start rounds take cwnd from 1 to 2, then 4, then 8. Because cwnd has now reached ssthresh, the following round uses additive increase, not another doubling.

Two independent checks confirm the final row. From RTT 6, three doublings reach 8 at the start of RTT 9. Two congestion-avoidance rounds then add one each, leaving cwnd = 10 MSS after RTT 10.
What the question may actually ask
The table supports several question forms:
cwnd at RTT k: decide whether this means the start or end of the round.
Rounds needed to reach a target: count successful updates, not just values in the sequence.
ssthresh after a loss: halve the window at that loss, not the original threshold.
Phase at a given window: compare cwnd with the current ssthresh, which may have changed after loss.
Here is a quick second example. Initial cwnd is 2 MSS, ssthresh is 8 MSS, and there is no loss. After RTT 1, cwnd doubles from 2 to 4. After RTT 2, it doubles from 4 to 8. RTT 3 uses congestion avoidance and ends at 9. RTT 4 ends at 10. Therefore, the sender first reaches 10 MSS after four successful RTTs.
Keep flow control separate from congestion control. The usable sending window is constrained by both the receiver-advertised window and cwnd, but a question that supplies only congestion-control values normally expects you to evolve cwnd. TCP vs UDP: Transport Layer Explained gives the surrounding transport context, while Computer Networks: TCP and UDP Transport Layer MCQs provides adjacent practice.
How GATE tests TCP congestion control
Expect a short event sequence with an initial cwnd, an ssthresh and one or more losses. The task may ask for the window after a named RTT, the new threshold, the number of rounds needed to reach a value, or the difference between timeout and triple duplicate ACK handling.
Write down whether each number is measured before or after the RTT. Also check whether the problem names Tahoe, Reno or its own simplified rule. For the current syllabus and official exam-specific instructions, use the official GATE portal of the organising IIT. GATE CS Exam Preparation Courses & Test Series helps place this topic within Computer Networks.
The short version and next step
Below ssthresh, double cwnd each successful RTT. At or above ssthresh, add about one MSS each RTT. On a timeout, halve the current window to get the new threshold, reset cwnd to 1 MSS, and restart slow start. For triple duplicate ACKs, follow the named variant.
The KnowledgeGate bank contains about 2,200 published Computer Networks questions. Use the GATE Test Series after you can reproduce the worked table without looking back. A fixed table convention is the habit that turns window evolution into dependable marks.




