HTTP/1.1 ouvrait une nouvelle connexion pour chaque requête ou en réutilisait quelques-unes, ce qui obligeait les navigateurs à ouvrir environ six connexions parallèles vers un site. Chaque connexion payait une poignée de main distincte, et une réponse lente sur l'une bloquait les autres derrière elle. Le web était lent pour des raisons structurelles, non techniques.
Le SPDY de Google a prouvé la solution : conserver exactement les méthodes, les en-têtes et les codes de statut de HTTP, mais déplacer le trafic dans une seule connexion transportant de nombreux flux multiplexés. L'IETF a repris ces travaux et les a normalisés sous le nom de HTTP/2 dans la RFC 7540, avec un cadrage binaire et la compression d'en-têtes HPACK.
Parce que la sémantique restait identique, les serveurs et les navigateurs ont pu l'adopter sans repenser ce que signifie une requête HTTP. Le transport a changé ; le contrat, non, si bien que chaque site a bénéficié gratuitement de l'accélération.
Figer la sémantique de HTTP ; faire passer les flux sur une seule connexion.
Parce que la sémantique de HTTP était intacte, les serveurs existants pouvaient ajouter la prise en charge sans changer la façon dont les applications rédigent les réponses.
Une seule connexion avec de nombreux flux supprime le goulot d'étranglement des six connexions et le coût d'établissement de connexion pour chaque ressource.
HPACK compresse les en-têtes répétés, de sorte que les mêmes champs cookie et user-agent cessent d'être renvoyés à chaque requête.
Le server push permettait à un serveur d'envoyer des ressources avant que le client ne les demande, supprimant un aller-retour.
Un transport qui préserve la compatibilité peut l'emporter même lorsque la sémantique ne change pas ; gardez le contrat et remplacez la plomberie.
Suites
La RFC 7540 a été finalisée en mai 2015 et est devenue la valeur par défaut pour essentiellement tout le trafic HTTPS. Son principal problème restant était le blocage en tête de file au niveau de TCP, qui a directement conduit à QUIC et à HTTP/3. HTTP/2 a aussi rendu possibles la contrebande de requêtes et le modèle de déni de service par réinitialisation rapide de HTTP/2 découvert en 2023.
VÉRIFIEZ LES SOURCES
Les sources
- RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2) IETF / RFC Editor · rfc-editor.org
- HTTP/2 Wikipedia · en.wikipedia.org