Le Laboratoire Virtuel & Terminal Pratique est en ligne :

Ouvrir le Labo
Volume 4 : Réseaux Informatiques, Modèles OSI, TCP/IP & Routage/Module 2 : Le Protocole TCP, Handshake & Routage IP

Le Handshake à 3 Voies TCP (SYN, SYN-ACK, ACK) & Drapeaux

Labo Virtuel >_

Le Handshake TCP à 3 Voies, Drapeaux & États Réseau



Le protocole TCP (Transmission Control Protocol - RFC 793) est un protocole orienté connexion, fiable et ordonné. Contrairement à UDP qui transmet sans garantie de livraison, TCP établit formellement une session bilatérale avant d'échanger le moindre octet de données.

---

1. La Poignée de Main à 3 Voies (TCP Three-Way Handshake)



Pour ouvrir une connexion TCP entre un Client et un Serveur, trois segments doivent être échangés :

`` CLIENT (Port éphémère 51234) SERVEUR (Port 80 HTTP) | | | -------- 1. [SYN] Seq = ISN_C -----------------------> | (Serveur écoute : LISTEN) | | État serveur : SYN_RECEIVED | <------- 2. [SYN, ACK] Seq = ISN_S, Ack = ISN_C + 1 -- | | État client : ESTABLISHED | | | | -------- 3. [ACK] Seq = ISN_C + 1, Ack = ISN_S + 1 --> | | | État serveur : ESTABLISHED | | | <==== CONNEXION ÉTABLIE : ÉCHANGE DE DONNÉES PSH/ACK =>| `

1. Étape 1 : Le SYN (Synchronize) : Le client choisit un numéro de séquence initial aléatoire (ISN - Initial Sequence Number) et l'envoie avec le drapeau
SYN=1. 2. Étape 2 : Le SYN-ACK : Le serveur reçoit la demande, alloue une structure mémoire (socket TCB), choisit son propre ISN et confirme la réception en incrémentant le numéro de séquence du client (Ack = ISN_C + 1). 3. Étape 3 : Le ACK (Acknowledge) : Le client confirme la réception de l'ISN du serveur. La session passe à l'état ESTABLISHED.

---

2. Les Drapeaux TCP (TCP Control Bits)



Dans l'en-tête TCP de 20 octets, 6 drapeaux binaires (Flags) contrôlent la machine à états de la session :

| Drapeau | Nom Complet | Rôle Opérationnel | Utilisation Pentest / Sécurité | | :--- | :--- | :--- | :--- | | SYN | Synchronize | Initialise une connexion et négocie les ISN. | Utilisé pour les scans de ports (SYN Stealth scan
nmap -sS). | | ACK | Acknowledgment | Confirme la bonne réception d'octets de données. | Tout segment suivant le premier SYN a ACK=1. | | FIN | Finish | Demande la fermeture propre et ordonnée de la session. | Utilisé dans le scan FIN (nmap -sF). | | RST | Reset | Interrompt brutalement la connexion (rejet ou erreur). | Envoyé par un port fermé lorsqu'il reçoit un SYN. | | PSH | Push | Demande à la pile TCP de délivrer immédiatement les données au buffer de l'application sans attendre que le paquet soit plein. | Utilisé pour les shells interactifs et frappes clavier. | | URG | Urgent | Indique que des données prioritaires sont présentes (champ Urgent Pointer). | Scan XMAS (nmap -sX). |

---

3. Vecteur d'Attaque : L'Attaque SYN Flood (Déni de Service)



Un attaquant envoie une rafale massive de paquets
SYN avec des adresses IP sources falsifiées (IP Spoofing) sans jamais envoyer le troisième segment ACK. * Le serveur alloue des ressources en mémoire et reste bloqué à l'état SYN_RECEIVED en attendant le ACK jusqu'au timeout. * Lorsque la table des connexions en attente (SYN Backlog) est saturée, le serveur refuse toute nouvelle connexion légitime.

Contre-Mesure Défensive : Les SYN Cookies

Le noyau Linux implémente les SYN Cookies (
sysctl -w net.ipv4.tcp_syncookies=1) : au lieu de stocker la connexion dans le backlog, le serveur encode les informations de la session dans le numéro de séquence initial lui-même à l'aide d'un hash cryptographique avec clé secrète. Aucune mémoire n'est allouée tant que le client n'a pas répondu par un ACK` valide !
Informations
Formatarticle
Durée45 min
StatutEn cours
Laboratoire Virtuel Pratique

Pratiquez cette le?on dans le Terminal Linux et l'ex?cuteur WebAssembly Python en direct.

Ouvrir dans le Labo >_