Sei sulla pagina 1di 10

LEZIONE 1

IL LIVELLO DELLE APPLICAZIONI

IN QUESTA LEZIONE IMPAREREMO...

il concetto di applicazione di rete


le tipologie di applicazione
le architetture client-server e P2P

Generalit
Nel modello ISO/OSI e TCP il livello delle applicazioni si occupa di implementare le applicazioni di
rete che vengono utilizzate dall'utente finale. A tale livello, possiamo individuare Internet come la
struttura pi complessa esistente, in cui i l programmatore non si deve preoccupare dei livelli inferiori ma soltanto utilizzare le primitive di comunicazione messe a disposizione dai diversi protocolli
degli altri strati.
Ricordiamo che la pila protocollare di Internet costituita da cinque livelli e l'unit di informazione
che viene gestita a ogni livello assume forma e nome diverso in quanto a ogni passaggio vengono aggiunte le informazioni necessarie a ciascun protocollo per poter portare a termine i proprio compiti:
al livello applicazione viene elaborato il tipo di dato messaggio;
I al livello trasporto viene elaborato i l tipo di dato segmento;
al livello rete viene elaborato il tipo di dato datagram;
al livello collegamento (link) viene elaborato il tipo di dato frame;
al livello fisico non corrisponde alcun tipo di dato (ma solo un segnale fisico).
5 applicazione

messaggio

4 trasporto

segmento

3 rete

datagram

2 collegamento
1 fisico

224

frame

Il livello delle applicazioni

Zoom su...
PILA ISO/OSI
Il modello a pila (stack) ISO/OSI pu essere messo in relazione con altri stack protocollari, in
modo da poterli comparare: la figura seguente mostra la pila TCP/IP, formata da 5 livelli, messa
a confronto con la pila ISO/OSI:
Pila OSI

TCP/IP

Livello 7

Applicazione

Livello 6

Presentazione

Livello 5

Sessione

Livello 4

Trasporto

Livello 3

Rete

Livello 2

Linea

Livello 1

Fisico

z
/

Applicazione

TCP/UDP/ICMP
IP
Ethernet
Fisico

Possiamo notare che la pila TCP/IP analoga alla pila OSI, a eccezione del livello applicazione
di Internet che racchiude i livelli 5, 6 e 7.

Il principale scopo delle reti, sia in locale che in remoto, proprio quello di condividere dati
mediante applicazioni.

Il

livello applicazione implementa i vari protocolli, tra cui:


SNMP: Simple Network Management Protocol;
SMTP: Simple Mail Transfer Protocol;
POP3: Post Office Protocol;
FTP: File Transfer Protocol;
HTTP: HyperText Transfer Protocol;
DNS: Domain Name System;

che vengono utilizzati dalle seguenti applicazioni di rete:


\ posta elettronica;
\ web;
I condivisione di file P2P;
\ giochi multiutente via rete;
I messaggistica istantanea;
I telefonia via Internet;
I videoconferenza in tempo reale;
\ streaming di video-clip memorizzati;
I autenticazione in un calcolatore remoto (Telnet e SSH).

225

Oltre alle applicazioni generali offerte al pubblico di internet, sulla rete "gira" un infinito numero di
applicazioni proprietarie, cio sviluppate all'interno di una organizzazione per la gestione privata,
come per esempio i l collegamento tra filiali remote di una societ commerciale, la connessione in
tempo reale degli agenti col magazzino centrale ecc.

Non va quindi confusa l'applicazione con il livello di applicazione: il livello di applicazione


lo strato protocollare che mette a disposizione i protocolli mediante i quali le applicazioni
possono comunicare tra host remoti presenti sulla rete.
J
"

Applicazioni di rete
In generale una applicazione di rete costituita da un insieme di programmi che vengono eseguiti
su due o pi computer contemporaneamente: questi operano interagendo tra loro utilizzando delle
risorse comuni, accedendo cio concorrentemente agli archivi (database), mediante la rete di comunicazione che li connette.
L'applicazione di rete prende anche il nome di applicazione distribuite- dato che non viene eseguita su di un solo elaboratore (concentrata).

Applicazione

I processi hanno la necessit di scambiare messaggi con gli altri processi della medesima applicazione, sia che essi appartengano alla stessa rete locale oppure che siano remoti e quindi dislocati
dall'altra parte del globo: per comunicare tra loro questi processi devono mettersi in "contatto"
tramite i loro indirizzi e utilizzando i servizi offerti dal livello di applicazione.

JA

Zoom su...

API - APPLICATION PROGRAMMING INTERFACE


Le Application Programming Interface rappresentano un insieme di procedure, utilizzabili dal
programmatore, utili alla stesura di applicazioni di rete. Le API forniscono l'interfaccia tra l'applicazione e lo strato di trasporto realizzando quella che si chiama astrazione tra hardware e
programmatore, svincolando in tal modo gli sviluppatori dalle problematiche di comunicazione
e trasferimento dati che sono i compiti degli strati inferiori.

226

Il livello delle applicazioni

Affinch un processo, presente su un determinato host, invii un messaggio a un qualsiasi altro host,
il processo mittente deve identificare i l processo destinatario in modo univoco. L'identificazione
non pu avvenire soltanto mediante l'indirizzo II' del destinatario, in quanto quest'ultimo individua
soltanto l'host ma non il processo specifico. Pertanto l'identificazione deve tenere conto di due informazioni, l'indirizzo IP e il processo appartenente a quel determinato host, in sintesi:
I una identificazione del nodo su cui opera il processo con cui si desidera comunicare;
I una identificazione del particolare processo all'interno di quel nodo.

processo

nome

indirizzo IP
host
globalmente unico

ESEMPIO

porta

protocollo

specifico dell'host

Numeri di porte

Un caso tipico quello rappresentato da un server sul quale sono disponibili pi servizi, tra i quali:
I email: viene inviata usando il protocollo applicativo SMTP, quindi occorre inviare un messaggio
opportunamente codificato alla porta TCP 25 del server;
sito web: 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 UTP 53 del server che offre il servizio DNS;
per richiedere il servizio a questo server quindi necessario specificare l'indirizzo dell'host e il tipo
di servizio desiderato.

L'identificazione univoca avviene conoscendo sia l'indirizzo IP che i l numero di porta associato al
processo in esecuzione su un host: questo meccanismo gi introdotto nelle lezioni precedenti e
prende il nome di meccanismo dei A socket .
Host
o server

Host
o server

Controllato
dallo sviluppatore
dell'applicazione
Controllato
dal sistema
operativo

Controllato
dallo sviluppatore

dell'applicazione
Socket

|
TCP con buffer
e variabili

Socket

TCP con buffer


e variabili

Controllato
dal sistema
operativo

4 Socket Come abbiamo visto nell'unit precedente un sockei formato dalla coppia indirizzo
IP:numero della porta>; si tratta di un identificatore analogo a una porta, cio a un punto di accesso/
uscita: un processo che vuole inviare un messaggio lo f a uscire dalla p r o p r i a " i n t e r f a c c i a " (socket del
mittente) sapendo che un'infrastruttura estema lo trasporter attraverso la rete fino alla "interfaccia"
del processo di destinazione (socket del destinatario).

227

Un socket consente quindi di comunicare attraverso la rete utilizzando la pila TCP/IP ed quindi
parte integrante del protocollo: le API mettono a disposizione del programmatore gli strumenti necessari a codificare la connessione e l'utilizzo del protocollo di comunicazione.
L'applicazione di rete pu essere vista come composta da due parti:
I una user agent, che funge da interfaccia tra l'utilizzatore dell'applicazione e gli aspetti comunicativi;
I l'implementazione dei protocolli che permettono all'applicazione di integrarsi con la rete.

Componenti di un browser Web


Possiamo individuare queste due componenti per esempio in un browser Web:
I l'interfaccia utente che serve a visualizzare i documenti ricevuti e a permettere la loro navigazione e a richiedere nuovi documenti specificando la loro URL;
i l motore del browser che la parte che si preoccupa di inviare le richieste ai vari server e di
ricevere le risposte.

Vedremo nella prossima lezione in dettaglio l'applicazione World Wide Web (WWW), che costituita
da numerose componenti, come i browser, i web server, i proxy server ecc. e utilizza molte convenzioni per codificare i dati, come HTML, GSS, ma per realizzare la comunicazione tra i diversi componenti sfrutta i l protocollo HTTP (HyperText Transfer Protocol), che implementato nel livello di
applicazione.

Architetture delle applicazioni di rete


Il primo passo che il programmatore deve effettuare per progettare una applicazione di rete la
scelta della architettura dell'applicazione; le principali architetture attualmente utilizzate sono le
seguenti:
I client-server;
I peer-to-peer (P2P);
I architetture ibride (client-server e P2P).

Architettura

client-server

Nella architettura client-server la caratteristica principale che deve sempre esserci un server
attivo che offre un servizio, restando in attesa che uno o pi client si connettano a esso per poter
rispondere alle richieste che gli vengono effettuate.

I! livello delle applicazioni

Un tipico esempio di questa architettura i l WWW, dove molteplici server (al


limite uno per ogni sito pubblicato) possiedono le pagine (statiche o dinamiche)
che saranno inviate ai client che ne fanno
richiesta tramite i browser.
Il server deve sempre essere attivo e deve
possedere un indirizzo IP fisso dove pu
essere raggiunto dagli host client: quindi
l'indirizzo IP deve essere statico, contrariamente a quello dei client che generalmente dinamico.
Un client non in grado di comunicare
con gli altri client ma solo con il server:
pi client possono invece comunicare contemporaneamente con lo stesso server.

Se un server viene consultato contemporaneamente da molti


potrebbe non essere in
grado di soddisfare tutte le richieste e potrebbe entrare in stato di
: necessario
virtualizzare la risorsa realizzando una 4 server farm : questa non altro che un
con
un unico hostname ma con pi indirizzi IP, trasparenti rispetto al
, sui quali vengono
dirottate le richieste di connessione (viene utilizzato per esempio da
book e tutti i siti che hanno una elevata affluenza di visite).

4 Server farm Server farm is a group of servers that are housed in one facility. A server farm
comprises dozens, hundreds or even thousands of rack-mounted servers, typically running the
same operating system and applications. Using load balancing, the workload is distributed among a
~achines.

Architettura peer-to-peer (P2P)


Nelle architetture 4 peer-to-peer (P2P) abbiamo coppie di host chiamati peer (persona di pari
grado, coetaneo) che dialogano direttamente tra loro.
Nei sistemi P2P gli host possono essere visti come una comunit che collabora con il binomio dare
e ricevere: ogni peer fornisce una risorsa e ottiene in cambio altre risorse.
Gli esempi pi noti sono rappresentati dalle reti peer to peer in ambito di condivisione di file, come
per esempio eMule, oppure Gnutella.

Un peer pu anche decidere di offrire gratuitamente risorse, magari per la partecipazione


iniziative caritatevoli oppure di ricerca, come per esempio alla ricerca sul cancro oppure agli
aiuti ai terremotati mediante donazioni.

4 Peer-to-peer Un sistema Peerto Peer formato da un insieme di entit autonome (p -), capaci
di auto-organizzarsi, che condividono un insieme di risorse distribuite presenti all'interno di una rete.
sistema utilizza tali risorse per fornire una determinata funzionalit in modo completamente o parzialmente decentralizzato.

229

Lo strato di applicazione

P2P decentralizzato
completamente decentralizzata un peer ha sia funzionalit di client
che di server (funzionalit simmetrica =
4 servent ) , ed impossibile localizzare
una risorsa mediante un indirizzo IP statico: vengono effettuati nuovi meccanismi di
indirizzamento, definiti a livello superiore
rispetto al livello IP.
Le risorse che i peer condividono sono i da-

Nella architettura

ti, l a memoria, la banda ecc.: il sistema P2P

capace di adattarsi a un continuo cambiamento dei nodi partecipanti (churn) mantenendo connettivit e prestazioni accettabili
senza richiedere l'intervento di alcuna entit
centralizzata (come un server).
< Servent P2P knows of only one role, the servent, where the term "servent" is the combination of server and client ("SERVer + cliENT = SERVENT). Every servent performs, or at least is
able to perform the same tasks (symmetric roles), which usually consist of searching its local or locally
registered ressources, forwarding search requests and serving an offered ressource.

P2P centralizzato
Il P2P centralizzato un compromesso tra
il determinismo del modello client server e
la scalabilit del sistema puro: ha un server
centrale (directory server) che conserva informazioni sui peer (index, cio i l mapping
resorse-peer) e risponde alle richieste su
quelle informazioni effettuando quindi la ricerca in modalit centralizzata.
I peer sono responsabili di conservare i dati e
le informazioni perch i l server centrale non
memorizza file, di informare il server del contenuto dei file che intendono condividere e di
permettere ai peci che lo richiedono di scaricare le risorse condivise. La sua implementazione pi famosa Napster, dove gli utenti
si connettono a un server centrale dove pubblicano i nomi delle risorse che condividono.

P2P ibrido (o parzialmente


centralizzato)
II P2P ibrido un P2P parzialmente centralizzato dove sono presenti alcuni peer (detti
supernodi o super-peer o ultra-peer) determinati dinamicamente (tramite un algoritmo di elezione) che hanno anche la funzione
di indicizzazione: gli altri nodi sono anche
chiamati leaf peer.

Zoom su..
APPLICAZIONI P2P
Tra le applicazione che utilizzano le architetture P2P ricordiamo le seguenti.

Condivisione di file (P2P file sharing):


I Napster,
I Gnutella, KaZaA,
I eMule,
BitTorrent;

Telefonia e comunicazione (Instant Messaging and Voice over P2P):


> IMP systems: Instant Message and Presence Applications,
I VoP2P: Skype,
I Jabber;

P2PTV:
I Video Streaming applications;

Content Distribution Network (CDN):


I CoralCDN;

P2P distributed storage:


Wuala,
I Freenet;

Condivisione di risorse di calcolo:


I SETI@home (Search for Extraterrestrial Intelligence).

Servizi offerti dallo strato di trasporto alle applicazioni


Le applicazioni richiedono allo strato di trasporto un insieme di servizi specifici oltre ai protocolli
"eoessari per realizzarli, che possono essere standard o realizzati ad hoc.
Tutu i protocolli, sia standard che specifici, hanno in comune una particolarit: trasferire dei mesi^gj da un punto a un altro della rete. Ogni applicazione deve scegliere tra i protocolli di trasporto
.r.iale adottare per realizzare un protocollo applicativo in base ai servizi che sono necessari alle
K^reinche esigenze della applicazione, che possono essere riassunte in:
^ferimento dati affidabile;
ampiezza di banda;
temporizzazione;
I sicurezza.
1

Trasferimento dati affidabile


Con trasferimento di dati affidabile intendiamo un servizio che garantisce la consegna completa e
aa dei dati: da una parte sappiamo che alcune applicazioni, come per esempio quelle di audio/
ideo possono tollerare qualche perdita di dati senza compromettere lo scopo dell'applicazione mencre altre, come per esempio il trasferimento di file, richiedono un trasferimento dati affidabile al 100%.
A tale scopo il livello di trasporto mette a disposizione due protocolli:
9 UDP User Datagram Protocol: i l protocollo di trasporto senza connessione da utilizzarsi quando
la perdita di dati un fatto accettabile;
TCP Transfer Control Protocol: i l protocollo orientato alla connessione da utilizzarsi quando la
Tardit di dati un evento inaccettabile, ovvero quando i l trasferimento deve essere affidabile.

Ampiezza di banda (bandwidth) o throughput


quelle multimediali, per poter "funzionare" hanno bisogno
di avere una garanzia sulla larghezza di banda minima disponibile, cio possono richiedere un
throughput garantito di R bsp: si pensi alla trasmissione di un evento in diretta in una Web-TV.
Altre applicazioni, invece, non hanno questo bisogno come prioritario, ma utilizzano in modo
elastico l'ampiezza di banda che si rende disponibile: tipici esempi sono la posta elettronica o i
sistemi ftp.
A l c u n e applicazioni, come per esempio

Internet sappiamo avere una natura eterogenea e quindi i protocolli di trasporto non sono in
I grado di garantire la presenza di una certa quantit di banda per tutta la durata necessaria
p o r t r a s m e t t e r e un m e s s a g g i o m a , c o m e vedremo, mette a disposizione la possibilit di imI p l e m e n t a r e u n p r o t o c o l l o applicativo flessibile che realizza un circuito virtuale che fallisce o si
adatta se la banda insufficiente.

Temporizzazione
Alcune applicazioni, come la telefonia Voip, i giochi interattivi, gli ambienti virtuali, per essere
"realistiche" ammettono solo piccoli ritardi per essere efficaci: lo strato di trasporto non in grado
di garantire i tempi di risposta perch le temporizzazioni presenti assicurano un certo ritardo endto-end tra le applicazioni.
Il protocollo TCP garantisce la consegna del pacchetto, ma non il tempo che ci impiega e neppure il
protocollo UDP, nonostante sia pi veloce del TCP, temporalmente affidabile.
La soluzione, come vedremo, quella di utilizzare un protocollo di trasporto in tempo reale, come
RTP (Real Time Protocol), che in grado di studiare i ritardi di rete e calibrare gli apparati e i collegamenti per garantire di restare nei limiti di tempo prefissati, scegliendo alternativamente quando
utilizzare UDP e quando TCP.

Sicurezza
Una applicazione pu richiedere allo strato di trasporto anche la cifratura di tutti i dati trasmessi in
modo tale che anche se questi venissero intercettati da malintenzionati non si perda la riservatezza.
E quindi possibile che vengano richiesti dei servizi di sicurezza da applicare per garantire l'integrit
dei dati e l'autenticazione end-to-end.
La tabella seguente riporta i requisiti richiesti al servizio di trasporto da parte di alcune applicazioni
comuni.
Applicazioni

232

Tolleranza
alla perdita dei dati

Ampiezza
di banda

Sensibilit
dal tempo

Trasferimento file

No

Variabile

No

Posta elettronica

No

Variabile

No

Documenti Web

No

Variabile

No

AudioA/ideo in tempo reale

Audio: da 5 Kbps a 1 Mbps


Video: da 10 Kbps a 5 Mbps

S, centinaia di ms

Audio/Video memorizzati

Come sopra

S, pochi secondi

Giochi interattivi

Fino a pochi K

S, centinaia di ms

Messaggistica istantanea

No

Variabile

S e no

li livello delle applicazioni

Lezione 1

I 'inclusioni

Ricapitoliamo le caratteristiche dei due protocolli messi a disposizione dallo strato di trasporto per
deinire, in base alla specifiche richieste dalle categorie di applicazioni riportate nella precedente
tabella, quale di essi pi opportuno utilizzare:
I l'DF: il protocollo di trasporto senza connessione da utilizzarsi quando la perdita di dati un fatto
accettabile in quanto non affidabile, non offre il controllo di flusso, il controllo della congestione,
del ritardo e non garantisce una banda minima;
9 TCP: il protocollo orientato alla connessione da utilizzarsi quando la perdita di dati un evento
inaccettabile, ovvero quando il trasferimento deve essere affidabile, d la garanzia di un trasporto
senza errori o perdita di informazioni, effettua il controllo di flusso in quanto se i l ricevente pi
lento del mittente esso rallenter per non sommergere il ricevente, esegue anche il controllo della
congestione limitando il mittente se la rete sovraccarica, ma non d garanzie di banda minima
e ritardo minimo.
seguente tabella riporta alcune applicazioni Internet dove possibile confrontare il protocollo
itilizzato a livello applicazione e il protocollo a livello di trasporto
Applicazioni
:

;sta elettronica

Protocollo
a livello applicazione

Protocollo di trasporto
sottostante

SMTP (RFC 2821)

TCP

Accesso a terminali remoti

Telnet (RFC 854)

TCP

Web

HTTP (RFC 2616)

TCP

~ asferimento file

FTP (RFC 959)

TCP

Multimedia in streaming

Proprietario (RealNetworks)

TCP o UDP

Telefonia Internet

Proprietario (Vonage, Dialpad)

Tipicamente UDP

233

Potrebbero piacerti anche