understanding tcp confestion control


I am trying to understand calculations revolving around SMSS, cwnd, and IW.

I had to evaluate the results of slow-start on a line with a round trip time of 10msec and no congestion and conclude how long it takes before the first full window can be sent? I had the following info:

Initial Window = 4380 bytes  Receive window = 24 KB  Maximum segment size (SMSS) = 2 KB = 2048 bytes  

The results in the answer suggested the following:

Step 1: cwnd = 4380 bytes (2 segments sent/ack)

Step 2: cwnd = 8476 bytes (4 segments sent/ack)

Step 3: cwnd = 16668 bytes (8 segments sent/ack)

Step 4: cwnd = 33052 bytes (12 segments sent/ack)

In conclusion, it takes 3 round-trip times (i.e 30 ms) until the full receive window of 24 K can be used.

Now I know that during slow start, the congestion window is incrmented by SMSS bytes for each ack but I don’t quite understand how the results are derived. What formula is used to double the bytes every time and how can we conclude the number of segments?