Manuel de l'administrateur Table des matières LinkedIn social network LinkedIn social network LinkedIn social network LinkedIn social network Share on social media

Principe de l’établissement d’une connexion TCP, diagramme d’état

Introduction au protocole TCP

Le protocole TCP est utilisé par une grande majorité d’applications client/serveur comme les millions de serveurs WEB d’Internet.

TCP est acronyme de Transmission Control Protocol et fonctionne sur le réseau de transport IP (Internet Protocol).

TCP permet l’échange de données de façon fiable grâce à des mécanismes de séquences et d’acquittement, de détection d’erreurs, de reprises sur erreurs. La performance et la gestion de la  mémoire de réception sont contrôlées par un mécanisme de gestion de flux.

TCP est un protocole orienté connexion, une mise en relation (handshake) est établie avant l’échange des données. Le système à l’initiative de la connexion est considéré comme le client dans la terminologie TCP  tandis que le système qui accepte cette connexion est considéré comme le serveur.

Deux systèmes peuvent établir des connexions l’un vers l’autre et simultanément, dans ce cas  ils sont à la fois serveur et client. Le client et le serveur s’échangent des unités d’informations appelées « segments TCP », les segments étant composés d’une zone d’en-tête et d’une zone de données.

TCP est décrit dans le RFC 793. Une version française est disponible sur ce lien.

Principe de l’établissement d’une connexion TCP, diagramme d’état

Voici les étapes de connexion et de libration d’une connexion TCP.

TCP state transition

Le client, une application, ouvre une connexion vers le serveur par l’envoi d’un segment TCP dont seul l’en-tête est présent (pas de donnée). Cet en-tête contient un indicateur (flag) SYN abréviation de « Synchronize » ainsi que le numéro de port TCP du serveur (application). Le client est en état SYN_SENT (SYN envoyé).

Le serveur (application) est en écoute (listen) et dès réception du SYN client, il change d’état et répond par avec un flag SYN et ACK. Le serveur est alors en état SYN_RCVD (SYN reçus).

Le client reçoit le segment TCP du serveur avec les indicateurs SYN ACK et passe en statut ESTABLISHED. Il envoi aussi une réponse ACK au serveur qui passe aussi en statut ESTABLISHED.
Cet échange en trois phases (three-way handshake) complète l’établissement de la connexion TCP qui peut maintenant être utilisé pour des échanges de données entre le client et le serveur.

Le client qui est à l’origine de la connexion réalise une ouverture de connexion active (active open) tandis que le serveur réalise une ouverture de connexion passive (passive open).

Dans le cas ou une demande de connexion arrive sur le serveur et qu’aucune application n’est en écoute sur le port demandé, un segment avec l’indicateur RST (reset) est envoyé au client par le serveur, la tentative de connexion est immédiatement terminé.

Principe de terminaison d’une connexion TCP, diagramme d’état

La terminaison d’une connexion TCP nécessite quatre échanges de segment TCP.

Comme une connexion TCP est bidirectionnelle (full duplex) la rupture de celle-ci doit être faite dans les deux sens de la communication. Le client comme le serveur peuvent envoyer un segment avec l’indicateur FIN présent pour signifier leur fin d’envoi de données. La réception d’un segment avec le FIN indique que l’autre extrémité n’enverra plus de donné. Le terme utilisé alors est (half close), la connexion est à demi  fermée.

Classiquement, c’est le client qui génère l’envoi du segment avec un indicateur FIN, il réalise une fermeture active (active close), le serveur à réception de ce segment réalise alors une fermeture passive (passive close). Le serveur acquitte le FIN par un ACK, informe l’application pour la libérer de cette connexion et envoie ensuite un segment FIN au client qui à son tour, l’acquitte par un ACK.

 

Tous les segments  échangés entre client et serveur sont numérotés séquentiellement. Le numéro de séquence est un entier de 32 bits. Chaque coté de la connexion initialise et maintient la séquence des segments envoyés.

L’en-tête du segment contient toujours deux champs, un pour le numéro de séquence du segment envoyé et un pour le numéro de séquence du segment acquitté. Le numéro de séquence du segment acquitté est en fait le numéro du prochain segment attendu. En d’autre terme l’acquittement sous la forme « j’attends le segment numéro 10 de ta part » signifie que le 9 a été reçu correctement.

Les tests de connexion TCP et mesure de temps de réponse réalisé par LoriotPro au sein de ses différents modules sont bases principalement sur le temps entre la demande d'ouverture (segement initial SIN) et le l'acquittement du serveur par SIN/ACK.

LoriotPro intègre un système d'intérrogation (polling) et de mesure de temps de réponse pour l'établissement d'une connexion TCP. Sur chaque host de l'annuaire un ou plusieurs polling sur 1 ou plusieurs application TCP (port TCP) peut être ajouté. Consulter la documentation Advanced TCP audit pour la mise en oeuvre. Ce module permet d'envoyer un événement en cas de non réponse et réalise un grahique des temps de réponse pour les 100 dernières mesures.

Il est aussi possible d'avoir des graphique en tendance avec le module RRD Collector et l'option de collecte par script LUA. Un module de mesure par LUA est disponible et peut être utilisé au sein du module RRD Collector pour afficher des grahique en tendance sur les temps de réponse de connect TCP.


www.loriotpro.com