La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione su Reti Il livello trasporto di TCP/IP: TCP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di Salerno.

Presentazioni simili


Presentazione sul tema: "Programmazione su Reti Il livello trasporto di TCP/IP: TCP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di Salerno."— Transcript della presentazione:

1 Programmazione su Reti Il livello trasporto di TCP/IP: TCP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di Salerno

2 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.2 TCP: Transmission Control Protocol l Orientato allo stream: »non avendo una dimensione di segmento fissa, trasmette alla destinazione la sequenza identica (stream) di byte che il mittente ha fornito a TCP nella macchina di provenienza. l Stream non strutturato: »In TCP non è necessario nessun tipo di formattazione specifica della stream, quindi è demandata agli applicativi la corretta estrazione dei dati dai segmenti ricevuti. »Simile ad un file del sistema Unix

3 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.3 TCP: Caratteristiche l Connessione di circuito virtuale: »La connessione è vista dagli applicativi come un circuito fisico dedicato, quindi TCP è capace di fornire servizi del tipo Connection Oriented mentre il protocollo IP su cui appoggia, è in grado di fornire servizi Connection Less. l Connessione Full Duplex: »TCP consente il trasferimento simultaneo in entrambe le direzioni per ogni connessione. Questo permette la trasmissione parallela di segmenti di dati in un senso e di segmenti di acknowledgement nell'altro. l TCP richiede più banda e più CPU di UDP

4 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.4 Bufferizzazione l TCP suddivide lo stream in segmenti indipendenti dal programma applicativo che li ha generati. l Dispone di un buffer dove immagazzinare la sequenza di byte. l Al verificarsi di certe condizioni alcuni dei dati sono trasmessi attraverso la rete. l La bufferizzazione consente una riduzione del traffico sulla rete "ottimizzando" in qualche modo il numero di segmenti da trasmettere.

5 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.5 TCP header length Header TCP Source PortDestination Port Sequence Number Acknowledgement Number Checksum Options Window Urgent Pointer Reserved Padding URGURG ACKACK EOMEOM RSTRST SYNSYN FINFIN

6 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.6 Header di TCP l Flag: »Per identificare il tipo di informazione contenuta nel segmento vengono impiegati i 6 bit di codice: URG (11): Il campo puntatore urgente è valido ACK (12): Il campo riscontro è valido PSH (13): Questo segmento richiede una spinta RST (14): Effettua il reset della connessione SYN (15): Sincronizza i numeri di sequenza FIN (16): Il trasmettitore ha raggiunto la fine della sua stream di byte

7 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.7 Campi dellheader TCP l HLEN: »Contiene un numero intero che indica la lunghezza dell'intestazione TCP del datagramma. Questa informazione è necessaria perché il campo opzioni è di lunghezza variabile. l Porta (provenienza/destinazione): »Contengono i numeri di porta di protocollo TCP che identificano gli applicativi alle estremità della connessione.

8 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.8 Campi dellheader TCP l Numero sequenziale: »questo campo identifica, nello stream di byte del trasmettitore, la posizione dei dati nel segmento. Questo valore è riferito alla stream che fluisce nella medesima direzione del segmento, mentre il Numero di Riscontro si riferisce alla stream che fluisce nella direzione opposta. l Numero di riscontro: »Contiene il numero sequenziale del byte successivo a quello correttamente ricevuto dalla destinazione. Tale campo è valido solo nei segmenti di riscontro, o nei segmenti utilizzanti la tecnica trasmissiva Piggy-backing, e fa riferimento allo stream di dati che fluisce nella direzione opposta a tale segmento.

9 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.9 Campi dellheader di TCP l Nel datagramma di riscontro la destinazione comunica quale byte dello stream si aspetta di ricevere successivamente: » I riscontri specificano sempre il numero sequenziale del primo byte non ancora ricevuto. »Esempio: in uno stream di 1000 byte segmentato in blocchi di 100 byte, il primo riscontro conterrà il numero sequenziale 101. »Questo metodo di riscontro cumulativo si ha il vantaggio che la perdita di un riscontro non blocca la trasmissione se confermato dal riscontro successivo.

10 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.10 Campi dellheader di TCP l Nel datagramma di riscontro la destinazione comunica quale byte dello stream si aspetta di ricevere successivamente: » I riscontri specificano sempre il numero sequenziale del primo byte non ancora ricevuto. »Esempio: in uno stream di 1000 byte segmentato in blocchi di 100 byte, il primo riscontro conterrà il numero sequenziale 101. »Questo metodo di riscontro cumulativo si ha il vantaggio che la perdita di un riscontro non blocca la trasmissione se confermato dal riscontro successivo.

11 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.11 Campi dellheader TCP l Finestra: »Numero intero senza segno di 16 bit che specifica la dimensione del buffer che il TCP ha a disposizione per immagazzinare dati in arrivo. È utilizzato per la gestione dinamica della dimensione della finestra scorrevole. l Puntatore urgente: »Il TCP permette la trasmissione fuori banda di dati informativi ad alta priorità. Questi devono essere trasmessi il prima possibile, indipendentemente dalla loro posizione nella stream. Questo campo, se valido, conterrà un puntatore alla posizione nella stream, dei dati urgenti.

12 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.12 Campi dellheader TCP l Checksum: »Campo di 16 bit contenente un valore intero utilizzato dal TCP della macchina host di destinazione, per verificare l'integrità dei dati e la correttezza dell'intestazione. Questa informazione è di essenziale importanza perché il protocollo IP non prevede nessun controllo di errore sulla parte dati del frame. Per il calcolo del valore checksum il TCP ha bisogno di aggiungere una pseudointestazione al datagramma, per effettuare così un controllo anche sugli indirizzi IP di destinazione e provenienza.

13 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.13 TCP: Protocollo di Connessione l La parte richiedente (client) invia un segmento SYN e specifica la porta del server e il proprio initial sequence number (ISN). »RFC793 specifica che ISN viene incrementato ogni 4 ms l Il server risponde con un segmento contenente il proprio SYN e dà lack (riscontro) del SYN del client ponendo lack al valore dell ISN del client + 1 l Il cliente dà riscontro al SYN del server spedendo un ACK per lISN del server + 1.

14 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.14 TCP: Opzione MSS l Il segmento di SYN contiene lopzione Maximum Segment Size »ogni parte annuncia la taglia del più grande segmento che si aspetta di ricevere »una grossa MSS aumenta il throughput ma corre il rischio di frammentazione a livello IP. »per connessioni locali MSS è sempre minore della MTU dellinterfaccia di uscita meno la lunghezza dellheader di TCP (1460 per Ethernet) »per connessioni non locali MSS normalmente è posto uguale a 536

15 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.15 Opzione Reset l Segmento con bit Reset posto 1 è inviato in situazioni di errore »richiesta di connessione a porta con nessuna applicazione legata (bind con i socket di Berkeley) il segmento di reset porta lack del ISN UDP usa ICMP port unreachable »abortive release dati in buffer sono scartati La controparte riceve il segmento di reset e non deve farne lack

16 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.16 Esempio di half-close l E possibile per una delle due parti di una connessione TCP chiudere il proprio canale di output e ricevere dati sullaltro canale. shutdown »La API dei socket di Berkeley prevede la system call shutdown l Esempio: »rsh remote_host sort < datafile

17 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.17 Esempio di half-close l rsh bsdi sort < datafile »rsh »rsh apre una connessione con il processo che esegue il sort sullhost bsdi. »datafile »datafile è copiato sulla connesione. »loutput della connessione è dato in output. »sort »sort non può iniziare fino a quando non sono arrivati tutti i dati. » rsh » rsh effettua una half-close per segnalare la fine dei dati.

18 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.18 TCP: Calcolo del checksum di TCP Lo pseudoheader viene creato e posto in testa al segmento TCP e sono aggiunti byte necessari per raggiungere un multiplo di 16 bit. Successivamente viene calcolata un checksum su tutto il messaggio così formato. Lo pseudoheader viene eliminato prima del passaggio a TCP.

19 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.19 Figura tratta da: TCP/IP illustrated vol. 1 di Richard W. Stevens Diagramma di transizione degli stati di TCP

20 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.20 Stato TIME_WAIT l MSL ( maximum segment life) è la durata massima della vita di un segmento RFC793 raccomanda MSL = 2 minuti l Quando TCP effettua una chiusura attiva, la connessione resta nello stato TIME_WAUT per una durata doppia allMSL. »Ciò per permettere di rispedire lack finale da inviare allaltra parte. Se ciò accade laltra parte va in timeout e re-invia il FIN. »NellAPI Berkeley Socket, una porta locale non può essere usata se la connessione è in TIME_WAIT SO_REUSEADDR opzione SO_REUSEADDR

21 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.21 Opzioni TCP l Campo opzioni in header TCP »Opzione MSS 1 byte kind (MSS ha kind=2) 1 byte len 4 2 byte MSS »Opzione End 1 byte kind=0

22 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.22 TCP: Protocollo di terminazione l Ogni connessione TCP è full-duplex »i dati viaggiano nelle due direzioni indipendentemente e ciascuna deve essere chiusa indipendentemente l Per chiudere una direzione di flusso viene spedito un segmento con bit di FIN »ciò indica solo che non arriveranno più dati lungo questa direzione

23 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.23 Riscontro e ritrasmissione l Riscontro e ritrasmissione: »Consiste nella ritrasmissione di un segmento se non è giunta conferma entro un tempo massimo (time-out). l Time-Out: »Al momento della trasmissione di ogni segmento, il TCP attiva una timer.

24 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.24 Time Out l Time-Out: »tempo massimo entro cui un segmento trasmesso deve avere riscontro. »Se questo non avviene, si procede alla ritrasmissione. »TCP, per stimare efficientemente il TIME-OUT di ogni connessione, utilizza l'algoritmo di Karn. »È un algoritmo adattivo, ovvero al variare delle prestazioni della connessione corregge opportunamente il valore stimato in precedenza.

25 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.25 Retransmission TimeOut value l TCP misura il tempo di andata e ritorno M per ogni pacchetto l Calcola stima di andata e ritorno (Round Trip Time) »R=a R + (1-a)M valore di a raccomandato.9 l Il valore di timeout è posto »RTO=bR valore di b raccomandato 2 l Non riesce a gestire le fluttuazioni di velocità della connessione

26 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.26 Algoritmo di Jacobson l Per ogni segmento »calcoliamo una stima del RTT »otteniamo una misurazione del RTT l RTO tiene conto di media e varianza »Err = M - A (A stima del RTT -- M valore misurato) »A = A + g Err (g=.125) »D = D + h(|Err| - D)(h=.25) »RTO = A + 4D

27 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.27 Algoritmo di Karn l Problema dellambiguità di ritrasmissione »Le stime di RTT non sono aggiornate quando arriva lACK di dati ritrasmessi.

28 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.28 Flusso di dati interattivi in TCP l Esempi tipici di applicazioni interattive: RLOGIN, TELNET l Ogni carattere viene inviato dal client al server un byte per volta. Inoltre ogni carattere viene normalmente re-inviato dal server al client per la visualizzazione. l Quindi un byte genera 4 segmenti: »byte di dati »ack del byte »echo del byte per visulalizzazione »ack dellecho

29 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.29 Riscontro ritardato (delayed ack) l Normalmente TCP non invia ACK subito dopo aver ricevuto un segmento. l Lack viene ritardato nella speranza che vi siano dei dati che viaggiano nella stessa direzione. l La maggioranza delle implementazioni utilizza un ritardo di 200 ms.

30 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.30 Algoritmo di Nagle l In connessione interattive possiamo avere dei segmenti che contengono un solo byte di dati. l Loverhead che paghiamo è di 40 byte (20 per IP + 20 per TCP) l Algoritmo di Nagle »una connessione TCP non può avere più di un segmento piccolo di cui non si è ricevuto lACK. Segmento piccolo di taglia minore di MSS

31 Programmazione su Reti -- G. Persiano -- Dipartimento di Informatica ed Appl.31 Algoritmo di Nagle: Pro e Contro l Self-clocking »su una connessione veloce vengono inviati molti tinygram »una connessione lenta invia pochi segmenti ciascuno con più byte di dati. l Problemi con applicazioni molto interattive »Esempio: function keys TCP_NODELAY l Disabilitato con opzione TCP_NODELAY


Scaricare ppt "Programmazione su Reti Il livello trasporto di TCP/IP: TCP Giuseppe Persiano Dipartimento di Informatica ed Applicazioni Università degli Studi di Salerno."

Presentazioni simili


Annunci Google