bg-blog-articles

Cos’è il protocollo HTTP/2? Una guida completa

La velocità del sito web determina se i clienti acquistano da te o dai tuoi concorrenti. Il protocollo HTTP/2 trasforma i siti che si caricano lentamente in esperienze veloci e reattive che mantengono i visitatori impegnati.

Concetto HTTP2

A differenza dell’obsoleto caricamento sequenziale di HTTP/1.1, questo protocollo binario invia più richieste contemporaneamente su un’unica connessione. Caratteristiche come il multiplexing, la compressione delle intestazioni e il server push consentono di velocizzare del 20-70% il caricamento delle pagine.

Analizzeremo come funziona HTTP/2 e perché la tua azienda ne ha bisogno oggi.


Indice dei contenuti

  1. Cos’è il protocollo HTTP/2?
  2. L’evoluzione da HTTP/1.1 a HTTP/2
  3. Caratteristiche principali del protocollo HTTP/2
  4. HTTP/2 e HTTPS: considerazioni sulla sicurezza
  5. HTTP/2 vs. HTTP/1.1: Confronto delle prestazioni
  6. Implementare HTTP/2 sul tuo sito web
  7. Supporto e compatibilità con i browser
  8. HTTP/2 vs. HTTP/3: uno sguardo al futuro

Save 10% on SSL Certificates when ordering from SSL Dragon today!

Fast issuance, strong encryption, 99.99% browser trust, dedicated support, and 25-day money-back guarantee. Coupon code: SAVE10

A detailed image of a dragon in flight

Cos’è il protocollo HTTP/2?

HTTP/2 è un protocollo di rete che migliora le prestazioni dei siti web consentendo l’invio di più richieste e risposte contemporaneamente su un’unica connessione. Utilizza il framing binario, la compressione delle intestazioni e la prioritizzazione dei flussi per ridurre la latenza e aumentare la velocità di caricamento rispetto a HTTP/1.1.

Come funziona HTTP/2

A differenza di HTTP/1.1, che invia i dati in sequenza in testo normale, HTTP/2 è un protocollo binario. Introduce un livello di framing binario che divide tutti i messaggi in frame binari piccoli e gestibili per un trasporto più efficiente. Questo design migliora la velocità e riduce gli errori rispetto alla struttura testuale delle versioni precedenti.

HTTP/2 utilizza una singola connessione TCP (Transmission Control Protocol) per creare più flussi paralleli. Ogni flusso può trasportare richieste e risposte indipendenti senza bloccare gli altri, risolvendo il problema del blocco di testa della linea che rallentava il protocollo HTTP/1.1. Questo approccio consente ai browser di recuperare più risorse, come immagini, script e fogli di stile, contemporaneamente.

Un altro miglioramento fondamentale è la compressione delle intestazioni. Invece di inviare ripetutamente le stesse intestazioni HTTP per ogni richiesta, HTTP/2 le comprime per ridurre il trasferimento di dati non necessari. Include anche funzioni come il server push, che consente ai server di inviare risorse prima ancora che il browser le richieda, e la prioritizzazione dei flussi, che aiuta a gestire l’ordine di caricamento delle risorse.

Compatibilità con il passato

Nonostante gli importanti aggiornamenti, HTTP/2 è pienamente compatibile con i siti web esistenti. Conserva i metodi HTTP, i codici di stato e le strutture delle intestazioni, consentendo agli sviluppatori di beneficiare di prestazioni migliori senza cambiare il modo in cui costruiscono le applicazioni web.

Grazie all’introduzione di un efficiente framing binario e di una gestione avanzata dei dati, questo protocollo web migliora significativamente la comunicazione client-server e supporta le elevate esigenze del traffico web odierno.


L’evoluzione da HTTP/1.1 a HTTP/2

L’HTTP ha iniziato il suo percorso nel 1989 quando Tim Berners-Lee ha creato HTTP/0.9, un semplice protocollo che poteva recuperare solo le pagine web di base.

HTTP/1.0 seguì nel 1996, introducendo intestazioni e diversi tipi di contenuto, mentre HTTP/1.1 emerse nel 1997 con connessioni persistenti che consentivano richieste multiple sulla stessa connessione.

Nonostante questi miglioramenti, l’HTTP/1.1 incontrava gravi limitazioni negli ambienti web moderni. Il protocollo soffriva del blocco della linea di testa, per cui una richiesta di risorsa lenta ritardava tutte le risorse in coda ad essa.

I siti web che richiedono decine di file, immagini, fogli di stile e script, costringono i browser web ad aprire più connessioni TCP per ottenere prestazioni accettabili. Questo approccio consumava eccessive risorse di rete e creava un’esperienza negativa per l’utente con l’aumentare della complessità delle pagine web.

Google presenta SPDY – il precursore di HTTP/2

Google ha riconosciuto questi problemi di prestazioni web e ha sviluppato il protocollo SPDY nel 2010 come soluzione sperimentale. SPDY introdusse concetti rivoluzionari come il multiplexing, la compressione delle intestazioni e il server push, che in seguito sarebbero diventati fondamentali per HTTP/2.

Il protocollo SPDY ha dimostrato che più flussi possono operare simultaneamente su un’unica connessione TCP, eliminando la necessità di connessioni multiple e migliorando drasticamente la latenza del carico.

La Internet Engineering Task Force (IETF) e il Gruppo di lavoro HTTP hanno studiato le innovazioni di Google insieme ai contributi di Microsoft e Facebook. Nel 2012 hanno iniziato a formalizzare questi concetti in un nuovo standard.

Dopo numerosi test e perfezionamenti, nel maggio 2015 hanno standardizzato HTTP/2, sostituendo ufficialmente l’ormai obsoleta architettura HTTP/1.1. Questa evoluzione del protocollo ha affrontato le limitazioni fondamentali di HTTP/1.1 introducendo nuove meccaniche come il framing e la concomitanza dei flussi, sostituendo il rigido schema richiesta-risposta di HTTP/1.1.

Il nuovo protocollo ha trasformato i cicli di comunicazione client-server, ha ridotto l’ingombro della memoria e dell’elaborazione e ha creato un protocollo web efficiente in grado di gestire le moderne applicazioni web.

HTTP/2 rappresenta il progresso più significativo nei protocolli di comunicazione web dagli albori del World Wide Web.


Caratteristiche principali del protocollo HTTP/2

HTTP/2 introduce cinque caratteristiche fondamentali che affrontano i limiti di HTTP/1.1. Queste innovazioni lavorano insieme per creare un protocollo web efficiente e ottimizzato per le prestazioni delle moderne applicazioni web.

1. Protocollo binario vs. protocollo testuale

HTTP/2 utilizza un protocollo binario al posto del formato di testo semplice presente in HTTP/1.1. Questo cambiamento migliora significativamente le prestazioni, l’affidabilità e la velocità di analisi durante la comunicazione client-server.

I protocolli binari sono più facili da interpretare per le macchine. Eliminano le incongruenze di parsing causate da variazioni di spazi bianchi, capitalizzazione o terminazioni di riga che affliggevano l’HTTP testuale. Questo comporta un minor numero di bug, un minore utilizzo della CPU e un’elaborazione più rapida delle richieste e delle risposte.

Ogni messaggio HTTP/2 è suddiviso in frame binari, che sono più facili da instradare, assegnare priorità ed elaborare in parallelo. Questi frame includono metadati che aiutano i server e i browser a determinare rapidamente l’appartenenza dei dati, consentendo funzionalità avanzate come il multiplexing e la prioritizzazione dei flussi.

Gli sviluppatori non devono riscrivere le applicazioni esistenti, poiché HTTP/2 mantiene la stessa semantica HTTP. Il passaggio al binario avviene sotto il cofano, offrendo tutti i vantaggi in termini di velocità ed efficienza senza richiedere modifiche significative alle modalità di creazione o distribuzione delle applicazioni web.


2. Multiplexing e richieste concorrenti

Il multiplexing consente a più flussi di operare simultaneamente su un’unica connessione TCP. HTTP/2 crea flussi individuali che inviano e ricevono dati in modo indipendente, eliminando le limitazioni di elaborazione sequenziale di HTTP/1.1.

Questa innovazione risolve il blocco della coda, in cui le richieste di risorse lente ritardano tutte le risorse in coda. HTTP/2 consente al client e al server di avviare più richieste parallele senza attendere il completamento delle richieste precedenti.

L’approccio a connessione singola riduce l’ingombro della memoria e dell’elaborazione rispetto alle connessioni multiple TCP di HTTP/1.1. Ogni connessione TCP richiedeva un notevole overhead di creazione, consumando risorse di rete e creando colli di bottiglia di scalabilità.

Il multiplexing permette di effettuare più scambi contemporanei per gestire in modo indipendente i flussi di dati. Le pagine web che richiedono decine di risorse possono caricare tutti i componenti contemporaneamente. Un tipico sito di e-commerce con oltre 50 risorse vede migliorare la velocità di caricamento della pagina del 40-60% grazie al caricamento parallelo.

I meccanismi di controllo del flusso operano per flusso, gestendo il trasferimento dei dati in base alle condizioni della rete. Ogni flusso può regolare la velocità in modo indipendente, evitando la congestione.


3. Compressione delle intestazioni con HPACK

La compressione HPACK risolve l’overhead dei metadati delle intestazioni HTTP che è diventato problematico man mano che i siti web diventavano più complessi. HTTP/1.1 trasmetteva intestazioni identiche a ogni richiesta, creando uno spreco di banda.

L’algoritmo di compressione HPACK mantiene tabelle dinamiche dei valori di intestazione trasferiti in precedenza, condivise tra il client e il server. Le richieste successive trasmettono solo i valori indicizzati necessari per ricostruire le intestazioni, riducendo i frammenti dei blocchi di intestazione fino al 95%.

La compressione HPACK utilizza la codifica Huffman per una codifica efficiente dei campi. I valori comuni delle intestazioni vengono compressi in rappresentazioni più piccole, utili per le applicazioni che contengono molti cookie o dati di autorizzazione.

La compressione dei campi dell’intestazione consente di ottenere un risparmio di banda misurabile per i siti web ad alto traffico. L’algoritmo protegge dagli attacchi di sicurezza basati sulla compressione che colpivano i metodi precedenti, garantendo la sicurezza dei dati sensibili e ottenendo al contempo un aumento dell’efficienza.


4. Priorità dei flussi

La prioritizzazione dei flussi permette ai browser web di specificare gli ordini di caricamento delle richieste di risorse attraverso relazioni di dipendenza e assegnazioni di pesi. Ogni flusso riceve pesi da 1 a 256, con valori più alti che indicano la priorità.

HTTP/2 crea alberi di dipendenza dei flussi in cui i flussi dipendono dai flussi genitori. I flussi dipendenti che condividono lo stesso flusso padre ricevono un’allocazione proporzionale delle risorse in base ai pesi assegnati. Questo sistema carica le risorse critiche prima degli elementi decorativi.

Gli sviluppatori web possono ottimizzare la velocità di caricamento delle pagine dando priorità ai contenuti above-the-fold rispetto alle immagini che gli utenti non vedranno immediatamente. I CSS e i JavaScript per i contenuti visibili hanno la priorità rispetto agli script di analisi o ai widget dei social media.

I browser assegnano automaticamente le priorità in base ai tipi di risorse, ma i server possono ignorare queste decisioni in base ai requisiti specifici dell’applicazione. Questa flessibilità consente strategie di ottimizzazione personalizzate per le diverse architetture dei siti web.


5. Push del server

Il server push consente ai server di inviare in modo proattivo le risorse ai browser web prima di ricevere richieste esplicite. Quando i server ricevono richieste HTML, identificano le probabili richieste di risorse e le trasmettono immediatamente.

Elimina l’inlining delle risorse utilizzato in HTTP/1.1, dove gli sviluppatori incorporavano CSS o JavaScript nell’HTML. Il server push offre gli stessi vantaggi in termini di prestazioni, mantenendo la risorsa spinta separata e consentendo migliori strategie di caching.

Prevedere le richieste di risorse riduce il round-trip. CSS, JavaScript e immagini critiche possono arrivare prima che il browser analizzi l’HTML. Questo approccio proattivo accorcia latenza di interi cicli di andata e ritorno.

Il client determina l’accettazione delle risorse push e può disabilitare il push del server. I browser mantengono le cache delle risorse pushate e possono rifiutare i push duplicati, prevenendo lo spreco di banda e mantenendo i vantaggi in termini di prestazioni.


HTTP/2 e HTTPS: considerazioni sulla sicurezza

Sebbene HTTP/2 non imponga tecnicamente la crittografia, tutti i principali browser la richiedono. Ciò significa che, in pratica, HTTP/2 viene sempre eseguito su TLS, il che rende HTTPS il default, non l’eccezione.

Questa applicazione guidata dai browser ha innalzato il livello di sicurezza in tutto il web. Con TLS come base, ogni connessione HTTP/2 è crittografata per impostazione predefinita, eliminando lo snooping passivo e gli attacchi man-in-the-middle. Ma HTTP/2 non si limita alla crittografia.

Il suo strato di framing binario elimina l’ambiguità nel parsing delle richieste, rendendo molto più difficile per gli aggressori sfruttare vecchi trucchi come l’iniezione di intestazioni o la suddivisione delle risposte, problemi comuni nel formato testuale di HTTP/1.1. Questa rigidità strutturale riduce la superficie di attacco e semplifica la logica del server.

L’handshake che abilita TLS negozia anche il supporto del protocollo utilizzando ALPN (Application-Layer Protocol Negotiation). Se HTTP/2 è disponibile, il browser si aggiorna immediatamente, senza reindirizzamenti o viaggi extra.

La singola connessione crittografata di HTTP/2 viene riutilizzata per più flussi, evitando l’overhead delle ripetute negoziazioni TLS. Questo riduce il carico della CPU, velocizza le connessioni sicure e migliora le prestazioni complessive del sito senza compromettere la sicurezza.

Per gli sviluppatori, il risultato è semplice: I certificati SSL non sono più solo per la fiducia, ma sono un requisito per la velocità. Se non c’è HTTPS non c’è HTTP/2 e se non c’è HTTP/2 non ci sono prestazioni e protezione.


Save 10% on SSL Certificates when ordering from SSL Dragon today!

Fast issuance, strong encryption, 99.99% browser trust, dedicated support, and 25-day money-back guarantee. Coupon code: SAVE10

A detailed image of a dragon in flight

HTTP/2 vs. HTTP/1.1: Confronto delle prestazioni

I test condotti nel mondo reale dimostrano che HTTP/2 supera HTTP/1.1 per ogni tipo di sito web e di velocità di connessione. Il multiplexing, la compressione delle intestazioni e il modello a connessione singola eliminano i colli di bottiglia presenti nell’HTTP/1.1.

Ecco come si comporta HTTP/2 rispetto a HTTP/1.1

Parametri di prestazione

  • Siti semplici (5-10 risorse): 15-25% di caricamento più veloce
  • Media complessità (20-40 risorse): 30-50% di miglioramento
  • Applicazioni pesanti (50+ risorse): Aumento della velocità del 40-70%
  • Piattaforme di e-commerce: Latenza di carico mediamente inferiore del 45%

Miglioramenti UX

  • Prima verniciatura di contenuto: 200-800ms più veloce
  • Tempo di interattività: miglioramento di 300-1200 ms
  • Caricamento dell’intera pagina: Riduzione di 500-2000ms
  • Tasso di rimbalzo: Fino al 31% di calo sulle piattaforme SaaS
  • Tassi di conversione: I negozi Shopify hanno registrato un +23%
  • Lunghezza della sessione: I siti di notizie hanno registrato un aumento del 18%.

Efficienza delle risorse

  • Utilizzo della CPU del server: In calo del 35%
  • Risparmio di larghezza di banda: Grazie alla compressione dell’intestazione HPACK
  • Meno handshake TLS: Una connessione, molti flussi
  • Migliore supporto per i dispositivi mobili: Caricamento più veloce, minore consumo della batteria

Consulta la tabella di comparazione rapida qui sotto per avere una visione d’insieme:

CaratteristicaHTTP/1.1HTTP/2
Connessione per risorsaConnessioni TCP multipleSingola connessione TCP (multiplexata)
Compressione dell’intestazioneNessunoHPACK
Requisiti TLSOpzionaleRichiesto dai browser
Richieste paralleleLimitato da TCPVero parallelismo su una connessione
LatenzaPiù alto a causa del bloccoPiù basso a causa del multiplexing
Prestazioni mobiliPiù lento, maggiore consumo della batteriaPiù veloce, più efficiente
Carico del serverPiù alto (più connessioni, strette di mano)Più basso (meno prese aperte)

Implementare HTTP/2 sul tuo sito web

Ecco i requisiti minimi di HTTP/2 per il tuo tipo di server:

Fasi di implementazione di Apache

La configurazione del server per Apache richiede l’attivazione sistematica del modulo:

1. Installa i moduli necessari:

sudo a2enmod http2
sudo a2enmod ssl

2. Configura l’host virtuale nel tuo file .conf:

<VirtualHost *:443>
ServerName yourdomain.com
Protocolli h2 http/1.1
SSLEngine on
SSLCertificateFile /path/to/certificate.crt
SSLCertificateKeyFile /path/to/private.key
</VirtualHost>

3. Riavvia il servizio Apache:

sudo systemctl restart apache2

4. Verifica la configurazione:

apache2ctl configtest

Passi di implementazione di Nginx

Nginx offre un’attivazione HTTP/2 più semplice attraverso la configurazione del server:

1. Aggiorna Nginx a una versione supportata:

sudo apt update && sudo apt install nginx

2. Modifica il blocco server in nginx.conf:

server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
}

3. Verifica la sintassi della configurazione:

sudo nginx -t

4. Ricarica il servizio Nginx:

sudo systemctl reload nginx

Verifica dell’implementazione di HTTP/2

Verifica l’implementazione di HTTP/2 utilizzando più metodi:

Strumenti per sviluppatori di browser:

  1. Apri la scheda Rete in Chrome/Firefox DevTools
  2. Abilita la colonna Protocollo per visualizzare i tipi di connessione
  3. Cerca la designazione“h2” nel campo del protocollo
  4. Aggiorna la pagina per vedere il caricamento di più flussi contemporaneamente

Strumenti di test online:

Verifica da riga di comando:

curl -I --http2 -s https://yourdomain.com | grep HTTP

Sfide comuni nell’implementazione

Gli sviluppatori web incontrano spesso questi ostacoli:

  • Gli errori del certificato SSL impediscono l’attivazione
  • Contenuto misto HTTP/HTTPS che blocca la funzionalità HTTP/2
  • Software di server obsoleti privi di moduli di supporto HTTP/2
  • Regole del firewall che bloccano i processi di handshake TLS
  • I servizi CDN non sono configurati per il passaggio HTTP/2
  • Le applicazioni legacy sono incompatibili con i requisiti del protocollo binario

Passi per la risoluzione dei problemi:

  • Verifica la validità dei certificati SSL e la loro corretta installazione.
  • Controlla i registri degli errori del server per verificare i fallimenti specifici dell’attivazione di HTTP/2
  • Assicurati che tutte le richieste di risorse utilizzino il protocollo HTTPS.
  • Aggiorna il software del server web alle versioni supportate
  • Configurare i provider CDN per abilitare l’inoltro HTTP/2

Supporto e compatibilità con i browser

HTTP/2 è ampiamente adottato da tutti i principali browser web, con Chrome, Firefox, Safari ed Edge che hanno implementato il supporto completo dal 2015. Le statistiche attuali sui browser mostrano che oltre il 97% dei browser mobili e desktop supportano il protocollo HTTP/2 in modo nativo, rendendo l’implementazione sicura per quasi tutti gli utenti.

Chrome è in testa all’adozione di HTTP/2 con l’implementazione più aggressiva, in quanto negozia automaticamente le connessioni HTTP/2 quando sono presenti certificati SSL. Firefox segue a ruota con un solido supporto su tutte le piattaforme, mentre Safari offre prestazioni eccellenti su dispositivi iOS e macOS. Edge ha sostituito il supporto limitato di Internet Explorer con una funzionalità HTTP/2 completa.

I browser mobili dimostrano un forte supporto a HTTP/2, con Android Chrome, iOS Safari e Samsung Internet che offrono piena compatibilità con il protocollo. Questi browser web per dispositivi mobili traggono notevoli vantaggi dalle capacità di multiplexing di HTTP/2 sulle reti cellulari con latenza più elevata.

I meccanismi di fallback assicurano una compatibilità perfetta quando HTTP/2 non è disponibile. I browser web negoziano automaticamente la versione di protocollo più alta supportata durante gli handshake TLS, tornando a HTTP/1.1 per i server più vecchi. Questo processo trasparente non richiede l’intervento dell’utente o la configurazione dello sviluppatore.


HTTP/2 vs. HTTP/3: uno sguardo al futuro

HTTP/3 è il prossimo passo dei protocolli web, costruito su QUIC invece che sulle tradizionali connessioni TCP. Sebbene HTTP/2 abbia risolto molti problemi di HTTP/1.1, deve ancora affrontare ritardi dovuti al “blocco della linea di testa” del TCP, quando un pacchetto perso rallenta più flussi.

QUIC funziona su UDP, permettendo ai flussi di continuare in modo indipendente anche se alcuni pacchetti cadono. Inoltre, integra la crittografia direttamente nel livello di trasporto, velocizzando la configurazione della connessione e riducendo i viaggi di andata e ritorno.

Circa il 25% dei siti web, tra cui Google, Facebook e Cloudflare, utilizzano già HTTP/3. Tuttavia, HTTP/2 rimane la scelta preferita dalla maggior parte degli sviluppatori grazie all’ampio supporto dei browser e agli strumenti maturi.

Dovresti aspettare HTTP/3?

Non proprio. HTTP/2 offre grandi incrementi di prestazioni oggi e predispone il tuo sito a un facile aggiornamento futuro. Inizia subito a utilizzare HTTP/2 e beneficia subito di un caricamento più veloce e di una migliore esperienza utente.


Sblocca le prestazioni di HTTP/2 con SSL Dragon

HTTP/2 funziona solo con certificati SSL validi. SSL Dragon rende tutto più semplice con certificati affidabili e convenienti pronti per l’attivazione istantanea di HTTP/2.

Con SSL Dragon non ottieni solo un certificato, ma investi in un’esperienza web più fluida e sicura. I nostri certificati sono ottimizzati per un’implementazione rapida e un’ampia compatibilità, assicurando che il tuo sito funzioni velocemente senza compromettere la sicurezza.

Il nostro supporto esperto ti guida passo dopo passo per sfruttare al meglio i vantaggi di HTTP/2 in termini di velocità e sicurezza. Scegli SSL Dragon e sblocca oggi stesso le prestazioni di un sito web più veloce e fluido.

Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!

Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

Un'immagine dettagliata di un drago in volo
Scritto da

Scrittore di contenuti con esperienza, specializzato in certificati SSL. Trasforma intricati argomenti di cybersicurezza in contenuti chiari e coinvolgenti. Contribuisci a migliorare la sicurezza digitale attraverso narrazioni d'impatto.