Networks are inherently unreliable — packets get lost, corrupted, duplicated, or arrive out of order. Applications like file transfer and email need guarantees that data arrives correctly and completely.
A set of mechanisms ensuring data is delivered completely, in order, without errors, despite network unreliability.
- Sequence numbers track packet order and detect missing packets
- Acknowledgments (ACKs) confirm successful receipt
- Retransmission of lost or corrupted packets after timeout
- Error detection via checksums or CRC
- Flow control prevents overwhelming the receiver
- Ordered delivery through receiver buffering and reordering
- Guaranteed delivery through retransmission
- Preserves packet ordering
- Detects and recovers from packet loss, corruption, duplication
- Requires state maintenance (sequence numbers, timers, buffers)
- Built from: Sequence Numbers — enables ordering and loss detection
- Built from: Acknowledgment — confirms delivery
- Builds into: TCP — implements reliable data transfer
- Builds into: Connection-Oriented Service — core feature
- Contrasts with: Best Effort Delivery — no guarantees
- Ack loss can cause unnecessary retransmission (handled by duplicate detection)
- Retransmission timeout tuning is critical — too short causes unnecessary retrans, too long adds latency
- Duplicate packets must be detected and discarded