Reti di Telecomunicazione Lezione 6

Transcript

Reti di Telecomunicazione Lezione 6
Reti di Telecomunicazione
Lezione 6
Marco Benini
Corso di Laurea in Informatica
[email protected]
Programma della lezione
• Lo strato di applicazione
– protocolli
• Applicazioni di rete
–
–
–
–
client - server
comunicazione attraverso la rete
indirizzamento di processi
user agent
• Servizi per le applicazioni
• Servizi offerti dal livello di trasporto
Lo strato di applicazione
• Una applicazione di rete (o distribuita) è un insieme di programmi
che operano concorrentemente, scambiandosi informazioni
attraverso una rete
• Per poter comunicare, una applicazione di rete necessita di un
supporto da parte dei sistemi
– il supporto sistemico per le applicazioni di rete è offerto dal livello di
applicazione dello stack Internet
• Ogni processo che opera su un nodo della rete, può scambiare
messaggi con gli altri processi della medesima applicazione
utilizzando i servizi offerti dal livello di applicazione
Lo strato di applicazione
Due processi comunicano utilizzando i servizi offerti dallo strato di applicazione
application
transport
network
data link
physical
application
transport
network
data link
physical
Protocolli di applicazione
• E’ importante distinguere tra applicazioni e protocolli di
applicazione
– un protocollo di applicazione è implementato dal livello di applicazione
– quindi, un protocollo è una parte (importante) di una applicazione
• Ad esempio, l’applicazione World Wide Web (WWW)
– è costituita da numerose componenti, come i browser, i server ed i proxy
server
– utilizza molte convenzioni per codificare i dati, come HTML, CSS, ...
– per permettere la comunicazione tra i vari componenti, utilizza un
protocollo implementato nel livello di applicazione: HTTP (HyperText
Transfer Protocol)
Protocolli di applicazione
• Un protocollo del livello di applicazione definisce:
– i tipi di messaggi scambiati, per esempio, messaggi di richiesta o di
risposta
– la sintassi dei vari tipi di messaggio, per esempio, i campi del messaggio
e come questi campi vengono codificati
– la semantica dei messaggi, ovvero il significato dell’informazione dei
messaggi, e quale è il modo corretto di interpretarla
– le regole per determinare quando e come un processo invia messaggi o
risponde a messaggi
• Il software del livello applicazione che realizza un protocollo si
preoccupa di rispettare la specifica data dal protocollo stesso
User agents
• Una componente (processo) di una applicazione di rete è
composta di due parti:
– l’implementazione dei protocolli che permettono all’applicazione di
funzionare, come parte del livello di applicazione
– uno user agent, che funge da interfaccia tra l’utilizzatore dell’applicazione
e gli aspetti comunicativi
• Ad esempio, un browser Web:
– ha una interfaccia utente che serve a visualizzare i documenti ricevuti ed
a permettere la loro navigazione
– inoltre l’interfaccia utente consente di richiedere nuovi documenti
specificando la loro URL
– il motore di un browser, invece, è la parte che si preoccupa di inviare le
richieste ai vari server e di ricevere le risposte
User agents
User Agent
Client
Protocol
User Agent
Client
Protocol
User Agent
messages
Server
Protocol
Un processo, parte di una
applicazione di rete, è composto
da una implementazione dei
protocolli di livello applicazione
e da uno user agent
Codificare un protocollo
• Per codificare un protocollo di livello applicazione, è necessario
comunicare con l’interfaccia del livello di trasporto
• Lo strumento di programmazione messo a disposizione nel caso
dello stack Internet è dato dalla API (Application Programmer’s
Interface) delle socket
Protocol
• Una socket consente di comunicare attraverso la rete utilizzando
lo stack di Internet a partire dal livello di trasporto
– in questo corso non spiegheremo la sintassi e l’uso delle socket, essendo
questo argomento già trattato in altri corsi
Indirizzamento dei processi
• Affinché lo strato di applicazione di un processo possa inviare un
messaggio ad un altro processo su di un altro nodo, è
necessario identificare il processo ricevente
– in realtà, vogliamo identificare lo strato di applicazione del processo
ricevente
• Questo indirizzamento è composto di due parti
– una identificazione del nodo su cui opera il processo con cui si desidera
comunicare
– una identificazione del particolare processo all’interno di quel nodo
• L’indirizzamento di un processo è una funzione che viene fornita
dallo strato di trasporto
Indirizzamento dei processi
• Il nome dell’host viene codificato in modo univoco su tutta
Internet mediante un indirizzo IP
– l’indirizzo IP è una parte del protocollo di livello rete IP
• Il processo da indirizzare viene identificato con una coppia di
valori:
– il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro)
– l’unico processo (se esiste) sull’host indirizzato che sia associato ad un
certo valore di porta
Indirizzamento dei processi
• Il nome dell’host viene codificato in modo univoco su tutta
Internet mediante un indirizzo IP
– l’indirizzo IP è una parte del protocollo di livello rete IP
• Il processo da indirizzare viene identificato con una coppia di
valori:
– il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro)
– l’unico processo (se esiste) sull’host indirizzato che sia associato ad un
certo valore di porta
host
processo
Indirizzamento dei processi
• Il nome dell’host viene codificato in modo univoco su tutta
Internet mediante un indirizzo IP
– l’indirizzo IP è una parte del protocollo di livello rete IP
• Il processo da indirizzare viene identificato con una coppia di
valori:
– il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro)
– l’unico processo (se esiste) sull’host indirizzato che sia associato ad un
certo valore di porta
host
indirizzo IP
processo
protocollo
porta
Indirizzamento dei processi
• Il nome dell’host viene codificato in modo univoco su tutta
Internet mediante un indirizzo IP
– l’indirizzo IP è una parte del protocollo di livello rete IP
• Il processo da indirizzare viene identificato con una coppia di
valori:
– il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro)
– l’unico processo (se esiste) sull’host indirizzato che sia associato ad un
certo valore di porta
nome
indirizzo IP
globalmente
unico
processo
protocollo
specifico
dell’host
porta
Indirizzamento dei processi
• Il protocollo di trasporto ed il numero di porta sono definiti a priori
per i server che offrono un servizio pubblico
• Ad esempio:
– per inviare una email usando il protocollo applicativo SMTP, occorre
inviare un messaggio opportunamente codificato alla porta TCP 25 del
server
– per richiedere una pagina web, si usa il protocollo applicativo HTTP, che
invia un opportuno messaggio di richiesta alla porta TCP 80 del server
– per trasformare un nome di un calcolatore in un indirizzo IP, si invia una
opportuna richiesta alla porta UDP 53 di un DNS server
• Per sapere quali sono i protocolli di trasporto e le porte associate
ai vari servizi applicativi standard, si veda
http://www.iana.org
Servizi per una applicazione
• Quali servizi servono ad una applicazione?
– Ogni applicazione di rete ha bisogno di servizi specifici
– Ogni servizio specifico viene realizzato da un opportuno protocollo, che
può essere standard oppure progettato e realizzato ad hoc
• Quali caratteristiche deve offrire il livello di trasporto per poter
efficacemente implementare protocolli di livello applicativo?
– Sebbene ogni protocollo di livello applicativo abbia le proprie specificità,
tuttavia il trasporto dei messaggi da un punto ad un altro della rete è una
caratteristica comune di tutte le applicazioni
– Tuttavia esiste più di un protocollo di trasporto
• Quale protocollo di trasporto adottare per realizzare un protocollo
applicativo?
Servizi per una applicazione
• Perdita di dati
– alcune applicazioni (ad esempio, audio) possono sopportare la perdita di
alcuni dati
– altre applicazioni (ad esempio, trasferimento di files) richiedono un
trasferimento di informazione affidabile al 100%
• Due protocolli di trasporto
– quando la perdita di dati è un fatto accettabile, il protocollo di trasporto
può essere senza connessione: nello stack Internet, UDP
– quando la perdita di dati è un evento inaccettabile, il protocollo deve
essere orientato alla connessione, ovvero essere affidabile: nello stack
Internet, TCP
Servizi per una applicazione
• Temporizzazione
– alcune applicazioni (ad esempio, telefonia su Internet, giochi interattivi)
richiedono ritardi molto contenuti per essere efficaci
• Protocolli di trasporto
– il protocollo TCP non è affidabile dal punto di vista temporale: un
pacchetto è garantito che giunga integro a destinazione, ma non entro un
tempo stabilito a priori
– il protocollo UDP è più veloce di TCP, dovendo effettuare meno controlli,
tuttavia non è temporalmente affidabile
• Soluzione
– usare un protocollo di trasporto in tempo reale, come RTP (Real Time
Protocol)
– studiare i ritardi di rete e calibrare gli apparati ed i collegamenti per
garantire di restare nei limiti di tempo prefissati, quindi usare UDP o TCP
Servizi per una applicazione
• Larghezza di banda
– alcune applicazioni (ad esempio, multimedia) richiedono una quantità
minima di larghezza di banda per poter essere efficaci
– altre applicazioni (elastiche) fanno uso della quantità di banda che hanno
a disposizione
• Protocolli di trasporto
– su Internet, proprio per la sua natura eterogenea, non è possibile
garantire la presenza di una certa quantità di banda per trasmettere un
messaggio
• Soluzione
– implementare un protocollo applicativo che realizza un circuito virtuale
– costruire un protocollo flessibile, che fallisce o si adatta se la banda è
insufficiente
Servizi per una applicazione
Applicazione
trasferimento di file
posta elettronica
documenti web
audio/video
in tempo reale
audio/video memorizzati
giochi interattivi
applicazioni finanziarie
Perdita di dati
esclusa
esclusa
tollerabile
tollerabile
tollerabile
tollerabile
esclusa
Banda
elastica
elastica
elastica
audio: 5K-1Mbs
video:10K-5Mbs
come sopra
pochi Kbps
elastica
Tempo
no
no
no
sì, 100 ms
sì, pochi sec
sì, 100 ms
sì e no
Applicazioni e trasporto
Applicazione
posta elettronica
accesso remoto
Web
trasferimento file
streaming multimedia
file server remoto
telefonia su Internet
Protocolli di livello
applicazione
smtp [RFC 821]
telnet [RFC 854]
http [RFC 2068]
ftp [RFC 959]
proprietario
(ad es., RealNetworks)
NFS, SMB
proprietario
(ad es., Vocaltec)
Protocollo di
trasporto usato
TCP
TCP
TCP
TCP
TCP o UDP
TCP o UDP
usualmente UDP
Conclusione
• Questa lezione è tratta da:
– Kurose, cap. 2.1
• Esercizi:
– Studiare il protocollo HTTP: siete in grado di identificare i tipi di
messaggio, le regole di scambio, le regole di codifica?
– Rivedere cosa sono e come funzionano le socket
– Quali protocolli di trasporto scegliereste per il servizio applicativo del
Domain Name System? Perché?
– Quali protocolli di trasporto scegliereste per realizzare un gioco di ruolo su
rete? Perché? E per una simulazione di Gran Premio?