Leçon 3 sur 4 · 7 min
La négociation TCP et la vie d’une connexion
Comment deux ordinateurs se mettent d’accord pour se parler avant que l’un envoie de vraies données, comment ils terminent la conversation, et ce que voit réellement un pare-feu qui observe au milieu.
Avant que votre Mac n’envoie le moindre octet d’une requête de page web, il a déjà échangé trois courts messages avec le serveur. Cet échange, la négociation en trois temps de TCP (three-way handshake), est ce qui transforme les promesses de fiabilité de TCP vues dans la leçon précédente en une connexion réelle et traçable entre deux machines.
Trois messages avant le premier mot
La RFC 9293, la spécification actuelle de TCP, décrit le processus comme un échange synchronisé : « la synchronisation exige que chaque côté envoie son propre numéro de séquence initial et reçoive un accusé de réception de celui-ci de la part du pair TCP distant ».
- SYN. L’appareil qui ouvre la connexion envoie un segment avec le drapeau SYN activé, portant un numéro de séquence de départ.
- SYN-ACK. L’autre côté répond avec son propre SYN, plus un accusé de réception du premier numéro.
- ACK. Le premier appareil accuse réception de cette réponse. La RFC 9293 note que « comme les étapes 2 et 3 peuvent être combinées en un seul message, on appelle cela la négociation en trois temps (ou en trois messages) ». Une fois qu’elle est terminée, les deux côtés considèrent la connexion comme ÉTABLIE et commencent à envoyer de vraies données.
Le centre d’apprentissage de Cloudflare donne une version en langage simple de la même idée, en prenant un e-mail comme exemple : « d’abord, la source envoie un paquet SYN de « requête initiale » au serveur cible pour démarrer le dialogue. Ensuite, le serveur cible envoie un paquet SYN-ACK pour accepter le processus. Enfin, la source envoie un paquet ACK à la cible pour confirmer le processus, après quoi le contenu du message peut être envoyé. »
Terminer une connexion proprement
Fermer une connexion est plus délibéré que l’ouvrir. La RFC 9293 explique que « la séquence de fermeture normale de TCP livre les données mises en mémoire tampon de façon fiable dans les deux sens » avant que la connexion ne se termine : chaque côté envoie un segment FIN une fois qu’il n’a plus de données à envoyer, l’autre côté en accuse réception, et ce n’est qu’une fois les deux sens terminés que la connexion se ferme complètement. Une courte période d’attente (TIME-WAIT) suit, afin qu’un paquet égaré et retardé de l’ancienne connexion ne puisse pas être confondu avec une partie d’une nouvelle.
Ce que voit un pare-feu placé au milieu
Un pare-feu à état (stateful), le type intégré dans la plupart des routeurs et dans macOS lui-même, n’a pas besoin d’inspecter chaque paquet pour prendre une décision. L’explication de Cloudflare sur les pare-feux le décrit ainsi : il « enregistre des informations concernant les connexions ouvertes et utilise ces informations pour analyser le trafic entrant et sortant, plutôt que d’inspecter chaque paquet ». En pratique, cela signifie qu’il surveille le SYN qui ouvre une connexion, se souvient que cette appli a demandé une réponse, puis laisse discrètement passer le SYN-ACK correspondant ; une réponse qui ne correspond à aucun SYN sortant est rejetée. C’est aussi ainsi qu’un pare-feu peut distinguer une réponse normale d’une tentative de connexion non sollicitée arrivant de nulle part, ce qui est la base du blocage du trafic entrant indésirable.
Rien de cet échange n’est chiffré par TCP lui-même ; SYN, SYN-ACK et ACK sont visibles en clair par tout ce qui observe le chemin réseau, y compris votre routeur Wi-Fi. Ce qui est caché ou non dépend de la couche au-dessus de TCP, comme TLS pour un site HTTPS, que le cours sur le fonctionnement d’Internet traite séparément.
À retenir
- Les connexions TCP s’ouvrent avec une négociation en trois temps : SYN, puis SYN-ACK, puis ACK, selon la RFC 9293.
- Ce n’est qu’une fois la négociation terminée que les deux côtés commencent à échanger de vraies données.
- Fermer une connexion est un échange bidirectionnel de segments FIN afin que les données en mémoire tampon soient livrées avant la fin de la connexion.
- Un pare-feu à état suit quels SYN sont sortis afin de reconnaître et d’autoriser les réponses correspondantes, et de rejeter celles non sollicitées.
- La négociation elle-même n’est pas chiffrée ; elle est visible par tout ce qui se trouve sur le chemin réseau.
Vérifiez vos connaissances
1. Quel est l’ordre correct de la négociation en trois temps de TCP ?
- ACK, SYN, SYN-ACK
- SYN, SYN-ACK, ACK — Exact.
- SYN-ACK, SYN, ACK
- FIN, SYN, ACK
La RFC 9293 décrit le côté qui se connecte envoyant d’abord SYN, l’autre côté répondant par SYN-ACK, et le côté qui se connecte confirmant par ACK.
2. Quand les vraies données applicatives commencent-elles à circuler sur une connexion TCP ?
- Avant que le SYN ne soit envoyé
- Seulement une fois la négociation en trois temps terminée — Exact.
- Pendant l’étape SYN-ACK
- Les données circulent en continu sans négociation
La négociation existe pour synchroniser les numéros de séquence avant que l’un ou l’autre côté ne fasse assez confiance à la connexion pour envoyer de vraies données.
3. Comment un pare-feu à état décide-t-il d’autoriser un paquet de réponse entrant ?
- Il autorise tous les paquets entrants par défaut
- Il vérifie si le paquet correspond à une connexion que cet appareil a ouverte, dont il se souvient grâce au SYN sortant précédent — Exact.
- Il inspecte le contenu du paquet à la recherche de mots-clés
- Il ne regarde que le port de destination, jamais l’état de la connexion
Cloudflare décrit un pare-feu à état comme un pare-feu qui « enregistre des informations concernant les connexions ouvertes » pour reconnaître les réponses légitimes plutôt que d’inspecter chaque paquet à partir de zéro.
4. La négociation TCP elle-même est-elle chiffrée ?
- Oui, toujours
- Non, elle est en clair et visible par tout ce qui se trouve sur le chemin réseau — Exact.
- Seul le SYN est chiffré
- Seulement sur les connexions HTTPS
TCP fournit l’ordonnancement et la fiabilité, pas la confidentialité. Le chiffrement, quand il est présent, vient d’une couche au-dessus de TCP comme TLS.
À vous de jouer avec FireAI
Mettez cette leçon en pratique sur votre propre Mac.
- Découvrez où une appli envoie des données, sur la Carte du monde — Voyez exactement avec quelle entreprise et quel pays une appli communique discrètement.
- Règles : appli, site, domaine, IP ou une plage, pour toujours ou jusqu’au redémarrage — Écrivez une règle aussi précise qu’une seule adresse ou aussi large qu’un domaine entier.
- Inspection approfondie, sans rien déchiffrer — Obtenez un vrai niveau de détail sur une connexion sécurisée sans que FireAI ne lise jamais ce qu’elle contient.
Sources
- RFC 9293: Transmission Control Protocol (TCP)
- Cloudflare Learning: What is TCP/IP?
- Cloudflare Learning: What is a Firewall?
Mettez-le en pratique sur votre Mac
Essayez toutes les fonctionnalités gratuitement pendant 17 jours, sans carte bancaire.