What TCP does
Challenges of reliable data transfer:
- Over a channel with bit errors:
- Receiver detects errors and requests transmission
- Over a lossy channel with bit errors
- Some data are missing, others corrupted
- Receiver cannot always detect loss
- Over a channel that may reorder packets
- Receiver cannot distinguish loss from out-of-order
Retransmission hints:
-
Acknowledgments from receiver
- Positive: ACK (uh-huh, I heard you)
- Negative: NACK (please repeat that)
-
Sender retransmits
- After not receiving an ACK
- Or after receiving a NACK
-
Timeout by sender
- Don’t wait forever without some acknowledgment
-
Detects bit errors with checksum
- If receiver detects corrupt data, requests retransmission
-
Detects missing data with sequence number
- Used to detect a gap in the stream of bytes
- And for putting data back in order
-
Recover from lost data: retransmission
- Sender retransmits lost or corrupted data
- 2 main ways to detect lost packets
Automatic Repeat reQuest (ARQ) helps you do this