Du nom de domaine à la connexion TCP

Le protocole TCP et l'établissement de connexion

TCP (Transmission Control Protocol) est le protocole de la couche transport qui garantit une livraison fiable et ordonnée des données, contrairement à UDP qui n'offre aucune garantie mais va plus vite. Avant d'échanger la moindre donnée, deux machines qui utilisent TCP doivent d'abord établir une connexion - c'est le célèbre three-way handshake (établissement en trois temps).

Chaque machine choisit un numéro de séquence initial, qui sert à suivre l'ordre des octets envoyés et à détecter les pertes ou les duplications. La connexion se met en place ainsi :

Client                                   Serveur

  ---- SYN (seq=100) ------------------->     (1. propose un numéro de séquence)
  <--- SYN-ACK (seq=300, ack=101) -------      (2. accepte + propose son propre numéro)
  ---- ACK (seq=101, ack=301) ----------->     (3. confirme, connexion établie)

  ============ echange de donnees TCP =========  (connexion ouverte dans les deux sens)

Le détail des trois segments :

  1. Le client envoie un segment SYN avec son numéro de séquence initial (ici seq=100) : il propose de démarrer une connexion.
  2. Le serveur répond par un segment SYN-ACK : il accuse réception (ack=101, soit le seq du client plus un) et propose à son tour son propre numéro de séquence (seq=300).
  3. Le client répond par un segment ACK (ack=301) : il confirme avoir reçu le numéro du serveur. La connexion est alors établie dans les deux sens.

Une fois les trois segments échangés, les deux machines s'envoient des données en confirmant en permanence leur bonne réception. Si un segment se perd, l'expéditeur ne reçoit pas d'accusé de réception à temps et le retransmet automatiquement.

Piège classique : croire que le handshake échange déjà des données applicatives. En réalité, les trois premiers segments ne contiennent généralement aucune donnée : ils servent uniquement à synchroniser les numéros de séquence des deux côtés.

Autre piège : oublier que fermer une connexion TCP est différent de l'ouvrir. La fermeture utilise typiquement quatre segments (FIN puis ACK de chaque côté), car chaque sens de communication doit être fermé indépendamment - un détail souvent omis dans les schémas simplifiés.