Flusso TCP (parte I) 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 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! 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 B Host A Utente digita ‘C’ B invia ACK per la ricezione di ‘C’, e rimanda l’eco ’C’ 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 B Host A Utente digita ‘C’ A invia ACK per la ricezione di ‘C’ L’ACK non viene inviato immediatamente, ma ritardato sperando di poter eseguire il piggyback 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. Algoritmo di Nagle Host A (2) Host B Utente digita ‘C’ Utente digita ‘A’ (il software TCP aspetta ACK) Utente digita ‘T’ (il software TCP aspetta ACK) B invia ACK per la ricezione di ‘C’, e rinvia l’eco di ‘C’ riceve AT in un unico segmento TCP FINE