HTTP, abbreviazione di HyperText Transfer Protocol, è il protocollo di rete comunemente utilizzato nel WEB.


Introduzione

HTTP è un protocollo progettato per migliorare la qualità e ottimizzare le prestazioni di sistemi distribuiti per la collaborazione e la condivisione delle informazioni.

Fin dal 1990 questo protocollo è utilizzato per la gestione delle connessioni in Internet.

È anche utilizzato come protocollo generico nelle connessioni internet che devono attraversare strati software quali proxy e gateway.


Evoluzione del Protocollo

Il protocollo HTTP è stato migliorato molto dalla sua prima versione, la sua evoluzione è andata pari passo con l'ampliarsi dei servizi (e delle loro necessità specifiche) presenti in rete e dell'importanza di Internet.


HTTP/0.9



La prima versione di HTTP, etichettata come HTTP/0.9, era un semplice protocollo per il trasferimento di dati grezzi attraverso Internet.

In grado di trasportare solo testo, offriva supporto praticamente al solo HTML.


HTTP/1.0



HTTP/1.0 , la cui specifica è etichettata RFC 1945, ha migliorato il protocollo consentendo che i messaggi potessero essere nel formato MIME.

Di fatto, da questo momento, il protocollo HTTP, nel header della richiesta, contiene le meta-informazioni dei dati trasferiti ed eventuali modificatori sulla semantica della richiesta/risposta dando vita a trasmissioni di dati binari in Internet.


HTTP/1.1



Con la rapida diffusione di Internet vennero a galla alcuni difetti e carenze presenti nella versione 1.0, in particolare:

  • l'impossibilità di creare e gestire virtual server sullo stesso server;
  • il mancato riuso delle connessioni disponibili;
  • l'insufficienza dei meccanismi di sicurezza;

Per eliminare i suddetti impedimenti, il protocollo venne migliorato ed etichettato come HTTP/1.1, presentato nel 1997 come RFC 2068 e successivamente aggiornato nel 1999 come descritto dal RFC 2616.


Comunicazione Client/Server con HTTP

HTTP si basa sul modello domanda/risposta (tecnicamente request/response).

La transazione è sempre iniziata dal client che si connette ad un server per richiederne una risorsa.

Il server, nel caso non si verifichino errori, a sua volta invia l'oggetto della richiesta all'interno della risposta e conclude la transazione.


HTTP Request

Una richiesta HTTP è un insieme di linee che il client invia al server.

Essa è composta in questa maniera:

  • Linea di richiesta;
  • Intestazione della richiesta;
  • Corpo della richiesta.
  • Linea vuota


Linea di Richiesta



La linea di richiesta precisa il metodo da applicare alla risorsa richiesta e quale versione del protocollo usare per la risposta. Ogni informazione deve essere separata da uno spazio bianco ed in questo ordine:

  1. Il metodo da utilizzare per interpretare la richiesta;
  2. L'URL della risorsa richiesta;
  3. La versione di HTTP usata dal client;


Intestazione della Richiesta



Si tratta di un insieme di linee facoltative che permettono di dare delle informazioni supplementari sulla richiesta e/o il client, ad esempio User Agent e versione del sistema operativo. Ognuna di queste linee ha la seguente sintassi:

nome : valore


Corpo della Richiesta



È un'insieme di linee opzionali separate da una linea vuota che permettono, ad esempio, di incapsulare i dati di un FORM HTML all'interno della richiesta HTTP, rendendo i dati invisibili e, tramite l'utilizzo del metodo POST, l'invio degli stessi più sicuro.


Linea Vuota



La richiesta deve terminare con una riga vuota, ossia due a capo consecutivi.


Sintassi di una Richiesta HTTP



Una richiesta HTTP ha la seguente sintassi (<crlf> significa ritorno a capo):

METODO URL VERSIONE<crlf>
INTESTAZIONE : Valore<crlf>
...
<crlf><crlf>
CORPO DELLA RICHIESTA
<crlf><crlf>


Esempio di Richiesta HTTP



Qui di seguito un esempio di richiesta HTTP:

GET /wikigt/os/Pagina_principale HTTP/1.1 
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5 
Accept-Language: it
Host: www.giorgiotave.it


HTTP Response

La risposta HTTP oltre a comprendere la risorsa richiesta ( nel corpo della risposta) è composta da altre due parti.

La struttura di una risposta HTTP è la seguente:

  • Riga di Stato;
  • Intestazione della Risposta;
  • Corpo della Risposta;


Riga di stato



Precisa la versione del protocollo usata, lo status-code (un codice numerico) dell'esito del trattamento della richiesta ed una descrizione dell'esito, separati da uno spazio bianco.

La 'Riga di Stato è così composta:

  • Versione di HTTP usata;
  • Codice di Stato della Risposta;
  • Testo descrittivo del significato dello Stato della Risposta;


Status Code



Il codice a tre cifre che la Riga di Stato riporta è catalogato nel seguente modo:

  • 1xx: Informational, alcuni messaggi informativi;
  • 2xx: Success, la richiesta è stata soddisfatta e si è conclusa correttamente;
  • 3xx: Redirection, la risposta non è immediata, e viene detto come ottenere la risposta;
  • 4xx: Client error , la richiesta è errata e non può essere soddisfatta;
  • 5xx: Server error , si è verificato un errore interno al server e la richiesta non può essere soddisfatta.


Intestazione della Risposta



Si tratta di un insieme di linee facoltative che forniscono informazioni supplementari sulla risposta e/o il server. Ognuna di queste linee ha la seguente sintassi:

nome : valore


Corpo della Risposta



Contiene la risorsa, o documento, richiesta.


Sintassi di una Risposta HTTP



VERSIONE CODICE SPIEGAZIONE<crlf>
INTESTAZIONE : Valore<crlf>
...
<crlf><crlf>
CORPO DELLA RISPOSTA


Esempio di Risposta HTTP



HTTP/1.0 200 OK
Date : Sat, 7 Nov 2009 14:37:12 GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 6 Nov 2009 11:25:13 GMT

Il codice 200 indica che la richiesta era corretta.


Fonti


Articolo a cura di mirkoagrati 19:31, Nov 8, 2009 (CET)


  • Questa pagina è stata modificata per l'ultima volta il 2 dic 2009 alle 11:31.
  • Questa pagina è stata letta 75 128 volte.