Il tcp un protocollo del livello di trasporto
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

Il TCP: un protocollo del livello di trasporto. PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

Il TCP: un protocollo del livello di trasporto. Appunti di Sistemi per la classe V sez. H A cura del prof. ing. Mario Catalano. Sul TCP.

Download Presentation

Il TCP: un protocollo del livello di trasporto.

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Il tcp un protocollo del livello di trasporto

Il TCP: un protocollo del livello di trasporto.

Appunti di Sistemi per la classe V sez. H

A cura del prof. ing. Mario Catalano


Sul tcp

Sul TCP

  • Il protocollo TCP (Trasmission Control Protocol) fu progettato per fornire un flusso affidabile ( end-to-end) a partire da un un’internet non affidabile.E' quindi un protocollo "orientato alla connessione“.

  • Esso fu progettato per adattarsi dinamicamente alle proprietà di Internet (diverse topologie, ritardi, capacità...) e per essere robusto nei confronti di molte tipologie di guasto.


Come funziona il tcp

Come funziona il TCP

  • Ogni macchina che supporta TCP possiede un’entità di trasporto TCP, che gestisce i flussi di dati TCP e si interfaccia con il livello IP; può essere un processo utente, oppure far parte del nucleo.

  • Un’entità TCP riceve flussi di dati dai processi locali, li spezza in unità lunghe al più 64KB (tipicamente 1500, 3000byte) e spedisce queste unità come datagram IP separati.


Ip e tcp

IP e TCP

  • Siccome il livello IP non fornisce alcuna garanzia sulla consegna dei datagram, toccherà al TCP ritrasmetterli quando necessario, ed è proprio per questo che TCP è un protocollo affidabile mentre IP no.

  • (IP non sa cosa sia una CONNESSIONE: i pacchetti vengono inviati uno alla volta).

  • In altre parole TCP deve fornire l' AFFIDABILITA' CHE IP NON POSSIEDE!!!


Il modello di servizio del tcp

Il modello di servizio del TCP

  • Il protocollo TCP si ottiene mediante la creazione di punti di accesso chiamati socket, ognuno dei quali è caratterizzato da un indirizzo IP dell’host e di un numero a 16bit rappresentante l’indirizzo locale dell’host detto port.

  • Per indicare uno dei processi in esecuzione su un dato calcolatore si usa il port number. 

  • Un port corrisponde al terminale di un canale di comunicazione virtuale che TCP/IP mette

  • a disposizione del processo.


Il tcp un protocollo del livello di trasporto

  • Per ottenere un servizio TCP si deve creare una connessione fra socket della macchina mittente e socket della macchina ricevente. È importante dire che un socket può essere utilizzato da più connessioni contemporaneamente.

  • Le porte inferiori a 256 sono dette porte ben note e sono dedicate a servizi standard.

  • Tutte le connessioni TCP sono full-duplex e punto-a-punto.

  • Il TCP non supporta il multicasting  e il broadcasting.

  • Una connessione TCP consiste in un flusso di dati e non di messaggi.


Esempi di well known port

Esempi di well-known port

  • Echo – port n.7

  • FTP (controllo) – port n. 20

  • FTP (dati) – port n. 21

  • Telnet – port n. 23

  • SMTP – port n. 25

  • HTTP – port n. 80

  • POP3 – port n. 110

  • NNTP – port n. 119

  • DNS – port n. 53


Un esempio

Un esempio…


Il tcp un protocollo del livello di trasporto

  • Quando un’applicazione passa i dati a TCP questo può spedirli immediatamente oppure salvarli in un buffer: per forzare l’output dei dati si può utilizzare il flag PUSH per indicare a TCP di non ritardare la comunicazione.

  • Un’ultima caratteristica saliente riguarda i dati urgenti: l’applicazione mittente può utilizzare il flag URGENT per forzare TCP a smettere di accumulare dati e trasmettere subito tutto.


I pacchetti del tcp

I pacchetti del TCP

  • 1. Ogni byte di una connessione TCP possiede il proprio numero di sequenza a 32 bit.

  • I numeri di sequenza vengono utilizzati sia per il meccanismo degli ack, sia per quello delle finestre, inseriti in campi separati dal preambolo da 32 bit.

  • 2. Mittente e ricevente si scambiano i dati sotto forma di segmenti.

  • Un segmento consiste in un preambolo fisso a 20 byte seguito da zero o più byte di dati, la dimensione dei segmenti viene decisa da TCP.

  • 3. Sliding Window con ACK di risposta e timer per la ritrasmissione: la conferma si ha quando si riceve una sequenza corretta.

  • Il compito di risolvere eventuali problemi dovuti a errori, duplicazioni o perdite sta a TCP.


Il tcp un protocollo del livello di trasporto

  • Ci sono però due limiti sulla dimensione dei segmenti ovvero ogni segmento incluso il preambolo TCP deve entrare in un pacchetto IP di 65.536 byte e ogni rete possiede un MTU(unità massima di trasferimento) e ogni segmento deve entrare in un MTU, l’MTU è lungo generalmente poche migliaia di byte e quindi definisce il limite superiore della dimensione del segmento; nel caso in cui un pacchetto attraversa una serie di reti senza essere frammentato e quindi arriva a una in cui MTU è inferiore alla dimensione del segmento, il router al confine frammenta il segmento in due o più segmenti più piccoli.


Il preambolo

Il preambolo

  • Ogni segmento inizia con un preambolo fisso di 20byte, esso può essere seguito da opzioni di preambolo, dopo le opzioni possono seguire fino a 65535 -20 -20 = 65495 byte di dati dove i primi 20 si riferiscono al preambolo IP e i secondi al preambolo TCP.


I campi del preambolo

I campi del preambolo

  • Source port e Destination port = estremi locali della connessione;

  • Sequence number = numero di sequenza;

  • Acknowledgement number = numero di ack specifica il prossimo byte atteso;

  • TCP header lenght = lunghezza del preambolo;

  • Campi NON usati

  • URG = flag urgente: il mittente manda al destinatario un messaggio urgente. Alcuni dati vengono inseriti nel pacchetto TCP e il flag URG=1. Il ricevitore interrompe quello che sta facendo e legge i dati inviati.


I campi del preambolo 2

I campi del preambolo (2)

  • ACK serve per ignorare o meno l’ACK number (ACK=1 campo valido riscontrato)

  • PSH indica dati di tipo PUSH, cioè all'applicazione remota si richiede di consegnare i dati in arrivo il piu' presto possibile evitando che siano salvati in code di attesa. Ha il significato di spinta alla consegna.

  • RST per reinizializzare la connessione; può essere usato come REJ di un segmento non valido o per rifiutare la connessione.


I campi del preambolo 3

I campi del preambolo (3)

  • SYN = per creare le connessioni, la richiesta di connessione viene caratterizzata da SYN=1 e ACK=0;  (risposte SYN=1, ACK=1)

  • FIN = per chiudere una connessione;

  • Window = finestra, indica quanti byte possono essere spediti, si può utilizzare questo campo per fare il controllo di flusso ponendolo uguale a 0;


I campi del preambolo 4

I campi del preambolo (4)

  • Checksum = verifica del preambolo e dati.

  • Options = eventuali opzioni (ad es. negoziazione del max. segmento TCP dell'host, negoziazione della massima finestra, ripetizione selettiva di uno o più segmenti.)

  • Data = dati veri e propri.


Gestione delle connessioni in tcp

Gestione delle connessioni in TCP

  • In TCP le connessioni vengono create utilizzando il protocollo Three-Way handshake.

  • Per stabilire una connessione il server aspetta passivamente una connessione utilizzando le primitive LISTEN e ACCEPT, specificando una sorgente specifica oppure nessuna in particolare.

  • Il client esegue una primitiva di CONNECT specificando l’IP e la porta a cui si vuole connettere, la dimensione accettabile massima dei segmenti TCP e opzionalmente i dati utente.


Gestione delle connessioni in tcp 2

Gestione delle connessioni in TCP (2)

  • La CONNECT invia un segmento TCP con ACK spento e SYN acceso e attende una risposta.

  • Appena questo arriva a destinazione l’entità TCP verifica l’esistenza di un processo che ha eseguito una LISTEN sulla porta identificata da Destination Port.

  • A questo punto può accettare o rifiutare la connessione: se accetta invia un segmento ACK.

  • Per terminare una connessione entrambe le parti possono inviare un segmento TCP con FIN acceso indicando che non si hanno più dati da trasmettere.


Gestione del trasporto

Gestione del trasporto

  • Il Server aspetta passivamente una connessione in arrivo eseguendo una Listen-Accept specificando o meno una particolare sorgente.

  • Client esegue una primitiva CONNECT con IP le porte di collegamento, la dim. max del segmento TCP .

  • Sono trasmessi il num. di sequenza (num. di byte trsmessi) e la grandezza della finestra che determina quanti byte possono ancora essere trasmessi (anche se riceve win=0, il mittente può comunque inviare:  dati urgenti, richieste di reinvio dell'ultimo ack spedito).


Gestione del trasporto1

Gestione del trasporto

  • L’idea di fondo è che la destinazione informa il mittente di volta in volta, con la conferma dell’arrivo dei segmenti, quanti altri byte possono essere spediti la prossima volta.

  • Si imposta un valore di default, ad esempio 4k: se c’è una coda, la destinazione riduce a 2k il prossimo segmento (altrimenti resta a 4k), se la coda peggiora, si riduce a 1k (altrimenti si resta a 2k, oppure, se migliora, si passa a 4k).

  • Se invece si sta congestionando, si passa a 0.


Il protocollo udp

Il protocollo UDP

  • Il livello transport fornisce anche un protocollo non connesso e non affidabile, utile per inviare dati senza stabilire connessioni (ad esempio per applicazioni client-server).

  • Lo header di un segmento UDP è molto semplice.

  • La funzione di calcolo del checksum può essere disattivata, tipicamente nel caso di traffico in tempo reale (come voce e video) per il quale è in genere più importante mantenere un'elevato tasso di arrivo dei segmenti piuttosto che evitare i rari errori che possono accadere.


Il tcp un protocollo del livello di trasporto

Fine


  • Login