È il protocollo per la comunicazione tra client e server web.
È un protocollo molto semplice: il browser manda una HTTP request al Web server, che gli manda una HTTP response.
Lato client
- Il browser determina l’URL ed estrae host e filename usando il DNS (Domain Name System)
- Esegue una connessione TCP alla porta 80 dell’host indicato nell’url.
- Invia una richiesta per il file.
- Riceve il file dal server.
- Chiude la connessione.
- Visualizza il file.
Lato server
- Accetta una connessione TCP da un client.
- Riceve il nome del file dal disco.
- Invia il file al client.
- Rilascia la connessione.
N.B.: In un documento può esserci un riferimento URL ad un altro documento su un altra macchina.
Connessioni TCP HTTP
Non persistenti
- Un solo oggetto è trasmesso su una connessione TCP.
- Ciascuna coppia richiesta/risposta viene inviata su una connessione separata.
- Prima di inviare una richiesta serve avere una connessione attiva.
Problemi
Un RTT (Round Trip Time) è il tempo impiegato da un piccolo pacchetto per andare dal client al server e tornare. Include i ritardi del pacchetto.
Il tempo di risposta è un RTT per inizializzare la connessione + un RTT per la richiesta e i primi byte della risposta HTTP + il tempo di trasmissione del file.
Persistenti
- Modalità di default
- Più oggetti in una sola connessione.
- La connessione viene chiusa dopo un timeout configurabile.
Messaggi di richiesta (da client a server) HTTP
Messaggi di risposta (da server a client) HTTP
Codici di stato della risposta
Intestazioni
Cookie
HTTP è un protocollo senza stato, ma a volte mantenere lo stato della richiesta e tenere traccia delle azione dell’utente può essere utile per motivi di telemetria e personalizzazione. Gli indirizzi IP degli host non sono adatti, perché gli indirizzi IP non sono necessariamente univoci per ogni utente (più utenti su un computer o ISP NAT).
La soluzione sono i cookie.
todo altre soluzioni (2-46)