Résumé

  • L’ouverture simultanée survient lorsque deux extrémités envoient un SYN et reçoivent chacune un SYN nu alors qu’elles sont déjà en SYN-SENT.
  • Les deux machines passent par SYN-RECEIVED, accusent réception de l’espace de séquence adverse, puis atteignent ESTABLISHED pour une seule connexion.
  • RFC 9293 exige la prise en charge de ce chemin et la mémorisation de l’origine active ou passive de SYN-RECEIVED.

Le handshake avant les rôles

On présente souvent TCP comme une conversation entre un client et un serveur. Pourtant, RFC 793 décrit d’abord une synchronisation de connexion. Un initiateur et un répondant sont habituels, mais deux TCP peuvent aussi commencer simultanément. Les rôles d’application ne sont donc pas une condition du transport.

Quand les SYN se croisent

Les deux extrémités effectuent un active OPEN, choisissent chacune un numéro de séquence initial et envoient un SYN. Les segments se croisent tandis que les deux états sont SYN-SENT. Chaque hôte reçoit alors un SYN sans accusé de réception, conserve le numéro de séquence de son pair, passe en SYN-RECEIVED et envoie SYN+ACK. Lorsque l’accusé de réception de son propre SYN arrive, chacun passe en ESTABLISHED. Le résultat est une connexion, non deux.

Un SYN occupe une position dans l’espace de séquence ; l’accusé avance donc d’une unité.

Une symétrie qui garde la mémoire

RFC 9293 impose la prise en charge de l’ouverture simultanée et demande de retenir si SYN-RECEIVED provenait d’un active ou d’un passive OPEN. Cette provenance modifie le traitement ultérieur des erreurs et des resets. La symétrie concerne la machine d’états, pas l’effacement de l’historique local.

Le SYN ancien qui trompe

Un ancien SYN peut ressembler à une tentative simultanée. Validation des séquences et traitement des resets restent donc nécessaires ; tout SYN reçu en SYN-SENT n’est pas automatiquement légitime.

Ce que la norme ne promet pas

La spécification décrit la transition lorsque les paquets atteignent les deux TCP. Elle ne garantit ni routage, ni règles de pare-feu, ni correspondance NAT, ni prise en charge par les API ou les applications actuelles.

Sources