Qu'est-ce que QUIC ?

Protocole de la couche transport qui fonctionne sur UDP. Il intègre le chiffrement de TLS 1.3 : l'établissement de la connexion et l'échange de clés se font ensemble en un seul aller-retour. Il multiplexe plusieurs flux dans une même connexion, et la perte d'un paquet sur un flux ne bloque pas les autres. Il sert de base à HTTP/3 et a été normalisé par l'IETF en 2021 sous le nom de RFC 9000.

Nom japonais: QUIC

« QUIC » apparaît dans 3 questions d'entraînement réparties sur 2 thèmes, dont Bases des réseaux informatiques, Bases des technologies web.

Domaine: Bases des réseaux informatiques

Pourquoi bâtir sur UDP

Un nouveau protocole de transport posé directement sur IP serait bloqué par de nombreux NAT et pare-feux du parcours, qui ne laissent pas passer les paquets des protocoles qu'ils ne reconnaissent pas. TCP est en outre implémenté dans le noyau des systèmes d'exploitation, si bien que les améliorations mettent longtemps à atteindre tous les appareils. QUIC fonctionne sur UDP, qui passe presque partout, et s'exécute dans les applications et les bibliothèques, ce qui permet de l'améliorer au rythme des mises à jour des navigateurs. Il chiffre aussi la plus grande partie de son en-tête, ce qui empêche les équipements du parcours de dépendre de ses détails et de bloquer de futures évolutions.

Établissement rapide et multiplexage des flux

Avec TCP et TLS, la négociation TLS suit le three-way handshake de TCP ; QUIC fusionne les deux, si bien que les données peuvent circuler après un seul aller-retour. Vers un serveur auquel il s'est déjà connecté, il peut envoyer des données dès le tout premier paquet (0-RTT), mais seulement pour des requêtes sans danger si elles sont répétées. HTTP/2 transporte plusieurs flux sur une seule connexion TCP, si bien qu'un seul paquet perdu bloque tous les flux ; QUIC ordonne les données flux par flux, si bien qu'une perte n'affecte que le flux auquel elle appartient.

Identifiants de connexion et récupération des pertes

Une connexion TCP est identifiée par des adresses IP et des numéros de port : elle est donc coupée quand un smartphone passe du Wi-Fi au réseau mobile. QUIC identifie les connexions par des identifiants de connexion, si bien qu'une connexion peut survivre à un changement d'adresse (migration de connexion). La détection des pertes, la retransmission et le contrôle de congestion se font tous au sein de QUIC, et comme les numéros de paquet ne sont jamais réutilisés, une retransmission se distingue de l'original et le RTT peut être mesuré avec précision. En revanche, il consomme généralement plus de CPU que TCP, qui bénéficie d'une large prise en charge par le noyau et par la carte réseau.

S'entraîner : questions sur QUIC

Quelle description d'UDP est correcte ?

  1. AIl n'établit pas de connexion et ne gère ni les retransmissions ni l'ordre des données ; son en-tête est donc petit et il n'y a aucune attente avant l'envoi
  2. BIl établit une connexion, retransmet les données qui ne sont pas arrivées et remet les données dans l'ordre côté récepteur
  3. CIl remet les données au terminal destinataire uniquement à l'aide des adresses MAC, sans adresses IP
Afficher la réponse et l'explication

Réponse : A. Il n'établit pas de connexion et ne gère ni les retransmissions ni l'ordre des données ; son en-tête est donc petit et il n'y a aucune attente avant l'envoi

UDP est un protocole léger qui ajoute seulement des numéros de port et une détection d'erreurs simple (somme de contrôle) au-dessus d'IP ; son en-tête fait 8 octets (celui de TCP, 20 octets sans options). Sans procédure de connexion, sans confirmation de réception ni retransmission, il sert aux appels vocaux et à la vidéo en direct, où une petite perte vaut mieux qu'un retard, ainsi qu'à DNS, qui se contente d'une seule requête et d'une seule réponse. Si la fiabilité est nécessaire, c'est l'application qui la fournit : QUIC, utilisé par HTTP/3, implémente par exemple les retransmissions et le chiffrement au-dessus d'UDP. L'établissement de connexion, les retransmissions et le contrôle de l'ordre relèvent de TCP.

Un client établit une nouvelle connexion HTTPS (TLS 1.3 sur TCP) vers un serveur web dont le temps aller-retour (RTT) est de 100 ms. Quelle durée est la plus proche du temps nécessaire jusqu'au début de la réception de la réponse à la première requête ? La résolution DNS est déjà faite, et l'on néglige le temps de traitement du serveur et le temps de transfert des données.

  1. AEnviron 100 ms
  2. BEnviron 300 ms
  3. CEnviron 200 ms
Afficher la réponse et l'explication

Réponse : B. Environ 300 ms

D'abord, le three-way handshake de TCP prend un aller-retour (le client peut envoyer son premier message TLS avec l'ACK final). Ensuite, la poignée de main TLS 1.3 prend un aller-retour, puis la requête et la réponse HTTP un de plus, soit 3 allers-retours au total : 3 × 100 = 300 ms. Avec TLS 1.2, l'échange de clés prend 2 allers-retours, ce qui donne 4 allers-retours, soit 400 ms. Ce temps d'attente dépend du nombre de RTT, fixé par la distance ; augmenter la bande passante de la liaison ne le raccourcit donc pas. QUIC, utilisé par HTTP/3, regroupe les poignées de main de transport et cryptographique en un seul aller-retour, et offre aussi, lors d'une reconnexion, un moyen d'envoyer des données dès le premier aller (0-RTT).

Questions fréquentes

Quelle est la différence entre QUIC et TCP ?

Tous deux assurent une livraison fiable et ordonnée, mais QUIC fonctionne sur UDP et intègre le chiffrement TLS 1.3. Il établit les connexions plus vite (un aller-retour, ou zéro lors d'une reprise), transporte plusieurs flux indépendants dans une même connexion et maintient une connexion lorsque l'adresse IP change.

Quel est le lien entre HTTP/3 et QUIC ?

HTTP/3 est la version de HTTP qui fonctionne sur QUIC. Le multiplexage des flux et le chiffrement que HTTP/2 tenait de TCP et de TLS sont désormais fournis par QUIC, ce qui explique que le trafic HTTP/3 utilise normalement le port UDP 443.

« QUIC » dans les explications

Questions mentionnant « QUIC » (3)

  1. Quelle description d'UDP est correcte ?
  2. Un client établit une nouvelle connexion HTTPS (TLS 1.3 sur TCP) vers un serveur web dont le temps aller-retour (RTT) est de 100 ms. Quelle durée est la plus proche du temps nécessaire jusqu'au début de la réception de la réponse à la première requête ? La résolution DNS est déjà faite, et l'on néglige le temps de traitement du serveur et le temps de transfert des données.
  3. Quelle description de HTTP/2 et HTTP/3 est correcte ?

Termes associés

TCP (Transmission Control Protocol) HTTP (Hypertext Transfer Protocol) UDP (User Datagram Protocol) DNS (Domain Name System) Numéro de port IP (protocole Internet) ARQ (demande de répétition automatique) HTTPS TLS (Transport Layer Security) RTT (temps d'aller-retour)

Retour au glossaire