Le comitĂ© IETF (Internet Engineering Task Force), chargĂ© de l'Ă©laboration des protocoles et de l'architecture d'Internet, a finalisĂ© la crĂ©ation de la RFC pour le protocole HTTP/3.0 et a publiĂ© les spĂ©cifications associĂ©es sous les identifiants RFC 9114 (protocole) et RFC 9204 (technologie de compression des en-tĂȘtes QPACK pour HTTP/3). La spĂ©cification HTTP/3.0 a obtenu le statut de « Norme proposĂ©e », aprĂšs quoi le travail pour accorder Ă la RFC le statut de norme de brouillon (Draft Standard) dĂ©butera, ce qui signifie en fait la stabilisation complĂšte du protocole et la prise en compte de toutes les remarques formulĂ©es. Des versions mises Ă jour des spĂ©cifications pour les protocoles HTTP/1.1 (RFC 9112) et HTTP/2.0 (RFC 9113) ont Ă©galement Ă©tĂ© publiĂ©es, ainsi que des documents dĂ©finissant la sĂ©mantique des requĂȘtes HTTP (RFC 9110) et les en-tĂȘtes de contrĂŽle de cache HTTP (RFC 9111).
Le protocole HTTP/3 définit l'utilisation du protocole QUIC (Quick UDP Internet Connections) comme transport pour HTTP/2. QUIC représente une surcouche au protocole UDP, prenant en charge le multiplexage de plusieurs connexions et fournissant des méthodes de chiffrement équivalentes à TLS/SSL. Le protocole a été créé en 2013 par Google comme alternative à la combinaison TCP+TLS pour le web, résolvant les problÚmes de temps d'établissement et de négociation des connexions dans TCP et éliminant les retards causés par la perte de paquets lors de la transmission de données.

à l'heure actuelle, le support de QUIC et HTTP/3.0 est déjà implémenté dans tous les navigateurs web populaires (dans Chrome, Firefox et Edge, le support de HTTP/3 est activé par défaut, tandis que dans Safari, il nécessite l'activation de l'option « Avancé > Fonctionnalités expérimentales > HTTP/3 »). Du cÎté serveur, des implémentations de HTTP/3 sont disponibles pour nginx (dans une branche séparée et sous forme de module distinct), Caddy, IIS et LiteSpeed. Le support de HTTP/3 est également assuré par le réseau de distribution de contenu Cloudflare.
Fonctionnalités principales de QUIC :
- Haute sécurité, similaire à TLS (en substance, QUIC permet d'utiliser TLS sur UDP) ;
- ContrĂŽle de l'intĂ©gritĂ© du flux, empĂȘchant la perte de paquets ;
- CapacitĂ© Ă Ă©tablir instantanĂ©ment une connexion (0-RTT, dans environ 75% des cas, les donnĂ©es peuvent ĂȘtre transmises immĂ©diatement aprĂšs l'envoi du paquet d'Ă©tablissement de connexion) et Ă garantir des dĂ©lais minimaux entre l'envoi de la requĂȘte et la rĂ©ception de la rĂ©ponse (RTT, Round Trip Time);

- L'utilisation d'un numéro de séquence différent lors de la retransmission d'un paquet, ce qui permet d'éviter les ambiguïtés lors de l'identification des paquets reçus et d'éliminer les délais d'attente ;
- La perte d'un paquet n'affecte que la livraison du flux qui lui est associé et ne bloque pas la livraison des données dans les flux simultanément transmis via la connexion actuelle ;
- Les mécanismes de correction d'erreurs réduisent les délais dus à la retransmission des paquets perdus. L'utilisation de codes spécifiques de correction d'erreurs au niveau du paquet permet de réduire les situations nécessitant la retransmission des données d'un paquet perdu.
- Les limites des blocs cryptographiques sont alignées sur les limites des paquets QUIC, ce qui réduit l'impact des pertes de paquets sur le décodage du contenu des paquets suivants ;
- Absence de problĂšmes de blocage de la queue TCP.
- Support de l'identifiant de connexion, permettant de réduire le temps d'établissement d'une reconnexion pour les clients mobiles.
- Capacité à se connecter à des mécanismes avancés de contrÎle de congestion.
- Utilisation de techniques de prĂ©vision de bande passante dans chaque direction pour garantir une intensitĂ© d'envoi optimale des paquets, empĂȘchant un glissement vers un Ă©tat de congestion, oĂč des pertes de paquets sont observĂ©es.
- Un gain significatif de performance et de bande passante par rapport à TCP. Pour les services vidéo tels que YouTube, l'utilisation de QUIC a montré une réduction de 30 % des opérations de rebuffering lors de la visionnage de vidéos.
Parmi les changements dans la spĂ©cification HTTP/1.1, on peut noter l'interdiction de l'utilisation isolĂ©e du symbole de retour chariot (CR) en dehors du corps du contenu, c'est-Ă -dire que dans les Ă©lĂ©ments du protocole, le symbole CR ne peut ĂȘtre utilisĂ© qu'en combinaison avec le symbole de saut de ligne (CRLF). L'algorithme de composition des requĂȘtes chunkĂ©es a Ă©tĂ© amĂ©liorĂ© pour simplifier la sĂ©paration des champs joints et de la section des en-tĂȘtes. Des recommandations ont Ă©tĂ© ajoutĂ©es pour le traitement de contenus ambiguĂ«s afin de bloquer les attaques de type « HTTP Request Smuggling », permettant de s'immiscer dans le contenu des requĂȘtes d'autres utilisateurs dans le flux entre le frontend et le backend.
La mise Ă jour de la spĂ©cification HTTP/2.0 dĂ©finit clairement le support de TLS 1.3. Le schĂ©ma de dĂ©finition des prioritĂ©s et les champs associĂ©s dans les en-tĂȘtes ont Ă©tĂ© relĂ©guĂ©s dans la catĂ©gorie obsolĂšte. Le mĂ©canisme de mise Ă jour des connexions de HTTP/1.1, qui n'a pas Ă©tĂ© largement adoptĂ©, a Ă©tĂ© dĂ©clarĂ© obsolĂšte. Les exigences relatives Ă la vĂ©rification des noms de champs et des valeurs ont Ă©tĂ© rĂ©duites. Certains types de trames et paramĂštres auparavant rĂ©servĂ©s sont proposĂ©s pour une utilisation. Les champs d'en-tĂȘte interdits liĂ©s Ă la connexion ont Ă©tĂ© dĂ©finis plus prĂ©cisĂ©ment.
Source : opennet.ru

