stop-and-wait
Picture two people passing a single ball back and forth, but with a strict rule: you may not throw the next ball until the other person has caught the last one and shouted got it. Stop-and-wait is exactly this rule applied to data. The sender transmits one frame, then STOPS and WAITS for an acknowledgment before it is allowed to send the next. It is the simplest possible reliable protocol.
Step by step: the sender sends frame 0 and starts a timer. If a correct ACK 0 comes back, it sends frame 1; if the timer expires first (the frame or its ACK was lost), it resends frame 0. A single sequence bit — alternating 0, 1, 0, 1 — is enough, because there is only ever one frame outstanding at a time. That one bit lets the receiver detect a duplicate: if frame 0 arrives again because its ACK was lost, the receiver sees the repeated number, discards the duplicate, but re-sends the ACK so the sender can move on. This is sometimes called the alternating-bit protocol.
Stop-and-wait is correct and easy to reason about, but it can be painfully slow. Because only one frame is ever in flight, the sender spends most of its time idle, waiting out a full round trip for each frame. On a link with high bandwidth and long delay — a satellite link, say — you might send a frame in a microsecond and then wait hundreds of milliseconds for the ACK, leaving the expensive link almost entirely empty. Its efficiency is roughly one frame per round-trip time, which is why pipelined protocols like go-back-N and selective repeat exist: to keep many frames in flight at once.
On a link that can send a frame in 1 microsecond but has a 100 ms round-trip time, stop-and-wait ships one frame, then idles for 100 ms awaiting the ACK. The link sits empty over 99.99% of the time — utilization near zero, even though the link itself is fast.
One frame per round trip wastes a fast, long-delay link almost entirely.
Stop-and-wait needs only a 1-bit sequence number, but its throughput is capped at one frame per round-trip time regardless of link speed. Pipelining (go-back-N, selective repeat) exists precisely to fix this idle time.