Comprendre le principe des requêtes Internet... PART IV- La connexion TCP

Nos tutoriels complets pour vous aider
Répondre
Avatar du membre
pboulanger
Membre VIP
Membre VIP
Messages : 93
Enregistré le : mar. 17 mars 2020 11:49
Localisation : Oise- LA CHAPELLE EN SERVAL
Contact :

Comprendre le principe des requêtes Internet... PART IV- La connexion TCP

Message par pboulanger »

Dans les précédents chapitres, nous avons découvert la notion de modèle.
Nous avons également vu comment les différentes couches communiquent entre elles pour créer un paquet et pour le lire.

Maintenant que nous avons les paquets, il va falloir les acheminer c'est-à-dire les envoyer au travers du réseau de l'émetteur vers le récepteur.

Cela pose plusieurs problèmes :
  • la taille de l'information à envoyer peut être volumineuse
  • la vitesse de transmission peut être impactée par la qualité du réseau et/ou les performances des deux machines
  • l'information reçue doit être complète et sans erreur.
Pour résoudre ces problèmes, lors de la transmission on va devoir établir, dans le cadre du protocole TCP/IP, une négociation préalable aux transferts de données entre l'émetteur et récepteur.

Schématiquement, l'émetteur va envoyer un message et attendre que le récepteur confirme la bonne réception avant de passer au suivant.

On va regarder rapidement la structure d'une connexion TCP. Comme dans la vraie vie, il faut avoir un langage commun pour communiquer... C'est là qu'entre en jeu la structure d'un segment TCP.


Structure d'un segment TCP :


De façon classique la structure d'un segment comprend un en-tête de taille variable qui utilise un format en mots de 32 bits suivi d'une zone de données.
 
Ashampoo_Snap_2020.05.25_16h02m48s_001_.png
Ashampoo_Snap_2020.05.25_16h02m48s_001_.png (22.68 Kio) Vu 191 fois
 
Dans le schéma ci-dessus, chaque champs, défini par une couleur spécifique correspond à :
Pour l'entête :
  • Port source : donne le port utilisé par l'émetteur
  • Port de destination : Indique le port d'écoute du serveur (en général le port 80 correspond au HTTP)
  • Numéro d'ordre : Lorsque le drapeau SYN est à 0, le numéro d'ordre est celui du premier mot du segment en cours
    Lorsque SYN est à 1, le numéro d'ordre est égal au numéro d'ordre initial utilisé pour synchroniser les numéros de séquence.
  • Numéro d'accusé réception : Le numéro d'accusé de réception également appelé numéro d'acquittement correspond au numéro (d'ordre) du prochain segment attendu, et non le numéro du dernier segment reçu.
  • Décalage de données : permet de repérer le début des données dans le paquet. Le décalage est ici essentiel car le champ d'options est de taille variable
  • Réservé : Non utilisé, réservé pour les évolutions futures.
  • Flags ou Drapeaux : (pour mémoire 0 flag baissé et 1 flag levé)
    • URG : si ce drapeau est à 1 le paquet doit être traité de façon urgente.
    • ACK : si la valeur est à 1 le paquet est un accusé de réception
    • PSH : indique, s'il a la valeur 1 que le paquet fonctionne suivant la méthode PUSH
    • RST : la connexion est réinitialisée si la valeur est à 1
    • SYN : Levé, ce flag indique une demande d'établissement de connexion
    • FIN: si ce drapeau est à 1 la connexion s'interrompt
  • Fenêtre : Ce champ indique le nombre d'octet que le client souhaite recevoir SANS accusé réception.
  • Somme de contrôle ou CHECKSUM ou CRC : La somme de contrôle est réalisée en faisant la somme des champs de données de l'en-tête, afin de pouvoir vérifier l'intégrité de l'en-tête.
  • Pointeur d'urgence : Indique le numéro d'ordre à partir duquel l'information devient urgente
  • Options : Champs de taille variable pour des options diverses
  • Remplissage :Il s'agit de l'espace restant après les options qui est rempli avec des zéros pour avoir une longueur multiple de 32 bits.
Pour les données :
  • Données : elle contient un nombre variable de mots de 32 bits correspondant à tout ou partie de l'information à transférer
Maintenant que nous savons comprendre les instructions dans les segments, il va falloir se connecter avec l'autre machine afin de se mettre d'accord pour l'envoi et la réception de données. C'est là que le principe de connexion TCP joue son rôle.


Principe de connexion TCP :

La connexion TCP fonctionne en trois phases :
  • établissement la connexion
  • transfert des données
  • fin de connexion
l'établissement de la connexion :
Côté serveur : celui-ci ouvre un socket (c'est un point d'accès à une connexion TCP) en mode attente passive demande de connexion. C'est également connu sous le nom d'ouverture passive.

Côté client : le demandeur va effectuer une demande de connexion ou ouverture active en trois temps :
  • le client envoie un segment SYN au serveur
  • le serveur répond par un segment SYN/ACK
  • le client confirme par un segment ACK
Cet échange initial permet entre autres de synchroniser le numéro de séquence des deux parties.

Cette synchronisation se passe de la manière suivante :
  • Le client utilise son numéro séquence initiale dans le champ "numéro d'ordre "du segment SYN.
  • Le serveur utilise son numéro de séquence initiale dans le champ numéro de séquence du segment SYN/ACK et ajoute le numéro de séquence du client +1 dans le champ "numéro d'accusé réception" du segment.
  • Le client confirme en envoyant un ACK avec un numéro d'ordre augmenté de un et un numéro d'accusé réception correspondant au numéro de séquence du serveur +1.
Voici un petit schéma pour visualiser cette première négociation.
Ashampoo_Snap_2020.05.25_16h49m46s_003_.png
Ashampoo_Snap_2020.05.25_16h49m46s_003_.png (32.33 Kio) Vu 191 fois

A suivre ... le transfert des données

Sources : Supinfo, Openclassroom, ENSAM, Google
Amicalement,

Pierre

Avatar du membre
chtimi054
Administrateur du site
Administrateur du site
Messages : 16520
Enregistré le : ven. 26 juil. 2013 06:56

Re: Comprendre le principe des requêtes Internet... PART IV- La connexion TCP

Message par chtimi054 »

Salut Piere !

Bonnes explications comme toujours !
Image

Répondre