Che cos'è HTTP / 2 e in che modo influisce sul futuro di Internet?

Che cos'è HTTP / 2 e in che modo influisce sul futuro di Internet? / Spiegazione della tecnologia

Probabilmente non hai 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ù veloce ed efficiente.

Che cos'è HTTP / 2?

HyperText Transfer Protocol versione 2, o HTTP / 2, è il primo importante aggiornamento per HTTP in 15 anni.

Il precedente protocollo standard, HTTP / 1.1, è in uso dal 1997 e utilizza un mix di soluzioni clunky per migliorare le limitazioni di HTTP.

È basato su SPDY (“veloce”), un esperimento open source avviato da Google per risolvere alcuni dei problemi e delle limitazioni di HTTP / 1.1

Internet Engineering Task Force (IETF) specifica le modifiche come 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 di dare la priorità alle richieste, consentendo a richieste più importanti di completare più rapidamente, migliorando ulteriormente le prestazioni.”

“HTTP / 2 consente inoltre un'elaborazione più efficiente dei messaggi attraverso l'uso di frame di messaggi binari.”

“Questa specifica è un'alternativa a, ma non obsoleta, la sintassi del messaggio HTTP / 1.1. La semantica esistente di HTTP rimane invariata.”

HTTP / 2 è basato su SPDY

Entro il 2012, la maggior parte dei browser moderni e molti siti popolari (Google, Twitter, Facebook, ecc.) Hanno già supportato 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 momento in poi, SPDY è diventato il fondamento e il ramo sperimentale di nuove funzionalità in HTTP / 2. Al momento, abbiamo esaminato il modo in cui SPDY può migliorare la navigazione. Che cos'è SPDY e come può massimizzare la tua esperienza di navigazione? Cos'è SPDY e come è possibile 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 alla fine 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.

Mentre lo standard del protocollo HTTP / 2 non è strettamente retrocompatibile con HTTP / 1, la compatibilità può essere ottenuta 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 alcuna perdita di informazioni.

Eventuali nuovi meccanismi o funzionalità introdotte saranno anche indipendenti dalla versione e retrocompatibili con il Web esistente.

HTTP / 2 non è realmente qualcosa che un utente può implementare, ma ci sono cose che possiamo fare per influenzare la nostra velocità di navigazione. Credi a qualcuno di questi miti comuni per accelerare la tua velocità di internet? 5 Miti su come aumentare la velocità di Internet e perché non funzionano 5 Miti su come aumentare la velocità di Internet e perché non funzionano La velocità di Internet è una misura critica nel 21 ° secolo. Tuttavia, ci sono un sacco di disinformazioni online su come rendere più veloce la tua connessione. Ecco cinque miti che non dovresti credere. Leggi di più

I vantaggi e le funzionalità di HTTP / 2

HTTP / 2 ha alcuni ottimi aggiornamenti allo standard HTTP. Alcuni dei più importanti sono framing binario, multiplexing, prioritizzazione del flusso, controllo del flusso e push del server.

Framing binario

I messaggi HTTP di mfuji09 sono concessi in licenza CC-BY-SA 2.5.

Dopo l'aggiornamento a HTTP2 /, la comunicazione del protocollo HTTP viene suddivisa in uno scambio di frame con codifica binaria. Questi frame sono mappati ai messaggi che appartengono a un particolare stream. I flussi sono quindi multiplati (intrecciati insieme in un certo senso) in una singola connessione TCP.

Il nuovo livello di framing binario introduce una nuova terminologia; Stream, messaggi e frame.

  • Gli stream sono flussi bidirezionali di byte che trasportano uno o più messaggi.
  • Ognuno di questi flussi ha un identificativo univoco e può trasportare messaggi bidirezionali utilizzando informazioni prioritarie opzionali.
  • I frame sono la più piccola unità di comunicazione in HTTP / 2 che contiene specifici set di dati (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 mappati a una richiesta logica o un messaggio di risposta.
  • Ogni messaggio è un messaggio HTTP logico, come una richiesta o una risposta, costituita da uno o più frame.

Questo ci permette di usare una singola connessione TCP, per ciò che in passato richiedeva più.

multiplexing

HTTP / 1.1 assicura che sia possibile fornire una sola risposta alla volta per ogni connessione. E il browser aprirà ulteriori connessioni TCP se il cliente vuole fare più richieste parallele.

HTTP / 2 rimuove questa limitazione di HTTP / 1.1 e abilita richieste multiple e multiplex di risposta. Ciò significa che il client e il server possono suddividere un messaggio HTTP in frame indipendenti, che vengono poi intercalati e riassemblati all'altra estremità.

Nel complesso, questo è il miglioramento più importante di HTTP / 2, in quanto eliminerà in parte la necessità di connessioni multiple. Ciò a sua volta introdurrà numerosi vantaggi in termini di prestazioni in tutte le tecnologie web.

Il ridotto numero di connessioni comporta meno strette di mano TLS (Transport Layer Security), un migliore riutilizzo della sessione e una riduzione generale dei requisiti delle risorse client e server. Ciò rende le applicazioni più rapide, più semplici e più economiche da implementare.

I siti web con molte risorse esterne (immagini o script) vedranno i maggiori guadagni in termini di prestazioni dal multiplexing HTTP / 2.

Streaming Prioritization and Dependency

Ulteriori miglioramenti dei flussi multiplex sono fatti con le 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 prioritizzazione, che indica al server come il cliente preferirebbe ricevere le risposte.

Il server utilizzerà le informazioni nell'albero di prioritizzazione 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 con priorità alta.

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, il controllo del flusso è necessario per evitare che i flussi interferiscano l'uno con l'altro 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, è stato fornito un set di elementi costitutivi per aiutare clienti e server ad applicare il proprio controllo di flusso.

Puoi trovare le specifiche di questi elementi costitutivi nel “Controllo del flusso” sezione 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 gli asset incorporati (CSS, JavaScript, immagini, ecc.).

In HTTP / 1.1, il server non può inviare queste risorse finché il browser non le richiede, e ogni risorsa richiede una richiesta separata (cioè più handshake e connessioni).

Il server push 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 spingerà 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 usato per migliorare le pagine web. Comprende l'aggiornamento dinamico di pagine Web, interfacce utente e molto altro ancora. Scopriamo in che cosa consiste Javascript. Leggi di più nelle pagine Web) e le 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.

Anche se manualmente, questo è l'effetto che attualmente otteniamo inserendo CSS o JS nei nostri documenti HTML, stiamo spingendo la risorsa inline al client senza aspettare che il client lo richieda.

Questo è un grande passo avanti rispetto all'attuale standard HTTP di rigoroso flusso di lavoro di richiesta-risposta one-to-one.

Le limitazioni di HTTP / 2

SPDY aveva una politica un po '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 CanIU offre un'ottima panoramica della tabella 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 c'è una vera ragione per cui la crittografia non dovrebbe essere una configurazione predefinita o obbligatoria ormai. Se hai già un certificato SSL sul tuo sito, puoi migliorare la sicurezza del tuo sito 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 per la fine di quell'anno. HTTP / 2 influisce già sul modo in cui Internet funziona e su come le applicazioni e i server parlano 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 la gente non noterà davvero.

Secondo W3Tech, il 31,7% dei primi 10 milioni di siti Web attualmente supporta HTTP / 2. Il modo più rapido per consentire a molti di voi di abilitare HTTP / 2 sul tuo sito web è l'uso della 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, IETF'S HTTP-WG e il QUIC Working Group 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 prendere in considerazione la possibilità di cambiare il 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ù .

Scopri di più su: Reti di computer, HTTP / 2, SPDY.