Hypertext Transfer Protocol
HTTP è l'acronimo di HyperText Transfer Protocol. Usato come metodo primario per la trasmissione di informazioni sul web. Le specifiche del protocollo sono attualmente in carica al World Wide Web Consortium (W3C).
Si tratta di un protocollo di richiesta/risposta tra client e server. Un client HTTP, ad esempio un browser, inizia la sua richiesta connettendosi ad una porta TCP/IP: si tratta tipicamente della porta 80, anche se vengono talvolta utilizzate porte alternative, come la 81 o la 8080. Una volta stabilita la connessione il client invia una stringa di richiesta, ad esempio "GET / HTTP/1.1" (che in questo caso corrisponde alla richiesta della pagina di default, o home page, del server web). Il server a sua volta risponde inviando un file o un messaggio di errore (nel caso, ad esempio, che la pagina richiesta non esista). La risposta del server è preceduta da un'intestazione HTTP (detta HTTP header), cioè da un insieme di stringhe di caratteri ASCII che contengono informazioni sul server stesso e sul file che viene inviato. Il protocollo HTTP è definito nella RFC 2068.
HTTP differisce da altri protocolli basati su TCP, come FTP, per il fatto che le connessioni vengono generalmente chiuse una volta che una particolare richiesta (o una serie di richieste correlate) è stata soddisfatta. Questo comportamento rende il protocollo HTTP ideale per il World Wide Web, in cui le pagine molto spesso contengono dei collegamenti (link) a pagine ospitate da altri server. Talvolta però pone problemi ai Web designers, perchè l'assenza di una connessione persistente costringe ad utilizzare dei metodi alternativi per conservare lo stato dell'utente. Spesso questi metodi alternativi si basano sull'uso dei cookie HTTP.
Esiste anche una versione sicura del protocollo HTTP: chiamata HTTPS, usa vari sistemi di crittografia per rendere la comunicazione comprensibile solo a client e server.
Esempio di comunicazione HTTP tra client e server
Cconversazione di esempio tra un client ed il server web www.wikipedia.org
richiesta del client:
GET / HTTP/1.1 Host: www.wikipedia.org
La richiesta viene terminata con una riga vuota.
risposta del server:
HTTP/1.1 200 OK Content-Length: 3059 Server: GWS/2.0 Date: Sat, 11 Jan 2003 02:44:04 GMT Content-Type: text/html Cache-control: private Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; ___domain=.google.com Connection: keep-alive
(segue il codice HTML della pagina principale del sito www.wikipedia.org)
Collegamenti esterni
- Tim Berners-Lee 1992 internet draft http://www.w3.org/Protocols/HTTP/HTTP2.html
- RFC 2616 (definisce il protocollo HTTP 1.1) http://www.w3.org/Protocols/rfc2616/rfc2616.html
- visualizzatore degli header HTTP inviati da un server web