Академический Документы
Профессиональный Документы
Культура Документы
Sez.A12
Il livello di Trasporto
Il livello Transport il cuore di tutta la gerarchia di protocolli. Il suo compito quello di fornire un
trasporto affidabile ed efficace dall'host di origine a quello di destinazione, indipendentemente dalla
rete utilizzata, quindi ricevere e/o inviare i dati, suddividerli in pacchetti, se necessario, controllarli e
dove previsto possibilmente correggerli. A tale scopo fornisce servizi al livello superiore e sfrutta i
servizi del livello di rete.
A questo livello anche affidata la qualit del servizio QoS (Qualit of Service) ovvero che i pacchetti
arrivino, senza errori, tutti, senza n perdite n duplicazioni.
Questo il livello in cui si gestisce per la prima volta una conversazione diretta fra sorgente e
destinazione (end-to-end), il trasporto svincolato dai problemi di connessione fisica dei
livelli inferiori.
Da host ad host:
i messaggi di unapplicazione vengono segmentati e trasformati in PDU (Protocol Data Unit) di
livello4 (trasporto), detti segmenti.
il livello di trasporto passa le PDU al livello di rete che le incapsula in PDU di livello 3 e le inoltra
in rete
a destinazione i messaggi passano dal livello 3 al 4 e i messaggi dellapplicazione vengono
ricostruiti
il livello di trasporto rende trasparente il trasporto fisico dei messaggi alle applicazioni.
Da ci discende che il software di livello transport presente solo sugli host, e non nei router della
subnet di comunicazione.
Il segmento, ovvero lunit di dati scambiata dal protocollo di trasporto, detto TPDU (Trasport
Protocol Data Unit):
(pag.167)
Gestione della connessione: poich generalmente il livello rete non stabilisce una connessione
con l'host di destinazione, il livello di trasporto si incarica di realizzare una connessione che
viene poi chiusa quando non pi necessaria.
Corretto ordine di consegna e controllo errori. Poich i pacchetti possono seguire percorsi
diversi all'interno della rete, il livello di trasporto verifica che i pacchetti vengano riordinati
nella giusta sequenza prima di passarli al livello superiore.
Trasferimento affidabile. Il protocollo di trasporto si occupa di garantire che tutti i dati inviati
vengano ricevuti; nel caso il servizio di rete utilizzato perda pacchetti, il protocollo di trasporto
si occupa di ritrasmetterli.
Controllo di flusso. Se gli host coinvolti nella comunicazione hanno prestazioni molto
differenti pu capitare che un pc pi veloce "inondi" di dati uno pi lento. Mediante il controllo
di flusso, un host in "difficolt" pu chiedere di abbassare il tasso di trasmissione in modo da
poter gestire le informazioni in ingresso.
Controllo di Congestione: il protocollo di trasporto riconosce uno stato di congestione della
rete, e adatta di conseguenza la velocit di trasmissione.
Multiplazione. Il protocollo di trasporto permette di stabilire diverse connessioni
contemporanee tra gli stessi due host, utilizzando le porte (di cui parleremo). Nell'uso
comune, diversi servizi utilizzano porte diverse.
Nessuno di tali servizi obbligatorio, quindi per ciascuna applicazione possibile scegliere il
protocollo pi adatto allo scopo.
Sotto certi aspetti i servizi di livello transport assomigliano a quelli di livello data link. Infatti si
occupano, fra le altre cose, anche di:
controllo degli errori;
controllo di flusso;
riordino dei TPDU.
Ci sono per delle importanti differenze. Quella principale che:
nel livello data link fra le peer entity c' un singolo canale di comunicazione;
nel livello transport c' di mezzo l'intera subnet di comunicazione.
2
La multiplazione e le porte
TCP permette di effettuare un compito importante: la multiplazione/demultiplazione, cio di far
transitare su una stessa linea dei dati provenienti da applicazioni diverse. Un host connesso in rete
identificato da un indirizzo IP e ogni singolo host pu usufruire contemporaneamente di uno o pi
servizi a livello application che utilizzano il TCP a livello transport, lutilizzo del solo indirizzo IP non
sufficiente a indirizzare correttamente i dati provenienti dalla rete allapplicazione giusta. Si pensi ad
esempio che sul medesimo host si stia navigando in internet e facendo un download di un file, il
browser utilizzer il protocollo http e www a livello application e il download lFTP ma a livello di
transport tutti e due utilizzeranno il TCP, come far quindi il TCP a indirizzare correttamente i dati
per il web-browser e quelli per lFTP?
Pi applicazioni possono essere attive su un end-system e il livello di trasporto svolge funzioni di
multiplexing/demultiplexing (ciascun collegamento logico tra applicazioni indirizzato dal livello di
trasporto):
(Per entit di trasporto si intendono le librerie del sistema operativo disponibili al programmatore che
implementano le funzionalit di trasporto).
In Internet le funzioni di multiplexing/de multiplexing vengono gestite mediante indirizzi contenuti
nelle PDU di livello di trasporto.
Tali indirizzi sono lunghi 16 bit e prendono il nome di porte.
Le porte, numerate da 0 a 65.535, corrispondono ad ogni applicazione sul server in ascolto e si
suddividono in tre parti:
1. Well Known Ports (da 0 a 1023)
Sono porte assegnate univocamente e sono riservate ai servizi server standard. I client non dovrebbero
mai usare queste porte.
2. Registered Ports (da 1024 a 49151)
Lutilizzo di questo insieme di porte generalmente libero nonostante contenga dei servizi registrati.
Non esistono vincoli restrittivi a riguardo tanto che tutti i client usano normalmente le porte a partire
dalla numero 1024 per collegarsi ad un sistema remoto.
3. Dynamic and/or Private Ports (da 49152 a 65535)
Nessun servizio registrato in questarea. Il suo utilizzo e assolutamente libero.
Le porte tra 0 e 1023 sono assegnate dalla IANA (Internet Assigned Number Authority), di seguito
vengono elencate alcune di quelle pi utilizzate:
Porta
0
7
13
20
21
Servizio
Riservato
Echo
DAYTIME Restituisce data e ora
FTP (Canale dati)
FTP (Canale controllo)
Protocollo
UDP
UDP
UDP
TCP
TCP
4
23
25
37
42
43
53
80
110
139
161
513
514
525
Telnet
Smtp
TIME ora
NAME Server dei nomi host
WHOIS Chi in servizio
DNS
http
Pop (versione 3)
Servizi NetBios
SNMP Monitor di rete
WHO Demone Remote Who UNIX
SYSLOG system log
TIMED demone Time
TCP
TCP
UDP
UDP
UDP
TCP
TCP
TCP
UDP
UDP
UDP
UDP
UDP
Nel momento in cui un host mittente voglia inviare delle informazioni ad un host di destinazione
riguardante un particolare servizio, lhost origine richieder una connessione specificando indirizzo IP
e porta del servizio, la combinazione indirizzo IP e numero della porta prende il nome di indirizzo di
socket, una socket pu essere considerata n pi n meno che un punto di accesso allhost:
Ci pensano le entit di trasporto a suddividere il flusso in arrivo dal livello application in segmenti, a
trasmetterli e a ricombinarli in un flusso che viene consegnato al livello application di destinazione.
Quando un processo viene associato ad una porta (lato cliento lato server) viene associato sempre dal
sistema operativo a due code, una dingresso e una duscita, per non perdere la priorit di esecuzione.
Funzionalit di buffering dei dati.
Esempio di Multiplazione/Demultiplazione
sicuro ma pi lento in quanto oltre ad occuparsi della consegna delle informazioni durante una
transazione TCP necessario eseguire tutta una serie di controlli e impostazioni sullo stato della
connessione. Il protocollo TCP stato progettato per fornire un flusso di byte affidabile, da sorgente a
destinazione.
In base al tipo di applicazione viene scelto il tipo di protocollo di trasporto pi adatto:
Il protocollo TCP
Le caratteristiche pi importanti del protocollo TCP sono le seguenti:
TCP usa un meccanismo di finestre scorrevoli con timeout. Se questo scade, il segmento si
ritrasmette. Questo garantisce l'affidabilit: l'host ricevente invia un messaggio
(Acknowledgements) al trasmettitore per indicare che ha ricevuto correttamente la stream di
dati.
ogni byte del flusso TCP numerato con un numero usato sia per il controllo di flusso che per
la gestione degli ack;
un segmento TCP non pu superare i 65.535 byte;
un segmento TCP formato da:
o un header, a sua volta costituito da:
una parte fissa di 20 byte;
una parte opzionale;
o i dati da trasportare.
Abbiamo detto che il TCP utilizza un metodo, noto come finestra scorrevole, che ottimizza e rende pi
efficiente la trasmissione, poich sfrutta meglio la larghezza di banda disponibile.
Consideriamo una porzione di dati da trasmettere, chiamata segmento:
Il TCP trasmittente sovrappone una piccola finestra alla sequenza ed invia tutti i pacchetti all'interno di
essa. Quando riceve il primo riscontro, la finestra scorre in avanti ed il TCP invia il pacchetto
successivo. Fintanto che arrivano i riscontri la finestra scorre.
Le prestazioni di un protocollo a finestra scorrevole dipendono dalle dimensioni della finestra stessa e
dalla velocit con cui la rete accetta i datagrammi. Pi la finestra larga, pi la banda utilizzata.
Il ricevitore gestisce una finestra simile, accettando e riscontrando i pacchetti che arrivano (inviando
ack).
Il formato di un segmento TCP il seguente:
unattivazione di connessione,
una serie di passaggi per linvio e la ricezione delle informazioni
il rilascio della connessione.
Per compiere un trasferimento dati utilizzando il TCP necessario, come si detto, instaurare una
connessione e il campo SYN viene utilizzato per stabilire la connessione.
La procedura utilizzata per instaurare in modo affidabile una connessione TCP tra due host chiamata
three-way handshake (stretta di mano a 3 vie), indicando la necessit di scambiare 3 messaggi tra host
mittente e host ricevente affinch la connessione sia creata correttamente. Ad esempio:
Il client invia una richiesta di connessione (passo 1) contenente un identificativo A. Se il server riceve
questa notifica, questi risponde con un ack (passo 2) contenente una conferma per A, sotto forma di un
nuovo identificativo B. infine il mittente pu attivare la connessione inviando una sequenza (passo 3)
contenente gli identificativi AB.
Il terzo segmento non sarebbe, idealmente, necessario per l'apertura della connessione in quanto gi
dopo la ricezione da parte di A del secondo segmento, entrambi gli host hanno espresso la loro
disponibilit all'apertura della connessione. Tuttavia esso risulta necessario al fine di permettere anche
all'host B una stima del timeout iniziale, come tempo intercorso tra l'invio di un segmento e la ricezione
del corrispondente ACK.
I segmenti utilizzati durante l'handshake sono solitamente 'solo header', ossia hanno il campo Data
vuoto essendo questa una fase di sincronizzazione tra i due host e non di scambio di dati.
Il rilascio della connessione avviene generalmente quando finito il trasferimento dei dati, nel
seguente modo:
quando una delle due parti non ha pi nulla da trasmettere, questa invia un pacchetto con il flag
FIN a 1, se esso riconfermato dallaltro host, la connessione in uscita viene rilasciata;
di conseguenza ci sar una richiesta di fine dallaltro host e un pacchetto di risposta per
rilasciare la connessione nell'altra direzione, la connessione termina.
Il protocollo UDP
Il protocollo UDP quindi un protocollo non connesso (connession-less) e non affidabile, utile per
inviare dati senza stabilire connessioni (ad esempio per applicazioni client-server).
Non viene quindi stabilita nessuna connessione e lUDP si limita ad inviare i pacchetti sulla rete senza
richiesta di conferma allavvenuta ricezione, quindi non verifica se lhost di destinazione abbia o meno
ricevuto le informazioni che gli sono state inviate.
Il protocollo viene utilizzato da quelle applicazioni che inviano piccole quantit di dati o dove
necessario avere unalta velocit di trasferimento (ad esempio nello streaming audio e video) e inoltre,
contrariamente al TCP, lUDP in grado di supportare il multicast, ovvero linvio di uninformazione
ad un gruppo di destinatari (es. Chat)
Gli unici servizi che UDP fornisce sono:
-
multiplazione/demultiplazione
rilevazione degli errori (tramite il calcolo del checksum sia dal mittente che dal ricevente, con
successivo controllo)
Utilizza i numeri di porta in modo che un indirizzo IP specifico possa identificare un processo
particolare: le porte UDP sono diverse dalle porte TCP.
Comunicazioni UDP
Per spedire un datagramma UDP il mittente deve conoscere lIP del destinatario e la porta di
destinazione, per ricevere deve anche inviare la porta sorgente.
La trasmissione funziona cos:
a priori lhost mittente conosce quindi la porta e lindirizzo IP del destinatario.
Il mittente invier un pacchetto UDP (incapsulato in un datagramma IP)
Il pacchetto sar ricevuto dal destinatario che al livello IP eseguir un controllo ed estrapoler il
pacchetto arrivato per controllare che un pacchetto UDP.
In seguito, prelevato il numero di porta, si eseguir una verifica se sullhost ricevente la
Destination port in ascolto, in quel caso saranno recapitati i dati al livello successivo
altrimenti sar inviato un paccheto ICMP (Internet Control Message Protocol) all'host mittente
con messaggio di port unreachable (porta irraggiungibile).
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.
NOTA:
11
...
Infine troviamo il campo dati
TCP
Sia il protocollo UDP che il protocollo TCP utilizzano porte per identificare le comunicazioni di ogni
programma basato su TCP/IP.
12
(pag. 177)
Seq= Numero sequenza (numero del primo byte di dati nel segmento)
Ris = Numero riscontro: (numero sequenza del prossimo byte che ci si aspetta dall'altro lato)
Nell'esempio in figura, l'utente sul terminale A apre una sessione telnet. Ricordiamo che telnet
un protocollo di livello applicazione per il collegamento remoto che usa TCP come protocollo
di livello trasporto. Dopo aver aperto la sessione telnet e quindi aver iniziato la connessione
TCP avviene quanto segue:
o L'utente sul terminale A digita la lettera W
o B riceve W, spedisce il riscontro per (Ris = 106) e rispedisce anche W (per l'eco sul
terminale)
o A riceve W e rispedisce il riscontro
13