Relativement au protocole IP de la couche réseau, le protocole TCP de la couche transport ont un rôle de fiabilisation des communications entre 2 extrémités. Avec la couche transport, on aborde le domaine des communications de bout en bout indépendantes de l'état du sous-réseau. Les paquets peuvent être arrivés à destination par des chemins différents et dans le désordre.
Même si l'appelation courante de la modélisation n'a retenu que TCP comme protocole de transport, il existe deux protocoles distincts suivant le type de réseau utilisé. Le protocole TCP fonctionne en mode connecté et assure un service fiable tandis que le protocole UDP assure un service de datagramme en mode non connecté sans aucune garantie de fiabilité.
4.1. Le protocole TCP
Historiquement, c'est le premier protocole de transport développé pour l'Internet. Les premières spécifications ARPANET prévoyaient un transport de l'information très fiable indépendant du type et de l'état du réseau. Le fonctionnement du protocole TCP a été décrit dans le document RFC793 : Transmission Control Protocol.
•Protocole de bout en bout.
Les processus pairs des couches transport de deux équipements connectés dialoguent l'un avec l'autre sans rien connaître du réseau. C'est au niveau IP que l'on se préoccupe de la fragmentation et du réassemblage des paquets.
•Protocole orienté connexion.
La fiabilité du transport TCP dépend de l'établissement d'une connexion entre les processus pairs qui veulent dialoguer. L'établissement d'une connexion est réalisé par l'échange d'informations telles que le numéro de port, le numéro de séquence et la taille de fenêtre.
En-tête TCP - image seule
Source Port : 16 bits
Numéro du port source. Ce numéro correspond au point de communication (socket inet) utilisé par le service de la couche application de l'émetteur.
Destination Port : 16 bits
Numéro du port destination. Ce numéro correspond au point de communication (socket inet) utilisé par le service de la couche application du destinataire.
Sequence Number : 32 bits
Le protocole TCP a besoin de garder une trace de toutes les données qu'il reçoit de la couche application de façon à être sûr qu'elles ont bien été reçues par le destinataire. De plus, le protocole doit être sûr que ces données ont été reçues dans l'ordre dans lequel elles ont été envoyées. Il doit retransmettre toute donnée perdue.
On affecte un numéro de séquence à chaque octet de donnée pour en garder une trace lors du processus de transmission, réception et acquittement. Dans la pratique, ce sont des blocs d'octets qui sont gérés en utilisant les numéros de séquence de début et de fin de bloc.
Les numéros de séquence sont nécessaires à la mise en oeuvre du système de fenêtre glissante du protocole TCP. C'est ce système qui garantit fiabilité et contrôle de flots de données.
Acknowledgment Number : 32 bits
Le rôle des numéros d'acquittement est le même que celui des numéros de séquence. Simplement, chaque extrémité en communication initie son propre jeu de numéros. Ainsi chaque extrémité assure la fiabilisation et le contrôle de flux de façon autonome.
Data Offset : 4 bits
Nombre de mots de 32 bits contenus dans l'en-tête TCP. Indication du début des données. Tout en-tête TCP, avec ou sans options, est un multiple de mots de 32 bits.
Reserved : 6 bits
Champ réservé pour une utilisation ultérieure. Les 6 bits doivent être à 0.
Control bits : 6 bits
Ces bits sont les indicateurs d'état qui servent à l'établissement, au maintien et à la libération des connexions TCP. Leur rôle est essentiel dans le fonctionnement du protocole.
•URG : indique que le champ Urgent Pointer est significatif ; ie. une partie des données du segment sont urgentes.
•ACK : indique que le champ Acknowledgment field est significatif ; ie. le segment acquitte la transmission d'un bloc de d'octets.
•PSH : utilisation de la fonction Push
•RST : indique un arrêt ou un refus de connexion.
•SYN : indique une demande de synchronisation de numéro de séquence ; ie. demande d'ouverture de connexion TCP.
•FIN : indique que l'émetteur n'a plus de données à transmettre ; ie. demande de libération de connexion.
Window : 16 bits
Nombre d'octets de données à partir de celui indiqué par le champ Acknowledgment.
Checksum : 16 bits
Somme de contrôle sur 16 bits de l'en-tête et des données.
Urgent Pointer : 16 bits
Ce champ est interprété uniquement si le bit de contrôle URG est à 1. Le pointeur donne le numéro de séquence de l'octet qui suit les données urgentes.
Options : variable entre 0 et 44 octets
Il existe 2 formats d'options : un seul octet de catégorie d'option ou un octet de catégorie d'option suivi d'un octet de longueur d'option et de l'octet des données de l'option.
4.2. Le fonctionnement du protocole TCP
D'après le format du message TCP, on peut résumer le fonctionnement de la couche transport de la modélisation TCP/IP en quatre points. Le protocole TCP de la couche transport :
•segmente les données des applications,
•établit une connexion de bout-en-bout,
•émet les segments d'un hôte à l'autre,
•assure la fiabilité du transport des segments entre les hôtes connectés.
4.2.1. La segmentation des données
La fonction de transport est effectuée segment par segment de façon autonome. Plusieurs applications peuvent émettre leurs segments successivement. Ces segments peuvent avoir un ou plusieurs destinataires.
Segmentation des données des applications par la
4.2.2. L'établissement de la connexion
Les étapes de l'établissement de la connexion sont :
4.2.3. Contrôle de flux
Un contrôle de flux est nécessaire pour prévenir la congestion des transfertscw :
•Un serveur performant peut générer plus de trafic que le réseau ne peut en supporter.
•Un serveur peut être sollicité par un nombre très élevé de clients.
4.2.4. fenêtrage
Un dispositif de fenêtrage de l'acquittement a été implanté pour préserver la bande passante. Si l'émetteur devait attendre un acquittement après l'émission de chaque segment, la qualité de la transmission serait dégradée.
4.3. Le protocole UDP
Le protocole UDP est apparu avec le développement des réseaux locaux dont la fiabilité permet de s'affranchir des fonctions de contrôle. C'est un protocole minimum sans garantie de délivrance des messages et sans séquencement.
Source Port : 16 bits
Numéro du port source. Ce champ est optionnel.
Destination Port : 16 bits
Numéro du port destination.
Length : 16 bits
Longueur en octets du datagramme UDP incluant l'en-tête et les données.
Checksum : 16 bits
Somme de contrôle sur 16 bits de l'en-tête et des données.