HTTP/3: il nuovo Hypertext Transfer Protocol
L’HTTP/3 è il nuovo membro della famiglia di protocolli HTTP che sostituirà i suoi predecessori HTTP/1, HTTP/2 e HTTP-over-QUIC. Il protocollo è ancora in fase di sviluppo, ma è già supportato da Google Chrome, Microsoft Edge, Firefox e da aprile 2020 anche da Safari.
In origine, la terza versione dello standard HTTP è nata con il nome “HTTP-over-QUIC” come protocollo sperimentale basato su UDP. Inizialmente HTTP-over-QUIC era stato considerato il potenziale successore di HTTP/2, ma da gennaio 2020 ha ufficialmente assunto il nome di HTTP/3. Rimane da vedere la velocità con cui lo standard riuscirà ad affermarsi.
In ogni caso, grazie alla trasmissione dati basata su UDP, l’HTTP/3 garantisce tempi di caricamento più brevi e una sicurezza maggiore. Se calcoliamo, tuttavia, che l’HTTP/2 viene supportato dall’80 percento dei browser dalla sua pubblicazione nel 2015, ma che la sua adozione da parte dei fornitori procede a rilento, non dobbiamo aspettarci un’impennata immediata nel supporto di HTTP/3.
Cos’è l’HTTP/3?
Appena tre anni dopo la pubblicazione dello standard HTTP/2, a novembre 2018, l’Internet Engineering Task Force (IETF) ha introdotto il nuovo standard Hypertext Transfer Protocol HTTP/3. L’IETF non ha, tuttavia, concepito il protocollo da zero, anzi, l’organismo ha semplicemente riconosciuto i segni del tempo e progettato un protocollo web che garantisse una trasmissione dati più veloce, una sicurezza maggiore e connessioni più efficienti. Google ha sviluppato il successore di HTTP/2 QUIC (Quick UDP Internet Connections) già nel 2012, implementandolo come HTTP-over-QUIC in numerosi prodotti.
L’HTTP/3 va quindi ora a riunire i vantaggi dei protocolli di trasmissione esistenti, HTTP/2 e HTTP-over-QUIC, in un unico standard per offrire una trasmissione dei dati più veloce e stabile. Il protocollo HTTP/3 dovrebbe sostituire l’HTTP/2 basato su TCP con un approccio QUIC o UDP.
Cosa offre l’HTTP/3?
Per capire cosa offra l’HTTP/3 è innanzitutto necessario comprendere la funzione di QUIC, UDP e HTTP/2. In sostanza, l’HTTP/3 nasce dalla combinazione di questi tre elementi. Già il nome HTTP-over-QUIC suggerisce che la trasmissione dei dati avviene tramite UDP piuttosto che TCP.
L’HTTP/2 utilizza il TCP, il protocollo di trasmissione più diffuso nel web. Il TCP stabilisce le connessioni tramite handshake su più livelli e trasmette i pacchetti di dati in ordine cronologico, quindi li invia uno alla volta e procede nella trasmissione solo quando quella del pacchetto prima è stata conclusa. La trasmissione è protetta da cosiddetti ACK, ovvero conferme di richiesta e consegna e numeri di verifica. I dati trasmessi tramite il TCP contengono un’intestazione con parametri che consentono ai processi del mittente di connettersi ai processi corrispondenti del destinatario.
Il TCP è molto affidabile per quanto riguarda la completezza delle trasmissioni dei dati, ma è soggetto a code di dati e tempi di caricamento più lunghi dal momento che vengono interrotte tutte le trasmissioni finché un pacchetto di dati smarrito non viene trasferito con successo. L’HTTP/2 costituisce in un certo senso il limite della famiglia di protocolli, dal momento che non è possibile velocizzare la trasmissione di dati senza introdurre un protocollo nuovo.
Google si è attivato immediatamente sviluppando il proprio protocollo di trasmissione QUIC. QUIC aggira il problema delle code di dati tipiche di TCP sfruttando la trasmissione UDP connectionless basata su datagrammi. UDP lavora, proprio come TCP, sul livello di trasporto rinunciando, tuttavia, alle conferme di destinatario e mittente. Questo significa che altre trasmissioni non devono aspettare che venga conclusa quella precedente. La comunicazione tra client e server viene quindi notevolmente accelerata. L’IETF ha riconosciuto i vantaggi del nuovo protocollo e lo ha introdotto nel 2018 come versione successiva di HTTP/2 con il nome HTTP-over-QUIC.
Il protocollo di trasmissione HTTP rimane principalmente invariato. Esso è ancora costituito da un’intestazione e da un corpo (body) e utilizza verbi, cookie e caching. La differenza sta nel modo di trasmissione e nella crittografia integrata.
Qual è la funzione di HTTP/3?
Utilizzare QUIC per il protocollo HTTP/2 implica adattamenti funzionali concreti che hanno, tramite la versione sperimentale HTTP-over-QUIC, portato alla nascita di HTTP/3.
La funzione nuova più importante della terza versione del protocollo è l’utilizzo esclusivo di URL HTTPS. Ogni URL più datato e non crittografato è marcato come non sicuro. L’utilizzo di QUIC e UDP permette a HTTP/3 di saltare il passaggio della crittografia TSL a livello TCP, consentendo al protocollo di sfruttare automaticamente una crittografia TLS 1.3. L’HTTP/3 può quindi essere utilizzato solo se è presente una crittografia.
Altre funzioni nuove includono una connessione costante qualora la rete cambiasse nel corso della trasmissione (lato client o lato server), un numero notevolmente ridotto di pacchetti di dati, dato che la trasmissione di questi ultimi avviene tramite stream paralleli, e una “forward error correction”, ovvero una correzione di errori che avviene già a livello di QUIC.
Quali vantaggi offre l’HTTP/3?
I vantaggi di HTTP/3 sono l’aumento della velocità di trasmissione, tempi di caricamento più rapidi e una connessione più stabile. Basandosi su UDP, l’HTTP/3 aggira i punti deboli di TCP e sfrutta tutti i vantaggi di HTTP/2 e HTTP-over-QUIC.
Anche se l’HTTP/2 sfrutta la multiplazione (o multiplexing), ovvero il download contemporaneo dei dati, deve ancora fare i conti con l’head-of-line-blocking. Si tratta di colli di bottiglia digitali che rallentano tutti gli stream quando un pacchetto va perso su uno di questi. Grazie all’UDP, l’HTTP/3 non attende il completamente di una trasmissione, ma procede semplicemente con il processo di caricamento.
Il protocollo HTTP/3 rinuncia, inoltre, agli handshake iniziali per verificare la sicurezza di una connessione. Invece di trasmettere richieste di sicurezza al livello TLS superiore, la crittografia avviene direttamente tramite il protocollo di trasmissione. Il tempo richiesto per stabilire una connessione si riduce con HTTP/3 da due a una sola fase.
L’HTTP/3 non ha più bisogno di indirizzi IP per completare i download, ma utilizza ID di connessione individuali che consentono un download costante anche se cambia la rete.
Grazie alla connessione più stabile, flessibile e veloce, l’HTTP/3 garantisce un’esperienza migliore soprattutto agli utenti mobile.
HTTP/2 vs HTTP/3: aspetti in comune e differenze
Di seguito trovate una panoramica degli aspetti in comune e delle differenze di HTTP/3 rispetto a HTTP/2:
Differenze:
- L’HTTP/3 si basa su UDP, mentre l’HTTP/2 utilizza TCP.
- Grazie alla crittografia TLS 1.3 integrata, il protocollo HTTP/3 non ha bisogno di richieste di crittografia (handshake) aggiuntive a livello TLS, aggirando verifiche di sicurezza superflue.
- Grazie alla crittografia TSL 1.3 integrata, l’HTTP/3 supporta solo connessioni criptate, a differenza di HTTP/2.
Aspetti in comune:
- Entrambi i protocolli utilizzano la compressione dell’intestazione, ma l’HTTP/3 utilizza la compressione QPack invece di quella HPAck dell’HTTP/2 che è legata a un ordine dei pacchetti.
- Sia l’HTTP/3 che l’HTTP/2 supportano server push, ossia l’invio accelerato di dati CSS e JavaScript, che servono al browser in ogni caso per visualizzare una pagina.
- Entrambi i protocolli utilizzano il multiplexing di richiesta e risposta, ovvero la trasmissione parallela di dati provenienti da fonti diverse.
- La prioritizzazione della trasmissione dei dati comporta, con entrambi i protocolli, il caricamento gerarchico dei contenuti di una pagina, senza attendere il completamento di ulteriori richieste.
L’HTTP/2 è stato a lungo considerato un protocollo di trasmissione efficiente e affidabile. Nel nostro approfondimento sull’HTTP/2 scoprite come ha reso le connessioni più sicure e veloci fino alla sua sostituzione con l’HTTP/3.
Quali problemi potrebbe causare l’HTTP/3?
Molti critici dell’HTTP/3 fanno presente che la distanza tra la terza e la seconda versione del protocollo è troppo ravvicinata e che l’UDP è un protocollo di rete di dubbia reputazione. Il nuovo protocollo HTTP garantisce, inoltre, vantaggi soprattutto all’utente. I fornitori invece devono far fronte a diverse difficoltà a causa del passaggio da TCP e TLS a UDP e QUIC.
Dato che la verifica di sicurezza e la crittografia non avvengono più tramite TLS, ma direttamente tramite UDP, che deve recapitare il massimo numero di pacchetti nel minor tempo possibile, i fornitori temono che il traffico di dati non venga più controllato a sufficienza a causa della mancata autenticazione TLS. L’aspetto più criticato dai servizi Internet è quindi la sicurezza delle applicazioni e dei dati. Il protocollo TCP veniva considerato affidabile e orientato alla connessione grazie alla sua chiara regola di richiesta e risposta. Dato che QUIC svolge molti dei passaggi autonomamente, sorge il timore che l’HTTP/3 limiti le possibilità di verifica da parte dei fornitori, facilitando l’ingresso di malware nel flusso di dati.
Considerando l’offerta crescente di dati multimediali, come immagini, video e altri elementi dei social media, che richiedono trasmissioni più rapide, possiamo solo sperare che, nell’interesse degli utenti, venga aggiornata la famiglia di protocolli e che i fornitori riescano a tenere il passo con le condizioni sempre mutevoli del mondo del web.