HTTP/3 versus HTTP/2

HTTP/3 versus HTTP/2

Le HTTP/3 plus rapide et plus sécurisé que le HTTP/2 ?

De HTTP/0.9 à HTTP/3

Avant d’aborder HTTP/3, rappelons que le protocole HTTP (HyperText Transfer Protocole) a eu plusieurs améliorations au cours du temps.

La 1ère version a été introduite en 1990 et a eu 2 variantes : HTTP et HTTPS (pour la version sécurisée). Le principe est simple : établir une connexion TCP et servir la ressource.

Une version plus optimisée du protocole, portant le nom HTTP/1.1, est apparue ensuite en 1997. Elle visait à améliorer la gestion du cache et à résoudre un nombre de soucis majeurs. Une autre la suit en 2014, le protocole HTTP/1.1 bis, pour apporter d’autres évolutions.
Cependant, le contexte d’internet a changé, la navigation n’est plus la même et les besoins des sites web ont évolué. Les pages demandent de plus en plus de ressources et le protocole commence à avoir du mal à répondre aux requêtes des internautes. D’où, la 2ème version majeure de HTTP qui élimine l’établissement de la connexion TCP pour chaque ressource et remplace cela par une seule connexion permettant ainsi le multiplexage des ressources. HTTP/2 propose entre autres d’autres techniques pour accélérer le chargement des pages (requêtes binaires, compression des Headers, …) mais l’avantage principal du protocole est le chargement parallèle des ressources.

HTTP/2 avait donc réussi à éliminer le problème de saturation des en-têtes de file (Head-of-line blocking) au niveau de la couche application par le multiplexage, mais le problème persiste toujours au niveau de la couche TCP. Et c’est justement ce problème qui pousse l’organisme IETF (Internet Engineering Task Force) à développer la nouvelle version du protocole HTTP/3.

HTTP/3 la révolution ?

Oui c’est une vraie révolution, on abandonne le très fiable protocole TCP et la couche TLS pour le protocole Quick UDP “orienté non connexion” qui ne permet pas de vérifier la bonne livraison des paquets ni même son origine, mais qui devrait être plus rapide.

Quick UDP c’est quoi ?

HTTP/3 se base sur le protocole QUIC (Quick UDP Internet Connections) qui a été développé par Google en 2012 et qui vise à réduire les délais de connexion.

C’est un protocole de transport orienté “non connexion”, lorsqu’une machine A envoie des paquets à une machine B, la machine B n’est pas prévenue de l’arrivée des données et les reçoit sans envoyer d’accusé de réception, le flux est unidirectionnel.

C’est un protocole sécurisé, QUIC intègre nativement un système de chiffrement et de sécurisation, QUICK crypto étant équivalent à du TLS 1.3.

Qui l’utilise ? Google a commencé à le tester dès 2015, ainsi que Facebook en 2017.

Google, Mozilla et Cloudflare ont annoncé récemment qu’ils supportaient le standard HTTP/3.


Couches HTTP/2 versus HTTP/3

Les différences en image :

HTTP3 vs HTTP2 stackLa couche HTTPS reste identique.

HTTP/2 est conçu pour TCP et gère les flux dans la couche HTTP.
HTTP/3 est conçu pour QUIC, qui est un protocole de transport qui gère lui-même les flux.


Diagramme des échanges HTTPS via TCP/TLS ou QUIC :

Diagramme des flux HTTP/2 versus HTTP/3

La connexion avec QUIC établit une conversation unique entre l’expéditeur et le destinataire. Lors du premier contact il est établi une connexion sécurisée qui persistera durant toutes les communications ultérieures, ce qui permet de transmettre plusieurs flux en parallèle et de réduire la latence.

Comment migrer vers HTTP/3 ?

La migration vers HTTP/3 ne devrait pas générer de régression.
Certains CDN (par exemple Cloudflare) le proposent déjà. HTTP/3 se déploie en un simple clic. Configurer l’option manuellement nécessitera l’intervention d’un administrateur système et une campagne de tests dans tous les cas.

Synthèse  HTTP/3 vs HTTP/2 : 

≠ Différences= Similarités
HTTP/3 utilise UDP / HTTP/2 utilise TCPLes deux protocoles utilisent la compression d’en-tête
HTTP/3 évite un Handshake au niveau TLS et supprime ainsi les requêtes de sécurité superfluesLes deux protocoles prennent en charge le Server Push
HTTP/3 supporte uniquement les connexions chiffrées en raison du chiffrement intégré TLS 1.3Les deux protocoles utilisent le multiplexage requête-réponse
HTTP/3 remplace la compression HPACK HTTP/2 par QPACKLes deux protocoles prennent en considération la priorisation des flux

Google estime qu’il y a un gain moyen de 8% lorsqu’on utilise QUIC vs TCP (voir l’étude), et jusqu’à 17% de gain pour 99 percentile des actions.
Mais dans les faits on constate qu’il y a des différences très significatives entre le transfert de petits et de gros fichiers (HTTP/3 serait moins efficace que HTTP/2 pour le transfert de gros fichiers).

Grâce à la solution appYuser INSIGHT nous pourrons bientôt fournir un benchmark performance des 2 protocoles HTTP/2 et HTTP/3, avec des données réelles utilisateurs.