This illustration uses a familiar structure of a sender and receiver positioned side-by-side, with dotted lines extending vertically downwards from each to indicate the respective timelines and send and receive operations depicted with blue arrows going back and forth between the two timelines. Here we see multiple operations, as five packets are being sent by the sender. As an overview, the sender's timeline includes the following actions, in this order from top to bottom:

The receiver's timeline includes the following actions, in this order from top to bottom:

Operations begin at the topmost part of the sender's timeline, at a point labeled "send pkt0." A blue arrow extends diagonally downward to the right, to a point on the receiver's timeline labeled "rcv pkt0." A second operation begins below the first on the sender's timeline, at a point labeled "send pkt1." An arrow extends to the receiver's timeline to a point labeled "rcv pkt1, send ACK1." A third operation begins below the second on the sender's timeline, at a point labeled "send pkt 2." An arrow extends halfway and stops, indicating a loss. A fourth operation begins on the sender's timeline below the third, at a point labeled "send pkt3 (wait)." An arrow extends to the receiver's timeline, to a point labeled "rcv pkt3, discard, send ACK1." Below the fourth operation on the sender's timeline, the sender receives ACK0, which had been sent by the receiver in response to the first operation (rcv pkt0, send ACK0). Below this, the sender sends pkt4; an arrow extends to the receiver's timeline to a point labeled "rcv pkt4, discard, send ACK1." ACK1 is sent. Below "send pkt4" on the sender's timeline, the sender receives ACK1, sent by the receiver in response to operation two (rcv pkt1, send ACK1). Beneath this, the sender sends pkt5; an arrow extends to the receiver's timeline to a point labeled "rcv pkt5, discard, send ACK1." ACK1 is sent. Beneath "send pkt5" on the sender's timeline, we see "pkt2 timeout," which is linked to the previous point on the timeline labeled "send pkt2," and which was indicated as a loss. Below this, pkt2 is sent again; an arrow extends to the receiver's timeline to a point labeled "rcv pkt2, deliver, send ACK2." ACK2 is sent. We see similar operations for pkt3, pkt4, and pkt5.