IL PROTOCOLLO HTTP - (Parte 1)


L'HyperText Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) è un protocollo a livello applicativo usato come principale sistema per la trasmissione d'informazioni sul web ovvero in un'architettura tipica client-server.

Il protocollo HTTP è uno dei più importanti e datati protocolli di livello applicativo.

Tutte le volte che un utente richiede una qualsiasi pagina Web utilizza il protocollo HTTP sia per fare la richiesta al server che ospita la pagina sia per ricevere i dati provenienti in risposta dal server. E' evidente, dunque, che il protocollo HTTP è presente sia nello strato applicativo del Client che in quello del Server altrimenti la comunicazione sopra descritta non avrebbe luogo.

protocollo-http

La richiesta da parte del client viene effettuata tramite il browser che gestisce l'intera comunicazione e restituisce a video la risorse richiesta dall'utente. Il browser vede una pagina web come un insieme di oggetti legati tra di loro attraverso collegamenti ipertestuali.

Quindi una pagina web sicuramente sarà formata da un corpo HTML più altre risorse che potrebbero essere script, immagini, applet Java e così via.

Tutte le risorse presenti su un server possono essere raggiunte grazie ad un percorso detto URL che fa riferimento ad uno solo e specifico oggetto. La struttura delle URL è definita da un standard ben preciso e consta di due strutture principali. Prendiamo come esempio la seguente risorsa:

http://webprogramming.smartgioiosa.it/corsi/html5/il-linguaggio.html
  • http://webprogramming.smartgioiosa.it/: identifica l'host(server - computer) sul quale viene ospitata la risorsa che cerchiamo.
  • /corsi/html5/il-linguaggio.html: dentifica il percorso da seguire (all'interno dell'host) per raggiungere la risorsa cercata. Nel percorso possono essere passati dei parametri (QueryString) per effettuare interrogazioni a script lato server (dei programmi veri e prori).

Esistono due varianti al protocollo: l'HTTP/1.0 più datato e HTTP/1.1 che ora come ora è quello più utlizzato da browser e server web essendo più recente e più performante rispetto alla versione 1.0.

La particolarità del protocollo HTTP è quella di essere definito come uno Stateless Protocol ovvero un protocollo senza stato dato che i server web non mantengono nessun tipo di informazione sui client che hanno richiesto una risorsa. Per ovviare a questo problema si utilizzano i Cookie , ma di questo ne parleremo in seguito.

L'HTTP è un protocollo di tipo request/response. Per prima cosa, quindi, deve essere fatta una richiesta per una risorsa e poi avviene la risposta con il trasferimento dei dati.

funzionalità-http-1-1

Vediamo adesso, con un esempio, come avviene questo procedimento immaginando che l'utente richieda una pagina web che contiene testo HTML con riferimento a tre immagini GIF:

  1. Il client richiede di aprire una connessione di tipo TCP verso il server che ospita la risorsa cercata sulla porta 80 che è la porta assegnata di dafault per l'HTTP.
  2. Il server riceve la richiesta di connessione, se le condizioni lo permettono, accetta la richiesta di connessione e invia una notifica al client.
  3. Il client allora formula una richiesta HTTP per la risorsa desiderata e passa la richiesta, tramite la socket, al protocollo TCP che si preoccuperà di gestire la connessione con il server.
  4. Il server riceve la richiesta HTTP del client e se non ci sono errori di sintassi nella richiesta invia al client il testo HTML della pagina richiesta. A questo punto il Server notifica al TCP di chiudere la connessione con il client non appena arrivi la notifica di corretta ricezione.
  5. Il client riceve correttamente i dati contenenti il testo HTML, lo analizza e nell'analisi trova il riferimento alle tre immagini GIF. Per ogni immagini GIF vengono ripetuti i passi dall'1-5.
  6. Il client, una volta scaricato il corpo HTML della pagina e tutti gli oggetti refereziati dalla stessa, assembla il tutto mostrando a video la pagina web richiesta precedentemente dall'utente.

Fatta questa rapida panoramica sull'HTTP nella seconda parte entreremo nel vivo della trattazione del protocollo spiegando in che modo viene gestita la richiesta da parte di un client e il conseguente trasferimento dei dati