On duplicate deliveries, do we need new mechanisms?
If we stay with stop-and-wait, no. Duplicate copies will just be labeled with the same sequence number.
However, if we don’t have stop-and-wait, then we just need to expand sequence number space.
Stop-and-Wait works fairly well, but efficiency is horrible. What if we send more packets back-to-back?
Go-Back-N:
Sender can have up to $N$ “unacked” packets in pipeline
Receiver only sends cumulative ACK
Sender has timer for oldest “unacked” packets, resend all
Selective Repeat:
Sender can have up to $N$ “unacked” packets
Receiver sends individual ack
Maintains timer for each unacked packet
When timer expires, retransmit only that unacked packet
Detailed TCP segment structure:
32 bit long width