TCP (Transmission Control Protocol)
Protocole* de transport de la couche 4 du modèle OSI* (couche transport). Très utilisé dans des applications internet (associé au protocole IP, TCP/IP) TCP peut représenter jusqu’à 90% du trafic mesuré. Le protocole a été une première fois standardisé en 1981, dans la RFC* 793, pour répondre au besoin de fiabilité dans le transport au profit de certaines applications (messagerie, transfert de fichiers). Ainsi, TCP établit des mécanismes de transfert bi-directionnels entre processus distants avec la possibilité pour chacun de moduler la vitesse du trafic en fonction de la disponibilité des ressources. Ce mécanisme de « contrôle de flux » permet par exemple de demander la réexpédition d’un paquet* non reçu. En outre TCP dispose d’un mécanisme de contrôle de congestion qui permet à un émetteur de vérifier que la vitesse d’émission ne va pas entrainer un engorgement du réseau (et donc des pertes de paquets). Cette évolution de TCP est dite Tahoe et est décrite dans la RFC 1122 qui date de 1989. En 1999, une autre version du protocole, dite Reno (RFC 2581) améliore Tahoe qui diminuait trop nettement l’efficacité des transmissions. Le protocole TCP est orienté connexion et se découpe en trois phases : ouverture de la connexion, transfert des données, fermeture de la connexion. Le flot d’octets à transmettre est découpé en segments qui sont déposés dans des paquets IP avant d’être transmis sur le réseau, chaque segment est numéroté afin de permettre un mécanisme d’acquittement et de retransmission. TCP utilise deux méthodes pour détecter une perte de paquet. Ainsi, il y a perte si l’émetteur ne reçoit pas un acquittement (dans un certain délai) ou s’il reçoit plusieurs acquittements qui ne correspondent pas à un paquet émis récemment. Dans le modèle Internet, il existe d’autres protocoles de transport, tel qu’UDP* par exemple, lorsque la fiabilité n’est pas une priorité.
L’entête TCP TCP mettant en œuvre des mécanismes de contrôle, l’en-tête des paquets est nécessairement porteuse de plus d’informations. Outre les ports* source et destination (sur 16 bits chacun) qui indiquent la source et la destination du paquet, on trouve un champ numéro de séquence (sur 32 bits). Ce champ permet de numéroter un paquet dans une séquence afin de pouvoir respecter l’ordre de réassemblage et est nécessaire au mécanisme d’acquittement. Le numéro d’acquittement d’un paquet correspond au numéro de séquence du paquet attendu. Ce champ permet de renvoyer vers l’émetteur le décompte des paquets reçus et indique s’il y a eu des pertes. Le champ « décalage des données » est aussi appelé « taille de l’en-tête » et indique la longueur de l’en-tête du paquet.
On trouve ensuite un champ réservé avec un système de « drapeaux » (flag*) chaque drapeau ayant une signification particulière :
- URG : urgent
- ACK : le paquet est un accusé de réception
- PSH : push données à « pousser », à envoyer sans délai ;
- RST : reset
- SYN : demande de synchronisation
- FIN : demande de fin de connexion.
Le champ fenêtre indique la taille souhaitée de la fenêtre de congestion (mécanisme de contrôle de congestion de TCP). Cela traduit le nombre d’octet que le récepteur peut recevoir sans accuser réception. Le champ somme de contrôle, permet de vérifier l’intégrité du paquet (le checksum est calculé sur l’ensemble de l’en-tête TCP et du champ de données). Le champ pointeur Urgent, indique la position des dernières données urgentes 32 bits Port source Port destination Numéro de séquence Numéro d’acquittement Taille de l’en-tête Réservé ECN/NS CWR ECE URG ACK PSH RST SYN FIN Fenêtre Somme de contrôle Pointeur de données urgentes Options Remplissage Données
Voir UDP User Datagram Protocol.
TCP/IP (modèle) Reposant sur les mêmes principes d’abstraction que le modèle OSI* (qui permet de normaliser les modes de communication entre ordinateurs en réseau), le modèle TCP/IP est une simplification appliquée à Internet. Le modèle ne contient que 4 couches qui regroupent plusieurs couches du modèle OSI. • La couche accès, qui utilise les protocoles Ethernet*, PPP* ou token ring*. Cette couche regroupe la couche physique* et liaison de données du modèle OSI (couche 1 et couche 2), elle se charge de définir la forme suivant laquelle les données seront acheminées. • La couche internet, qui utilise le protocole IP, c’est la couche réseau du modèle OSI (couche 3), elle constitue le datagramme* (paquet de données) qui sera acheminé par la couche transport ; • La couche transport (identique au modèle OSI), qui utilise le protocole TCP et assure le transport des datagrammes et le contrôle des connexions. • La couche application, qui regroupe les couches application, présentation et session du modèle OSI. Le principe repose sur un mécanisme d’encapsulation des données en fonction des couches (chacune ajoute les informations nécessaires à son traitement par la couche adjacente). Ainsi, lorsqu’une application souhaite envoyer un message vers une autre application, celui-ci est encapsulé (on lui rajoute une en-tête TCP) et devient un segment de la couche transport. Ce segment est lui-même encapsulé pour devenir un paquet de la couche IP avant de circuler sous forme de trame* au niveau de la couche accès.