Reti di Telecomunicazione Lezione 8
Marco Benini Corso di Laurea in Informatica
[email protected]
Programma della lezione • Livello di trasporto – relazione tra lo strato di trasporto e lo strato di rete – relazione tra lo strato di trasporto e lo strato di applicazione
• Panoramica del livello di trasporto Internet – protocollo UDP – protocollo TCP
• Multiplexing e demultiplexing – UDP – TCP
Livello di trasporto •
•
•
Il livello di trasporto fornisce una comunicazione logica fra due processi applicativi che operano su host differenti Dal punto di vista dei processi appare come se i due host fossero connessi direttamente In realtà, i due host possono appartenere a reti completamente diverse, ed i messaggi devono viaggiare lungo un percorso contorto sulla rete
applicazione trasporto rete collegamento fisico
canale logico
canale fisico
applicazione trasporto rete collegamento fisico
Livello di trasporto e di rete • Il livello di trasporto fornisce un canale logico di comunicazione tra processi • Il livello di rete fornisce un canale logico di comunicazione tra host • La distinzione, benché sottile, è importante: – permette di associare un canale ad una coppia di processi operanti su due host – in un certo senso, un canale di rete è formato da un insieme di canali di trasporto
Livello di trasporto e di rete • I protocolli di trasporto offrono le stesse funzionalità dei protocolli di rete con cui sono realizzati – ma possono anche estendere queste funzionalità
• Nel caso di Internet, vi sono due protocolli di trasporto – UDP • basato sul protocollo di rete IP, ne offre le funzionalità a livello di trasporto
– TCP • basato sul protocollo di rete IP, ne estende le funzionalità, offrendo un servizio affidabile (orientato alla connessione) con controllo di flusso e di congestione
• Quindi, nel caso di Internet, abbiamo due protocolli di trasporto che utilizzano entrambi il medesimo protocollo di rete
Trasporto e applicazione • Il livello di trasporto offre un’interfaccia programmativa alle applicazioni di rete che consente loro di inviare messaggi ad un’altra applicazione operante su uno host differente • Nel caso di Internet, l’interfaccia è la libreria delle socket • Il livello di trasporto è quindi il responsabile del corretto funzionamento delle socket cui un’applicazione si appoggia per realizzare i protocolli di livello applicativo – in questo modo, la socket diviene lo strumento con cui una applicazione si identifica presso il livello di trasporto
Trasporto e applicazione • Il livello di trasporto su Internet ha la responsabilità di fornire due tipi di canali logici alle applicazioni: – un canale orientato ai messaggi • destinato ad inoltrare singoli messaggi • che garantisce di compiere il miglior sforzo possibile per portare integro il messaggio a destinazione
– un canale orientato alla connessione • destinato ad inoltrare un flusso di messaggi • che garantisce di mantenere l’ordine di sequenza temporale dei messaggi inviati • che garantisce l’integrità dei messaggi (niente errori di trasmissione) • che garantisce che un processo lento non venga inondato di richieste che non può evadere (controllo di flusso) • che garantisce che la rete non venga saturata di messaggi provenienti da una applicazione (controllo di congestione)
Panoramica •
•
•
Rispetto al livello applicazione, l’unità di informazione è il messaggio Rispetto allo strato di rete, l’unità di informazione è il segmento Spesso useremo il termine più generico di pacchetto al posto di segmento
5 application 4 transport 3 network 2 link 1 physical
Panoramica •
•
•
•
Rispetto al livello applicazione, l’unità di informazione è il messaggio Rispetto allo strato di rete, l’unità di informazione è il segmento Spesso useremo il termine più generico di pacchetto al posto di segmento Quindi lo strato di trasporto – in trasmissione, trasforma messaggi in segmenti – in ricezione, trasforma segmenti in messaggi
5 application messaggio 4 transport 3 network 2 link 1 physical
segmento
Livello di rete • Per descrivere il funzionamento del livello di trasporto, è necessario avere una idea di massima dell’interfaccia del livello di rete • Il protocollo di rete di Internet è IP (Internet Protocol) – il modello di servizio di IP è best effort • IP fa del suo meglio per consegnare i segmenti tra due host, ma non fornisce garanzie
– IP è un servizio inaffidabile: non garantisce la consegna dei segmenti, l’ordine di consegna e l’integrità dei dati nei segmenti – IP consegna segmenti tra due host, identificati per mezzo dei loro indirizzi, che sono codificati dal protocollo di rete, e pertanto sono detti indirizzi IP
Panoramica • La maggiore responsabilità dei protocolli UDP e TCP è di estendere il servizio di spedizione di IP fra due host al servizio di spedizione fra due processi di rete operanti su quegli host – l’estensione della spedizione da host a host alla spedizione da processo a processo è detta multiplexing (in trasmissione) e demultiplexing (in ricezione)
• Inoltre, sia TCP che UDP forniscono un servizio di controllo di integrità dei segmenti, per verificare se sono stati introdotti errori di trasmissione • Il protocollo UDP non fornisce altri servizi!
Il protocollo TCP • Il protocollo TCP offre anche un servizio orientato alla connessione – usando controllo di flusso, numeri di sequenza, riscontri e timer, TCP assicura che i dati siano spediti da un processo mittente ad un processo destinatario correttamente ed in ordine
• Il protocollo TCP offre anche un servizio di controllo della congestione – questo servizio non è tanto utile all’applicazione che si appoggia a TCP – bensì è un servizio per il bene comune della rete: • in termini generici, il controllo di congestione previene la saturazione, da parte di qualsiasi connessione TCP, con un traffico eccessivo dei link e dei router situati tra gli host comunicanti • il protocollo TCP tende a suddividere equamente la banda di un link congestionato tra le connessioni TCP che lo attraversano
Multiplexing e demultiplexing application UDP
TCP IP
• IP (livello di rete) riceve tutti i segmenti per un host
Multiplexing e demultiplexing application UDP
TCP IP
• IP (livello di rete) riceve tutti i segmenti per un host • IP li spedisce all’appropriato protocollo del livello di trasporto (quello dell’host destinatario)
Multiplexing e demultiplexing application UDP
TCP IP
• IP (livello di rete) riceve tutti i segmenti per un host • IP li spedisce all’appropriato protocollo del livello di trasporto (quello dell’host destinatario) • Il protocollo di trasporto invia i segmenti alla socket (all’applicazione) cui sono destinati
Multiplexing e demultiplexing • Il lavoro di recapitare i dati in un segmento dello strato di trasporto al corretto socket (applicazione) è chiamato demultiplexing • Il lavoro inverso, di ottenere i dati dall’host sorgente dalle diverse socket, e di inviarli al livello di rete per l’inoltro, è detto multiplexing • Per effettuare queste due operazioni, è necessario – discriminare tra le applicazioni di rete dello stesso host – immagazzinare questo dato di servizio nel segmento inviato allo strato di rete
Intestazioni • Ogni pacchetto (sia del livello di trasporto che del livello rete ha una intestazione) – il livello di rete tiene traccia dell’host mittente, dell’host destinatario e del protocollo di trasporto (TCP o UDP) coinvolto nella comunicazione – il livello di trasporto tiene traccia (almeno) dell’applicazione (socket) mittente e dell’applicazione (socket) destinataria
Intestazioni • Ogni pacchetto (sia del livello di trasporto che del livello rete ha una intestazione) – il livello di rete tiene traccia dell’host mittente, dell’host destinatario e del protocollo di trasporto (TCP o UDP) coinvolto nella comunicazione – il livello di trasporto tiene traccia (almeno) dell’applicazione (socket) mittente e dell’applicazione (socket) destinataria
network header source host
destination host
protocol
Intestazioni • Ogni pacchetto (sia del livello di trasporto che del livello rete ha una intestazione) – il livello di rete tiene traccia dell’host mittente, dell’host destinatario e del protocollo di trasporto (TCP o UDP) coinvolto nella comunicazione – il livello di trasporto tiene traccia (almeno) dell’applicazione (socket) mittente e dell’applicazione (socket) destinataria
transport header network header source host
destination host
protocol
source port
destination port
other info
data
Protocollo UDP • Il protocollo UDP attua il servizio di multiplexing usando esattamente il meccanismo delle intestazioni come descritto: – ad ogni socket UDP viene associato un numero identificativo unico nello host, detto numero di porta (tra 0 e 65535 - 16bit) – una comunicazione avviene tra due socket di due host – un segmento UDP viene formato ponendo in testa del messaggio una intestazione – i campi numero di porta sorgente e numero di porta destinazione sono riempiti con i valori associati alla socket mittente ed alla socket destinataria – viene quindi inviato il pacchetto al livello di rete, che provvede ad aggiungere la propria intestazione con l’indirizzo dell’host mittente, l’indirizzo dell’host destinatario ed il numero che identifica il protocollo di trasporto UDP
Protocollo UDP • Simmetricamente, UDP attua il processo di demultiplexing: – – – –
riceve un segmento dal livello di rete nell’intestazione è definito quale sia il numero di porta destinatario cerca la socket UDP associata a questo numero di porta invia ad essa il contenuto del segmento
• Una socket UDP è univocamente determinata da una coppia – l’indirizzo IP dell’host destinatario – il numero di porta di destinazione
• L’indirizzo IP sorgente e la porta sorgente sono usate per fornire una informazione che consenta di formare una risposta ad un messaggio inviato per mezzo del protocollo UDP
Porte • Il meccanismo di identificare una applicazione con un numero di porta è comune sia a UDP che a TCP • Il numero di porta è rappresentato con 16bit (da 0 a 65535) • Per convenzione i numeri di porta tra 0 e 1023 sono riservati – essi hanno un significato speciale: sono legati ad applicazioni specifiche – sono detti numeri di porta ben conosciuti (well-known)
• Ad esempio – il numero di porta 20 e 21 per TCP sono riservati per FTP
Protocollo TCP • Il servizio di multiplexing/demultiplexing realizzato da TCP è simile a quello realizzato da UDP, ma con qualche importante differenza • Una socket TCP è univocamente determinata da una quadrupla: – – – –
indirizzo IP sorgente numero di porta sorgente indirizzo IP destinazione numero di porta destinazione
• Il processo di multiplexing di TCP è quindi esattamente analogo a quello di UDP
Protocollo TCP • Diversamente, TCP attua il processo di demultiplexing: – riceve un segmento dal livello di rete • il livello di rete fornisce anche l’indirizzo del mittente e del destinatario, scorporati dal segmento
– nell’intestazione è definito quale sia il numero di porta destinatario ed il numero di porta sorgente – cerca la socket TCP associata a questi due numeri di porta, ed ai due indirizzi IP ricevuti – invia ad essa il contenuto del segmento
• Una socket TCP contiene tutte le informazioni sui due terminali che comunicano
Esempio •
•
•
Al client viene assegnato un qualche numero di porta X casuale non utilizzato sull’host A Il server di posta SMTP opera sull’host B e sul numero di porta ben noto 25 La risposta viene destinata alla porta X dell’host A, proveniente dalla porta 25 dell’host B
host A
source port: x dest. port: 25
host B
source port:25 dest. port: x
uso delle porte: SMTP
Esempio •
Con il meccanismo di demultiplexing di TCP, è possibile discriminare una situazione in cui vi siano contemporaneamente due canali di comunicazione diretti alla stessa applicazione dello stesso host – il caso del client C
•
Web client host C
Source IP: C Dest IP: B source port: y dest. port: 80
Source IP: C Dest IP: B source port: x dest. port: 80
Come nota, si rilevi che i numeri di porta sono unici per host – client A e C
Web client host A
Source IP: A Dest IP: B source port: x dest. port: 80
Web server B uso delle porte: HTTP
Conclusione • Questa lezione è tratta da: – Kurose, cap. 3.1 e 3.2
• Esercizi: – Rivedere la programmazione mediante socket – Abbiamo detto che il processo di multiplexing per TCP è analogo a quello per UDP: in che cosa consiste la differenza? – Nell’ultimo esempio, abbiamo illustrato una situazione in cui vi siano due comunicazioni TCP verso la stesso host e la stessa porta: perché questo non può accadere con UDP?