HTTP, abbreviazione di HyperText Transfer Protocol, è il protocollo di rete comunemente utilizzato nel WEB.
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.
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.
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 , 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.
Con la rapida diffusione di Internet vennero a galla alcuni difetti e carenze presenti nella versione 1.0, in particolare:
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.
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.
Una richiesta HTTP è un insieme di linee che il client invia al server.
Essa è composta in questa maniera:
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:
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
È 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.
La richiesta deve terminare con una riga vuota, ossia due a capo consecutivi.
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>
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
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:
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:
Il codice a tre cifre che la Riga di Stato riporta è catalogato nel seguente modo:
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
Contiene la risorsa, o documento, richiesta.
VERSIONE CODICE SPIEGAZIONE<crlf> INTESTAZIONE : Valore<crlf> ... <crlf><crlf> CORPO DELLA RISPOSTA
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.
Articolo a cura di mirkoagrati 19:31, Nov 8, 2009 (CET)