Two hosts, the segments between them, and the sequence and acknowledgment numbers that tie each ACK to the data it confirms
Host AHost B
Segments so far
Reading the diagram
Time runs down the diagram. Each host is a vertical line, and every segment is a diagonal arrow from the host that sent it to the host that received it: it leaves at one moment and arrives at a later one, lower down, so it slopes.
A segment from Host A to Host B, sloping down to the right. Host B's segments are blue and slope down to the left.
A dashed arrow is still on the wire. It ends at the now line, and its card carries Deliver and Lose; Step delivers the oldest one.
A red cross is a lost segment: it never reached the other host.
The dot where an arrow arrives is what the receiver did with it: green accepted, amber dropped or held (a duplicate, out of order, outside the window), red refused or reset.
The card on an arrow is the segment's number, its flags, seq, ack and data-len. acks #2 names the segments this ACK acknowledges; dup ack repeats the previous ACK. Click a card for the whole header.
A green dotted curve appears when you hover or click a card, and joins an ACK to the segments it acknowledges.
A purple dotted curve joins a segment to the ACK that acknowledged it.
An amber dotted curve joins a retransmission to the segment it resends; its card says resends #4.
A state name beside a host's line is its TCP state from that moment on.
The now line is the present. Everything below it, faded, is the future that Step replays; acting from here discards it.