I protocolli TCP/UDP prof.: Alfio Lombardo
Formato del messaggio TCP
Stream oriented protocol Application process Application process write bytes read bytes TCP send buffer TCP receiver buffer segments
Il TCP interpreta lo stream dati come sequenza di ottetti Lo stream dati è suddiviso in segmenti ... ... ... Header TCP (Port address) TCP data TCP data IP data Header IP (IP address) Header TCP (Port address) TCP data IP data Header IP (IP address) Header TCP (Port address) Header IP (IP address) IP data
Apertura di connessione: Problemi. utilizzare identificatori delle connessioni sempre diversi (ad es. un numero sempre crescente)
Apertura di connessione: Problemi. TCP 1 TCP 2 Seqnum =X SYN =1 Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Tempo ?
Instaurazione della connessione three way handshake TCP 1 TCP 2 Seqnum =X SYN =1 Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Tempo Seqnum=X+1 Acknum =Y+1 ACK=1 SYN=1
Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Seqnum=X+1 Acknum =Y+1 ACK=1 RST=1 three way handshake: duplicato CR TCP 1 TCP 2 Seqnum =X SYN =1 Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Tempo ? Seqnum=X+1 Acknum =Y+1 ACK=1 RST=1
three way handshake: duplicato CR, Ack ? ? TCP 1 TCP 2 Tempo Seqnum =X SYN =1 Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Tempo ? Seqnum=X+1 Acknum =z ACK=1 SYN=1 ? Seqnum=X+1 Acknum =Y+1 ACK=1 RST=1
Instaurazione simultanea TCP 1 TCP 2 Seqnum =X SYN =1 Seqnum =Y SYN =1 Tempo Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Seqnum=X Acknum =Y+1 ACK=1 SYN=1
Chiusura di connessione TCP 1 TCP 2 L’applicazione 1 chiude la connessione Seqnum =X FIN =1 Il TCP 2 informa l’applicazione 2 della richiesta di disconnessione Tempo Acknum =X+1 ACK =1 L’applicazione 2 chiude la connessione Seqnum =Y Acknum=X+1 FIN =1 Acknum =Y+1 ACK =1
Chiusura di connessione: three way handshake TCP 1 TCP 2 L’applicazione 1 chiude la connessione Seqnum =X FIN =1 Il TCP 2 informa l’applicazione 2 della richiesta di disconnessione e questa decide di chiudere la connessione Tempo Seqnum=Y Acknum =X+1 ACK=1 FIN =1 Acknum =Y+1 ACK =1
Chiusura di connessione: three way handshake con perdite
Chiusura simultanea TCP 1 TCP 2 L’applicazione 1 chiude la connessione Seqnum =X FIN =1 L’applicazione 2 chiude la connessione Seqnum =Y FIN =1 Il TCP 2 informa l’applicazione 2 della richiesta di disconnessione Il TCP 1 informa l’applicazione 1 della richiesta di disconnessione Acknum =X+1 ACK =1 Tempo Acknum =Y+1 ACK =1
Ack e Ritrasmissioni Esercizio consigliato: TCP Viene attivato il Seqnum=5 Data=100 Acknum=5000 Seqnum=105 Data=200 Acknum=5000 Seqnum=5000 Data=100 Acknum=305 Viene attivato il timer Seqnum=305 Data=1000 Acknum=5100 Seqnum=5100 Data=500 Acknum=305 Time-out !!! ritrasmissione Seqnum=305 Data=2000 Acknum=5600 Seqnum=5600 Data=100 Acknum=2305
Distribuzione dei tempi di round-trip Probabilita’ Probabilita’ 0 10 20 30 0 10 20 30 40 50 Tempo (ms) Tempo (ms) Livello di Data Link Livello di Trasporto
Algoritmo di Jacobson (1988) RTT = Round Trip Time RTT = a RTT + (1 - a) M a =7/8 T = b RTT b = f(s)
Gestione di flusso Write 2K Write 3K Tx bloccato Esercizio consigliato: Controllo di Flusso Write 2K Seq=0 Data=2K 2K 4K TCP TX TCP RX Ack =2048 WIN =2048 4K Write 3K Seq=2048 Data=2K 1K Tx bloccato Ack =4096 WIN =0 Prelievo 2K Ack =4096 WIN =2048 2K Seq=4096 Data=1K 3K
algoritmo di Nagle (Silly windows) quando un'applicazione genera dei dati addizionali che devono essere spediti su una connessione sulla quale sono stati già spediti dei dati in precedenza, e questi dati non sono ancora stati confermati, i dati addizionali verranno posti nel buffer di trasmissione, ma nessun segmento verrà spedito finché non vengono raccolti dati a sufficienza per trasmettere un segmento della massima dimensione permessa. Se, alla ricezione dell'ack dei dati trasmessi in precedenza, non è stato raccolto un numero sufficiente di bytes per spedire un pacchetto della massima dimensione, la trasmissione di tutto il contenuto del buffer avrà comunque luogo.
Parametri utilizzati per il controllo di congestione Finestra permessa = minimo tra Fissata dal ricevitore Finestra d controllo di flusso Finestra di congestione Fissata dal trasmettitore
Rilevazione degli stati di congestione Rumore su una linea di trasmissione Scadenza di un timeout = Congestione di un nodo
Numero di trasmissioni 60 50 40 30 20 10 timeout Finestra di congestione (Kbyte) timeout 1 3 5 7 9 11 13 15 17 19 21 23 25 Numero di trasmissioni
Numero di trasmissioni Slow Start 60 50 40 30 20 10 Congestion Avoidance (Additive increase) timeout soglia Finestra di congestione (Kbyte) Slow start Slow start 1 3 5 7 9 11 13 15 17 19 21 23 25 1 3 5 7 9 11 13 15 17 19 21 23 25 Numero di trasmissioni
Numero di trasmissioni Fast Recovery timeout 60 50 40 30 20 10 Additive increase timeout Multiplicative decrease Finestra di congestione (Kbyte) soglia Slow start 1 3 5 7 9 11 13 15 17 19 21 23 25 Numero di trasmissioni
Servizi offerti da UDP Trasferimento dati appartenenti a diverse applicazioni residenti nello stesso host (multiplexing) Controllo d’errore (opzionale)
Processo Applicativo A Processo Applicativo B UDP A UDP B 1. Send (n ottetti) 3. Deliver (n ottetti) UDP SERVICE PROVIDER 2. DATA UDP A UDP B
UDP Header, data, Pseudo header 0 16 31 source port destination port 0 16 31 source port destination port length checksum data UDP è l’altro protocollo utilizzato nell’architettura Internet come protocollo di livello 4. Esso è un protocollo, alternativo a TCP, di tipo connectionless. UDP è un protocollo molto più semplice di TCP ed è utilizzato quando l’affidabilità di TCP non è richiesta. Non avendo funzioni di sicurezza, controllo di flusso o correzione degli errori, UDP svolge principalmente il ruolo di multiplatore/demultiplatore per la ricezione e la trasmissione di dati IP e dati delle applicazioni Aggiunge solo due funzionalità a quelle di IP: multiplexing delle informazioni tra le varie applicazioni, tramite il concetto di porta checksum (opzionale) per verificare l’integrità dei dati. UDP non prevede un controllo di flusso e, al contrario di TCP, non è in grado di adattarsi autonomamente a variazioni di traffico. Non prevede meccanismi di ritrasmissione in caso di errori, quindi eventuali meccanismi di ritrasmissione, se necessari, devono essere garantiti e gestiti direttamente dall’applicativo d’utente, o comunque da un protocollo di livello superiore. E’ presente un meccanismo di controllo dell’errore (fatto su tutto il pacchetto e non solo sull’intestazione), ma il protocollo non si preoccupa di correggere in alcun modo l’errore: semplicemente, scarta il pacchetto. Header, data, Pseudo header
Protocolli di Trasporto emergenti in INTERNET Real-time Transport Protocol (RTP) Real-time Transport Control Protocol (RTCP)
APPLICAZIONE Livello di trasporto RTP RTCP UDP IP
Trasporto end-to-end dell’informazione Macrolezione 7 Trasporto end-to-end dell’informazione