# 50.012 Lecture 6
## Pipelined Protocol
Pipelining means sender allows multiple "in flight" not acknowledged yet packets.
* range of sequence numbers must be increased
* buffering at sender and/or receiver
2 generic forms of pipelined protocols: go-back-N, selective repeat.
### Go-back-N
Sender can have up to N un-ACK-ed packets in pipeline.
Receiver only sends cumulative ACK, it doesn't ACK packet if there's a gap.
Sender has a timer for the oldest un-ACK-ed packet, when timer expires, it will retransmit all un-ACK-ed packets.
There is a k-bit sequence numbers in the packet header.
The "window" is of up to N, consecutive un-ACK-ed packets are allowed.
ACK(n): ACKs all packets up to, including sequence number n. This is known as the cumulative ACK. Consequently, it might result in duplicate ACKs.
### Selective Repeat
Sender can have up to N un-ACK-ed packets in the pipeline.
Receiver sends an individual ACK for each packet.
Sender maintains timer for each un-ACK-ed packet, when timer expires, it will retransmit only the un-ACK-ed packet.
Receiver individually acknowledges each correctly received packet. There are buffer packets for eventual in-order delivery to the upper layer.
Sender only resends packets for which ACKs are not received. There is a timer for each un-ACK-ed packet (on the sender side).
Sender's window is the N consecutive sequence numbers, and it limits the sequence numbers of sent un-ACK-ed packets.