Hosting web

HTTP/2 e HTTP/3

Definizione

HTTP/2 e HTTP/3 sono le versioni recenti del protocollo del Web. HTTP/2 fa viaggiare molte richieste in parallelo su un’unica connessione TCP, sotto forma di frame binari con header compressi; HTTP/3 mantiene questo principio ma si appoggia a QUIC, sopra UDP, così un pacchetto perso rallenta solo il proprio flusso.

HTTP/2 e HTTP/3, Hosting web

Una pagina WordPress raramente è un solo file: c’è l’HTML, poi decine di fogli di stile, script, immagini e font. Con HTTP/1.1 ogni connessione gestisce una sola richiesta alla volta, quindi il browser deve aprire più connessioni e mettere le richieste in coda. HTTP/2 e poi HTTP/3 sono nati per trasportare in modo più efficiente questi tanti piccoli scambi, senza cambiare il significato delle richieste: metodi, codici di risposta e header restano gli stessi.

HTTP/2: il multiplexing

HTTP/2, oggi descritto dalla RFC 9113 (che sostituisce la RFC 7540), divide i messaggi in frame binari. Ogni scambio diventa un flusso (stream) e molti flussi viaggiano contemporaneamente su un’unica connessione: un flusso lento non blocca più gli altri. Gli header, molto ripetitivi da una richiesta all’altra, vengono compressi con HPACK.

La RFC riconosce un limite: il blocco head-of-line di TCP resta irrisolto. Se un pacchetto va perso, TCP trattiene tutto ciò che segue finché non viene ritrasmesso, e tutti i flussi restano in attesa. Per HTTP/2 su TLS lo standard impone TLS 1.2 o successivo, e la documentazione di Apache ricorda che la maggior parte dei browser usa HTTP/2 solo con indirizzi https.

Confronto in tre colonne. HTTP/1.1: testo, una richiesta alla volta per connessione, il browser apre più connessioni TCP, header ripetuti in chiaro. HTTP/2: frame binari, molti flussi in multiplexing su un’unica connessione TCP, header compressi con HPACK, ma un pacchetto TCP perso blocca tutti i flussi. HTTP/3: stesso multiplexing su QUIC sopra UDP, cifratura TLS 1.3 integrata, compressione QPACK, un pacchetto perso rallenta solo il suo flusso, annunciato dall’header Alt-Svc.
HTTP/2 raggruppa le richieste su una connessione; HTTP/3 cambia trasporto per eliminare il blocco dovuto a TCP.

HTTP/3: cambiare protocollo di trasporto

HTTP/3 (RFC 9114) riprende lo stesso modello, ma su QUIC (RFC 9000), un protocollo di trasporto sicuro che viaggia in datagrammi UDP. QUIC gestisce da sé i flussi: sono indipendenti, e una perdita rallenta solo il flusso interessato. La cifratura TLS 1.3 fa parte dell’handshake, il che riduce i viaggi di andata e ritorno prima del primo byte, e una connessione può sopravvivere a un cambio di rete, per esempio dal Wi-Fi al 4G. La compressione degli header passa a QPACK.

Il browser scopre HTTP/3 grazie all’header Alt-Svc, inviato durante una prima connessione in HTTP/2 o HTTP/1.1: segnala che lo stesso sito risponde anche in h3, su una porta UDP. Se un firewall blocca UDP, il browser resta semplicemente in HTTP/2.

Video: «HTTP/3: Cosa cambia rispetto a HTTP/2 e HTTP/1.1» (Rev3rse)

Per WordPress

  • Controlla la versione usata nella scheda Rete degli strumenti per sviluppatori del browser (colonna Protocollo: h2 o h3).
  • La via più semplice è spesso una CDN, che parla HTTP/3 con i visitatori qualunque sia il tuo server. Anche LiteSpeed lo offre; per Nginx, il modulo HTTP/3 esiste dalla versione 1.25.0 ed è ancora presentato come sperimentale dalla documentazione.
  • Su Apache, HTTP/2 passa da mod_http2 e dalla direttiva Protocols h2 http/1.1; la documentazione consiglia l’MPM event, perché con prefork una connessione gestisce una sola richiesta alla volta.
  • Apri la porta UDP 443 nel firewall del server se attivi HTTP/3 in autonomia.

L’effetto sulle prestazioni dipende dal sito, dalla rete e dal numero di file; i segnali di performance considerati da Google sono trattati nel nostro articolo HTTPS, HSTS e header di sicurezza.

Per approfondire

  • Articolo HTTPS, HSTS e intestazioni di sicurezza: che cosa considera davvero Google

Fonti

  1. RFC 9113: HTTP/2 (link esterno, si apre in una nuova scheda)
  2. RFC 9114: HTTP/3 (link esterno, si apre in una nuova scheda)
  3. RFC 9000: QUIC, A UDP-Based Multiplexed and Secure Transport (link esterno, si apre in una nuova scheda)
  4. Apache HTTP Server: HTTP/2 guide (link esterno, si apre in una nuova scheda)

Tutte le definizioni

Sicurezza WordPress, senza rumore

Un’email quando conta: nuovi attacchi osservati, aggiornamenti del plugin e guide pratiche. Niente spam, disiscrizione con un clic.

Inizia gratis, passa a Pro quando sei pronto

La versione gratuita nasconde già WordPress e sposta la pagina di login. Pro aggiunge alias, autenticazione a due fattori e monitoraggio.