C'est le ministère américain de la Défense (DoD) qui à l'origine a développé le modèle de référence TCP/IP, car il avait besoin d'un réseau pouvant résister à toutes les situations.
TCP est un protocole assez complexe, et en évolution. Même si des améliorations significatives ont été apportées au cours des années, son fonctionnement de base a peu changé depuis le RFC 793, publié en 1981. Le RFC 1122 (Host Requirements for Internet Hosts), a clarifié un certain nombre de pré-requis pour l'implémentation du protocole TCP. Le RFC 2581 (TCP Congestion Control), l'un des plus importants de ces dernières années, décrit de nouveaux algorithmes utilisés par TCP pour éviter les congestions. En 2001, le RFC 3168 a été écrit afin de présenter un mécanisme de signalisation des congestions (explicit congestion notification ou ECN), et s'ajoute à la liste des RFCs importants qui complètent la spécification originale. Au début du XXIe siècle, TCP est utilisé approximativement pour 95% de tout le trafic Internet. Les applications les plus courantes qui utilisent TCP sont HTTP/HTTPS (World Wide Web), SMTP/POP3/IMAP (messagerie) et FTP (transfert de fichiers).
TCP (tout comme UDP) utilise la notion de numéro de port pour identifier les applications. À chaque extrémité (client / serveur) de la connexion TCP est associé un numéro de port sur 16 bits (de 1 à 65535) assigné à l'application émettrice ou réceptrice. Ces ports sont classés en trois catégories :
De nombreuses applications en temps réel n'ont pas besoin, et peuvent même souffrir, des mécanismes complexes de transport fiable de TCP : applications de diffusion multimédia (audio, vidéo), certains jeux multi-joueurs en temps réel, échanges de fichiers, etc. Dans ce type d'applications, il est souvent préférable de gérer les pertes, erreurs ou congestions, plutôt que d'essayer de les éviter.
Pour ces besoins particuliers, d'autres protocoles de transport ont été créés et déployés.