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
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 >_