Summary
Transport layer (4)
Reliable Data Transfer
- unidirectional data transfer (control info flow both directions)
- Finite State Machines

rdt1.0
Note
reliable transfer over a reliable channel
- no bit errors
- no loss of packets

rdt2.
Note
Channel with bit errors
- channel may flip bits in packet
- checksum to detect bit errors
- Recovery Methods: Sender sends one packt, then waits for receiver response
- acknowledgements (ACKs): receiver tells sender that packet received OK
- negative acknowledgements (NACKs): receiver tells sender that packet received with errors, then sender retransmits packet on receipt of NAK.

Flaw
If ACK/NAK corrupted, sender doesn’t know what happened, yet can’t retransmit as it possible duplicate. Fix in rdt2.1
rdt2.1
- In case that ACK/NAK corrupted, sender retransmits packet, but receiver discards duplicate packets.
- To handling duplicates, sender send with sequence number and receiver discards duplicate packets
Sender
- send with sequence number added to packet
- 2 sequence of (0,1) will suffice

Receiver
- check if received packet is dublicate

rdt2.2
Note
a NAK-free protocol used in TCP
- Instead of NAK, receiver sends ACK for last packet received OK (with sequence number)
- Duplicate ACK at sender indicates that packet or ACK corrupted, so sender retransmits current packet.
Sender

Receiver

rdt3.0
Note
channels with errors and loss
performance issue
Sender waits reasonable amount of time for ACK
- Retransmits if no ACK received in this time
- if packet (or ACK) delayed:
- retransmission will be duplicate-check sequence number and discaard
- receiver specify sequence of packet being ACKed
- use countdown timer to interrupt after reasonable amount of time

Example

rdt3.1
Note
pipelined protocols operation
- pipelining: sender allows multiple “in-flight” yet-to-be-ACKed packets
- Range of sequence numbers must be increased
- Buffering at sender and/or receiver

Go-Back-N (no buffer at receiver)
- sender
- can have up to N unACKed packets in pipeling
- ignore duplicate ACKs
- timeout (n): retransmit packet n and all higher sequence number packets in window
- receiver
- send ACK for correctly-received packet so far with highest in-order sequence number
- on receipt of out-of-order packet
- discard
- re-ACK packet with highest in-order sequence number

Selective Repeat (Buffer at receiver)
- sender:
- times-out/retransmits individually for unACKed packets
- sender window: N consecutive sequence number
- receiver
- individually ACKes all correctly received packets

