![]() |
guill.net
-
La page des réseaux
|
![]() ![]() |
Le protocole TCP est défini
dans le but de fournir un service de transfert de données de haute
fiabilité entre deux ordinateurs "maîtres" raccordés
sur un réseau de type "paquets commutés", et sur tout système
résultant de l'interconnexion de ce type de réseaux.
Caractéristiques
TCP est un protocole orienté
connexion conçu pour s'implanter dans un ensemble de protocoles
multicouches, supportant le fonctionnement de réseaux hétérogènes.
TCP fournit un moyen d'établir une communication fiable entre deux
tâches exécutées sur deux ordinateurs autonomes raccordés
à un réseau de données.
Le protocole TCP s'affranchit
le plus possible de la fiabilité intrinsèques des couches
inférieures de communication sur lesquelles il s'appuie. TCP suppose
donc uniquement que les couches de communication qui lui sont inférieures
lui procurent un service de transmission de paquet simple, dont la qualité
n'est pas garantie.
TCP s'intègre dans
une architecture multicouche des protocoles, juste au-dessus du protocole
Internet IP. Ce dernier permet à TCP l'envoi et la réception
de segments de longueur variable, encapsulés dans un paquet Internet
appelé aussi "datagramme". Le datagramme Internet dispose de mécanismes
permettant l'adressage des services TCP source et destination, quelle
que soit leur position dans le réseau. Le protocole IP s'occupe
aussi de la fragmentation et du réassemblage des paquets TCP lors
de la traversée de réseaux de plus faibles caractéristiques.
Le datagramme IP transporte aussi les informations de priorité, fragmentation relatives aux segments TCP.
Interfaces
TCP fournit un service de communication de processus à processus, dans un environnement réseau, il est défini comme un protocole de communication "host to host", c'est à dire de maître à maître (par opposition à "central à terminal"). TCP s'interface avec un processus utilisateur ou applicatif et un protocole de niveau inférieur du type Internet Protocol.
L'interface avec les applicatifs
consiste en un ensemble de commandes comme le ferait une application à
un système d'exploitation pour la manipulation de fichiers. Par
exemple, on trouvera des commandes pour établir et rompre une communication,
pour envoyer ou recevoir des données sur une connexion ouverte.
TCP assume un fonctionnement
avec un large ensemble de protocoles réseau. Dans ce document, nous
nous limiterons au fonctionnement avec IP.
Fonctionnement
TCP est conçu pour
fournir un service de transmission de données fiable entre deux
machines raccordées sur un réseau de paquets. Pour pouvoir
assurer ce service même au dessus d'une couche de protocole moins
fiable, les fonctionnalités suivantes sont nécessaires:
- Transfert de données
de base
- Correction d'erreur
- Contrôle de flux
- Multiplexage
- Gestion de connexions
- Priorité et Sécurité
Ces fonctionnalités
sont décrites en dans les paragraphes qui suivent.
Transfert de données de base
TCP est capable de transférer
un flux continu de données entre deux ordinateurs, en découpant
ce flux en paquets . En général, TCP décide de lui-même
là où le flux de données doit être coupé.
Parfois les utilisateurs
ont besoin de savoir que toutes les données soumises à TCP
ont bien été émises. La fonction "push" a été
prévue a cet effet. Pour s'assurer de la transmission complète
de données jusqu'à un point spécifié, l'utilisateur
activera la fonction "push" de TCP. Cette fonction oblige TCP à
transmettre rapidement les données situées avant le point
spécifié vers le destinataire. Il n'est nul besoin de fournir
un marqueur spécifique pour ce point, dans la mesure ou le destinataire
accepte ces données comme une transmission normale.
Contrôle d'erreur
TCP doit considérer
et traiter les cas de données perdues, erronées, dupliquées,
ou arrivées dans le désordre à l'autre bout de la
liaison Internet. Ceci est réalisé par l'insertion d'un numéro
de séquence, et par l'obligation d'émission d'un "accusé
de réception" (ACK) par le TCP destinataire. Si l'accusé
de réception n'est pas reçu au bout d'un temps prédéfini,
le paquet sera réémis. Côté récepteur,
les numéros de séquence sont utilisés pour reconstituer
dans le bon ordre le flux original, et éliminer les paquets dupliqués.
L'élimination des erreurs physiques de transmission se fait par
encodage d'un Checksum à l'émission, recalcul de ce Checksum
par le destinataire, et élimination des paquets pour les quels les
deux valeurs ne correspondent pas.
Tant que TCP fonctionne
correctement, et que le réseau Internet n'est pas saturé,
aucune faute de transmission ne devrait transparaître dans la communication.
TCP est donc sensé récupérer les erreurs de la transmission
Internet.
Contrôle de flux
TCP fournit un moyen au destinataire pour contrôler le débit de données envoyé par l'émetteur. Ceci est obtenu en retournant une information de "fenêtre" avec chaque accusé de réception indiquant la capacité de réception instantanée en termes de numéros de séquence. Ce paramètre noté "window" indique le nombre d'octets que l'émetteur peut envoyer avant une autorisation d'émettre ultérieure.
Multiplexage
Pour permettre à plusieurs
tâches d'une même machine de communiquer simultanément
via TCP, le protocole définit un ensemble d'adresses et de ports
pour la machine. Une "socket" est défini par l'association des adresses
Internet source, destinataire, ainsi que les deux numéros de port
à chaque extrémité. Une connexion nécessite
la mise en place de deux sockets. Une socket peut être utilisée
par plusieurs connexions distinctes.
L'affectation des ports
aux processus est établie par chaque ordinateur. Cependant, il semble
judicieux de réserver certains numéros de ports pour des
services caractérisés et souvent utilisés. Ces services
standards pourront alors être atteints via ces ports "réservés".
L'affectation, l'utilisation et l'apprentissage des ports associés
à d'autres services moins courants ou propriétaires nécessitera
l'utilisation de mécanismes plus dynamiques.
Connexions
Les mécanismes de
fiabilisation et de contrôle de flux décrits ci-dessus imposent
à TCP l'initialisation et la maintenance de certaines informations
pour chaque communication. La combinaison de ces informations, dont les
sockets, les fenêtres, et les numéros de séquence formeront
ce que nous appelons une connexion. Chaque connexion est identifiée
de manière unique par sa paire de sockets, définissant chacun
des deux sens de la communication.
Lorsque deux processus désirent
communiquer, leur TCP respectifs doivent tout d'abord négocier et
établir une connexion (initialiser ces informations d'état
de part et d'autre). Lorsque la communication s'achève, elle sera
fermée, en libérant ses ressources à d'autres usages.
Dans la mesure où
l'on considère que les ordinateurs, ainsi que le réseau Internet
n'est pas d'une fiabilité absolue, on utilise une méthode
d'initialisation par négociation bilatérale basée
sur une horloge pour les numéros de séquence.