HTTP
Da WikiGT di Giorgiotave.it
HTTP, abbreviazione di HyperText Transfer Protocol, è il protocollo di rete comunemente utilizzato nel WEB.
| Table of contents |
|
4.1 Linea di Richiesta |
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:
- Il metodo da utilizzare per interpretare la richiesta;
- L'URL della risorsa richiesta;
- 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
- Wikipedia (http://it.wikipedia.org/wiki/Hypertext_Transfer_Protocol);
- W3C (http://www.w3.org/Protocols/rfc2616/rfc2616.html)
Articolo a cura di mirkoagrati 19:31, Nov 8, 2009 (CET)

