* Dynamics of TCP and selective retransmissions
In our continuing discussion of TCP and selective retransmission of lost packets, we enlisted the help of Gary Kessler, an associate professor at Champlain College in Burlington, Vt., and our resident expert on all things TCP/IP whenever we need a sanity check, and our new friend/reader, Ken Duda, acting president of Arastra. In our discussions with Ken and Gary, Ken offered a couple of great examples of exactly how TCP solves the selective retransmission issue.
According to Ken, “Here are two examples of the exact dynamics. I am assuming that the TCP three-way handshake has happened, and that the congestion window has opened up after slow start, and I am assuming a 1000-byte segment size to simplify the math (1460 is the usual segment size on Ethernet), and that the connection has been idle for a little while, and that SACK is disabled.” He then offers the following sequence of events:
1. The application enqueues 8000 bytes to send (let’s say).
2. TCP launches 8 1000-byte segments into the network.
3. Segment 4 gets dropped somewhere in the network.
4. Segment 1 is received. Recipient sends “ack 1000”.
5. Segment 2 is received. Recipient sends “ack 2000”.
6. Segment 3 is received. Recipient sends “ack 3000”.
7. Segment 5 is received. Recipient sends “ack 3000”.
8. Segment 6 is received. Recipient sends “ack 3000”.
9. Segment 7 is received. Recipient sends “ack 3000”.
10. Segment 8 is received. Recipient sends “ack 3000”.
11. Transmitter receives the acks. After the fourth “ack 3000” (the third duplicate ack), “fast retransmit” kicks in, and the sender retransmits segment 4.
12. Segment 4 is received. Recipient sends “ack 8000”.
13. Transmitter receives the “ack 8000”, and our transmission is complete.
(“Ack” is positive ACKnowledgement that the information was received.)
Note that in contrast to some other legacy protocols where the windows themselves are actually numbered, TCP uses the byte count to number “virtual windows.”
Next time we’ll conclude this discussion (for now) with a second example.




