Aller au contenu principal

1. Introduction

1.1. Motivation

L'établissement d'une connexion TCP traditionnelle nécessite une triple poignée de main (three-way handshake), ce qui introduit un délai d'au moins un temps d'aller-retour complet (Round-Trip Time, RTT) avant que la transmission de données puisse commencer. Pour de nombreuses applications modernes, notamment les services Web et les applications mobiles, ce délai constitue un goulot d'étranglement significatif en termes de performances.

Problème de latence dans les scénarios typiques

Dans le TCP traditionnel, le client DOIT :

  1. Envoyer un paquet SYN
  2. Attendre la réponse SYN-ACK du serveur
  3. Envoyer un ACK de confirmation
  4. Puis seulement envoyer les données applicatives

Cela signifie que la transmission des données applicatives nécessite au moins 1,5 RTT (en supposant que le serveur réponde immédiatement après réception de l'ACK).

Défi des connexions HTTP courtes

Pour le modèle requête-réponse HTTP :

  • Chaque nouvelle connexion nécessite une triple poignée de main complète
  • Dans les connexions courtes (par exemple, un seul appel API), le délai de poignée de main représente une grande proportion du temps total
  • Ce problème est encore plus grave sur les réseaux à haute latence (comme les réseaux mobiles)

Exemple de calcul de latence :

  • Réseau à 50 ms RTT : délai de poignée de main = 50 ms
  • Réseau à 200 ms RTT (transocéanique) : délai de poignée de main = 200 ms

Pour les appels API retournant de petites quantités de données, le délai de poignée de main peut dépasser le temps de transmission réel des données.

1.2. Concepts clés

TCP Fast Open (TFO) résout ce problème en permettant l'échange de données pendant la poignée de main TCP.

Le cookie TFO est un jeton (token) cryptographique utilisé pour authentifier l'identité du client :

  1. Phase de demande de cookie :

    • Le client demande un cookie TFO lors de la connexion initiale
    • Le serveur génère et retourne le cookie (chiffré à partir de l'adresse IP du client)
    • Le client met en cache le cookie pour une utilisation ultérieure
  2. Phase Fast Open :

    • Le client transporte le cookie et les données applicatives dans le paquet SYN
    • Le serveur vérifie la validité du cookie
    • Si la vérification réussit, le serveur accepte les données SYN et peut répondre immédiatement

Amélioration des performances

Avec TFO, la chronologie de transmission des données :

  1. Première connexion : le client envoie SYN (demande de cookie)
  2. Connexions suivantes : le client envoie SYN + cookie + données → le serveur traite immédiatement

Réduction de la latence : économie d'un RTT complet

Conception de la sécurité

Le mécanisme de cookie TFO offre les protections de sécurité suivantes :

  • Anti-amplification (Anti-Amplification) : limite la taille des paquets SYN
  • Anti-épuisement des ressources (Anti-Resource Exhaustion) : la vérification du cookie garantit l'identité du client
  • Compatibilité ascendante (Backward Compatibility) : les serveurs ne supportant pas TFO ignorent cette option

Définitions des termes

Conformément aux dispositions du RFC 2119, les mots-clés de ce document ont les significations suivantes :

  • MUST (DOIT) : exigence absolue
  • SHOULD (DEVRAIT) : fortement recommandé mais peut être ignoré dans des circonstances particulières
  • MAY (PEUT) : fonctionnalité entièrement optionnelle

Cas d'utilisation

TFO est particulièrement adapté aux scénarios suivants :

  • Navigation Web : requêtes HTTP/HTTPS
  • Appels API : API RESTful, RPC
  • Applications mobiles : requêtes de connexions courtes fréquentes
  • Appareils IoT : rapports de données périodiques

Limitations et considérations

Lors de l'utilisation de TFO, il convient de noter :

  • Les données SYN peuvent être retransmises (exigence d'idempotence)
  • Certains équipements réseau peuvent interférer avec les options TCP
  • Les cookies ont une durée d'expiration et doivent être mis à jour périodiquement

Section suivante : 2. Vue d'ensemble du protocole (Protocol Overview) présentera en détail le flux de travail de TFO et les modes d'échange de messages.