Il protocollo HTTP: struttura di request e response

📋 Obiettivi di apprendimento
Elencare le caratteristiche principali del protocollo HTTP e spiegare il concetto di stateless
Analizzare la struttura di una HTTP Request identificando metodo, URI, versione, header e body
Analizzare la struttura di una HTTP Response identificando versione, status code, header e body
Decomporre un URI nelle sue parti componenti e spiegare il ruolo di ciascuna
📄
Slides
slide complete con diagrammi

Il protocollo HTTP — caratteristiche principali

Il protocollo HTTP (HyperText Transfer Protocol) è alla base della comunicazione Web e consente lo scambio di risorse tra client e server. Nasce per lo scambio di pagine HTML, ma oggi viene usato per trasferire qualsiasi tipo di risorsa: immagini, file, dati JSON, video in streaming.

Caratteristiche del protocollo HTTP
Paradigma Client/Server — il client invia richieste, il server elabora e risponde
Porta Porta TCP 80 per HTTP, porta 443 per HTTPS (con TLS)
Risorse Identificate tramite URI (Uniform Resource Identifier)
Metodi Operazioni eseguibili sulle risorse: GET, POST, PUT, DELETE…
Stateless Il server non mantiene memoria tra una richiesta e la successiva — ogni scambio è indipendente

Struttura di una HTTP Request

Ogni richiesta HTTP segue una struttura precisa e ben definita, composta da tre parti principali:

STRUTTURA HTTP REQUEST
① PRIMA RIGA (obbligatoria) — terminata da CRLF
METODO /URI/della/risorsa HTTP/1.1
② HEADER (zero o più righe) — formato “Nome: Valore”
Host: profgiagnotti.it
User-Agent: Mozilla/5.0
Accept: text/html, application/json
Accept-Language: it
Accept-Encoding: gzip, deflate
③ RIGA VUOTA (separatore obbligatorio)
[CRLF — riga vuota]
④ BODY (opzionale — usato con POST, PUT…)
{ "nome": "Mario", "cognome": "Rossi" }

Esempio reale di HTTP Request

GET /profgiagnotti.it/learn HTTP/1.1
Accept: image/gif, image/jpeg, image/png, */*
Accept-Language: it
Accept-Encoding: gzip, deflate
If-Modified-Since: Fri, 14 Mar 2025 10:54:03 GMT
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Categorie di header HTTP

Header generali

Informazioni sulla trasmissione, es. Transfer-Encoding

Header entità

Tipo e scadenza del contenuto, es. Content-Type, Expires

Header di richiesta

Browser e host richiesto, es. User-Agent, Host

Header di risposta

Tipo di server e autenticazione, es. Server, WWW-Authenticate

Struttura di una HTTP Response

La risposta del server ha una struttura simile alla richiesta, con una prima riga che cambia: al posto del metodo troviamo la versione del protocollo e il codice di stato.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2021 04:33:04 GMT
Server: Apache/1.4
Connection: close
Expires: Sat, 28 Nov 2021 05:33:04 GMT
Cache-Control: max-age=3600, public
Content-Type: text/html

<HTML>
  <HEAD><TITLE>Il protocollo HTTP</TITLE></HEAD>
  <BODY>
    <h1>Benvenuti alla lezione sul protocollo HTTP!</h1>
  </BODY>
</HTML>

L’URI — Uniform Resource Identifier

Un URI è un identificatore univoco di una risorsa in rete. La sua struttura è:

https://profgiagnotti.it/lezioni/networking/http
Protocollo
Definisce come comunicare (http, https, ftp…)
Indirizzo
IP o nome dell’host che contiene la risorsa
Percorso risorsa
Identifica la specifica risorsa sull’host
📌 Riepilogo — Punti chiave
  • HTTP è stateless: ogni richiesta è indipendente, il server non ricorda le precedenti
  • La prima riga della request contiene: metodo, URI e versione del protocollo
  • Gli header trasportano metainformazioni; il body (opzionale) contiene i dati
  • La response inizia con versione + codice di stato (es. 200 OK, 404 Not Found)

Lascia un commento