Che cos'è HTTP / 2 e in che modo influisce sul futuro di Internet?
Annuncio pubblicitario
Potresti non aver ancora sentito parlare di HTTP / 2, ma è l'aggiornamento più recente a HTTP. Il nuovo standard di protocollo introduce alcuni nuovi concetti e rende la comunicazione tra server e applicazioni più rapida ed efficiente.
Che cos'è HTTP / 2?
HyperText Transfer Protocol versione 2 o HTTP / 2, è il primo importante aggiornamento di HTTP in 15 anni.
Il precedente protocollo standard, HTTP / 1.1, è in uso dal 1997 e utilizza una combinazione di soluzioni complesse per migliorare le limitazioni di HTTP.
Si basa su SPDY ("speedy"), un esperimento open source avviato da Google per affrontare alcuni dei problemi e dei limiti di HTTP / 1.1
Internet Engineering Task Force (IETF) specifica le modifiche come questa in Hypertext Transfer Protocol versione 2, Draft 17:
"HTTP / 2 consente un uso più efficiente delle risorse di rete e una percezione ridotta della latenza introducendo la compressione del campo di intestazione e consentendo più scambi simultanei sulla stessa connessione [...]
"Consente inoltre la definizione delle priorità delle richieste, consentendo di completare le richieste più importanti più rapidamente, migliorando ulteriormente le prestazioni".
"HTTP / 2 consente inoltre un'elaborazione più efficiente dei messaggi mediante l'uso di un frame binario."
"Questa specifica è un'alternativa alla sintassi del messaggio HTTP / 1.1, ma non è obsoleta. La semantica esistente di HTTP rimane invariata. "
HTTP / 2 è basato su SPDY
Entro il 2012, i browser più moderni e molti siti popolari (Google, Twitter, Facebook ecc.) Già supportavano SPDY. Con l'aumentare della popolarità di SPDY, il gruppo di lavoro HTTP (HTTP-WG) ha iniziato a lavorare sull'aggiornamento dello standard HTTP.
Da questo punto in poi, SPDY divenne la base e il ramo sperimentale per le nuove funzionalità in HTTP / 2. Al momento, abbiamo esaminato come SPDY può migliorare la navigazione Cos'è SPDY e come può ottimizzare la tua esperienza di navigazione? Che cos'è SPDY e come può massimizzare la tua esperienza di navigazione? Leggi di più . Da allora, lo standard versione 2 è stato redatto, approvato e pubblicato.
Molte delle funzionalità di SPDY sono state incorporate in HTTP / 2 e Google ha smesso di supportare questo protocollo all'inizio del 2016.
La maggior parte dei browser alla fine ha smesso di supportare SPDY e, poiché non ci sono alternative, HTTP / 2 sta diventando lo standard di fatto.
Sebbene lo standard del protocollo HTTP / 2 non sia strettamente compatibile con HTTP / 1, è possibile ottenere la compatibilità tramite la traduzione. Un client solo HTTP / 1.1 non capirà un server solo HTTP / 2 e viceversa, motivo per cui la nuova versione del protocollo è HTTP / 2 e non HTTP / 1.2.
Detto questo, una parte importante del lavoro fornito da HTTP-WG è assicurarsi che HTTP / 1 e HTTP / 2 possano essere tradotti avanti e indietro senza perdita di informazioni.
Eventuali nuovi meccanismi o funzionalità introdotti saranno anche indipendenti dalla versione e retrocompatibili con il Web esistente.
HTTP / 2 non è davvero qualcosa che un utente può implementare, ma ci sono cose che possiamo fare per influenzare la nostra velocità di navigazione. Credi che qualcuno di questi miti comuni acceleri la tua velocità su Internet? 5 miti sull'aumento della velocità di Internet e perché non funzionano 5 miti sull'aumento della velocità di Internet e perché non funzionano La velocità di Internet è una misura fondamentale nel 21 ° secolo. Tuttavia, c'è molta disinformazione online su come rendere più veloce la tua connessione. Ecco cinque miti che non dovresti credere. Leggi di più
I vantaggi e le caratteristiche di HTTP / 2
HTTP / 2 include alcuni grandi aggiornamenti allo standard HTTP. Alcuni dei più importanti sono l'inquadramento binario, il multiplexing, la prioritizzazione del flusso, il controllo del flusso e il push del server.
Inquadramento binario
Dopo l'aggiornamento a HTTP2 /, la comunicazione del protocollo HTTP viene suddivisa in uno scambio di frame con codifica binaria. Questi frame sono associati ai messaggi che appartengono a un determinato flusso. I flussi vengono quindi multiplexati (intrecciati in un certo senso) in una singola connessione TCP.
Il nuovo livello di frame binario introduce una nuova terminologia; Stream, messaggi e frame.
- Gli stream sono flussi bidirezionali di byte che contengono uno o più messaggi.
- Ognuno di questi flussi ha un identificatore univoco e può trasportare messaggi bidirezionali utilizzando informazioni prioritarie opzionali.
- I frame sono la più piccola unità di comunicazione in HTTP / 2 che contiene insiemi di dati specifici (intestazioni HTTP, payload dei messaggi, ecc.). L'intestazione identificherà almeno il flusso a cui appartiene il frame.
- I messaggi sono un set completo di frame associati a una richiesta logica o a un messaggio di risposta.
- Ogni messaggio è un messaggio HTTP logico, come una richiesta o risposte, composto da uno o più frame.
Questo ci consente di utilizzare una singola connessione TCP, per ciò che in passato richiedeva più.
multiplexing
HTTP / 1.1 garantisce che sia possibile recapitare una sola risposta alla volta per connessione. E il browser aprirà ulteriori connessioni TCP se il client desidera effettuare più richieste parallele.
HTTP / 2 rimuove questa limitazione di HTTP / 1.1 e abilita il multiplexing di richieste e risposte complete. Ciò significa che il client e il server possono suddividere un messaggio HTTP in frame indipendenti, che vengono quindi interlacciati e riassemblati all'altra estremità.
Nel complesso, questo è il miglioramento più importante di HTTP / 2, poiché eliminerà in parte la necessità di connessioni multiple. Questo a sua volta introdurrà numerosi vantaggi in termini di prestazioni in tutte le tecnologie web.
Il numero ridotto di connessioni significa un minor numero di handshake di Transport Layer Security (TLS), un migliore riutilizzo delle sessioni e una riduzione complessiva dei requisiti delle risorse client e server. Ciò rende le applicazioni più veloci, semplici ed economiche da distribuire.
I siti Web con molte risorse esterne (immagini o script) vedranno i maggiori guadagni di prestazioni dal multiplexing HTTP / 2.
Priorità di flusso e dipendenza
Ulteriori miglioramenti dei flussi multiplex sono realizzati con dipendenze di peso e flusso. HTTP / 2 ci consente di assegnare a ciascun flusso un peso (un valore compreso tra 1 e 256) e di renderlo esplicitamente dipendente da un altro flusso.
Questa combinazione di dipendenza e peso porta alla creazione di un albero di priorità, che indica al server come il client preferirebbe ricevere risposte.
Il server utilizzerà le informazioni nell'albero delle priorità per controllare l'allocazione di CPU, memoria e altre risorse, nonché l'allocazione della larghezza di banda per garantire che il client riceva la consegna ottimale di risposte ad alta priorità.
Controllo del flusso
I problemi con il controllo del flusso in HTTP / 2 sono simili a HTTP / 1.1. Tuttavia, poiché i flussi HTTP / 2 sono multiplexati all'interno di una singola connessione TCP, il modo in cui funziona il controllo del flusso in HTTP / 1.1 non è più efficiente.
In breve, è necessario il controllo del flusso per impedire ai flussi di interferire tra loro per causare un blocco. Questo rende possibile il multiplexing. HTTP / 2 consente di utilizzare una varietà di algoritmi di controllo del flusso, senza richiedere modifiche al protocollo.
Nessun algoritmo per il controllo del flusso è specificato in HTTP / 2. Invece, è stata fornita una serie di blocchi predefiniti per aiutare i client e i server ad applicare il proprio controllo di flusso.
È possibile trovare le specifiche di questi blocchi predefiniti nella sezione "Controllo del flusso" della bozza Internet HTTP / 2.
Server Push
Il tuo browser normalmente richiede e riceve un documento HTML da un server quando visita per la prima volta una pagina. Il server deve quindi attendere che il browser analizzi il documento HTML e invii una richiesta per le risorse incorporate (CSS, JavaScript, immagini, ecc.).
In HTTP / 1.1, il server non può inviare queste risorse fino a quando il browser non le richiede e ciascuna risorsa richiede una richiesta separata (ovvero più handshake e connessioni).
Il push del server ridurrà la latenza consentendo al server di inviare queste risorse senza prompt, poiché sa già che il client le richiederà. Quindi nell'esempio sopra, il server invierà CSS, JavaScript (un linguaggio di scripting comune Che cos'è JavaScript e come funziona? Che cos'è JavaScript e come funziona? Che cos'è JavaScript? È un linguaggio di programmazione utilizzato per migliorare le pagine Web. Include l'aggiornamento dinamico delle pagine Web, delle interfacce utente e altro ancora. Immergiamoci nell'argomento Javascript. Leggi di più nelle pagine Web) e immagini nel browser per visualizzare la pagina più rapidamente.
Fondamentalmente, il push del server consente a un server di inviare più risposte per una singola richiesta client.
Sebbene manualmente, questo è l'effetto che attualmente otteniamo incorporando CSS o JS nei nostri documenti HTML: stiamo inviando la risorsa incorporata al client senza attendere che il client la richieda.
Questo è un grande passo avanti rispetto all'attuale standard HTTP del rigoroso flusso di lavoro di richiesta-risposta one-to-one.
I limiti di HTTP / 2
SPDY aveva una politica leggermente più severa sulla sicurezza e richiedeva la crittografia SSL per tutte le connessioni. HTTPS / 2 non richiede la crittografia ma molti servizi non serviranno HTTP / 2 senza SSL.
Tutti i principali browser supportano HTTP / 2, ma nessuno di essi lo supporterà senza crittografia. Il sito Web di CanIUs offre una fantastica panoramica delle tabelle sull'attuale supporto del browser per HTTP / 2, come visto sopra.
La compatibilità con le versioni precedenti e le traduzioni tra HTTP / 1.1 e HTTP / 2 rallenteranno la velocità di caricamento della pagina.
Non esiste un vero motivo per cui la crittografia non dovrebbe essere un'impostazione predefinita o obbligatoria ormai. Se hai già un certificato SSL sul tuo sito, puoi migliorare la sicurezza del tuo sito web HTTPS abilitando HSTS.
HTTP / 2 è la prossima grande cosa?
HTTP / 2 è stato proposto come standard a metà 2015 e la maggior parte dei browser ha aggiunto il supporto entro la fine di quell'anno. HTTP / 2 influenza già il modo in cui funziona Internet e il modo in cui applicazioni e server dialogano insieme.
Non ci sono requisiti per forzare l'uso di HTTP / 2, ma finora serve solo vantaggi e senza inconvenienti. È anche un cambiamento abbastanza piccolo dal punto di vista dell'utente, che le persone non noteranno davvero.
Secondo W3Tech, il 31, 7% dei primi 10 milioni di siti Web attualmente supporta HTTP / 2. Il modo più rapido per la maggior parte di voi di abilitare HTTP / 2 sul proprio sito Web è utilizzare la CDN di Cloudflare.
Il prossimo standard proposto (HTTP / 3) è già in lavorazione e si basa su QUIC, un altro progetto sperimentale di Google. Nell'ottobre di quest'anno, HTTP-WG di IETF e il gruppo di lavoro QUIC hanno ufficialmente richiesto a QUIC di diventare il nuovo standard mondiale e di rinominarlo HTTP / 3.
Se sei curioso, Akamai.com ha uno strumento rapido per verificare se il tuo browser supporta HTTP / 2. In caso contrario, forse considera la possibilità di cambiare browser 5 Google Chrome Alternative per un browser migliore su desktop o mobile 5 Google Chrome Alternative per un browser migliore su desktop o mobile Chrome è il browser più popolare al mondo. Ma ha ancora problemi. Questi browser alternativi possono essere una scelta migliore? Leggi di più .
Ulteriori informazioni su: Reti di computer, HTTP / 2, SPDY.