Architetture di rete 4. Le applicazioni di rete
Introduzione L avvento di tecnologie (hw, sw, protocolli) di rete avanzate ha permesso la nascita di architetture software molto evolute che permettono lo scambio di dati e una distribuzione del calcolo impensabile fino a qualche decennio fa.
Creare il futuro Il principale scopo delle reti (sia LAN che INTERNET) è quello di condividere dati mediante applicazioni. Ogni giorno usiamo queste applicazioni: social-network, banking-online, registro elettronico, drop-box, games, etc. Noi siamo chiamati a pensare e quindi creare questi tipi di applicazioni.
Applicazioni di rete e livello di applicazione
Modello ISO/OSI e le applicazioni Nel modello ISO/OSI e TCP/IP il livello delle applicazioni si occupa di implementare le applicazioni di rete che vengono utilizzate dall utente finale. Il programmatore non si preoccupa di come i livelli inferiori funzionano, ma usa le primitive di comunicazione messe a disposizione dai diversi protocolli (API) API = Application Programming Interface
Livello di applicazione E uno strato protocollare che mette a disposizione i protocolli mediante i quali le applicazioni possono comunicare tra host remoti presenti nella rete
Protocolli del livello applicazione Usati dalle varie applicazioni di rete: - email - web - giochi - streaming - condivisione P2P
Applicazioni di rete Un applicazione di rete è costituita da un insieme di programmi che vengono eseguiti su due o più computer contemporaneamente: questi interagiscono usando anche risorse comuni (es. database) mediante la rete che li connette. applicazione di rete è detta applicazione distribuita; utilizza messaggi per far comunicare processi in esecuzione su host differenti e distanti
Socket Il processo mittente identifica il processo destinatario del messaggio in modo univoco utilizzando indirizzo IP (per indentificare l host) e la porta (per identificare il processo)
Socket del mittente e del destinatario Un socket consente la comunicazione attraverso la rete usando la pila TCP/IP, le API mettono a disposizione del programmatore gli strumenti necessari a codificare la connessione e l utilizzo del protocollo di comunicazione.
Composizione di un applicazione di rete L applicazione di rete è in pratica composta da due parti: - una user agent che funge da interfaccia tra l utente e la rete - es. in un web browser è l interfaccia utente che permette la visualizzazione e la navigazione di un iper-testo - l implementazione dei protocolli che permettono all applicazione di integrarsi - es. in un web browser è il motore che si occupa di inviare le richieste e ricevere le risposte
Scelta architettura Il primo passo che il programmatore (l architetto) deve effettuare è la scelta della tipologia di architettura da usare: - client/server - peer-to-peer - ibride
Client - Server Un server che ha un IP statico viene raggiunto da richieste di numerosi client. Un client non comunica con altri client, ma può comunicare con più server contemporaneamente. Se un server deve soddisfare più client, per evitare la congestione, si utilizza una server farm:unico hostname, ma più indirizzi, trasparenti ai client (es. Amazon, Google, Facebook)
Peer-to-peer (P2P) Un sistema P2P è formato da un insieme di entità autonome (peer = coetaneo), capaci di auto-organizzarsi, che condividono un insieme di risorse distribuite presenti all interno di una rete. Comunità di host fondata sul paradigma: dare e ricevere. Esempi: Emule, etc Il sistema utilizza tali risorse per fornire una determinata funzionalità in modo completamente o parzialmente decentralizzato.
P2P decentralizzato Un peer è sia client che server, risorse identificate da IP statico, meccanismi di indirizzamento propri. Il sistema di adatta al continuo cambiamento dei nodi partecipanti mantenendo connettività e prestazioni accettabili senza richiedere un server centralizzato. Sistema altamente scalabile
P2P centralizzato Abbiamo un server centrale (directory server) che conserva le informazioni sui peer (index o mapping). Il server centrale non memorizza dati, ma solo le informazioni dei dati contenuti nei peer. Esempio: Napster
P2P ibrido E simile al P2P decentralizzato, con l aggiunta di peer (super-peer) che hanno una funzione di indicizzazione. Questi peer sono determinati dinamicamente da un algoritmo, gli altri nodi prendono il nome di leaf-peer (foglia)
I messaggi non sono tutti uguali Tutti i protocolli hanno in comune il compito: trasferire messaggi. Ma in base ai dati e ai requisiti funzionali è necessario scegliere il protocollo più adatto. Classi di requisiti: - affidabilità - ampiezza della banda: garanzia di larghezza minima (es. diretta TV) - temporizzazione: non ci devono essere ritardi (es. giochi, voip) - sicurezza: riservatezza dei dati
Alcuni esempi
UDP vs TCP UDP (User Datagram Protocol) - protocollo di trasporto senza connessione, poco affidabile, ma più veloce (temporizzazione) TCP (Transfer Control Protocol) - protocollo orientato alla connessione, affidabile ma lento
Esempi