DCN - Protocole de contrôle de transmission
Le protocole de contrôle de transmission (TCP) est l'un des protocoles les plus importants de la suite de protocoles Internet. C'est le protocole le plus largement utilisé pour la transmission de données dans un réseau de communication tel qu'Internet.
traits
TCP est un protocole fiable. C'est-à-dire que le récepteur envoie toujours un accusé de réception positif ou négatif concernant le paquet de données à l'expéditeur, de sorte que l'expéditeur a toujours une idée claire du fait que le paquet de données a atteint la destination ou s'il doit le renvoyer.
TCP garantit que les données atteignent la destination prévue dans le même ordre dans lequel elles ont été envoyées.
TCP est orienté connexion. TCP nécessite que la connexion entre deux points distants soit établie avant d'envoyer des données réelles.
TCP fournit un mécanisme de vérification des erreurs et de récupération.
TCP fournit une communication de bout en bout.
TCP assure le contrôle de flux et la qualité de service.
TCP fonctionne en mode point à point Client / Serveur.
TCP fournit un serveur en duplex intégral, c'est-à-dire qu'il peut remplir les rôles à la fois de récepteur et d'expéditeur.
Entête
La longueur de l'en-tête TCP est au minimum de 20 octets et au maximum de 60 octets.
Source Port (16-bits) - Il identifie le port source du processus d'application sur le périphérique d'envoi.
Destination Port (16-bits) - Il identifie le port de destination du processus d'application sur le périphérique récepteur.
Sequence Number (32-bits) - Numéro de séquence d'octets de données d'un segment dans une session.
Acknowledgement Number (32-bits) - Lorsque l'indicateur ACK est défini, ce numéro contient le numéro de séquence suivant de l'octet de données attendu et fonctionne comme un accusé de réception des données précédentes reçues.
Data Offset (4-bits) - Ce champ implique à la fois la taille de l'en-tête TCP (mots de 32 bits) et le décalage des données dans le paquet courant dans tout le segment TCP.
Reserved (3-bits) - Réservé pour une utilisation future et tous sont mis à zéro par défaut.
Flags (1-bit each)
NS - Le bit Nonce Sum est utilisé par le processus de signalisation de notification de congestion explicite.
CWR - Lorsqu'un hôte reçoit un paquet avec un bit ECE défini, il définit les fenêtres d'encombrement réduites pour accuser réception de la réception par ECE.
ECE -Il a deux significations:
Si le bit SYN est à 0, alors ECE signifie que le paquet IP a son bit CE (expérience d'encombrement) défini.
Si le bit SYN est défini sur 1, ECE signifie que l'appareil est compatible ECT.
URG - Il indique que le champ Pointeur urgent contient des données importantes et doit être traité.
ACK- Il indique que le champ Accusé de réception a une signification. Si ACK est remis à 0, cela indique que le paquet ne contient aucun accusé de réception.
PSH - Lorsqu'il est défini, il s'agit d'une demande à la station réceptrice de PUSH des données (dès qu'elles arrivent) à l'application réceptrice sans les mettre en mémoire tampon.
RST - Le drapeau de réinitialisation a les caractéristiques suivantes:
Il est utilisé pour refuser une connexion entrante.
Il est utilisé pour rejeter un segment.
Il est utilisé pour redémarrer une connexion.
SYN - Cet indicateur est utilisé pour établir une connexion entre les hôtes.
FIN- Cet indicateur est utilisé pour libérer une connexion et aucune autre donnée n'est échangée par la suite. Étant donné que les paquets avec des indicateurs SYN et FIN ont des numéros de séquence, ils sont traités dans le bon ordre.
Windows Size - Ce champ est utilisé pour le contrôle de flux entre deux stations et indique la quantité de tampon (en octets) que le récepteur a allouée pour un segment, c'est-à-dire la quantité de données attendue par le récepteur.
Checksum - Ce champ contient la somme de contrôle des en-têtes, des données et des pseudo-en-têtes.
Urgent Pointer - Il pointe vers l'octet de données urgentes si l'indicateur URG est défini sur 1.
Options - Il facilite les options supplémentaires qui ne sont pas couvertes par l'en-tête normal. Le champ Option est toujours décrit en mots de 32 bits. Si ce champ contient des données de moins de 32 bits, un remplissage est utilisé pour couvrir les bits restants pour atteindre la limite de 32 bits.
Adressage
La communication TCP entre deux hôtes distants se fait au moyen de numéros de port (TSAP). Les numéros de ports peuvent aller de 0 à 65535, divisés en:
- Ports système (0-1023)
- Ports utilisateur (1024 - 49151)
- Ports privés / dynamiques (49152 - 65535)
Gestion des connexions
La communication TCP fonctionne dans le modèle Serveur / Client. Le client initie la connexion et le serveur l'accepte ou la rejette. L'établissement de liaison à trois est utilisé pour la gestion des connexions.
Établissement
Le client initie la connexion et envoie le segment avec un numéro de séquence. Le serveur le confirme avec son propre numéro de séquence et ACK du segment du client qui est un de plus que le numéro de séquence du client. Le client après avoir reçu un ACK de son segment envoie un accusé de réception de la réponse du serveur.
Libération
Le serveur et le client peuvent envoyer un segment TCP avec l'indicateur FIN défini sur 1. Lorsque l'extrémité de réception y répond par ACKnowledging FIN, cette direction de communication TCP est fermée et la connexion est libérée.
Gestion de la bande passante
TCP utilise le concept de taille de fenêtre pour répondre aux besoins de gestion de la bande passante. La taille de la fenêtre indique à l'expéditeur à l'extrémité distante, le nombre de segments d'octets de données que le récepteur à cette extrémité peut recevoir. TCP utilise la phase de démarrage lent en utilisant la taille de fenêtre 1 et augmente la taille de la fenêtre de façon exponentielle après chaque communication réussie.
Par exemple, le client utilise Windows taille 2 et envoie 2 octets de données. Lorsque l'accusé de réception de ce segment est reçu, la taille de la fenêtre est doublée à 4 et le segment envoyé ensuite aura une longueur de 4 octets de données. Lorsque l'accusé de réception du segment de données de 4 octets est reçu, le client définit la taille de la fenêtre sur 8 et ainsi de suite.
Si un acquittement est manqué, c'est-à-dire des données perdues dans le réseau de transit ou s'il a reçu NACK, alors la taille de la fenêtre est réduite de moitié et la phase de démarrage lent recommence.
Contrôle d'erreur et contrôle de flux
TCP utilise les numéros de port pour savoir de quel processus d'application il a besoin pour transférer le segment de données. Parallèlement à cela, il utilise des numéros de séquence pour se synchroniser avec l'hôte distant. Tous les segments de données sont envoyés et reçus avec des numéros de séquence. L'expéditeur sait quel dernier segment de données a été reçu par le récepteur lorsqu'il reçoit un ACK. Le récepteur connaît le dernier segment envoyé par l'expéditeur en se référant au numéro de séquence du paquet récemment reçu.
Si le numéro de séquence d'un segment reçu récemment ne correspond pas au numéro de séquence attendu par le récepteur, il est alors rejeté et NACK est renvoyé. Si deux segments arrivent avec le même numéro de séquence, la valeur d'horodatage TCP est comparée pour prendre une décision.
Multiplexage
La technique pour combiner deux ou plusieurs flux de données en une seule session est appelée multiplexage. Lorsqu'un client TCP initialise une connexion avec le serveur, il fait toujours référence à un numéro de port bien défini qui indique le processus d'application. Le client lui-même utilise un numéro de port généré aléatoirement à partir de pools de numéros de port privés.
À l'aide du multiplexage TCP, un client peut communiquer avec un certain nombre de processus d'application différents en une seule session. Par exemple, un client demande une page Web qui à son tour contient différents types de données (HTTP, SMTP, FTP, etc.), le délai d'expiration de la session TCP est augmenté et la session est maintenue ouverte plus longtemps afin que la surcharge de la prise de contact à trois être évité.
Cela permet au système client de recevoir plusieurs connexions via une seule connexion virtuelle. Ces connexions virtuelles ne sont pas bonnes pour les serveurs si le délai d'attente est trop long.
Contrôle de la congestion
Lorsqu'une grande quantité de données est transmise au système qui n'est pas capable de les traiter, une congestion se produit. TCP contrôle la congestion au moyen du mécanisme de fenêtre. TCP définit une taille de fenêtre indiquant à l'autre extrémité la quantité de segment de données à envoyer. TCP peut utiliser trois algorithmes pour le contrôle de la congestion:
Augmentation additive, diminution multiplicative
Démarrage lent
Réaction du délai d'attente
Gestion de la minuterie
TCP utilise différents types de minuterie pour contrôler et gérer diverses tâches:
Minuterie Keep-Alive:
Ce temporisateur est utilisé pour vérifier l'intégrité et la validité d'une connexion.
Lorsque la durée de conservation expire, l'hôte envoie une sonde pour vérifier si la connexion existe toujours.
Minuterie de retransmission:
Cette minuterie maintient la session avec état des données envoyées.
Si l'accusé de réception des données envoyées n'est pas reçu dans le délai de retransmission, le segment de données est renvoyé.
Minuterie de persistance:
La session TCP peut être suspendue par l'un ou l'autre hôte en envoyant la taille de fenêtre 0.
Pour reprendre la session, un hôte doit envoyer une taille de fenêtre avec une valeur plus grande.
Si ce segment n'atteint jamais l'autre extrémité, les deux extrémités peuvent attendre l'une l'autre pendant un temps infini.
Lorsque le minuteur de persistance expire, l'hôte renvoie sa taille de fenêtre pour informer l'autre extrémité.
Persist Timer permet d'éviter les blocages dans la communication.
Attente chronométrée:
Après avoir libéré une connexion, l'un des hôtes attend un temps d'attente minuté pour terminer complètement la connexion.
Ceci afin de s'assurer que l'autre extrémité a reçu l'accusé de réception de sa demande de terminaison de connexion.
Le délai d'expiration peut durer au maximum 240 secondes (4 minutes).
Crash Recovery
TCP est un protocole très fiable. Il fournit le numéro de séquence à chacun des octets envoyés dans le segment. Il fournit le mécanisme de rétroaction, c'est-à-dire que lorsqu'un hôte reçoit un paquet, il est lié à ACK ce paquet ayant le prochain numéro de séquence attendu (si ce n'est pas le dernier segment).
Lorsqu'un serveur TCP bloque la communication à mi-chemin et redémarre son processus, il envoie une diffusion TPDU à tous ses hôtes. Les hôtes peuvent alors envoyer le dernier segment de données qui n'a jamais été acquitté et continuer.