Definition

TCP (Transmission Control Protocol)

Was ist TCP (Transmission Control Protocol)?

Das Transmission Control Protocol (TCP) ist ein Standard, der definiert, wie eine Netzwerkkonversation aufgebaut und aufrechterhalten wird, über die Anwendungen Daten austauschen können.

TCP ist eines der wichtigsten Kommunikationsprotokolle der IP-Suite (Internet Protocol) und befindet sich auf der Transportschicht des OSI-Modells (Open Systems Interconnection). Es arbeitet mit IP zusammen, das definiert, wie Computer Datenpakete aneinander senden. Zusammen bilden TCP und IP die Grundregeln, die das Internet definieren und die erfolgreiche Zustellung von Nachrichten über Netzwerke gewährleisten.

Mit der wachsenden Bedeutung moderner Netzwerkarchitekturen wie SDN und NFV wird TCP kontinuierlich weiterentwickelt, um dynamische und flexible Netzwerksteuerung zu ermöglichen. Zudem tragen Erweiterungen wie TCP Fast Open (TFO) dazu bei, Sicherheitsrisiken wie Spoofing und SYN-Flooding-Angriffe zu minimieren.

Die Entstehungsgeschichte von TCP

Die Entstehung des Internets ist eng mit der Geschichte des Transmission Control Protocol verknüpft. Im Folgenden finden Sie einen kurzen Überblick über die wichtigsten Ereignisse in der Geschichte von TCP:

  • 1960er: In den Anfängen der Computernetzwerke wurden verschiedene Protokolle entwickelt, um die Kommunikation zwischen verschiedenen Computern zu erleichtern. Protokolle wie das Network Control Program wurden im ARPANET verwendet, dem Vorläufer des heutigen Internets.
  • Anfang der 1970er Jahre: Die Arbeit an der TCP/IP-Suite begann in den frühen 1970er Jahren. TCP/IP wird weithin als Erfindung von Vinton Cerf und Bob Kahn angesehen. Die erste Version sollte verschiedene vom US-Verteidigungsministerium finanzierte Forschungsnetze miteinander verbinden.
  • 1974: In einem Papier mit dem Titel A Protocol for Packet Network Intercommunication (PDF) skizzierten Cerf und Kahn die Spezifikationen für TCP. In diesem Papier wurden die wesentlichen Grundsätze der verbindungsorientierten Kommunikation und das Konzept der Aufteilung von Daten in Pakete für die Übertragung über Netzwerke dargelegt.
  • 1978: Ursprünglich waren TCP und IP eng miteinander verbunden. Im Jahr 1978 wurden die Protokolle in zwei Schichten getrennt: IP für Paketadressierung und Routing und TCP für die zuverlässige, verbindungsorientierte Kommunikation.
  • 1980er: 1981 wurden IPv4 und TCP durch die RFC 791 (Request for Comments) und RFC 793 der Internet Engineering Task Force (IETF) standardisiert. Dies war ein wichtiger Wendepunkt in der Entwicklung des Internets zu einem weltweiten Netz. Im Laufe der Jahre wurde TCP verbessert und erweitert, um verschiedene Probleme zu beheben und die Leistung zu steigern. Dazu gehörten die Entwicklung von Algorithmen zur Staukontrolle, Verbesserungen für Hochgeschwindigkeitsnetze und Überarbeitungen der Protokolldefinition.
  • 1990er-2000er Jahre: Da die zugänglichen IPv4-Adressen knapp wurden, bekam die Migration zu IPv6 höchste Priorität. IPv6 wirkt sich auf TCP und andere Protokolle auf der Transportschicht aus, auch wenn der Schwerpunkt auf der IP-Adressierung liegt. IPv6 bringt aber keine wesentlichen Änderungen der grundlegenden Funktionsweise von TCP mit sich.
  • 2022: Das IETF veröffentlichte RFC 9293, das alle Änderungen und Erweiterungen seit der ursprünglichen RFC 793 zusammenfasst und ersetzt-

TCP wird nach wie vor entwickelt und standardisiert, und es wird ständig daran gearbeitet, neue Herausforderungen zu bewältigen, die Leistung zu verbessern und sich an die sich entwickelnden Netzwerkumgebungen anzupassen.

Die vier Schichten von TCP/IP

TCP/IP besteht aus vier Schichten, von denen jede eine bestimmte Funktion im Datenübertragungsprozess übernimmt.

Zu den vier Schichten (Layers) des TCP/IP-Stacks gehören die folgenden:

  • Netzzugangsschicht: Die Netzzugangsschicht (Network Access Layer), manchmal auch als Datenverbindungsschicht (Data Link Layer) bezeichnet, verwaltet die Netzinfrastruktur, die die Computerkommunikation über das Internet ermöglicht. Zu den Hauptkomponenten gehören Gerätetreiber, Netzwerkkarten, Ethernet-Verbindungen und drahtlose Netzwerke.
  • Internetschicht: Die Adressierung, Weiterleitung und Fragmentierung von Datenpaketen über verschiedene Netze hinweg wird von der Internet-Schicht (Internet Layer) verwaltet. Sie nutzt das Internetprotokoll, um Geräten eindeutige IP-Adressen zuzuweisen und zu gewährleisten, dass die Pakete ihren Bestimmungsort erreichen.
  • Transportschicht: Diese Schicht (Transport Layer) ermöglicht die End-to-End-Kommunikation zwischen den Geräten. Durch den Einsatz von Protokollen wie dem User Datagram Protocol (UDP) und TCP wird die konsistente und systematische Zustellung von Datenpaketen gewährleistet. Während UDP eine schnellere, verbindungslose Kommunikation ermöglicht, sorgt die TCP-Verbindung für eine zuverlässige, verbindungsorientierte Kommunikation.
  • Anwendungsschicht: Die oberste Schicht, die Anwendungsschicht (Application Layer), ist für die Unterstützung bestimmter Dienste und Anwendungen zuständig. Sie umfasst eine breite Palette von Protokollen, darunter das File Transfer Protocol (FTP), das Simple Mail Transfer Protocol (SMTP) und HTTP.
Die vier Schichten des TCP/IP-Stacks.
Abbildung 1: Die vier Schichten des TCP/IP-Stacks.

Wie funktioniert TCP?

TCP ist ein verbindungsorientiertes Protokoll, das heißt, eine Verbindung wird aufgebaut und aufrechterhalten, bis die Anwendungen auf beiden Seiten den Austausch von Nachrichten beendet haben.

TCP führt die folgenden Aktionen durch:

  • Aufbau durch ein Drei-Wege-Handshake, bei dem Sender und Empfänger Steuerpakete (Control Packets) austauschen, um sich zu synchronisieren und eine Verbindung herzustellen.
  • Legt fest, wie die Anwendungsdaten in Pakete zerlegt werden, die über das Netz übertragen werden können.
  • Sendet Pakete an die Netzwerkschicht und nimmt Pakete von ihr entgegen.
  • Verwaltet die Flusskontrolle.
  • Kümmert sich um die erneute Übertragung von verworfenen oder verstümmelten Paketen, um eine fehlerfreie Datenübertragung zu gewährleisten.
  • Bestätigt alle ankommenden Pakete.
  • Beendet die Verbindung nach Abschluss der Datenübertragung durch einen vierfachen Handshake.

Wenn ein Webserver eine HTML-Datei an einen Client sendet, verwendet er dazu HTTP. Die HTTP-Programmschicht fordert die TCP-Schicht auf, die Verbindung aufzubauen und die Datei zu senden. Der TCP-Stack teilt die Datei in Datenpakete auf, nummeriert sie und leitet sie dann einzeln an die IP-Schicht zur Zustellung weiter.

Obwohl jedes Paket bei der Übertragung dieselbe Quell- und Ziel-IP-Adresse hat, können die Pakete über mehrere Routen gesendet werden. Die TCP-Programmschicht (Program Layer) auf dem Client-Computer wartet, bis alle Pakete eingetroffen sind. Dann bestätigt sie die empfangenen Pakete und bittet um die erneute Übertragung der Pakete, die sie nicht erhalten hat, basierend auf den fehlenden Paketnummern. Die TCP-Schicht setzt dann die Pakete zu einer Datei zusammen und übergibt die Datei an die empfangende Anwendung.

TCP und UDP im Vergleich

TCP und UDP sind zwei verschiedene Protokolle für die Übertragung von Daten über das Internet. Zu den wichtigsten Unterschieden zwischen TCP und UDP gehören:

  • Zuverlässigkeit: TCP bietet eine zuverlässige Zustellung aufgrund des Fehlererkennungsprozesses, bei dem TCP bei einem Fehler die Pakete nach dem Eintreffen erneut sendet und neu ordnet. Dies kann jedoch zu Latenzzeiten in einem TCP-Datenstrom führen. UDP hingegen überträgt die Daten nicht erneut. Zeitkritische Anwendungen wie Voice-over-IP, Video-Streaming und Spiele setzen in der Regel auf UDP, da es Latenz und Jitter reduziert, indem es Pakete nicht neu ordnet oder fehlende Daten nicht erneut sendet.
  • Verbindungsorientierung: Im Gegensatz zu TCP wird UDP als Datagramm- oder verbindungsloses Protokoll klassifiziert, da es keine Möglichkeit hat, zu erkennen, ob beide Anwendungen ihre Kommunikation beendet haben.
  • Fehlerbehandlung: Anstatt wie TCP ungültige Datenpakete zu korrigieren, verwirft UDP diese Pakete und überlässt die genauere Fehlererkennung der Anwendungsschicht.
  • Header-Informationen: Der Header eines UDP-Datagramms enthält wesentlich weniger Informationen als ein TCP-Segment-Header. Der UDP-Header wird auch weniger auf der Transportschicht verarbeitet, um die Latenzzeit zu reduzieren.
  • Anwendungsfälle: TCP wird häufig für Anwendungen verwendet, bei denen Zuverlässigkeit und Reihenfolge der Daten wichtig sind, beispielsweise Web-Browsing, E-Mail und Dateitransfer. Im Gegensatz dazu wird UDP für Anwendungen bevorzugt, bei denen Geschwindigkeit und Effizienz wichtiger sind als Zuverlässigkeit, zum Beispiel Live-Streaming, Online-Gaming und VoIP.
  • Überlastungskontrolle: TCP implementiert Mechanismen, um Netzwerküberlastungen zu vermeiden, während UDP über keine derartigen Funktionen verfügt. Das bedeutet, dass TCP die Übertragungsgeschwindigkeit anpasst, um Überlastungen zu vermeiden. Das kann jedoch zu einer geringeren Übertragungsgeschwindigkeit führen. UDP sendet Daten ohne Rücksicht auf Netzwerküberlastung, was zu einer schnelleren, aber möglicherweise weniger stabilen Übertragung führt.
  • Verwendung von Ports: Sowohl TCP als auch UDP verwenden Ports, um Daten an die richtigen Anwendungen auf einem Gerät zu senden. TCP und UDP nutzen jedoch unterschiedliche Portnummern für die gleichen Dienste. Beispielsweise verwendet HTTP Port 80 für TCP, während DNS Port 53 für UDP benötigt.
Die Unterschiede von TCP und UDP
Abbildung 2: Die Unterschiede von TCP und UDP

Wofür wird TCP verwendet?

TCP wird verwendet, um Daten so zu organisieren, dass eine sichere Übertragung zwischen dem Server und dem Client gewährleistet ist. Es garantiert die Integrität der über das Netz gesendeten Daten, unabhängig von ihrer Menge. Aus diesem Grund wird es für die Übertragung von Daten aus anderen übergeordneten Protokollen verwendet, bei denen alle übertragenen Daten ankommen müssen.

Beispiele für solche Protokolle sind die folgenden:

  • Secure Shell, FTP, Telnet: Für den Peer-to-Peer-Dateiaustausch und, im Falle von Telnet, für das Einloggen in den Computer eines anderen Benutzers, um auf eine Datei zuzugreifen.
  • SMTP, Post Office Protocol, Internet Message Access Protocol: Für das Senden und Empfangen von E-Mails.
  • HTTP: Für den Webzugang.

Diese Beispiele befinden sich alle auf der Anwendungsschicht des TCP/IP-Stapels und senden Daten nach unten zu TCP auf der Transportschicht.

Einige wichtige Anwendungsfälle von TCP sind:

  • Zuverlässige Datenübertragung: Eine der Hauptfunktionen von TCP ist die Gewährleistung einer zuverlässigen Datenübertragung durch Fehlererkennung, erneute Übertragung von Datenpaketen und Sequenzierung von Datenpaketen. Es garantiert, dass die Daten fehlerfrei und in der richtigen Reihenfolge empfangen werden.
  • Web-Browsing: Ohne TCP wäre das Surfen im Internet nicht möglich. TCP stellt eine Verbindung zwischen dem Client, das heißt dem Webbrowser, und dem Server her, der die Webseite hostet. Es garantiert, dass Ressourcen und Webseiten konsistent und in der richtigen Reihenfolge bereitgestellt werden.
  • E-Mail-Zustellung: TCP wird auch für die Zustellung von E-Mails verwendet. Indem es eine Verbindung zwischen dem Client und dem Mailserver herstellt, garantiert TCP, dass E-Mails zuverlässig zugestellt und empfangen werden.
  • Dateiübertragung: TCP wird häufig für Dateiübertragungsprotokolle wie FTP und Secure File Transfer Protocol verwendet. Es sorgt dafür, dass Dateien zuverlässig und fehlerfrei transportiert werden.
  • Fernzugriff: TCP wird auch für den Fernzugriff mit Protokollen wie Telnet und SSH verwendet. Mit diesen Protokollen können Benutzer über eine sichere Verbindung auf Computer oder Netzwerkgeräte zugreifen und diese fernsteuern.
  • Datenbankzugriff: TCP wird für den Zugriff auf Datenbanken über Netzwerke verwendet. Es garantiert die sichere und zuverlässige Übertragung von Abfragen und Datenbankantworten.
  • Nachrichtenübermittlung und Chat: TCP wird in Messaging- und Chat-Anwendungen eingesetzt, um die zuverlässige Übermittlung von Nachrichten zwischen Benutzern zu gewährleisten.
  • Virtuelle Private Netzwerke (VPNs). TCP wird in VPNs eingesetzt, um sichere und zuverlässige Verbindungen zwischen entfernten Benutzern und privaten Netzen herzustellen.

Welche Bedeutung hat TCP?

TCP ist wichtig, weil es die Regeln und Standardverfahren für die Art und Weise der Informationsübertragung im Internet festlegt. Es ist die Grundlage für das Internet in seiner heutigen Form und sorgt dafür, dass die Datenübertragung unabhängig von Standort, Hardware oder Software einheitlich erfolgt.

TCP ist flexibel und hochgradig skalierbar. Deshalb können neue Protokolle eingeführt werden und es wird sie aufnehmen. Angriffe wie TCP-Spoofing oder TCP-SYN-Flooding zielen auf Schwachstellen im Verbindungsaufbau (Drei-Wege-Handshake). Die Einführung von Sicherheitsprotokollen wie TCP Fast Open (TFO) oder TLS in Verbindung mit TCP verbessert den Schutz sensibler Daten.

TCP ist außerdem nicht proprietär, das heißt, es ist nicht im Besitz einer Person oder eines Unternehmens.

Was sind die Vorteile von TCP?

TCP bietet die folgenden Vorteile:

  • Verlässlichkeit: Wie erwähnt, bietet TCP die Funktionen Fehlererkennung, Paketwiederholung bei fehlenden Paketen und Paketreihenfolge, um eine zuverlässige Datenübertragung zu gewährleisten.
  • Flusskontrolle: Um zu verhindern, dass zu viele Daten auf einmal an den Empfänger gesendet werden, verwendet TCP die Methoden der Flusskontrolle (Flow Control), um die Geschwindigkeit der Datenübertragung zu regulieren.
  • Ordnung und Reihenfolge der Pakete. TCP stellt sicher, dass die Datenpakete in der gleichen Reihenfolge empfangen werden, in der sie gesendet wurden, indem es ihre Reihenfolge und Sequenznummer garantiert.
  • Fehlerprüfung: TCP führt eine umfangreiche Fehlerkontrolle durch, die Fehler in den empfangenen Daten mit Prüfsummen identifiziert. Die Fehlerprüfung in TCP erfolgt auch durch Mechanismen wie Acknowledgements und Retransmissions.
  • Verbindungsorientiert: TCP stellt eine Verbindung zwischen Absender und Empfänger her, um eine zuverlässige und stabile Kommunikationsverbindung zu gewährleisten.

Was sind die Nachteile von TCP?

Neben seinen Vorteilen hat TCP auch einige Nachteile. Zu den häufigsten Nachteilen von TCP gehören:

  • Overhead: Aufgrund seiner Zuverlässigkeitsmerkmale hat TCP mehr Overhead als UDP, was manchmal zu langsameren Übertragungsgeschwindigkeiten führen kann.
  • Latenz: Die von TCP verwendete Übermittlungsmethode umfasst Bestätigungen und erneute Übertragungen, was manchmal zu einer Latenz führen kann, die Echtzeitanwendungen beeinträchtigt.
  • Überlastungssteuerung: Um Netzwerküberlastungen zu vermeiden, können die TCP-Überlastungskontrolltechniken (Congestion Control) die Datenübertragung verlangsamen. Dies kann allerdings ein Nachteil sein, wenn eine Hochgeschwindigkeitsübertragung erforderlich ist.
  • Verbindungsorientiert: Das verbindungsorientierte Design von TCP erfordert einen zusätzlichen Aufwand für den Aufbau und die Aufrechterhaltung von Verbindungen, während diese Funktion für viele Anwendungen nicht erforderlich ist.
  • Spezialisierung: TCP ist speziell auf die TCP/IP-Suite zugeschnitten und kann in der Praxis nicht zur Darstellung anderer Protokollstapel, wie zum Beispiel für Bluetooth-Verbindungen, verwendet werden. Bei Bluetooth oder anderen spezifischen Technologien kommen in der Regel Protokolle zum Einsatz, die für den jeweiligen Anwendungsfall optimiert sind.

Position im TCP/IP-Stack

Der TCP/IP-Stack ist ein Modell, das darstellt, wie Daten über Netzwerke mit dem TCP/IP-Protokoll organisiert und ausgetauscht werden. Es zeigt eine Reihe von Schichten, die die Art und Weise darstellen, wie Daten auf ihrem Weg vom Client zum Server und umgekehrt von einer Reihe von Protokollen behandelt und verpackt werden.

TCP existiert in der Transportschicht mit anderen Protokollen wie UDP. Die Protokolle dieser Schicht sorgen für die fehlerfreie Übertragung der Daten zur Quelle, mit Ausnahme von UDP, da es nur über eine begrenzte Fähigkeit zur Fehlerkontrolle verfügt.

Wie das OSI-Modell ist auch der TCP/IP-Stack ein konzeptionelles Modell für Datenaustauschstandards. Die Daten werden auf jeder Schicht auf der Grundlage ihrer Funktionalität und der Transportprotokolle neu verpackt.

Die Anfragen gelangen über den Stack zum Server und beginnen auf der Anwendungsschicht als Daten. Von dort aus werden die Informationen auf jeder Schicht in Pakete verschiedener Typen aufgeteilt. Die Daten bewegen sich auf die folgenden Arten:

  • Sie bewegen sich von der Anwendungsschicht zur Transportschicht, wo sie in TCP-Segmente sortiert werden.
  • Sie werden zur Internet-Schicht transportiert, wo sie in ein Datagramm umgewandelt werden.
  • Sie werden zur Netzwerkschnittstellenschicht übertragen, wo sie wieder in Bits und Frames zerlegt werden.
  • Wenn der Server antwortet, durchlaufen sie den Stack, um als Daten auf der Anwendungsschicht anzukommen.

TCP/IP und das OSI-Modell im Vergleich

Das OSI-Modell und TCP/IP haben viele Gemeinsamkeiten. Beispielsweise bieten beide eine Grundlage für das Verständnis, wie verschiedene Protokolle miteinander und mit der Netzwerkkommunikation interagieren. Beide Modelle unterstützen die Idee der Verkapselung, bei der Daten auf jeder Schicht für die Übertragung in Header und Trailer verpackt werden, und verfügen über Ebenen, die bestimmte Funktionalitäten definieren.

OSI und TCP/IP in der Gegenüberstellung.
Abbildung 3: OSI und TCP/IP in der Gegenüberstellung.

Beide Modelle weisen jedoch auch viele Unterschiede auf:

  • Spezialisierung: Der Hauptunterschied zwischen dem TCP/IP-Modell und dem OSI-Modell ist der Grad der Spezialisierung. Das OSI-Modell ist eine abstraktere Darstellung der Art und Weise, wie Daten ausgetauscht werden. Es ist nicht speziell für ein bestimmtes Protokoll konzipiert. Es ist ein Rahmenwerk für allgemeine Netzwerksysteme. Der TCP/IP-Stack ist spezifischer und umfasst die wichtigsten Protokolle, die für den Austausch von Daten verwendet werden.
  • Protokollabhängigkeit: Das OSI-Modell ist abstrakt und basiert eher auf Funktionalität und ist nicht protokollabhängig. Der TCP/IP-Stack ist konkret und protokollabhängig.
  • Anzahl der Schichten: Das OSI-Modell hat sieben Schichten, während das TCP/IP-Modell nur vier Layer hat.
  • Entwicklung und Verwendung: Das vom US-Verteidigungsministerium entwickelte TCP/IP-Modell ist dem OSI-Modell vorausgegangen und hat sich zum De-facto-Standard für die Internetkommunikation entwickelt. Das OSI-Modell wurde von der Internationalen Organisation für Standardisierung (ISO) entwickelt und ist eher ein konzeptionelles Modell.
  • Komplexität: Das OSI-Modell ist kompliziert und detailliert, es enthält mehr Schichten und eine detaillierte Aufschlüsselung der Funktionen. Im Gegensatz dazu ist das TCP/IP-Modell einfacher und schlanker. Es konzentriert sich auf die wesentlichen Funktionen, die für die Internetkommunikation erforderlich sind.

Erweiterungen und Alternativen zu TCP

Google hat das Protokoll QUIC (Quick UDP Internet Connections) entwickelt. QUIC kombiniert die Zuverlässigkeit von TCP mit der Geschwindigkeit von UDP und wird von HTTP/3 verwendet. Obwohl es TCP nicht vollständig ersetzen kann, bietet es für bestimmte Anwendungen Vorteile, insbesondere bei latenzkritischen Datenübertragungen.

Im Internet der Dinge (IoT) spielen Geräte mit begrenzten Ressourcen eine große Rolle. TCP ist für viele dieser IoT-Geräte zu ressourcenintensiv, weshalb häufig auf leichtere Protokolle wie CoAP (Constrained Application Protocol) oder MQTT (Message Queuing Telemetry Transport) ausgewichen wird. Dennoch bleibt TCP für viele Anwendungen relevant, insbesondere dort, wo es auf Zuverlässigkeit ankommt.

Die Erweiterung TCP Fast Open reduziert die Latenz, indem sie Daten schon während des Verbindungsaufbaus sendet, ohne den Drei-Wege-Handshake vollständig abzuwarten.

Multipath TCP (MPTCP) ermöglicht die gleichzeitige Übertragung von Daten über mehrere Netzwerkpfade, was die Zuverlässigkeit und Geschwindigkeit erhöht. MPTCP ist vor allem in Mobilfunknetzen und IoT-Szenarien nützlich.

Hinweis: Dieser Artikel wurde von der ComputerWeekly-Redaktion aktualisiert, um Branchenveränderungen widerzuspiegeln und das Leseerlebnis zu verbessern.

Diese Definition wurde zuletzt im Januar 2025 aktualisiert

Erfahren Sie mehr über LAN-Design und Netzwerkbetrieb