Dans les réseaux IP, le protocole IP (Internet Protocol) offre un service à datagrammes ; autrement dit, il ne fournit aucune garantie quant à la réception correcte des paquets. En effet, ces paquets peuvent être perdus ou dupliqués, et ils peuvent aussi arriver dans un ordre différent de l’ordre d’émission. Or, de nombreuses applications ont besoin d’un transfert ordonné et fiable de leurs données. Le protocole de transport TCP (Transmission Control Protocol, ou protocole de contrôle de transmission) joue alors un rôle fondamental : celui d’assurer des
services de communication fiables
entre des applications hébergées dans les équipements terminaux. En suivant le principe dit « de bout en bout » (« end-to-end principle »), le réseau IP sous-jacent est vu comme une boîte noire, le soin de cacher ses imperfections aux applications étant laissé à TCP.
Depuis sa conception au début des années 1980, TCP s’est imposé comme le protocole de transport de choix pour de nombreuses applications. De plus, il est incontestablement le plus utilisé dans les réseaux basés sur le protocole IP, en termes de paquets et d’octets échangés.
Dans le modèle de référence en couches protocolaires de l’Internet, TCP se situe au niveau de la couche 4 (figure
1
). Il est généralement mis en œuvre par le système d’exploitation, de sorte que celui-ci offre ces services de transport aux applications à travers une interface de programmation (API : Application Programming Interface), dont la plus populaire est celle connue sous le nom d’
API sockets
[1]
.
TCP offre aux applications et aux protocoles qui l’utilisent un canal transparent, sans erreurs et bidirectionnel (en mode « full duplex ») qui transporte une séquence d’octets. C’est un protocole de
point à point
(il n’est pas adapté au « multicast ») et
de bout en bout
: seules les deux extrémités participant à la communication, ou
connexion
, déroulent le protocole (figure
2
).
Lorsqu’une application fournit à TCP des données pour transmission, TCP peut découper ces données en blocs, afin d’adapter la taille des paquets résultants à la taille de l’unité maximale de transmission du réseau (MTU : Maximum Transfer Unit). Chacun de ces blocs, précédé d’un en-tête, forme l’unité de données (PDU : Protocol...