Passa al contenuto principale

1. Introduction (Introduzione)

Le prestazioni delle applicazioni che utilizzano l'Hypertext Transfer Protocol (HTTP, [HTTP]) sono collegate al modo in cui ogni versione di HTTP utilizza il trasporto sottostante e alle condizioni in cui il trasporto opera.

Effettuare richieste simultanee multiple può ridurre la latenza e migliorare le prestazioni dell'applicazione. HTTP/1.0 consentiva solo una richiesta in sospeso alla volta su una determinata connessione TCP [TCP]. HTTP/1.1 [HTTP/1.1] ha aggiunto il pipelining delle richieste (Request Pipelining), ma questo ha solo parzialmente risolto il problema della concorrenza delle richieste e soffre ancora del blocco testa-della-coda (Head-of-Line Blocking) a livello applicativo. Pertanto, i client HTTP/1.0 e HTTP/1.1 utilizzano connessioni multiple a un server per effettuare richieste simultanee.

Inoltre, i campi HTTP sono spesso ripetitivi e verbosi, causando traffico di rete non necessario e il rapido riempimento della finestra di congestione TCP iniziale. Ciò può risultare in latenza eccessiva quando vengono effettuate richieste multiple su una nuova connessione TCP.

HTTP/2 affronta questi problemi definendo una mappatura ottimizzata (Optimized Mapping) della semantica di HTTP su una connessione sottostante. In particolare, consente l'interleaving dei messaggi (Interleaving of Messages) sulla stessa connessione e utilizza una codifica efficiente (Efficient Coding) per i campi HTTP. Consente anche la prioritizzazione delle richieste (Prioritization of Requests), permettendo alle richieste più importanti di completarsi più rapidamente, migliorando ulteriormente le prestazioni.

Il protocollo risultante è più amichevole verso la rete perché possono essere utilizzate meno connessioni TCP rispetto a HTTP/1.x. Ciò significa meno competizione con altri flussi e connessioni più longeve, che a loro volta portano a un migliore utilizzo della capacità di rete disponibile. Si noti tuttavia che il blocco testa-della-coda TCP non è risolto da questo protocollo.

Infine, HTTP/2 consente anche un'elaborazione più efficiente dei messaggi attraverso l'uso del framing binario dei messaggi (Binary Message Framing).

Questo documento rende obsoleti gli RFC 7540 e 8740. L'appendice B elenca i cambiamenti notevoli.