• ↑↓ pour naviguer
  • pour ouvrir
  • pour sélectionner
  • ⌘ ⌥ ↵ pour ouvrir dans un panneau
  • ←→ pour naviguer
  • esc pour rejeter
⌘ '
raccourcis clavier

The Problem

Sliding window allows sending multiple packets, but how should lost packets be handled? A simple approach is needed that doesn’t require the receiver to buffer out-of-order packets.

Core Idea

A sliding window protocol where the sender retransmits ALL unacknowledged packets from the lost packet onward when a packet is lost, even if later packets were received correctly.

How It Works

  1. Sender maintains a window of N unacknowledged packets
  2. Receiver only accepts in-order packets, discarding out-of-order packets
  3. Receiver sends ACK for the last in-order packet received (cumulative ACK)
  4. If sender doesn’t receive ACK for a packet before timeout, it retransmits that packet and ALL subsequent packets
  5. Simple for receiver but can be wasteful — retransmitting packets that arrived correctly

Visual Explanation

G Sender Sender Loss Packet 1 LOST Sender->Loss Send 0,1,2,3 Retrans Retransmit 1,2,3 (2 and 3 arrived ok!) Sender->Retrans Timeout on 1 Rcvr Receiver ACK: 0, then 0, 0... Loss->Rcvr Rcvr->Sender ACK 0 only

Key Properties

  • Simpler receiver: no need to buffer out-of-order packets
  • Cumulative ACKs: single ACK can acknowledge multiple packets
  • Potentially wasteful: retransmits packets that arrived correctly
  • Window size typically limited to 2^n - 1 (n = sequence number bits)

Connections

Edge Cases & Gotchas

  • High packet loss causes many unnecessary retransmissions
  • Window size must be less than sequence number space/2 to avoid ambiguity
  • Receiver simplicity comes at cost of bandwidth efficiency