Neben dem bereits dargestellten User Datagram Protocol, das insbesondere für einen möglichst schnellen und effizienten Transport der zu übertragenden Daten ausgelegt ist und dafür auf Mechanismen verzichtet, die eine fehlerfreie und zuverlässige Übertragung garantieren, sind diese jedoch für zahlreiche Internetanwendungen eine notwendige Grundvoraussetzung. Der Sender muss sich darauf verlassen können, dass die von ihm versendeten Daten exakt so beim Empfänger angeliefert werden, wie er sie versendet hat. Übertragungsfehler und Datenverluste müssen von den Kommunikationspartnern auf beiden Seiten registriert und gemeinsam behoben werden können, um die Grundvoraussetzung für einen zuverlässigen Transportdienst zu gewährleisten. Das Transmission Control Protocol (TCP) baut auf dem unzuverlässigen und verbindungslosen Internet Protokoll einen zuverlässigen und verbindungsorientierten Transportdienst auf. Dazu bündelt TCP zahlreiche Verfahren für das Verbindungsmanagement, die Korrektur von Übertragungsfehlern, die Flusskontrolle und die Überlastkontrolle.
Historisch gesehen begann die Entwicklung am heutigen TCP bereits in den frühen 1970er Jahren, als das stetig wachsende ARPAnet als Vorläufer des heutigen Internets immer größer wurde und immer wieder neue Netzwerke mit daran angeschlossen werden sollten. Robert E. Kahn und Vinton G. Cerf begannen 1973 mit der Entwicklung des ersten ” Transmission Control Programs“ als Nachfolger für die damalige Netzwerkverwaltungssoftware, das Network Control Protocol (NCP), das mit der Verwaltung und dem operationellen Betrieb des wachsenden Internets zusehends überfordert war. Diese erste Version von TCP unterschied sich von der aktuell eingesetzten dadurch, dass sie sowohl für die verbindungslose Übertragung von Datagrammen und das Routing (Internetschicht-Funktionalität) als auch für das Management von Verbindungen und den zuverlässigen Datentransport (Transportschicht-Funktionalität) zuständig war.
Damit wurde gleichzeitig gegen die Prinzipien der Modularität als auch des strengen Schichtenaufbaus der Protokollfunktionalität verstoßen, da es nicht mehr möglich war, Internetschicht- Funktionalität und Transportschicht-Funktionalität getrennt voneinander bereitzustellen. Dadurch geriet TCP zu einem sehr unflexiblen und ineffizienten Protokoll, insbesondere für Anwendungen und Dienste, die lediglich eine einfache, verbindungslose und ungesicherte Kommunikation benötigen. Mit der vierten Version schließlich beschloss man 1981 in RFC 793, das Transmission Control Program in zwei separate Protokolle – das Internet Protokoll IPv4 und das Transmission Control Protokoll – aufzuteilen, die jeweils die für die Internetschicht bzw. die Transportschicht vorgesehene Funktionalität für Anwendungen und Dienste zur Verfügung stellen.

