Lezione 18TCP, algoritmi parte 1
In questa pagina 3
Data: giovedì 3 aprile 2025 · Fonte: slide del corso Internet, UniPD (TCP: algoritmi, parte 1; per la connessione e il controllo di flusso anche le slide sul livello di trasporto del corso 2022-23)
Argomenti trattati
- Livello di trasporto: comunicazione processo-processo, porte e socket, multiplexing e demultiplexing, la quaterna (porta sorgente, porta destinazione, IP sorgente, IP destinazione) che identifica una connessione.
- UDP: servizio senza connessione, intestazione di 8 byte, checksum con pseudo-intestazione, quando conviene usarlo.
- Caratteristiche di TCP: orientato alla connessione, flusso di byte, affidabile, MSS e MTU (MSS byte su Ethernet), ACK ritardati (), finestra di invio , finestra scorrevole e prodotto banda-ritardo, throughput massimo .
- Controllo di congestione, idea: cause e conseguenze della congestione (collasso), ginocchio e precipizio, efficienza ed equità (indice di Jain).
- Slow start e congestion avoidance: ssthresh, crescita esponenziale (raddoppio a ogni RTT) e lineare (+1 a ogni RTT), regole del corso (cwnd, ssthresh, timeout).
- Rilevamento delle perdite: timeout (RTO) e dupACK; Old Tahoe.
Teoria
- Livello di trasporto - porte e multiplexingIl livello di trasporto (transport layer) offre la comunicazione logica end-to-end tra processi applicativi di host diversi, ed è realizzato solo negli host finali, non nei router. Il livello di rete consegna al computer giusto (indirizzo IP), il trasporto consegna al processo giusto (numero di porta di 16 bit, 0-65535). Una porta più un indirizzo IP formano un socket; la quaterna (IP sorgente, porta sorgente, IP destinazione, porta destinazione) identifica una connessione. I servizi sono: comunicazione processo-processo, indirizzamento, incapsulamento/decapsulamento, multiplexing/demultiplexing e, se il protocollo è affidabile, controllo di errore, di flusso e di congestione. I protocolli sono UDP (senza connessione, inaffidabile), TCP (con connessione, affidabile) e SCTP (combina i due).Livello di trasporto - porte e multiplexing →
- Protocollo UDPUDP (User Datagram Protocol) è il protocollo di trasporto senza connessione e inaffidabile: rispetto a IP aggiunge soltanto la comunicazione processo-processo (numeri di porta) e un controllo d'errore facoltativo. L'intestazione è di soli 8 byte (porta sorgente, porta destinazione, lunghezza, checksum). Il checksum copre pseudo-intestazione (indirizzi IP, protocollo 17, lunghezza), intestazione e dati, ed è il complemento a uno della somma a 16 bit; se vale 0 significa "non calcolato", e un risultato 0 si trasmette come 0xFFFF. UDP non ha connessione, numeri di sequenza, controllo di flusso, di errore né di congestione: si sceglie per i messaggi brevi (DNS, DHCP, RIP, SNMP) e per le applicazioni in tempo reale, dove conta non aggiungere ritardo.Protocollo UDP →
- TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →
- TCP - controllo di congestioneLa congestione nasce quando collegamenti veloci alimentano un collegamento lento: le code dei router si riempiono, i pacchetti si perdono o ritardano e, nel caso peggiore, la rete collassa (quasi solo ritrasmissioni). TCP controlla la propria finestra di congestione cwnd con il feedback delle perdite (timeout o tre ACK duplicati): slow start (cwnd raddoppia a ogni RTT) fino alla soglia ssthresh, poi congestion avoidance (+1 MSS per RTT); a ogni perdita ssthresh = W/2. Le varianti si distinguono per come reagiscono ai tre dupACK: Tahoe riparte da cwnd = 1 dopo la ritrasmissione rapida; Reno usa il fast recovery (ssthresh = cwnd/2, cwnd = ssthresh + 3, +1 per ogni altro dupACK); NewReno gestisce gli ACK parziali e recupera più perdite nella stessa finestra; SACK riscontra i blocchi ricevuti e ritrasmette solo quello che manca.TCP - controllo di congestione → — slow start, congestion avoidance, Old Tahoe
Esercizi
- Esercizio - TCP, slow start e messaggio da 18 kB su un collegamento da 8 Mbps
- Esercizio - TCP, slow start e 120 segmenti su un collegamento da 32 Mbps
Lezione precedente: Lezione 17 · Protocolli di instradamento e ICMP · Lezione successiva: Lezione 20 · TCP, algoritmi parte 2