
Indice
- Introduzione
- Cos’è un protocollo?
- Focus
- Richieste e risposte
- Richiesta
- Risposta
- Sicurezza
- Funzionamento
- Tipologie di connessione
- Video
Introduzione
Nel mondo della tecnologia, il modello client-server è uno dei pilastri fondamentali delle architetture di rete. Quest'articolo esplorerà i concetti chiave relativi a questo modello, con un focus particolare sul protocollo HTTP, le richieste e le risposte, e i protocolli di sicurezza. Comprendere questo modello è essenziale per chiunque desideri approfondire il funzionamento delle applicazioni web moderne.
Incominciamo dalle basi: Cos’è un Protocollo?
Un protocollo è un insieme di regole e convenzioni che permettono la comunicazione tra dispositivi in una rete. Questi standard garantiscono che i dati vengano trasmessi e ricevuti correttamente.
Esistono diversi tipi di protocolli, inclusi quelli per la comunicazione via email (SMTP), il trasferimento di file (FTP) e, ovviamente, HTTP per il web. Ogni protocollo ha le sue regole specifiche che ne definiscono il funzionamento.
HTTP Focus
HTTP (Hypertext Transfer Protocol) è il protocollo di comunicazione principale utilizzato per il trasferimento di informazioni su internet. È un protocollo stateless, cioè ogni richiesta e risposta è indipendente dalle altre, privo di stato: il server non mantiene informazioni sullo stato delle sessioni tra diverse richieste da parte del client, ma bensì il server elabora la richiesta e invia una risposta contenente i dati richiesti o informazioni di stato, mentre il client (di solito un browser web) invia una richiesta HTTP a un server per ottenere risorse, come pagine HTML, immagini o documenti.
Richieste e Risposte HTTP
Nel protocollo HTTP, la comunicazione tra client e server avviene attraverso richieste e risposte. Il client, come un browser web, invia una richiesta al server, il quale risponde con le informazioni richieste o un messaggio di stato.

Richiesta HTTP (HTTP Request)
Una richiesta HTTP è composta da tre elementi principali:
- Linea di richiesta: Include il metodo HTTP (come GET, POST, PUT, DELETE), l’URI (l’indirizzo della risorsa richiesta) e la versione del protocollo.
- Header: Fornisce metadati sulla richiesta.
- Host: Il dominio del server.
- Corpo della richiesta: Contiene i dati effettivi da inviare al server, presente nei metodi POST e PUT (ad esempio, i dati di un form).
Risposta HTTP (HTTP Response)
Il server risponde con una risposta HTTP, composta da:
- Corpo della risposta: Include i dati richiesti, come il codice HTML di una pagina o un’immagine.
- Header: Contiene informazioni sulla risposta, come Content-Type (ad esempio, HTML o JSON) e Set-Cookie per gestire sessioni.
- Linea di stato: Indica la versione del protocollo, il codice di stato (200 OK: Successo, 404 Not Found: Risorsa non Trovata, 500 Internal Server Error: Errore del server) e un messaggio di stato descrittivo.

HTTPS e i Protocolli di Sicurezza
HTTPS (HyperText Transfer Protocol Secure) è la versiona sicura di HTTP, perché utilizza una combinazione di due protocolli di sicurezza:
- SSL (Secure Sockets Layer)
- TLS (Transport Layer Security)
Questi protocolli criptano i dati scambiati tra client e server, proteggendoli da attacchi di tipo man-in-the-middle.

Funzionamento dell’HTTPS
- Il client richiede una connessione sicura al server.
- Il server risponde con un certificato SSL che contiene la sua chiave pubblica.
- Il client verifica il certificato e utilizza la chiave pubblica per creare una chiave di sessione criptata.
- Il server e il client ora possono comunicare in modo sicuro utilizzando questa chiave di sessione.
Tipologie di Connessione Client-Server
Esistono diversi tipi di connessioni che possono avvenire tra un client e un server:
- Connessioni sincrone: Il client invia una richiesta e aspetta una risposta prima di poter inviare un’altra richiesta. Questo tipo di connessione è molto comune nei browser web, con un esempio pratico: il caricamento di una pagina web, dove il browser attende la risposta del server per visualizzare i contenuti.
- Connessioni asincrone: Il client può inviare più richieste contemporaneamente e gestire le risposte man mano che arrivano. Un esempio di questo tipo di connessione è il modello AJAX utilizzato nelle moderne applicazioni web, con un esempio pratico: la ricerca di prodotti su un sito e-commerce, dove i suggerimenti appaiono mentre l’utente digita, senza ricaricare la pagina.
- Connessione persistente: Il client può riutilizzare la stessa connessione per inviare più richieste senza dover aprire e chiudere connessioni multiple e questo riduce i tempi di latenza e migliora le prestazioni, con un esempio pratico: un browser che scarica più risorse utilizzando una singola connessione aperta con il server
- Connessione non persistente: Ogni richiesta e risposta usa una nuova connessione, che viene chiusa subito dopo. E’ meno efficiente rispetto alle connessioni persistenti, soprattutto per siti con molte risorse, esso può essere un sito che scarica singole immagini da un sito web utilizzando connessioni separate per ogni richiesta.
Per maggiori informazioni o dubbi irrisolti si consiglia la visione del seguente video!