QUIC est un protocole de transport sécurisé et polyvalent, défini par l'IETF dans le RFC 9000, qui fonctionne sur UDP et intègre la poignée de main TLS dans la connexion. HTTP/3 utilise QUIC comme son transport. Cela est important pour les proxys : la méthode HTTP CONNECT tunnelise TCP, donc le trafic QUIC nécessite un chemin proxy capable de relayer UDP.
QUIC utilise TLS 1.3 pour protéger ses connexions. Un serveur peut indiquer aux clients que HTTP/3 est disponible en envoyant un en-tête Alt-Svc qui nomme le protocole "h3".
Caractéristiques clés de QUIC
- Flux : Les données circulent sur des flux indépendants. Avec HTTP/2 sur TCP, un paquet perdu bloque chaque requête active, tandis qu'HTTP/3 sur QUIC empêche une perte sur un flux de bloquer les autres.
- Chiffrement intégré : La poignée de main TLS fait partie de QUIC plutôt qu'une couche séparée au-dessus.
- Migration de connexion : Les identifiants de connexion permettent à une connexion de passer à un nouveau chemin réseau, par exemple lorsqu'un appareil change de réseau.
- 0-RTT : Un client qui s'est déjà connecté peut envoyer des données immédiatement sur une nouvelle connexion.
QUIC et Proxys
- UDP sur SOCKS5 : SOCKS5 prend en charge UDP via sa commande UDP ASSOCIATE.
- UDP sur HTTP : Le RFC 9298 définit CONNECT-UDP, qui proxy UDP dans HTTP de la même manière que CONNECT proxy TCP. L'UDP tunnelisé transporte souvent QUIC.
- Transport recommandé : Le RFC 9298 indique que le proxy UDP doit fonctionner sur HTTP/3, pour éviter la récupération de perte en double lorsque la connexion extérieure utilise TCP.
Origine et standardisation
- 2012 : Google a commencé à travailler sur QUIC comme alternative à TCP+TLS+HTTP/2, visant des chargements de pages plus rapides.
- 2013-2014 : Chrome a réalisé de petites expériences avec des versions précoces, maintenant appelées Google QUIC, puis les a déployées largement.
- 2015 : Google a amené QUIC à l'IETF. À partir de 2017, les versions de l'IETF ont divergé de Google QUIC.
- 2021 : L'IETF a publié QUIC en tant que RFC 9000. Chrome l'a activé par défaut pour tous les utilisateurs dans Chrome 93.
Limitations
- UDP bloqué : Certains réseaux bloquent tout le trafic UDP. Des études citées par l'IETF estiment cela à environ 3 % à 5 % des réseaux.
- Repli : Sur ces réseaux, les applications doivent accepter l'échec ou revenir à un autre transport. Pour HTTP, le repli est TLS sur TCP.
- Moins visible pour les réseaux : QUIC chiffre toutes les données de charge utile et la plupart des informations de contrôle. Seule une partie de l'en-tête est exposée au réseau.