Architetture delle applicazioni di rete - Start point

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.

Architettura client-server
...

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.

Architettura peer-to-peer
...

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.

Processi comunicanti
...

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.

Definizione di client e di server

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.
Pasted image 20230919101242.png
L'indirizzamento del messaggio da un host all'altro avviene attraverso due dati:

  • identificatore dell'host destinatario: è un indirizzo IP, un numero a 32 bit che identifica in modo univoco un host nella rete;
  • un'identificatore di servizio: è un numero di porta, dato che su un host, in un dato momento possono essere eseguiti più servizi, attraverso un numero di porta si specifica il processo a cui deve essere recapitato il messaggio. Ogni servizio ha un numero di porta.
    Alcuni servizi noti accoppiati al suo numero di porta:
ServizioPorta
SSH22
Telnet23
FTP20-21
HTTP80
......

Trasporto affidabile e non
...

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).

Protocolli a livello di applicazione
...

Un protocollo a livello di applicazione definisce come i processi di un’applicazione su sistemi periferici diversi si scambiano i messaggi. In particolare definisce:

  • I tipi di messaggi scambiati (di richiesta o di risposta)
  • La sintassi dei vari tipi di messaggi
  • La semantica dei campi (ossia il significato delle informazioni che contengono)
  • Le regole per determinare quando e come un processo invia e risponde ai messaggi.

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: