Le protocole TCP (Transmission Control Protocol) est utilisé par les applications de type transfert de données (Web, Email, News, FTP, Telnet,...) pour assurer une transmission fiable des paquets sur le réseau Internet. Un tel protocole est indispensable car le protocole IP (Internet Protocol) ne fournit aucune garantie de ce type. En particulier, les paquets peuvent être perdus, dupliqués, et même arriver dans le désordre. Le rôle de TCP est donc de retransmettre les paquets perdus, d'effacer les paquets dupliqués, et de les délivrer dans l'ordre à la destination. Il doit également assurer le contrôle de flux , c'est à dire réguler le débit de la source en fonction de la capacité du réseau et de la destination.
Pour assurer un tel contrôle de bout en bout de transfert des paquets, la destination renvoit un acquittement à la source à chaque réception d'un paquet (voir ci-dessous). Les paquets sont numérotés afin de retransmettre les éventuels paquets perdus, détecter les paquets dupliqués et délivrer les paquets dans l'ordre. Le mécanisme de contrôle de TCP consiste à limiter le nombre de paquets non acquittés circulant dans le réseau, à une valeur maximale F appelée la fenêtre (F=4 dans l'exemple ci-dessous). La valeur de la fenêtre est dynamique afin de s'adapter aux paramètres statiques (vitesse des routeurs, délais de propagation,...) et dynamiques (trafic, pertes de paquets,...) du réseau.