Aller au contenu principal

Annexe A. Diagramme d'État de Connexion TCP

Cette annexe fournit une illustration détaillée des transitions d'état de connexion TCP.

Diagramme de Transition d'État TCP​

                              +---------+
                              |  CLOSED |
                              +---------+
                                   |
                            (passive OPEN)
                                   |
                                   v
                              +---------+
                              |  LISTEN |
                              +---------+
                       (rcv SYN)   |   ^  (CLOSE)
                                   |   |
                                   v   |
                              +---------+
                              |SYN RCVD|
                              +---------+
                          (rcv ACK)|
                                   |
              (active OPEN)        v
             +---------+      +---------+
             |SYN SENT |<---->|  ESTAB  |
             +---------+      +---------+
                  |                |
                  |          (CLOSE/FIN)
                  |                |
                  |                v
                  |           +---------+
                  |           |FIN WAIT1|
                  |           +---------+
                  |           (rcv ACK) |
                  |                |
                  |                v
                  |           +---------+
                  |           |FIN WAIT2|
                  |           +---------+
                  |          (rcv FIN) |
                  |                |
                  |                v
                  |           +---------+
                  |           |TIME WAIT|
                  |           +---------+
                  |           (timeout) |
                  |                |
                  |                v
                  |           +---------+
                  +---------->|  CLOSED |
                              +---------+

        Fermeture Simultanée:          Fermeture Passive:
        FIN WAIT1 --rcv FIN--> CLOSING   ESTABLISHED --rcv FIN--> CLOSE WAIT
        CLOSING --rcv ACK--> TIME WAIT   CLOSE WAIT --CLOSE--> LAST ACK
                                         LAST ACK --rcv ACK--> CLOSED

Descriptions des États​

CLOSED​

  • État fictif représentant aucun TCB (Transmission Control Block), donc aucune connexion
  • C'est le point de départ et d'arrivée pour toutes les connexions

LISTEN​

  • Serveur en attente d'une demande de connexion de n'importe quel TCP distant
  • État d'ouverture passive

SYN-SENT​

  • Client en attente d'une demande de connexion correspondante après avoir envoyé SYN
  • État d'ouverture active

SYN-RECEIVED​

  • Serveur en attente d'ACK après avoir reçu SYN et envoyé SYN-ACK
  • État intermédiaire de la poignée de main à trois voies

ESTABLISHED​

  • Connexion établie, transfert de données possible
  • C'est l'état normal pendant la phase de transfert de données

FIN-WAIT-1​

  • Fermeur actif en attente d'ACK ou FIN du distant
  • Premier état de terminaison de connexion

FIN-WAIT-2​

  • En attente de FIN du distant après avoir reçu ACK pour le FIN envoyé
  • Indique que le côté local n'enverra plus de données, mais peut toujours recevoir

CLOSE-WAIT​

  • Fermeur passif en attente de la fermeture de l'application locale après avoir reçu FIN
  • Peut toujours envoyer des données à ce stade

CLOSING​

  • État pendant la fermeture simultanée
  • En attente de l'ACK du FIN du distant

LAST-ACK​

  • Fermeur passif en attente d'ACK après avoir envoyé FIN
  • Passe directement à CLOSED après réception de l'ACK

TIME-WAIT​

  • Le fermeur actif entre dans cet état après avoir reçu FIN du distant et envoyé ACK
  • Attend 2MSL (Maximum Segment Lifetime)
  • Objectifs:
    1. S'assurer que l'ACK final atteint le distant
    2. Empêcher les anciens segments d'interférer avec les nouvelles connexions

Transitions d'État Clés​

Établissement de Connexion (Poignée de Main à Trois Voies)​

CLOSED --> (active open) --> SYN-SENT
SYN-SENT --> (receive SYN-ACK) --> ESTABLISHED

CLOSED --> (passive open) --> LISTEN
LISTEN --> (receive SYN) --> SYN-RECEIVED
SYN-RECEIVED --> (receive ACK) --> ESTABLISHED

Fermeture de Connexion (Poignée de Main à Quatre Voies)​

Fermeture Active:
ESTABLISHED --> (send FIN) --> FIN-WAIT-1
FIN-WAIT-1 --> (receive ACK) --> FIN-WAIT-2
FIN-WAIT-2 --> (receive FIN) --> TIME-WAIT
TIME-WAIT --> (2MSL timeout) --> CLOSED

Fermeture Passive:
ESTABLISHED --> (receive FIN) --> CLOSE-WAIT
CLOSE-WAIT --> (application close) --> LAST-ACK
LAST-ACK --> (receive ACK) --> CLOSED

Ouverture Simultanée​

CLOSED --> (send SYN) --> SYN-SENT
SYN-SENT --> (receive SYN) --> SYN-RECEIVED
SYN-RECEIVED --> (receive ACK) --> ESTABLISHED

Fermeture Simultanée​

ESTABLISHED --> (send FIN) --> FIN-WAIT-1
FIN-WAIT-1 --> (receive FIN) --> CLOSING
CLOSING --> (receive ACK) --> TIME-WAIT
TIME-WAIT --> (2MSL timeout) --> CLOSED

Importance de l'État TIME-WAIT​

Pourquoi TIME-WAIT est-il Nécessaire?

  1. Assurer une Fermeture Fiable:

    • Si l'ACK final est perdu, le distant retransmettra FIN
    • L'état TIME-WAIT garantit la capacité de répondre au FIN retransmis
  2. Empêcher l'Interférence de l'Ancienne Connexion:

    • D'anciens segments retardés peuvent exister dans le réseau
    • Attendre 2MSL garantit que les anciens segments disparaissent du réseau
    • Empêche les anciens segments d'être confondus avec des données valides par de nouvelles connexions

Temps 2MSL:

  • MSL (Maximum Segment Lifetime): Temps maximum qu'un segment peut vivre dans le réseau
  • Typiquement MSL = 2 minutes
  • Donc TIME-WAIT = 2MSL = 4 minutes
  • Certaines implémentations utilisent des temps plus courts (par ex., 30 ou 60 secondes)

Note: Pour la logique complète de transition d'état et la gestion des cas limites, référez-vous à la spécification complète dans RFC 9293.