HTTP/2 è l’evoluzione di HTTP (HyperText Transfer Protocol), il protocollo che ha accompagnato il World Wide Web dal 1991 ad oggi consentendo, in sintesi, lo scambio di informazioni in Rete.
Si prenda come semplice esempio un’operazione compiuta quotidianamente da miliardi di utenti, la visualizzazione di una pagina web. Il client (browser, programma utilizzato per visitare i siti internet) ed il server aprono un canale di comunicazione avvalendosi di HTTP: il client, dopo aver analizzato il codice HTML della pagina richiesta, richiede al server le risorse necessarie a visualizzare i contenuti (testi, immagini, video, etc) della pagina web; il server, dopo aver analizzato la “lista” del browser, si occupa di trovare il materiale necessario e rispedirlo a quest’ultimo.
Il principale limite di HTTP risiede nel fatto che gestisce una richiesta per volta (prima le immagini, poi i font etc.) e per ogni richiesta viene aperta una connessione col server. Ogni connessione, oltre al tempo materiale per il trasferimento della risorsa, impegna altro tempo per le operazioni di servizio (indicato come latenza), situazione che, in presenza di un elevato numero di utenti e pagine sempre più complesse, può portare alla creazione di lunghe code da processare e conseguenti ritardi nel caricamento di una pagina. Nel corso degli anni sviluppatori ed addetti ai lavori hanno cercato di mitigare il problema ricorrendo a vari stratagemmi (concatenazione, connessioni TCP multiple etc., minimizzazione dei file) ma senza riuscire a risolvere completamente la criticità – in quanto intrinseca al protocollo.
E’ quasi superfluo aggiungere che tanto il numero di navigatori del World Wide Web quanto la complessità delle pagine attuali non sono paragonabili a quelle a cui gli ideatori di HTTP fecero riferimento nelle fasi di creazione (inizio anni ’90) e revisione (1996 e 1997).
Un’evoluzione necessaria
Lo studio e l’approvazione di uno standard che fosse in grado di superare i limiti storici di HTTP ha richiesto diversi anni di lavoro, per l’esattezza diciotto – dalla seconda revisione (HTTP/1.1 del 1997) ad HTTP/2 (2015). Dalla pagina ufficiale delle domande e risposte più frequenti è possibile estrapolare le caratteristiche principali e differenze (rispetto alla versione 1.1) di HTTP/2:
- SPDY. HTTP/2 è stato sviluppato dal gruppo di lavoro IEFT (Internet Engineering Task Force, organizzazione che sviluppa e promuove standard per Internet) a partire dal progetto del protocollo SPDY (SPDY/3) di Google che poteva vantare già l’implementazione sui suoi server da alcuni anni.
- Formato binario. Rispetto al formato testuale di HTTP/1.1, che richiede l’esecuzione di procedure d’analisi sintattica (in gergo parsing), il formato binario si rivela più compatto ed in grado di incrementare la velocità di caricamento delle pagine.
- Multiplexing. HTTP/2 è in grado di ovviare al problema delle lunghe code facilitando la consegna della risorse richieste dal browser ed abbassando i tempi di latenza: immagini, video, font etc. saranno infatti suddivisi in più parti ed inviati al browser in un’unica sessione – sarà poi compito di quest’ultimo assemblare i vari frammenti.
- Server Push. Caratteristica grazie alla quale non sarà più necessario attendere l’analisi del codice HTML da parte del browser. Il server sarà infatti in grado di anticipare le richieste del client, inviando direttamente al browser gli elementi che ritiene debbano essere presenti nella cache del client.
- Compressione degli header HTTP. Gli header HTTP descrivono le modalità operative del browser e del server e sono contenuti in ciascuna richiesta inviata dal primo al secondo. La soluzione adoperata da HTTP/2 prevede la compressione di tutti gli header in un unico blocco (con HTTP/1.1 erano suddivisi tra le varie richieste) in modo da diminuire sensibilmente la banda utilizzata (soprattutto con un elevato numero di connessioni).
Stato d’adozione di HTTP/2
HTTP/2 è ancora in fase di sviluppo per alcune sue parti ed è nativamente compatibile con HTTP/1.1. Attualmente è già utilizzabile, essendo supportato dai browser più comuni (Chrome, Firefox, Safari, Edge etc.), ma solo su TLS (per scelta dei vari team di sviluppo di Google, Mozilla).
Dal punto di vista dei server (e quindi dei siti), quelli che lo rendono disponibile non rappresentano ancora la maggioranza dei casi : in base ai dati raccolti da W3Techs (aggiornati a febbraio 2018), il protocollo è utilizzato infatti dal 24.2% dei portali presenti sul Web. Se il tasso di crescita del 10% circa all’anno resterà costante, l‘obiettivo del 50% potrebbe essere raggiunto nel corso del 2020.