Before you can read the parent note, you need to see what every symbol stands for. We build them one at a time, each on top of the last. Nothing is used before it is drawn.
Picture a sender on the left and a receiver on the right, joined by a long tube (the network). The sender drops numbered balls (packets) into the tube. Each ball takes some time to travel across, and the receiver sends back a tiny receipt (an ACK) for each one.
Read the picture: on the far left is the SENDER (blue), on the far right the RECEIVER (green). The white rectangle between them is the network tube. The three yellow balls inside the tube are packets that have been sent but not yet acknowledged — those three are in flight. The blue arrow shows packets moving right; the red arrow shows ACKs (receipts) coming back left. The green double-arrow on the left marks one full down-and-back cycle: that height is one RTT (defined next).
WHY the topic needs this: congestion happens because too many balls are inside the tube at once and they jam up at a narrow point (a router). So the whole game is counting balls in flight. Every other symbol below is a way to count or limit them.
Look again at figure s01 — the green double-arrow on the left edge. One ball goes right, its ACK comes back left. The total time for that there-and-back journey is the RTT.
Real data isn't one giant blob; it's cut into equal chunks. The biggest chunk TCP will put in one packet is the MSS.
WHY: the topic constantly grows the window by "one full-size ball" at a time. Thinking in MSS-units turns messy byte counts into simple integers like 1,2,3,… — you'll see exactly this when the window rules appear in Section 3 and after.
Now the heart of it. There are two separate limits on how many balls may be in flight, protecting two different things.
Read the picture: the blue bar is the cwnd gate (the network's limit); the red bar is the rwnd gate (the receiver's limit). The yellow arrow of data must squeeze through both gates to reach the receiver. Whichever gate is narrower is the one that actually stops you — that is the meaning of the min in the formula below.
Now that cwnd is defined, notice the pattern the parent uses everywhere: it grows cwnd by adding one MSS at a time (written cwnd += MSS, meaning "allow one more full-size ball in flight"). This is exactly why we measure cwnd in MSS-units from Section 2 — each step is a clean +1.
The difference between these two is exactly the topic Flow Control vs Congestion Control — rwnd is flow control, cwnd is congestion control. This whole note is about cwnd.
The sender grows cwnd in two gears: a fast gear when far from the limit, a slow gear when near it. The dividing line is ssthresh (whose starting value we set in Section 3).
WHY needed: doubling forever would overshoot the capacity and cause a big loss. ssthresh is the marker that says "stop doubling, tiptoe from here."
Two mathematical shapes appear. You must recognise both. Because the second one needs the loss-factor β, we introduce β right here (it returns in full context in Section 7).
Read the picture: the blue dotted-line curve is slow start's 2n — it starts at 1 and doubles each RTT, shooting upward. The yellow curve is CUBIC's window function C(t−K)3+Wmax. The green dashed line marks Wmax, the old ceiling. The red dotted vertical line at t=K is the inflection: left of it the yellow curve is concave (rising but flattening — cautious, "we're near where it broke"), right of it it turns convex (accelerating upward — exploring for new bandwidth).
Before reading the formula, meet its two ingredients:
The parent uses β (met above) and the phrase AIMD. Here is the full picture, drawn.
Read the picture: the blue line is cwnd over time. It climbs in a slow straight ramp (additive increase, +1 per RTT), then at each red triangle a loss happens and cwnd is instantly cut by multiplication (multiplicative decrease). The height just before each cut is labelled Wmax in yellow — the peak the flow remembers. The repeating rise-then-drop pattern is the famous sawtooth.
Related deeper ideas you'll meet later: the size of a "full pipe" is the Bandwidth Delay Product (bandwidth × RTT); the queues that overflow are studied in Queueing and Router Buffers; and modern alternatives that use delay instead of loss are covered by BBR Congestion Control.