Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it
Lo strato di applicazione protocolli Programma della lezione 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 Client User Agent Protocol messages User Agent Protocol Server Client User Agent 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 processo indirizzo IP 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 processo indirizzo IP protocollo porta globalmente unico specifico dell host
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?
Perdita di dati Servizi per una applicazione 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 Perdita di dati Banda Tempo trasferimento di file posta elettronica documenti web audio/video in tempo reale audio/video memorizzati giochi interattivi applicazioni finanziarie esclusa esclusa tollerabile tollerabile tollerabile tollerabile esclusa elastica elastica elastica audio: 5K-1Mbs video:10k-5mbs come sopra pochi Kbps elastica 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) TCP TCP TCP TCP Protocollo di trasporto usato TCP o UDP TCP o UDP usualmente UDP
Questa lezione è tratta da: Kurose, cap. 2.1 Conclusione 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?