Aller au contenu principal

1. Introduction

Les performances des applications utilisant le protocole de transfert hypertexte (HTTP, [HTTP]) sont liées à la manière dont chaque version d'HTTP utilise le transport sous-jacent et aux conditions dans lesquelles le transport fonctionne.

Effectuer plusieurs requêtes simultanées peut réduire la latence et améliorer les performances de l'application. HTTP/1.0 ne permettait qu'une seule requête en attente à la fois sur une connexion TCP [TCP] donnée. HTTP/1.1 [HTTP/1.1] a ajouté le pipelining des requêtes (Request Pipelining), mais cela n'a que partiellement résolu le problème de la concurrence des requêtes et souffre toujours du blocage en tête de file (Head-of-Line Blocking) au niveau de la couche application. Par conséquent, les clients HTTP/1.0 et HTTP/1.1 utilisent plusieurs connexions vers un serveur pour effectuer des requêtes simultanées.

De plus, les champs HTTP sont souvent répétitifs et verbeux, causant un trafic réseau inutile ainsi que le remplissage rapide de la fenêtre de congestion TCP initiale. Cela peut entraîner une latence excessive lorsque plusieurs requêtes sont effectuées sur une nouvelle connexion TCP.

HTTP/2 résout ces problèmes en définissant un mappage optimisé de la sémantique d'HTTP vers une connexion sous-jacente. Plus précisément, il permet l'entrelacement de messages (Interleaving of Messages) sur la même connexion et utilise un codage efficace (Efficient Coding) pour les champs HTTP. Il permet également la priorisation des requêtes (Prioritization of Requests), permettant aux requêtes plus importantes de se terminer plus rapidement, améliorant ainsi davantage les performances.

Le protocole résultant est plus favorable au réseau car moins de connexions TCP peuvent être utilisées par rapport à HTTP/1.x. Cela signifie moins de concurrence avec d'autres flux et des connexions plus durables, ce qui conduit à son tour à une meilleure utilisation de la capacité réseau disponible. Notez cependant que le blocage en tête de file TCP n'est pas résolu par ce protocole.

Enfin, HTTP/2 permet également un traitement plus efficace des messages grâce à l'utilisation du tramage de messages binaires (Binary Message Framing).

Ce document rend obsolètes les RFC 7540 et 8740. L'annexe B énumère les changements notables.