L'HTTP (HyperText Transfer Protocol, [BLFN96]) è un protocollo che in realtà non serve solamente a trasmettere ipertesti, ma anche testo semplice, immagini o qualsiasi altro tipo di oggetto; il nome deriva dall'essere stato introdotto dall'inizio nella struttura del WWW come protocollo nativo del servizio.
È un semplice protocollo richiesta-risposta simile ad altri già
estremamente diffusi sulla Rete, come FTP [PR85] o
NNTP [KL86], ma a differenza di questi è senza
stato: questa scelta è evidentemente dovuta al modello
architetturale generale, in cui la disponibilità di un oggetto è
univocamente determinata dalla propria URL. Inoltre, durante le
fasi di richiesta dell'oggetto il client fornisce al server una lista
(pesata) dei formati riconosciuti e il server risponde con le
informazioni nel formato che riesce a produrre; in questo modo,
particolari client e server possono scambiarsi dati in formato non
generalmente standardizzato, per uso particolare o sperimentale. Lo
stesso meccanismo è disponibile per la negoziazione del linguaggio
dei documenti (francese o italiano piuttosto che inglese) che si
desidera ricevere: purtroppo queste caratteristiche sono scarsamente
utilizzate allo stato attuale.
La richiesta HTTP dal client viene aperta con un codice dell'operazione (chiamato metodo in ossequio alla terminologia della programmazione orientata agli oggetti) e con la URL dell'oggetto. Il metodo ``GET'' è definito come idempotente in quanto preserva lo stato del Web; ``PUT'' è definito come aggiornamento, mentre ``POST'' come meccanismo di inserimento di nuovi oggetti sul Web o come sottomissione di moduli riempiti o altri oggetti al server. Attualmente, l'uso di PUT e POST è limitato a causa delle limitate capacità degli editori ipertestuali, e altri metodi sono in studio.
Mentre gli oggetti sono trasferiti sulla Rete, le meta-informazioni (e cioè le informazioni su di essi) sono trasferite nell'intestazione (header) della risposta HTTP: i campi validi sono un'estensione di quelli del meccanismo MIME [BF93]. Questa architettura consente il trasferimento di file binari e in formati non standardizzati, oltre a consentire la trasmissione di metainformazioni, come il titolo di un oggetto per un'immagine grafica, che non sarebbero normalmente presenti nell'oggetto. In particolare, viene trasmesso il campo Content-Type che indica il formato del documento così come generato dal server sulla base della negoziazione, e che verrà utilizzato dal browser per ``trattare'' la risposta.