Modulo 2 – U.D. 4 – Lez. 5 (parte I) Flusso TCP (parte I) Ernesto Damiani – Sistemi di elaborazione dell'informazione
Flusso TCP: piano degli argomenti Tipi di flusso di dati Interattivo Con grandi quantità di dati (Bulk Transfer) Tipi di controllo Timeout/Ritrasmissione Tecniche di gestione della congestione Slow Start/Congestion Avoidance
Dati interattivi: pacchetti piccoli Modulo 2 – U.D. 4 – Lez. 5 (parte I) Dati interattivi: pacchetti piccoli Esempio Terminale connesso via rete (Telnet/Rlogin): invio di ogni sequenza di dati interattiva in un pacchetto TCP separato; il lato server rimanda al mittente quello stesso carattere perché venga visualizzato sullo schermo locale. Grandezza di questi pacchetti TCP che contengono un singolo byte di dati: dati di 1 byte; 20 byte (almeno) per l’intestazione TCP; 20 byte per l’intestazione IP; < 3% sono dati! Ernesto Damiani – Sistemi di elaborazione dell'informazione
Trasporto di dati in piggyback Ogni sequenza di dati interattiva viaggia in un pacchetto TCP separato. Il lato server invia a sua volta quello stesso carattere perché venga visualizzato sullo schermo locale. L’ACK dei dati inviati dal terminale al server è trasportato in piggyback sull’eco dei dati inviati dal server al terminale.
Trasporto in piggyback di ACK Host A Host B Utente digita ‘C’ Seq=42, ACK=79, data = ‘C’ B invia ACK per la ricezione di ‘C’, e rimanda l’eco ’C’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80 Tempo Semplice scenario telnet
ACK ritardati Se si desidera eseguire il piggyback negli ACK si ritarda un po’ l’ACK sperando che arrivino dati nell’altra direzione (e magari in arrivi multipli per un ACK cumulativo). Host A Host B Utente digita ‘C’ Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ L’ACK non viene inviato immediatamente, ma ritardato sperando di poter eseguire il piggyback A invia ACK per la ricezione di ‘C’ Seq=43, ACK=80 Semplice scenario telnet
Algoritmo di Nagle (1) Se una connessione TCP ha dati in sospeso per cui non è ancora stato ricevuto un ACK, non vengono inviati segmenti piccoli. Si aspetta invece di ricevere un ACK e poi si inviano tutti i dati raccolti fino a quel punto. Se si accumulano troppi dati, si va avanti e si invia senza aspettare ACK. Si adatta alle condizioni di rete: se gli ACK ritornano rapidamente (come su una LAN), i dati verranno inviati rapidamente; se gli ACK ritornano lentamente (come su una rete geografica), al mittente verranno accumulati dati da inviare tutti insieme.
Modulo 2 – U.D. 4 – Lez. 5 (parte I) Algoritmo di Nagle (2) Host A Host B Utente digita ‘C’ Seq=42, ACK=79, data = ‘C’ B invia ACK per la ricezione di ‘C’, e rinvia l’eco di ‘C’ Utente digita ‘A’ (il software TCP aspetta ACK) Utente digita ‘T’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80, data = “AT” riceve AT in un unico segmento TCP Seq=79, ACK=45, data = ‘AT’ FINE Ernesto Damiani – Sistemi di elaborazione dell'informazione