Livello di trasporto: meccanismi trasferimento dati affidabile, TCP Gaia Maselli Queste slide sono un adattamento delle slide fornite dal libro di testo e pertanto protette da copyright. - Copyright 2013 McGraw-Hill Education Italy srl - All material copyright 1996-2007 J.F Kurose and K.W. Ross, All Rights Reserved 2-1
Protocolli con pipeline Pipelining: il mittente ammette più pacchetti in transito, ancora da notificare m l intervallo dei numeri di sequenza deve essere incrementato m buffering dei pacchetti presso il mittente e/o ricevente Due forme generiche di protocolli con pipeline: Go-Back-N e ripetizione selettiva 3-2
Go back N Schema generale 3-3
Numeri di sequenza e riscontro I numeri di sequenza sono calcolati modulo 2 m, dove m è la dimensione del campo numero di sequenza in bit Ack indica il numero di sequenza del prossimo pacchetto atteso Ack cumulativo: tutti i pacchetti fino al numero di sequenza indicato nell ack sono stati ricevuti correttamente Esempio AckNo=7, i pacchetti fino al 6 sono stati ricevuti correttamente e il destinatario attende il 7 3-4
Finestra di invio La finestra di invio è un concetto astratto che definisce una porzione immaginaria di dimensione massima 2 m -1 con tre variabili, S f, S n, S size. La finestra di invio può scorrere uno o più posizioni quando viene ricevuto un riscontro privo di errori con ackno maggiore o uguale a S f e, minore di S n in aritmetica modulare 3-5
Esempio di scorrimento della finestra di invio 3-6
Finestra di ricezione La finestra di ricezione ha dimensione 1 Il destinatario è sempre in attesa di uno specifico pacchetto, qualsiasi pacchetto arrivato fuori sequenza (appartenente alle due regioni esterne alla finestra) viene scartato La finestra di ricezione può scorrere di una sola posizione: R n = (R n + 1) mod 2 m 3-7
Timer e rispedizione Un timer per il più vecchio pacchetto non riscontrato Allo scadere del timer, Go back N, ovvero vengono rispediti tutti i pacchetti in attesa di riscontro (il destinatario ha finestra di ricezione pari a 1 e non può bufferizzare i pacchetti fuori sequenza) Esempio: se il mittente ha inviato il pacchetto 6 (S n = 7) e scade il timer. Se S f =3 allora i pacchetti 3,4,5,6 non sono stati riscontrati e devono essere rispediti 3-8
FSM mittente 3-9
FSM destinatario 3-10
Go back N in azione (ack cumulativo) 3-11
Go back N in azione (perdita pacchetto dati) 3-12
Dimensione finestra di invio Qual è la relazione fra lo spazio dei numeri di sequenza e la dimensione della finestra? Se dimensione = 2 m : 3-13
Dimensione finestra di invio La Dimensione deve essere 2 m -1 3-14
Ripetizione selettiva r In GBN per un solo pacchetto perso si ritrasmettono tutti i successivi già inviati nel pipeline r Nella ripetizione selettiva, il mittente ritrasmette soltanto i pacchetti per i quali non ha ricevuto un ACK m timer del mittente per ogni pacchetto non riscontrato r Il ricevente invia riscontri specifici per tutti i pacchetti ricevuti correttamente (sia in ordine, sia fuori sequenza) m buffer dei pacchetti, se necessario, per eventuali consegne in sequenza al livello superiore r Finestra del mittente m N numeri di sequenza consecutivi m Limita ancora i numeri di sequenza dei pacchetti inviati non riscontrati 3-15
Schema generale 3-16
Finestra di invio e ricezione per selective repeat Finestra di invio e ricezione hanno la stessa dimensione 0 1 3 3-17
Timer e riscontri Selective repeat usa un timer per ogni pacchetto in attesa di riscontro Quando scade un timer si rinvia solo il relativo pacchetto Riscontro individuale e non cumulativo ma associato al singolo pacchetto: il numero di riscontro indica il numero di sequenza di un pacchetto ricevuto correttamente (non il prossimo atteso) 3-18
FSM mittente Rispedisci pacchetto relativo al timer e riavvia timer Rispedisci pacchetto relativo al timer e riavvia timer 3-19
FSM destinatario 3-20
Esempio 3-21
Dimensione delle finestre invio e ricezione Dimensione > 2 m-1 3-22
Dimensione delle finestre invio e ricezione 3-23
Riassunto dei meccanismi di trasferimento dati affidabile e loro utilizzo Meccanismo Checksum Acknowledgment Numero di sequenza Timeout Finestra scorrevole, pipeling Uso Per gestire errori nel canale Per gestire errori nel canale Ack con errori Perdita pacchetti Perdita pacchetti Maggior utilizzo della rete Gestione canale inaffidabile Miglioramento prestazioni r Meccanismi per realizzare un trasferimento dati affidabile in un contesto generale r TCP come e quali meccanismi usa per realizzare un trasferimento affidabile? 3-24
Protocolli bidirezionali: piggybacking Abbiamo mostrato meccanismi unidirezionali : pacchetti dati in una direzione e ack nella direzione opposta In realtà entrambi viaggiano nelle due direzioni Per migliorare l efficienza dei protocolli bidirezionali viene utilizzata la tecnica del piggybacking: quando un pacchetto trasporta dati da A a B, può trasportare anche i riscontri relativi ai pacchetti ricevuti da B e viceversa 3-25
TCP: Transmission Control Protocol 3-26
Livello di trasporto: TCP r Trasporto orientato alla connessione: TCP 3-27
Alcune porte well-known 3-28
TCP: Panoramica RFC: 793, 1122, 1323, 2018, 2581 r r r r r TRANSMISSION CONTROL PROTOCOL punto-punto: m un mittente, un destinatario flusso di byte affidabile, in sequenza: m pipeline: nessun limite ai messaggi m il controllo di flusso e di congestione TCP definiscono la dimensione della finestra buffer d invio e di ricezione r r r full duplex: m flusso di dati bidirezionale nella stessa connessione m MSS: dimensione massima di segmento (maximum segment size) orientato alla connessione: m l handshaking (scambio di messaggi di controllo) inizializza lo stato del mittente e del destinatario prima di scambiare i dati flusso controllato: m il mittente non sovraccarica il destinatario 3-29
Segmenti TCP Il TCP riceve uno stream di byte dal processo (applicazione) mittente TCP utilizza il servizio di comunicazione tra host del livello di rete che invia pacchetti TCP deve quindi raggruppare un certo numero di byte in segmenti, aggiungere un intestazione e consegnare al livello di rete per la trasmissione 3-30
Struttura dei segmenti 3-31
Flag di controllo 3-32
Struttura dei segmenti TCP Numero del primo byte di dati contenuto nel segmento Numero di sequenza del prossimo byte che il destinatario si aspetta di ricevere 3-33
Connessione TCP Percorso virtuale tra il mittente e il destinatario, sopra IP che è privo di connessione 3 fasi: 1. Apertura della connessione 2. Trasferimento dei dati 3. Chiusura della connessione 3-34
Apertura della connessione: 3 way handshake Random ISN 3.35
Trasferimento dati 3.36
Chiusura della connessione Ciascuna delle due parti coinvolta nello scambio di dati può richiedere la chiusura della connessione, sebbene sia solitamente richiesta dal client, oppure timer nel server (se non si ricevono richieste entro un determinato tempo si chiude la connessione) Doppio scambio di messaggi FIN e ACK 3-37
Chiusura della connessione 3.38
Chiusura della connessione: half close 3.39
Numeri di sequenza e ACK di TCP Numeri di sequenza: m numero del primo byte del segmento nel flusso di byte ACK: m numero di sequenza del prossimo byte atteso dall altro lato m ACK cumulativo D: come gestisce il destinatario i segmenti fuori sequenza? m R: la specifica TCP non lo dice solitamente il destinatario mantiene i byte non ordinati L utente digita C Il messaggio precedente conteneva un solo byte L host riscontra la ricezione della C reinviata Una semplice applicazione Telnet Host A Host B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 piggybacked L host riscontra la ricezione di C e reinvia C tempo N.B. Il numero di sequenza iniziale è scelto a caso Per evitare che un segmento di una precedente connessione ancora presente in rete possa essere interpretato come valido per la nuova connessione 3-40