Controllo di flusso del livello di trasporto (TCP Sliding Window) spiegato
Windowing = Controllo di flusso dinamico in TCP
Nel Livello di Trasporto (Livello 4 OSI), il windowing è il meccanismo che permette al ricevitore di dire al mittente "quanto altro posso accettare adesso" — prevenendo l'overflow del buffer e ottimizzando il throughput.
Concetti chiave
- Dimensione finestra (rwnd): campo a 16 bit nell'intestazione TCP (0–65.535 byte). Scalato tramite opzione Window Scale (WS) fino a 1 GB (RFC 7323).
- Finestra di invio: Byte che il mittente può trasmettere non confermati = min(cwnd, rwnd).
- Numeri di sequenza: Ogni byte è numerato; ACK = prossimo byte atteso.
Funzionamento della finestra scorrevole
- Il mittente trasmette fino alla dimensione della finestra.
- Il ricevitore elabora, invia ACK con
rwndaggiornato. - La finestra "scorre" in avanti — nuovi byte diventano idonei.
- Se
rwnd = 0, il mittente si ferma (zero-window probe persiste).
Migliorie chiave
- ACK ritardato: Il ricevitore aspetta fino a 200 ms o 2 segmenti → riduce overhead ACK.
- ACK selettivo (SACK): Segnala blocchi non contigui ricevuti → ritrasmette solo i dati mancanti.
- Finestra adattativa:
rwndsi restringe/cresce con pressione buffer;cwnd(finestra di congestione) reagisce a perdita/ECN.
Perché è importante
- Senza windowing: stop-and-wait → 1 RTT per segmento → throughput terribile su link ad alto BDP (satellite, fibra a lunga distanza).
- Con windowing: piena utilizzazione del tubo — il mittente mantiene dati "in volo" = Banda × RTT.
Analogia
Brigata di secchi: dimensione del secchio del ricevitore = finestra. Il mittente versa finché il secchio è pieno; il ricevitore svuota (elabora) e segnala "più spazio". Nessuna fuoriuscita, mani inattive.
Il windowing è il motivo per cui un link 1 Gbps su 100 ms RTT può effettivamente erogare ~1 Gbps — non 14,6 kbps (stop-and-wait).