Prima di addentrarci nella progettazione di applicazioni a livello di applicazione vediamo come interagiscono gli host in base al tipo di architettura che non fa riferimento a nessuno dei 5 livelli descritti nel capitolo di introduzione.
Questo tipo di architettura descrive l'interazione tra una gruppo di host detti client, in genere si tratta di computer, smartphone, tablet, che inviano delle richieste ad un host sempre attivo e con un indirizzo IP fisso noto che si chiama server. In applicazioni con una certa intensità di traffico, i server sono formata da diverse macchine che collaborano per aumentare la potenza di calcolo (e quindi di gestione di richieste) del server. In questo tipo di architettura i client non comunicano direttamente tra di loro, ma attraverso il server.
In questo tipo di architettura non ci sono server, quindi la comunicazione non è centralizzata. Gli host vengono detti peer (pari). I peer sono normali computer connessi alla rete che condividono informazioni. I costi nell'architettura peer-to-peer sono ridotti, non sono necessarie infrastrutture di rete particolari (data center) e neanche una connessione dedicata, dato che i computer comunicano grazie al collegamento al quale sono allacciati in quel momento. Diverse applicazioni fanno uso di un sistema ibrido tra i due tipi di architetture.
Due processi su host diversi comunicano scambiandosi messaggi.
Due processi appartenenti allo stesso sistema comunicano internamente grazie a delle system call messe a disposizione dai sistemi operativi.
Due processi di una applicazione di rete, invece, posso ricevere e/o inviare messaggi da sistemi operativi diversi.
Definiamo client l'host che richiede un servizio ad un altro host o ad un server, definiamo server un host che eroga delle informazioni dopo aver ricevuto una richiesta.
In una architettura peer-to-peer l'host può comportarsi sia da client che da server. Se l'host A richiede un certo tipo di file e l'host B lo invia, allora A funge da client e B funge da server.
I processi comunicano mediante una interfaccia chiamata socket.
Una socket è come la porta di ingresso/uscita di una casa. Il messaggio può essere inviato verso la porta d'uscita e attraverso un infrastruttura, il cui sviluppo non tocca al programmatore dell'app, arriva verso la porta di destinazione dell'altro processo.
L'indirizzamento del messaggio da un host all'altro avviene attraverso due dati:
Servizio | Porta |
---|---|
SSH | 22 |
Telnet | 23 |
FTP | 20-21 |
HTTP | 80 |
... | ... |
Come abbiamo detto nel capitolo di introduzione i pacchetti che viaggiano nella rete posso andare perduti se il buffer di un router è pieno. Ci sono applicazioni che non possono tollerare perdite, per esempio applicazioni bancarie. Per queste è necessario l'utilizzo di un servizio di trasporto affidabile. L'app è certa che una volta inoltrati i pacchetti verso la socket, essi andranno consegnati sicuramente. Invece servizi di trasporto non affidabili, sono più veloci, e potrebbero essere adatti per applicazioni che tollerano perdite, come per esempio app multimediali (streaming).
Un protocollo a livello di applicazione definisce come i processi di un’applicazione su sistemi periferici diversi si scambiano i messaggi. In particolare definisce:
Occorre distinguere applicazione e protocollo a livello di applicazione.
Esempio: il browser consente di richiedere documenti ai web server. Un browser è formato di tante parti, tipo di documenti supportati, barra degli indirizzi, ecc. Il protocollo HTTP fa si che i messaggi scambiati tra client server consentano al web browser di funzionare correttamente. Il protocollo HTTP è una parte dell’applicazione browser.
Navigazione: