en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

Un'introduzione a HTTP / 2

Introduzione

HTTP / 2 è l'ultima revisione di Protocollo di trasferimento HyperText o HTTP [01], che viene utilizzato dai browser per comunicare con i server Web. Derivato dal vecchio SPDY [02] protocollo, HTTP / 2 è la prima nuova versione di HTTP dalla standardizzazione di HTTP / 1.1 in RFC 2068 nel 1997.

È stato sviluppato dal gruppo di lavoro HTTP Internet Engineering Task Force (IETF) httpbis (dove "bis" significa "due volte") e pubblicato come RFC 7540 [03] Maggio 2015.

Adozione HTTP / 2

HTTP / 2 è stato sempre più adottato dai siti Web di lavoro dalla sua pubblicazione ufficiale. Il servizio di sondaggi online W3Techs [04] osserva che da settembre 2017 a settembre 2018, il supporto HTTP / 2 è aumentato dal 16% al 30% di tutti i siti Web monitorati.

Inoltre, i principali browser (ad es. Chrome, Firefox, Edge, ecc.) Forniscono già pieno supporto per HTTP / 2 [05]. (Alcuni hanno persino sviluppato implementazioni sperimentali prima che HTTP / 2 fosse accettato come standard.)

Questa diffusa adozione significa che HTTP / 2 ha il potenziale per diventare il protocollo di comunicazione di fatto del Web.

Motivazione dietro HTTP / 2

Httpbis'charter [06] menziona diversi componenti di HTTP / 1.1 che potrebbero essere migliorati come motivazione per HTTP / 2. Tuttavia, l'obiettivo principale del gruppo era ridurre la latenza percepita dall'utente finale.

Per fare questo, httpbis preso in considerazione la possibilità di ridurre al minimo l'overhead della larghezza di banda tramite la compressione delle intestazioni e tecniche di prefetch aggressivo (ad esempio push del server), cercando allo stesso tempo di affrontare sistematicamente problemi di prestazioni noti come la congestione delle connessioni e il problema del blocco Head-of-Line (HoL) [07].

Inoltre, HTTP / 2 doveva essere compatibile con le versioni precedenti, il che significa che doveva usare gli stessi verbi del metodo, codici di stato, URI e (la maggior parte) campi di intestazione trovati in HTTP / 1.1. HTTP / 2 doveva anche essere progettato per supportare casi d'uso HTTP comuni, come browser Web desktop e mobile, interfacce di programmazione, proxy e firewall.

Per mantenere questa compatibilità, il gruppo di lavoro ha sviluppato un meccanismo di negoziazione del protocollo che consentirebbe a client e server di selezionare tra i protocolli HTTP / 1.1, HTTP / 2 o anche non HTTP.

Quindi cosa c'è di nuovo in HTTP / 2?

HTTP / 2 utilizza ancora gli stessi schemi URI e numeri di porta utilizzati in HTTP / 1.1 (ad es. Porta 80 per http URI e porta 443 per https URI), ma molte cose sono fatte diversamente sotto il cofano.

Il cambiamento più fondamentale è l'introduzione di montatura come unità di dati di base di HTTP / 2.

HTTP / 1.1 utilizza tradizionalmente pacchetti per rappresentare i dati di rete. Un client costruisce un pacchetto di richiesta con un verbo metodo (ad es GET or POST), aggiungendo un elenco di intestazioni che descrivono la connessione e un corpo che contiene i dati dell'applicazione.

Alla ricezione di un pacchetto di richiesta, un server HTTP / 1.1 risponde con un pacchetto di risposta simile contenente le informazioni richieste. Di conseguenza, ogni ciclo di richiesta e risposta richiede una nuova connessione.

Al contrario, i client HTTP / 2 stabiliscono una singola connessione di rete con il server, che utilizzano per tutte le successive comunicazioni di rete. Intestazioni, dati utente, messaggi di errore e tali informazioni vengono raggruppati in strutture di dati binari distinti chiamati frame, prima di essere trasmessi sulla rete.

Sembra un piccolo cambiamento, ma comporta implicazioni significative.

Compressione dell'intestazione

Un grande vantaggio dell'uso dei frame è che le intestazioni HTTP / 2 sono raggruppate in a HEADER frame, che può essere compresso utilizzando i normali metodi di compressione. Le intestazioni devono essere trasferite prima di qualsiasi dato, quindi la compressione delle intestazioni può ridurre il sovraccarico della larghezza di banda imposto da HTTP / 2.

La compressione delle intestazioni, insieme alle seguenti prestazioni che migliorano le funzionalità HTTP / 2, può essere particolarmente utile nelle applicazioni mobili o Internet-of-things (IOT), dove è richiesto un utilizzo minimo della rete.

Stream e multiplexing

Una sequenza indipendente di frame semanticamente rilevanti è chiamata a ruscello. Agli stream viene assegnato un identificatore univoco dall'endpoint (ovvero client o server) che li ha creati, in modo che altri endpoint possano distinguerli.

Gli endpoint possono intercalare i frame da più flussi sulla stessa connessione HTTP / 2, consentendo a una singola connessione di rete di supportare più flussi contemporaneamente aperti. Questo processo è chiamato multiplexing [08].

Il riutilizzo della stessa connessione riduce i problemi come la congestione della connessione e il problema HoL menzionato in precedenza e offre prestazioni migliori e un'esperienza utente più fluida rispetto alle versioni HTTP precedenti.

Dipendenza e priorità del flusso

La gestione di più flussi simultanei significa che alcuni flussi verranno elaborati prima di altri. HTTP / 2 consente allo sviluppatore (o all'amministratore) di ottimizzare questo comportamento con una funzione chiamata dipendenza dal flusso.

Un flusso può dipendere dal trasferimento completo di un altro flusso prima che venga gestito. Ad esempio, su un sito in cui il contenuto principale di una pagina Web deve essere caricato prima di qualsiasi consiglio per contenuti simili, HTTP / 2 consente di creare il flusso di consigli come dipendente dal flusso di contenuto principale.

HTTP / 2 supporta anche prioritizzazione del flusso. Cioè, a ogni flusso può essere assegnata una priorità per suggerire con quanta urgenza gli endpoint devono allocare le risorse per gestire i frame del flusso.

La prioritizzazione e la dipendenza dallo streaming aiutano gli sviluppatori ei proprietari di siti Web a ottimizzare l'utilizzo della rete del loro sito, il che può migliorare in modo significativo l'esperienza utente del loro sito.

Server push

Infine, HTTP / 2 può migliorare le prestazioni di un sito web fornendo funzionalità "push". Un server Web HTTP / 2 può rispondere con dati per più query rispetto a quelle richieste originariamente dal client. Ciò consente al server di fornire i dati che sa che un browser web avrà bisogno di eseguire il rendering di una pagina, senza attendere che il browser esamini la prima risposta, e quindi senza l'overhead di un ciclo di richieste aggiuntivo.

Il push del server offre agli sviluppatori il controllo completo sul numero di richieste richieste a un browser per eseguire il rendering del proprio sito Web. Se utilizzata correttamente, questa funzione può ridurre al minimo l'overhead di rete.

Naturalmente, l'uso improprio della funzione push può anche sprecare più larghezza di banda di quanto sia effettivamente necessario. Per questo motivo, HTTP / 2 consente a un client di richiedere che il push del server sia disabilitato quando negozia per la prima volta una connessione.

Sicurezza HTTP / 2

Se hai letto fino a questo punto, dovrebbe essere chiaro che gli sviluppatori di HTTP / 2 si sono davvero impegnati a migliorare le prestazioni. Tuttavia, va notato che HTTP / 2 può anche aiutare a migliorare la sicurezza degli utenti del browser in generale.

Più specificamente, HTTP / 2 è definito sia per gli URI HTTP (cioè senza crittografia) che per gli URI HTTPS (su TLS canali crittografati). Sebbene lo standard stesso non richieda l'uso della crittografia, tutte le principali implementazioni del browser (ad esempio Firefox [09], Chrome, Safari, Opera, IE, Edge) hanno deciso che lo faranno - esclusivamente. supporto HTTP / 2 oltre TLS.

In effetti, i browser distinguono tra HTTP / 2 con testo in chiaro e HTTP / 2 tramite crittografia TLS come due diversi protocolli. Viene chiamato HTTP / 2 crittografato h2 e testo in chiaro h2c. Al momento della stesura di questo documento, nessuno dei principali browser supporta h2c , Il che significa che TLS la crittografia è obbligatoria per un sito Web per sfruttare gli altri vantaggi di HTTP / 2. Quindi, quando HTTP / 2 diventa il protocollo di rete web predefinito, i proprietari di siti web legacy che non hanno ancora effettuato l'aggiornamento a SSL /TLS, sarà fortemente motivato a farlo finalmente.

Conclusione

L'adozione diffusa di HTTP / 2 porterà a un Web nuovo e migliorato. È più veloce, richiede meno larghezza di banda e aiuta i siti Web a rimanere sicuri. La sua adozione tradizionale renderà sicuramente l'esperienza utente web complessiva più fluida e sicura.

Ottieni un certificato oggi e unisciti a noi in futuro.

Referenze

  1. Protocollo HTTP
  2. Protocollo SPDY
  3. Specifica HTTP / 2
  4. Sondaggio sull'adozione HTTP / 3 di W2Techs
  5. Adozione HTTP / 2 nei browser
  6. charter httpbis
  7. Blocco HOL
  8. Multiplexing
  9. Firefox su HTTP / 2

Articoli Correlati

Iscriviti alla Newsletter di SSL.com

Cos'è SSL /TLS?

Riproduci video

Iscriviti alla Newsletter di SSL.com

Non perdere nuovi articoli e aggiornamenti da SSL.com