Processus De Connexion TCP Three Way

CCST Networking (Cisco Certified Support Technician)Introduction to TCPIP

Processus de connexion TCP (Three-Way Handshake)

Définition

Le Three-Way Handshake est le processus en trois étapes par lequel deux hôtes établissent une connexion TCP fiable avant d'échanger des données. Il synchronise les numéros de séquence et confirme que les deux extrémités sont prêtes à communiquer.

Contexte

La certification CCST couvre le handshake TCP car il est fondamental pour comprendre comment les connexions fiables sont établies et pourquoi TCP garantit la livraison des données, contrairement à UDP. C'est aussi la base pour comprendre les attaques de type SYN flood.

Détails techniques

Les 3 étapes du handshake

Client                          Serveur
  |                                |
  |---- SYN (seq=100) ----------->|   Étape 1
  |                                |
  |<--- SYN-ACK (seq=300,ack=101)-|   Étape 2
  |                                |
  |---- ACK (seq=101,ack=301) --->|   Étape 3
  |                                |
  |==== Connexion établie ========|
Étape Drapeau Description
1 SYN Le client envoie un segment SYN avec son numéro de séquence initial (ISN)
2 SYN-ACK Le serveur répond avec son propre ISN et acquitte le SYN du client (ACK = ISN client + 1)
3 ACK Le client acquitte le SYN du serveur. La connexion est ESTABLISHED

Numéros de séquence et d'acquittement

Champ Rôle
Sequence Number Identifie le premier octet de données dans ce segment
Acknowledgment Number Indique le prochain octet attendu de l'autre côté
Window Size Nombre d'octets que le récepteur peut accepter avant un ACK

Drapeaux TCP (flags)

Flag Bit Usage
SYN Synchronize Initiation de connexion
ACK Acknowledgment Acquittement de données reçues
FIN Finish Demande de fermeture de connexion
RST Reset Réinitialisation forcée de la connexion
PSH Push Livraison immédiate à l'application
URG Urgent Données prioritaires

Fermeture de connexion (Four-Way Termination)

Client                          Serveur
  |---- FIN --------------------->|
  |<--- ACK ---------------------|
  |<--- FIN ---------------------|
  |---- ACK --------------------->|

Chaque côté envoie un FIN et reçoit un ACK. Le client entre en état TIME_WAIT pendant 2 × MSL (Maximum Segment Lifetime) avant de libérer le socket.

Attaque SYN Flood

Un attaquant envoie des milliers de SYN sans compléter le handshake. Le serveur maintient des connexions half-open qui consomment de la mémoire jusqu'à épuisement. Contre-mesure : SYN cookies sur le serveur.

Exemple concret

Un navigateur ouvre https://www.example.com. Le client envoie un SYN vers le port 443 du serveur. Le serveur répond SYN-ACK. Le client complète avec ACK. La connexion TCP est établie. Ensuite, le handshake TLS commence par-dessus cette connexion TCP. Si le SYN-ACK n'arrive jamais (pare-feu, serveur down), le client retransmet le SYN 3 fois avant d'abandonner avec un timeout.