R. Cusani - F. Cuomo, Telecomunicazioni - Data link layer: Protocolli, Maggio 2010

Documenti analoghi
Controllo di Congestione in Reti Internet Docente: Vincenzo Eramo

4 - Il livello di trasporto

Esercitazione. Livello di Trasporto [Capitolo 3]

I protocolli UDP e TCP

Livello trasporto in Internet

Reti di Calcolatori in Tecnologia IP

Le Reti Informatiche

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Transmission Control Protocol (TCP) Andrea Detti

Livello trasporto in Internet


Internet (- working). Le basi.

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Livello Trasporto. Liv. Applic. Liv. Transport. Transport Entity. Liv. Network. Trasporto

Livello trasporto: TCP / UDP. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35.

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Transmission Control Protocol

Standard: OSi vs TCP/IP. Il livello di trasporto. TCP e UDP. TCP: Transmission Control Protocol. TCP: funzionalità

Il livello trasporto Protocolli TCP e UDP

L architettura di TCP/IP

Internet Parte II Romeo Giuliano 1

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

Livello di Trasporto

Strato di Trasporto Multiplazione a livello di trasporto

Uso di UDP per client-server UDP. Porte e multiplexing. TCP e UDP. Connessione TCP (o messaggio UDP) Caratteristiche delle porte TCP e UDP

Parte II: Reti di calcolatori Lezione 13

Il livello di trasporto

Gestione della Connessione in TCP

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete

Introduzione (parte III)

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Livello Trasporto Protocolli TCP e UDP

Il livello di Trasporto del TCP/IP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00

Capitolo 3 Livello di trasporto

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

TECN.PROG.SIST.INF. TCP/IP Livello TRASPORTO Roberta Gerboni

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

Modulo 11 Livelli Transport e Application del modello TCP/IP

Strato trasporto. Per capir meglio la cosa analizziamo il seguente esempio:

Protocollo TCP/IP & Indirizzamento IP

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

Avoidance, Fast Retransmit, And Fast Recovery

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Modulo 11. Il livello trasporto ed il protocollo TCP Indice

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Capitolo 1 - parte 1. Corso Reti ed Applicazioni Mauro Campanella

Reti di Calcolatori:

RETI TELEMATICHE Lucidi delle Lezioni Capitolo II

Capitolo 3 - parte 4. Corso Reti ed Applicazioni Mauro Campanella

Il firewall Packet filtering statico in architetture avanzate

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

Cenni sul protocollo IP

Prof. Ing. Maurizio Casoni Dipartimento di Ingegneria dell Informazione Università degli Studi di Modena e Reggio Emilia

Procedura operativa per la gestione della funzione di formazione classi prime

Internet e protocollo TCP/IP

Il protocollo IP (Internet Protocol)

TCP/IP un introduzione

Capitolo 10 Lo Strato di Trasporto in Internet

Internet Protocol Versione 4: aspetti generali

12.5 UDP (User Datagram Protocol)

Lan Ethernet. Appunti a cura del prof. Mario Catalano

Sono dispositivi che consentono di interconnettere tra loro due o piu reti, permettendo:

Protocolli di trasporto in Internet: TCP e UDP

INDIRIZZI IP SUBNETTING

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Venerdì 18 Febbraio 2005, ore 9.30

Una definizione di rete

SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Capitolo 7: Internetworking TCP/IP

DA SA Type Data (IP, ARP, etc.) Padding FCS

Corso di Sistemi di Elaborazione delle informazioni

Reti di Calcolatori:

Reti di Calcolatori ed Internet. Reti di Calcolatori ed Internet. Reti di Calcolatori. Reti di Calcolatori. Architettura dei Servizi di Rete

autonomous system: un insieme di host e router, che appartengono a una o più sottoreti, sotto la stessa autorità amministrativa.

WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

TCP/IP. Principali caratteristiche

Reti di calcolatori. Architettura delle reti. Mezzi trasmissivi

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 14 Settembre 2005, ore 9.00

Reti di Calcolatori. Il software

Un semplice commutatore a pacchetto

Esercizi Reti di TLC A Parte II. Indirizzamento IP. Esercizio 9.1. Esercizio 9.2. Luca Veltri

Reti di Telecomunicazione Lezione 8

Politecnico di Bari. Facoltà di Ingegneria Elettronica. Corso di Reti di Telecomunicazioni

Esercizi Reti di TLC Parte II LAN. Esercizio 5.2. Esercizio 5.1. Luca Veltri

INFORMATICA. Prof. MARCO CASTIGLIONE. Istituto Tecnico Statale Tito Acerbo - PESCARA

Protocolli di Comunicazione

CRITERI DI VALUTAZIONE DEL PROTOCOLLO TCP

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Lavoro & Previdenza La circolare su temi previdenziali e giuslavoristici

TCP/IP : Livello 3 di rete ARP (Address Resolution Protocol)

IP Internet Protocol

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Reti basate sulla stack di protocolli TCP/IP

POSTALIZZAZIONE Manuale d'uso del modulo di postalizzazione di RipartoIG

Livello Network e Livello Transport nel TCP/IP. IP Livello Network

Concetti fondamentali delle reti

agenda Transport Layer in Internet protocolli TCP / UDP Scopi TCP - UDP Francesco Dalla Libera

Transcript:

1 21: Transport layer: TCP e UDP Sommario 2 Trasporto in TCP/IP User Datagram Protocol (UDP) Transmission Control Protocol (TCP) MTU, RTU, MSS Controllo della congestione Header TCP 1

Trasporto in TCP/IP 3 TCP/IP utilizza due protocolli di trasporto UDP (User Datagram Protocol): protocollo inaffidabile, connection- less TCP (Transmission Control Protocol): connection oriented, affidabile Entrambi forniscono una interfaccia agli applicativi per la trasmissione dei dati, ed utilizzano IP per il trasporto dei dati (e, nel caso di TCP, delle informazioni di controllo del protocollo) Esiste una interfaccia di programmazione, chiamata socket, standardizzata per il linguaggio C (esistono implementazioni di interfacce al socket anche per altri linguaggi, ad esempio per il perl ) Questo rende possibile scrivere applicazioni specifiche (home-made) che debbano far uso della rete di trasmissione dati in aggiunta agli applicativi standardizzati già esistenti (generalmente forniti con il sistema operativo) Indirizzamento del trasporto in TCP/IP 4 Le applicazioni che utilizzano il TCP/IP si registrano sullo strato di trasporto ad un indirizzo specifico, detto porta, pari a un numero di 16 bit (da 1 a 65535; la porta 0 non e utilizzata) permette ad una applicazione di identificare l applicazione remota a cui inviare i dati TCP/IP permette alla applicazione di registrarsi su una porta definita dalla applicazione (come nel caso dei server) o su una qualunque porta libera scelta dal livello di trasporto (spesso e il caso dei client) Per rendere funzionali i servizi di utilizzo diffuso, TCP/IP prevede che determinati servizi utilizzino dal lato server delle porte ben definite il valore dei numeri di porta vengono specificati negli RFC che definiscono il protocollo delle applicazioni in questione 2

Indirizzamento del trasporto in TCP/IP 5 Esiste una autorita centrale, lo IANA (Internet Assigned Numbers Authority), che pubblica la raccolta dei numeri di porta assegnati alle applicazioni negli RFC (http://www.iana.org) IANA centralizza la gestione anche di altro, come: assegnazioni dei numeri di protocollo dei diversi protocolli di trasporto utilizzati nel protocol number di IP l assegnazione dei domini di primo livello (nomi) del DNS User Datagram Protocol (UDP) 6 Realizza un servizio di consegna inaffidabile dei dati a destinazione Riceve i dati dalla applicazione e vi aggiunge un header di 8 byte, costruendo cosi il segmento da inviare L applicazione definisce (l indirizzo di rete e) la porta di destinazione, ed in ricezione UDP recapita il campo dati al destinatario UDP non si preoccupa di sapere nulla sul destino del segmento inviato, ne comunica alla applicazione qualsiasi informazione Costituisce una semplice interfaccia ad IP (che fornisce lo stesso tipo di servizio), i più esegue multiplexing del traffico delle applicazioni su IP tramite il meccanismo delle porte a cui sono associate le applicazioni 3

UDP orientato al datagramma 7 A differenza di TCP, UDP si occupa di un datagramma per volta quando una applicazione passa dati ad UDP, UDP li maneggia in un unico segmento, senza suddividerlo in pezzi il segmento di massime dimensioni che UDP puo gestire deve stare interamente nel campo dati del pacchetto IP il segmento viene passato ad IP che eventualmente lo frammenta, ma a destinazione UDP ricevera il datagramma intero l applicazione di destinazione ricevera quindi il blocco completo di dati inviato dalla applicazione che li ha trasmessi in un unico segmento Il segmento UDP 8 E costituito da un header di lunghezza fissata (8 byte) piu il campo dati, che deve avere dimensione massima tale da stare dentro il campo dati di IP poiche il pacchetto IP puo essere lungo 65535 byte, il campo dati UDP puo essere lungo al massimo (65535 8 lunghezza header IP) byte UDP header presenta 4 campi di due byte source e destination port: porte di associazione alle applicazioni mittente e destinataria dei dati length: lunghezza del segmento in byte (compreso l header) 4

UDP header 9 checksum: contiene una checksum del segmento completo (viene aggiunto uno pseudo-header con le informazioni degli indirizzi IP di sorgente e destinazione) Checksum è opzionale, l applicativo può decidere di non utilizzarlo (in questo caso il campo e riempito con zeri) molti applicativi non loutilizzano il per motivi di efficienza se viene utilizzato, un errore provoca la rimozione del segmento senza che vengano prese altre iniziative Caratteristiche di UDP 10 Benché inaffidabile, UDP è appetibile per molte applicazioni Può utilizzare trasmissione multicast o broadcast TCP e un protocollo orientato alla connessione, quindi per definizione non puo gestire una comunicazione tra più di due entità è molto leggero, quindi efficiente la dimensione ridotta dell header impone un overhead minimo, ed una rapidita di elaborazione elevata la mancanza di meccanismi di controllo rende ancora più rapida l elaborazione del segmento e non introduce ritardi dovuti ad eventuali ritrasmissioni 5

Applicativi che utilizzano UDP 11 Applicativi che necessitano di trasmissioni broadcast Applicativi dove la perdita di una porzione di dati non e essenziale, ma richiedono un protocollo rapido e leggero streaming voce/video Applicativi che si scambiano messaggi (e non flussi di byte) di piccole dimensioni, e che non risentono della perdita di un messaggio interrogazione di database sincronizzazione oraria in questi casi la perdita della richiesta o della risposta provoca un nuovo tentativo di interrogazione Applicativi che utilizzano UDP 12 Applicativi che necessitano di risparmiare l overhead temporale provocato dalla connessione, ed implementano a livello di applicazione il controllo della correttezza dei dati ad esempio applicativi che scambiano dati con molti host, rapidamente, per i quali dover stabilire ogni volta una connessione e peggio che ritentare se qualcosa va storto 6

Applicativi standard su UDP 13 Sono molti, ed in aumento Gli applicativi che storicamente utilizzano UDP sono DNS, sulla porta 53 TFTP (Trivial File Transfer Protocol), sulla porta 69 NetBIOS Name Service (anche WINS) sulla porta 137 SNMP (Simple Network Management Protocol) sulla porta 161 NTP (Network Time Protocol) sulla porta 123 NFS (Network File System) via portmap Transmission Control Protocol 14 TCP e stato progettato per offrire un flusso di byte affidabile orientato alla connessione TCP offre i seguenti servizi allo strato applicativo: protocollo orientato alla connessione affidabilita dei dati (controllo, ritrasmissione, ordinamento) gestione del controllo di flusso gestione della congestione 7

Trasmissione dei dati in TCP 15 TCP trasmette dati in segmenti, ciascuno costituito da un header ed un campo dati TCP considera i dati da trasmettere come flusso di byte (a differenza di UDP che opera in termini di messaggi) TCP utilizza buffer in trasmissione e ricezione per la gestione dei dati TCP non invia necessariamente i dati appena li riceve dalla applicazione: per motivi di efficienza puo tenere nei buffer i dati da inviare fino a che non ce ne siano abbastanza per evitare messaggi troppo piccoli L informazione sul numero di sequenza e quindi riferito al byte trasmesso, ed e utilizzato sia per l acknowledge che per il riordinamento e la ritrasmissione Dimensione del segmento TCP 16 Il segmento TCP e costituito da un header di 20 byte (piu campi opzionali, come in IP) seguito dal campo dati La dimensione massima del segmento TCP deve stare nel campo dati di un pacchetto IP poiche il pacchetto IP ha lunghezza massima 65535 byte, con un header di 20 byte, il campo dati di TCP avra valore massimo 65495 byte (ma in caso di utilizzo di intestazione estesa sara meno) 8

MTU (Maximum Transfer Unit) 17 Ogni rete e caratterizzata dall avere un valore massimo della dimensione del campo dati nel frame a livello 2 Questa lunghezza si chiama MTU (Maximum Transfer Unit) nel caso di Ethernet, la MTU e di 1500 byte Ogni volta che IP deve inviare un pacchetto piu grande della MTU deve frammentare Per motivi di efficienza TCP tiene conto di questo, e la MTU solitamente definisce la dimensione massima del segmento TCP (meno i 20 byte dell header IP) va osservato che TCP non sa nulla sulla eventuale intestazione estesa di IP, che potrebbe ridurre il campo utile nel pacchetto IP: in questo caso si avrebbe frammentazione MRU: Maximum Receive Unit, MSS (Maximum Segment Size) 18 Per tentare di raggiungere la massima efficienza, i due lati della connessione TCP si scambiano le informazioni delle rispettive MTU, in modo che il trasmittente possa correttamente dimensionare i segmenti in base al valore minimo tra le due MTU (quella in ricezione viene chiamata MRU: Maximum Receive Unit) per definire la MSS (Maximum Segment Size) MSS = min(mtu,mru) 20 byte In caso di mancanza di informazioni (dipende dalle implementazioni del TCP) viene utilizzato come valore di default 536 byte (il valore di default del pacchetto IP: 576 bytes meno i 20 byte di header IP e meno i 20 byte dell header TCP 9

Connessione TCP 19 TCP utilizza per la connessione il meccanismo di handshake a 3 vie un segmento (SYN) viene inviato dal client al server; questo trasporta il sequence number iniziale del client, e le informazioni di porta sorgente e destinazione un segmento (SYN+ACK) viene inviato in risposta dal server; questo trasporta l acknowledge del SYN precedente, ed il sequence number iniziale del server, per le comunicazioni in verso opposto se nessuno ascolta sulla porta di destinazione, il server inviera un segmento RST (Reset) per rifiutare la connessione un segmento di ACK viene inviato dal client al server; questo riporta lo stesso sequence number iniziale (non sono ancora stati trasmessi dati) e l acknowledge del secondo segmento SYN Connessione TCP 20 A questo punto la connessione viene considerata stabilita (la connessione e definita dalla quaterna host1-port1-host2-port2) I messaggi di SYN possono opzionalmente trasportare le informazioni di MTU/MRU per determinare il MSS della connessione 10

Disconnessione TCP 21 La connessione TCP e full duplex Per la disconnessione, si utilizza un handshake a due vie per ogni direzione: chi vuole disconnettere invia un segmento FIN l altro invia un ACK del FIN: il primo considera chiusa la comunicazione in quel verso, ma non nel verso opposto la stessa cosa fa il secondo quando non ha piu dati da trasmettere, ed aspetta il relativo ACK il tutto spesso viene fatto con tre segmenti, inviando il secondo FIN assieme all ACK del primo Vengono utilizzati dei timer per aggirare il problema dei due eserciti Controllo di flusso 22 Viene comunicato lo spazio (byte liberi) nei buffer disponibile in ricezione Permette al ricevente di regolare la trasmissione del trasmittente in modo disgiunto dagli ack La dimensione della finestra (quanti segmenti si possono inviare) e data dal rapporto tra i byte a disposizione e il valore del MSS 11

Controllo della congestione 23 Accanto alla finestra di ricezione (legata ai buffer) viene utilizzata una finestra di congestione: il limite a cui si puo trasmettere e il minimo tra la finestra di ricezione e quella di congestione Per prevenire le congestioni, il TCP utlizza una tecnica detta slow start : inizialmente il trasmittente inizializza la finestra di congestione al valore del MSS, ed invia un segmento se il segmento riceve l ACK, raddoppia la finestra di congestione, e via cosi fino al massimo valore determinato dalla finestra di ricezione, o fino a che si incontra un timeout; questo valore viene quindi mantenuto per la comunicazione Controllo della congestione 24 in base alla insorgenza di timeout o di ack duplicati (o di ICMP source quench), il trasmittente puo valutare l insorgere di una congestione quando questo avviene, la finestra di congestione viene ridotta ad un MSS, ed una soglia viene impostata alla meta del valore precedente (il limite raggiunto dallo startup lento) riprende la progressione iniziale, ma solo fino al valore di soglia, oltre il quale si incrementa la dimensione di un MSS per volta In questo modo il TCP tenta di prevenire la congestione (con l avvio lento), ed abbatte immediatamente la trasmissione di segmenti quando la congestione inizia a presentarsi, risale rapidamente fino ad un certo valore per non perdere in efficienza e poi piu lentamente per non ricreare le condizioni di congestione 12

Il protocollo TCP: slow start 25 Iniziare a trasmettere lentamente, e, se tutto va bene accelerare, salvo poi rallentare qualora le cose andassero male receiver window (rwnd)= finestra comunicata dal destinatario (controllo di flusso) congestion window (cwnd) = decisa dal mittente (controllo di congestione) cwnd=min(cwnd, rwnd) SMSS=dimensione massima del segmento IW = valore iniziale di cwnd = <2 SMSS Il protocollo TCP: slow start (cont.) 26 ogni volta che il mittente riceve un riscontro (non duplicato), cwnd= cwnd + SMSS il mittente trasmette un segmento ed aspetta il relativo riscontro quando lo riceve (non duplicato), aumenta di SMSS la cwnd e può quindi emettere due segmenti quando entrambi questi sono riscontrati, cwnd è portata a 4 SMSS si ha così un incremento esponenziale di cwnd l aumento di cwnd continua finché si raggiunge un opportuna soglia, denominata slow start threshold (ssthresh) oppure fin quando il mittente non rilevi una situazione di congestione (dedotta dallo scadere del TO) 13

Il protocollo TCP: congestion avoidance 27 Algoritmo (continuazione di slow start): il mittente può trovarsi in due stati: Congestion Avoidance e Slow Start ssthresh è inizializzata ad un valore alto così da non avere effetto nelle fasi iniziali quando cwnd < ssthresh si applica Slow Start quando cwnd > ssthresh si applica Congestion Avoidance (quando cwnd=ssthresh la scelta è libera) Il protocollo TCP: congestion avoidance 28 la ricezione di un riscontro non duplicato determina l aumento di cwnd se si è in slow start cwnd è incrementata in modo esponenziale se si è in congestion avoidance: cwnd è incrementata di segsize*segsize/cwnd ogni volta che si riceve un segmento, dove segsize è la dimensione di un segmento e cwnd è misurata in bytes: ciò corrisponde ad un incremento lineare (un segmento per ogni RTT) quando si verifica una congestione (= scadere di un time-out): ssthresh posta ad un valore non superiore a: max(flightsize/2, 2*SMSS), dove FlightSize è la quantità di dati emessa dal mittente ma non ancora riscontrata (sstresh è circa dimezzata) cwnd è posta ad un valore pari a 1 segmento, da cui ricomincerà ad essere aumentata 14

Il protocollo TCP: congestion avoidance 29 La quantità di dati trasmessi ma non ancora riscontrati non può superare il minimo tra cwnd e rwnd; tale minimo è quindi il valore corrente della finestra usata in trasmissione L unione degli algoritmi slow start e congestion avoidance ha dato luogo ad una versione di TCP nota come TCP Berkeley Il protocollo TCP: SS+CA= TCP Berkeley 30 andamento a dente di sega : la portata media può essere molto minore del valore massimo Finestra di congestione, cwnd (passi da 1024 bytes) 40 38 Congestion avoidance Timeout 36 34 32 Threshold (ssthresh ) 30 28 26 24 22 Threshold (ssthresh) 20 18 16 14 Slow start 12 10 8 6 4 2 0 0 5 10 15 20 25 30 Numero di trasmissioni 15

Il protocollo TCP: fast retransmit 31 Fast retransmit è pensato per migliorare il controllo di errore ma ha effetti anche sul controllo di congestione TCP dovrebbe (SHOULD) generare un riscontro immediato (un ACK duplicato) quando riceve un segmento fuori sequenza: TCP NON riscontra il segmento ricevuto fuori sequenza, bensì, alla ricezione di un segmento ricevuto fuori sequenza, riscontra nuovamente l ultimo segmento ricevuto in sequenza completa (ovvero emette un duplicato di un riscontro già emesso) TCP mittente non sa perché riceve un ACK duplicato quando si perde un segmento, tutti i segmenti successivi a quello perso che arrivano al destinatario genereranno ACK duplicati se la rete altera la sequenza dei segmenti, questi arriveranno a destinazione fuori sequenza e genereranno ACK duplicati la rete potrebbe duplicare degli ACK o dei segmenti dati (che quindi genererebbero ACK duplicati, al loro arrivo a destinazione) Il protocollo TCP: fast retransmit (cont.) 32 Se l ACK duplicato è dovuto a perdita conviene rinviare subito il segmento perso, altrimenti no se il mittente riceve solo uno o due ACK duplicati assume che si tratti di un fuori sequenza se il mittente invece riceve tre o più ACK duplicati successivi (ovvero 4 ACK identici senza altri segmenti intermedi), ritrasmette subito quello che ritiene un segmento perso, senza aspettare lo scadere del time-out questo è fast retransmit (di fatto implementa un NACK) Migliora le prestazioni in caso di perdita di un segmento velocizza la ri-trasmissione del segmento 16

Il protocollo TCP: fast retransmit (cont.) 33 ESEMPIO: Senza Fast Retransmit Valore attuale di cwnd = 6 TO ack=100 ack=100 ack=100 ack=100 ack=100 ack=100 Porre cwnd = 1, ritrasmettere il segmento seq=100 Ripartire con cwnd=2 ack=400! e trasmettere seq=400, 450, etc. Il protocollo TCP: fast retransmit (cont.) 34 ESEMPIO, con Fast Retransmit: l errore è recuperato in un tempo minore Valore attuale di cwnd = 6 Porre cwnd = 1, ritrasmettere segmento con seq=100 TO ack=100 ack=100 ack=100 ack=100 ack=100 ack=100 ack=400! Ripartire con cwnd=2 e inviare seq=400, 450, etc. 17

Il protocollo TCP: fast retransmit (cont.) 35 Slow Start + Congestion Avoidance + Fast Retransmit = TCP Tahoe TCP Tahoe, dopo Fast Retransmit va nella fase di Slow Start, poiché assume che un segmento sia stato perso, e pone cwnd=1 Questo modo di operare è però forse troppo conservativo visto che, siccome si stanno ricevendo degli ACK, la rete non dovrebbe essere in uno stato di congestione, anche se un segmento è stato perso Il protocollo TCP: fast recovery 36 fast recovery= quando l entità mittente trasmette subito quello che ha dedotto essere un segmento perso, senza aspettare lo scadere del time-out, essa non entra nello stato di slow start, ma segue una diversa procedura (basata su Congestion Avoidance) ciò consente di aumentare la portata del trasferimento Cioè: abbiamo perso ma non c e congestione, visto che dei segmenti STANNO arrivando a destinazione, e quindi è meglio non rallentare Slow Start + Congestion Avoidance + Fast Retransmit + Fast Recovery= TCP Reno 18

Il protocollo TCP: fast recovery (cont.) 37 Esempio con Fast Recovery Valore attuale di cwnd = 6 Inizio di Fast Retransmit e Fast Recovery: ssthresh=3;cwnd=3+3 cwnd=3+4 cwnd=3+5 Recovery ack=400 cwnd=3 Confronto tra Tahoe e Reno 38 Finestra di congestione, cwnd (passi da 1024 bytes) 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 0 Congestion avoidance Threshold (ssthresh ) Threshold (ssthresh) Slow start Rilevazione di evento di perdita Esempio di andamento seguito da TCP Reno se la perdita è stata rilevata dalla ricezione di 3 ACK duplicati Andamento seguito se la perdita è stata rilevata da un TO e, in ogni caso, da Tahoe 0 5 10 15 20 25 30 Turni di trasmissione 19

Esempio di evoluzione TCP 39 Simulazione di TCP Reno: una connessione di capacità C attraversa un router con buffer di dimensione B, che è un collo di bottiglia. curva 1, B=C*RTT curva 2, B=0.1*C*RTT Esempio di evoluzione TCP 40 Simulazione di TCP Reno (mostra anche un TO) rtt=20ms C=10Mbit/s finestra ricezione massima 64kbyte dimensione pacchetti 1000 byte buffer=c*rtt 20

Esempio di evoluzione TCP 41 Simulazione di TCP Reno Finestra gonfiata in fast recovery rtt=10ms C=10mbit/s buffer=c*rtt Il protocollo TCP: NewReno 42 Perdite multiple e New Reno Fast Retransmit e Fast Recovery Ack parziale (300). Sarebbe stato un Ack totale, con il riscontro di tutti i dati emessi prima di iniziare il Fast Retransmit, se fosse stato ack=400 21

Il protocollo TCP: commenti 43 Congestione dedotta da perdita (ciò causa problemi in canali rumorosi, e.g., wireless) Perdita dedotta da: scadere del time-out di trasmissione ricezione di riscontri (ACK) duplicati (vedi fast retrasmit) Header TCP 44 22

Header TCP (cont.) 45 source e destination port: le porte del sorgente e del destinatario, che permettono di identificare le applicazioni a cui sono destinati i dati (16 bit ciascuna) sequence number (32 bit): il valore del primo byte trasmesso nel segmento; all atto della connessione viene stabilito il valore iniziale, basato sul clock del trasmittente acknowledge number (32 bit): il valore dell ultimo byte riscontrato piu uno (cioe del successivo atteso) TCP header length (4 bit): il numero di gruppi di 32 bit contenuti nella intestazione; necessario perche sono previsti campi opzionali (non piu di 60 byte) Header TCP (cont.) 46 flag URG (urgent): il campo dati contiene dati urgenti, che devono essere passati alla applicazione prima degli altri ancora in attesa nei buffer (ad esempio: il CTRL^C in applicazioni di terminale remoto) flag ACK: il segmento trasporta un riscontro; tutti i segmenti tranne il primo dovrebbero averlo definito ad 1 flag PSH (push): indica che l applicativo ha richiesto l invio dei dati senza ulteriore attesa (ed in ricezione deve essere fatto lo stesso) flag RST (reset): utilizzato per comunicare che la connessione deve essere abortita, o quando viene rifiutata una nuova connessione flag SYN (synchronize): utilizzato per stabilire una connessione; questi segmenti definiscono il sequence number iniziale per i due versi flag FIN (finish):; utilizzato per comunicare alla controparte che non si hanno più dati da inviare e che si desidera chiudere la connessione; il doppio FIN con relativo riscontro genera il rilascio della connessione 23

Header TCP (cont.) 47 window size (16 bit): la dimensione in byte dello spazio disponibile dei buffer in ricezione: il valore massimo e di 64 KB le reti moderne molto veloci rendono questo limite inefficiente: e possibile utilizzare un header opzionale per accordarsi su una window size a 30 bit (buffer fino ad 1 GB) checksum (16 bit): obbligatoria per TCP (al contrario di UDP); anche in TCP la checksum viene calcolata su tutto il segmento piu uno pseudo header che riporta gli indirizzi IP di sorgente e destinazione urgent pointer (16 bit) definisce l offset dell ultimo byte facente parte dei dati urgenti quando la flag URG e settata Header opzionali 48 Le opzioni sono definite da una lunghezza, un tipo, ed i dati relativi; sono definite diverse opzioni, tra cui: padding: necessario in presenza di opzioni per rendere il campo header nel suo complesso un multiplo di 32 bit MSS: utilizzato con i segmenti SYN per determinare il MSS scambiandosi i valori di MTU ed MRU window scale: utilizzata per definire la dimensione della finestra fino a 30 bit selective acknowledge: TCP utilizza normalmente il go-back-n; questa opzione permette di utilizzare il selective reject timestamp: utilizzata per valutare (a livello di trasporto) il round trip time e poter definire valori opportuni per i timer interni 24

Applicazioni che usano TCP 49 Tutte quelle che richiedono affidabilita dei dati, e che non hanno bisogno della comunicazione multicast/broadcast la comunicazione in TCP e orientata alla connessione tra due punti terminali; non puo quindi supportare multicast Esistono tantissime applicazioni; tra le piu diffuse: file transfer (port 21) login remoto criptato (ssh, port 22) login remoto (port 23) posta elettronica (port 25) TFTP (port 69) (esiste anche su UDP) HTTP (port 80) (il protocollo del World Wide Web) 25