Reliable Data Transfer (cont.)

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?

Pipelining

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

TCP

Detailed TCP segment structure:

32 bit long width