Introduzione a http2

in Informatica

Http/2

Http/2 è la naturale evoluzione del protocollo HTTP , che dal 1991 regna sovrano nelle comunicazioni con la rete Internet. Il protocollo HTTP permette di instaurare la connessione tra client (browser) ed il server dove sono ospitate le pagine html (o meglio le risorse). Il principale limite di questo protocollo è legato all’evasione delle richieste: viene infatta gestita una richiesta alla volta. In pratica, ogni connessione, oltre al tempo di scaricamento della risorsa, impegna ulteriore tempo per le operazioni di servizio, generando latenza e, in alcuni casi, attese e ritardi. Tutto questo, legato dalla natura intrinseca dell’architettura del protocollo.

Nel corso degli anni sono state sviluppate diverse tecniche per ottimizzare i tempi di scaricamento come, ad esempio:

  • concatenamento di risorse (javascript, css, …)
  • connessioni e framework asincroni
  • minimizzazione dei file

senza riuscire a risolvere completamente la criticità.

Dopo numerosi anni di studi, specifiche e nuovi rilasci del protocollo, che hanno dato alla luce la revisione HTTP/1.1 e HTTP/2.

Le novità introdotte

HTTP/2 è stato sviluppato dal gruppo di lavoro IETF a partire dal progetto SPDY/3 di Google, predecessore dell’implementazione e dei test presso i propri server.

Le novità principali del nuovo protocollo, sono:

  • Formato binario: il formato binario risula più compatto, consentendo di incrementare la velocità di caricamento delle pagine
  • Multiplexing: obiettivo del protocollo è quello di minimizzare i tempi di latenza nello scaricamento. I contenuti come immagini, video, fonts vengono suddivisi in più più parti ed inviati in un’unica sessione. Sarà poi il browser a riassemblare i singoli package
  • Server Push: il server è in grado di anticipare le richieste del client, inviando le risorse necessarie
  • Compressione degli header HTTP: durante i trasferimenti gli header html vengono compressi in un unico blocco diminuendo la banda utilizzata.

In DotNet Core HTTP/2 è abilitato per default in Kestrel, quando è attivo HTTPS.