I protocolli TCP/UDP prof.: Alfio Lombardo Formato del messaggio TCP Stream oriented protocol Application Application process process write read bytes bytes TCP TCP send buffer receiver buffer segments • Il TCP interpreta lo stream dati come sequenza di ottetti • Lo stream dati è suddiviso in segmenti ... Header TCP (Port address) Header IP (IP address) ... Header TCP (Port address) TCP data IP data ... Header IP (IP address) Header TCP (Port address) TCP data IP data Header IP (IP address) TCP data 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 Tempo Seqnum=Y Acknum =X+1 ACK=1 SYN=1 ? Instaurazione della connessione three way handshake TCP 1 TCP 2 Seqnum =X SYN =1 Tempo Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Seqnum=X+1 Acknum =Y+1 ACK=1 SYN=1 three way handshake: duplicato CR TCP 1 TCP 2 Seqnum =X SYN =1 Tempo Seqnum=Y Acknum =X+1 ACK=1 SYN=1 ? Seqnum=X+1 Acknum =Y+1 ACK=1 RST=1 three way handshake: duplicato CR, Ack TCP 1 TCP 2 Seqnum =X SYN =1 Tempo Seqnum=Y Acknum =X+1 ACK=1 SYN=1 ? 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 Tempo Seqnum =Y SYN =1 Seqnum=Y Acknum =X+1 ACK=1 SYN=1 Seqnum=X Acknum =Y+1 ACK=1 SYN=1 Chiusura di connessione TCP 1 Tempo L’applicazion e 1 chiude la connessione TCP 2 Seqnum =X FIN =1 Acknum =X+1 ACK =1 Il TCP 2 informa l’applicazione 2 della richiesta di disconnessione L’applicazion e 2 chiude la connessione Seqnum =Y Acknum=X+1 FIN =1 Acknum =Y+1 ACK =1 Chiusura di connessione: three way handshake TCP 1 Tempo L’applicazione 1 chiude la connessione TCP 2 Seqnum =X FIN =1 Seqnum=Y Acknum =X+1 ACK=1 Acknum =Y+1 ACK =1 FIN =1 Il TCP 2 informa l’applicazione 2 della richiesta di disconnessione e questa decide di chiudere la connessione Chiusura di connessione: three way handshake con perdite Chiusura simultanea L’applicazione 1 chiude la connessione TCP 1 TCP 2 Seqnum =X FIN =1 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 Tempo L’applicazione 2 chiude la connessione Acknum =X+1 ACK =1 Acknum =Y+1 ACK =1 Ack e Ritrasmissioni Esercizio consigliato: TCP 1 TCP TCP 2 Seqnum=5 Data=100 Acknum=5000 Seqnum=105 Data=200 Viene attivato il timer Acknum=5000 Seqnum=5000 Data=100 Acknum=305 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 0 10 T1 Probabilita’ Probabilita’ T 20 30 Tempo (ms) Livello di Data Link 0 10 20 30 T2 40 Tempo (ms) Livello di Trasporto 50 Algoritmo di Jacobson (1988) RTT = Round Trip Time RTT = a RTT + (1 - a) M T = b RTT a =7/8 b = f(s) Gestione di flusso Esercizio consigliato: Write Controllo di 2K Flusso T C P Write 3K T X 4K Seq=0 Data=2K Ack =2048 WIN =2048 Seq=2048 Data=2K 1K T C P R X 2K 4K Ack =4096 WIN =0 Tx bloccato Prelievo 2K Ack =4096 WIN =2048 Seq=4096 Data=1K 2K 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 Finestra d controllo Finestra di congestione di flusso Fissata dal trasmettitore Fissata dal ricevitore Rilevazione degli stati di congestione Rumore su una linea di trasmissione Scadenza di un timeout = Congestione di un nodo Finestra di congestione (Kbyte) 60 timeout 50 40 timeout 30 timeout 20 10 0 1 3 5 7 9 11 13 15 Numero di trasmissioni 17 19 21 23 25 Finestra di congestione (Kbyte) Slow Start 60 Congestion Avoidance (Additive increase) 50 40 soglia timeout 30 20 Slow start 10 Slow start 0 1 3 5 7 9 11 13 15 Numero di trasmissioni 17 19 21 23 25 Finestra di congestione (Kbyte) Fast Recovery timeout 60 50 Additive increase timeout 40 Multiplicative decrease 30 soglia 20 Slow start 10 0 1 3 5 7 9 11 13 15 Numero di trasmissioni 17 19 21 23 25 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 3. Deliver (n ottetti) 1. Send (n ottetti) UDP SERVICE PROVIDER UDP A 2. DATA UDP B UDP 0 16 31 source port destination port length checksum data •Header, •data, •Pseudo header Protocolli di Trasporto emergenti in INTERNET Real-time Transport Protocol (RTP) Real-time Transport Control Protocol (RTCP) APPLICAZIONE Livello di RTP RTCP trasporto UDP IP Macrolezione 7 Trasporto end-to-end dell’informazione