Aller au contenu principal

1. Introduction

La sémantique HTTP (HTTP Semantics) ([HTTP]) est utilisée pour une large gamme de services sur Internet. Cette sémantique a été le plus couramment utilisée avec HTTP/1.1 et HTTP/2. HTTP/1.1 a été utilisé sur une variété de couches de transport et de session, tandis que HTTP/2 a été principalement utilisé avec TLS sur TCP. HTTP/3 prend en charge la même sémantique sur un nouveau protocole de transport : QUIC.

1.1. Prior Versions of HTTP (Versions antérieures de HTTP)

HTTP/1.1 ([HTTP/1.1]) utilise des champs de texte délimités par des espaces pour transmettre les messages HTTP. Bien que ces échanges soient lisibles par l'homme, l'utilisation d'espaces pour le formatage des messages entraîne une complexité d'analyse et une tolérance excessive des comportements variants.

Parce que HTTP/1.1 n'inclut pas de couche de multiplexage (Multiplexing Layer), plusieurs connexions TCP sont souvent utilisées pour traiter les requêtes en parallèle. Cependant, cela a un impact négatif sur le contrôle de congestion (Congestion Control) et l'efficacité du réseau, car TCP ne partage pas le contrôle de congestion entre plusieurs connexions.

HTTP/2 ([HTTP/2]) a introduit une couche de tramage binaire (Binary Framing) et de multiplexage pour améliorer la latence sans modifier la couche de transport. Cependant, comme la nature parallèle du multiplexage de HTTP/2 n'est pas visible pour les mécanismes de récupération de perte de TCP (Loss Recovery Mechanisms), un paquet perdu ou réordonné provoque un blocage (Stall) de toutes les transactions actives, que cette transaction ait été directement impactée par le paquet perdu ou non.

1.2. Delegation to QUIC (Délégation à QUIC)

Le protocole de transport QUIC (QUIC Transport Protocol) intègre le multiplexage de flux (Stream Multiplexing) et le contrôle de flux par flux (Per-Stream Flow Control), similaire à celui fourni par la couche de tramage HTTP/2. En fournissant une fiabilité (Reliability) au niveau du flux et un contrôle de congestion sur l'ensemble de la connexion, QUIC a la capacité d'améliorer les performances de HTTP par rapport à un mappage TCP. QUIC intègre également TLS 1.3 ([TLS]) au niveau de la couche de transport, offrant une confidentialité (Confidentiality) et une intégrité (Integrity) comparables à l'exécution de TLS sur TCP, avec la latence d'établissement de connexion améliorée de TCP Fast Open ([TFO]).

Ce document définit HTTP/3 : un mappage de la sémantique HTTP sur le protocole de transport QUIC, s'appuyant fortement sur la conception de HTTP/2. HTTP/3 s'appuie sur QUIC pour fournir la confidentialité et la protection de l'intégrité des données, l'authentification des pairs (Peer Authentication) et une livraison fiable, ordonnée et par flux. Tout en déléguant les problèmes de durée de vie des flux (Stream Lifetime) et de contrôle de flux à QUIC, un tramage binaire similaire au tramage HTTP/2 est utilisé sur chaque flux. Certaines fonctionnalités HTTP/2 sont subsumées par QUIC, tandis que d'autres fonctionnalités sont implémentées au-dessus de QUIC.

QUIC est décrit dans [QUIC-TRANSPORT]. Pour une description complète de HTTP/2, voir [HTTP/2].