Prima di considerare nello specifico il protocollo HTTP, è utile riassumere brevemente i concetti di rete e protocollo.
Per rete si intende un insieme di due o più computer connessi tra loro e in grado di condividere informazioni.
Un protocollo è un insieme di regole (formato dei messaggi, ecc...) che definiscono uno standard di comunicazione tra diversi computer (e diversi programmi in esecuzione su tali computer) attraverso la rete.
Ciascun protocollo stabilisce le regole per una specifica attività di comunicazione, come ad esempio l’invio di posta elettronica, il trasferimento di file, ecc...
HTTP (HyperText Transfer Protocol) è probabilmente il protocollo di applicazione più utilizzato su Internet, in quanto è il protocollo alla base del World Wide Web.
Infatti, il web è formato da numerosi server e client (web browser), che comunicano attraverso TCP/IP a livello di trasporto, e HTTP a livello applicativo. I dati comunicati sono (tipicamente) nel formato HTML (HyperText Markup Language), anch’esso standard, che permette di rappresentare ipertesti contenente riferimenti (link) ad altre pagine web, le quali possono essere situate su qualunque server.
HTTP è un protocollo stateless (senza stato/memoria): esso funziona attraverso un meccanismo di richiesta-risposta, e il server non conserva informazioni relative alle richieste precedenti.
Una pagina web è formata da più oggetti (file HTML, immagini, file audio, ecc...), che sono risorse rese disponibili da server potenzialmente diversi. E’ allora necessario disporre di un metodo per identificare queste risorse. Esso è fornito dagli URL (Uniform Resource Locator): un URL è una sequenza di caratteri che identifica univocamente l’indirizzo di una risorsa in Internet.
Più in dettaglio, un URL contiene principalmente due informazioni:
Ogni URL si compone di sette parti, 5 delle quali sono opzionali (qui indicate tra parentesi angolari, <>):
protocollo://<username:password@>nome host<:porta>
</percorso><?query string><#fragment identifier>