# TCP (Transmission Control Protocol) – das Transportprotokoll im Porträt

Wollen wir uns mit dem Internet verbinden, stellen wir mit einigen, wenigen Handgriffen eine Verbindung zwischen Router und Computer bzw. Mobilgerät her – wahlweise per Kabel oder drahtlosem Log-in. Weitere Schritte sind nicht erforderlich, denn die Anmeldung im Netzwerk funktioniert ebenso automatisch wie der Bezug einer individuellen Internetadresse, die Sie für das Empfangen und Senden von Daten benötigen. Möglich macht dies eine Sammlung verschiedener Protokolle, die auch als **Internetprotokollfamilie** bezeichnet wird. Eines der ältesten und wichtigsten Mitglieder ist dabei das Transmission Control Protocol (TCP). Es legt fest, wie die im Netzwerk vereinten Geräte Daten auszutauschen haben.

## Was ist TCP (Transmission Control Protocol)?

Das Transmission Control Protocol, kurz TCP oder TCP-Protokoll, ist eine standardisierte Vereinbarung zur Datenübertragung zwischen verschiedenen Teilnehmern eines Computernetzwerks. Die **Geschichte dieses Protokolls geht bis in das Jahr 1973 zurück**, in dem die beiden Informatiker Robert E. Kahn und Vinton G. Cerf im Rahmen ihrer Forschungsarbeit bereits eine erste Version veröffentlichten. Bis zur Standardisierung von TCP im [RFC 793](https://tools.ietf.org/html/rfc793 "ietf.org – RFC 793: „Transmission Control Protocol“") sollten allerdings noch acht weitere Jahre vergehen. Seitdem gab es eine Reihe von **Verbesserungen und Erweiterungen**, wobei das Protokoll im Kern bis heute unverändert geblieben ist. Die aktuelle Version, die im [RFC 7323](https://tools.ietf.org/html/rfc7323 "ietf.org – RFC 7323: „TCP Extensions for High Performance“") festgehalten wurde, stammt aus dem Jahr 2014.

Der heutige Entwicklungsstatus des TCP-Protokolls erlaubt es zwei Endpunkten in einem gemeinsamen Computernetz, eine Verbindung aufzubauen, die eine **beidseitige Datenübertragung** erlaubt. Dabei werden jegliche Datenverluste erkannt und automatisch behoben, weshalb man es auch als **zuverlässiges Protokoll** bezeichnet. In der Internetprotokollfamilie bildet TCP gemeinsam mit [UDP](https://www.ionos.at/digitalguide/server/knowhow/udp-user-datagram-protocol/ "UDP - User Datagram Protocol") und [SCTP](https://www.ionos.at/digitalguide/server/knowhow/sctp-stream-control-transmission-protocol/ "SCTP - Stream Control Transmission Protocol") die Gruppe der Transportprotokolle, die nach dem [OSI-Modell](https://www.ionos.at/digitalguide/server/knowhow/das-osi-modell-referenz-fuer-standards-und-protokolle/ "Das OSI-Modell: Referenz für Standards und Protokolle") in der Netzwerk-Architektur auf der Transportschicht eingestuft werden. Da das TCP-Protokoll in fast allen Fällen auf dem [Internet Protocol (IP)](https://www.ionos.at/digitalguide/server/knowhow/was-ist-das-internet-protocol-definition-von-ip-co/ "Was ist das Internet Protocol? – Definition von IP &amp; Co.") aufsetzt und diese Verbindung die Basis für den Großteil aller öffentlichen und lokalen Netzwerke und Netzwerkdienste bildet, ist häufig auch vom **TCP/IP-Protokollstapel** die Rede, wenn im eigentlichen Sinne die Internetprotokollfamilie gemeint ist.

## Wie funktionieren Verbindungen mit dem TCP-Protokoll genau?

TCP lässt die **Übertragung von Informationen in beide Richtungen** zu. Computersysteme, die über TCP kommunizieren, können also wie bei einem Telefongespräch zur gleichen Zeit Daten senden und empfangen. Die grundlegenden Übertragungseinheiten, auf die das Protokoll dabei zurückgreift, sind Segmente (Pakete), die zusätzlich zu den Nutzdaten auch Steuerungsinformationen enthalten können und auf eine Größe von 1.500 Byte beschränkt sind. Der Auf- und Abbau der Verbindungen, die sich als Ende-zu-Ende-Verbindungen einstufen lassen, sowie die Datenübertragung selbst werden von **TCP-Software** im Netz-Protokollstapel des jeweiligen Betriebssystems übernommen.

Die TCP-Software wird von den verschiedenen Netzwerkanwendungen wie Webbrowsern oder Servern über spezifische Schnittstellen angesteuert, wobei jede Verbindung immer durch zwei klar definierte Endpunkte ([Client](https://www.ionos.at/digitalguide/server/knowhow/was-ist-ein-client/ "Was ist ein Client?") und Server) identifiziert werden muss. Welche Seite die Client- und welche die Serverrolle übernimmt, spielt dabei keine Rolle – wichtig ist, dass die TCP-Software pro Endpunkt ein eindeutiges, geordnetes Paar aus IP-Adresse und Port (auch als „2-Tupel“ oder „Socket“ bezeichnet) zur Verfügung stehen hat.

### Der Drei-Wege-Handshake: So funktioniert der TCP-Verbindungsaufbau im Detail

Die Voraussetzungen für den Aufbau einer gültigen TCP-Verbindung: Beide involvierten Endpunkte müssen bereits über eine **eindeutige IP-Adresse** (IPv4 oder IPv6) verfügen und den **gewünschten** **Port** für die Datenübertragung deklariert und freigegeben haben. Während erstere als Identifikationsmerkmal fungiert, ist letzterer für die Zuordnung der Verbindungen zu den konkreten Client- und Serveranwendungen durch das Betriebssystem relevant.

---

### Tipp

Wie genau das **Zusammenspiel zwischen TCP und IP** funktioniert, erfahren Sie in unserem großen [TCP/IP](https://www.ionos.at/digitalguide/server/knowhow/tcpip-vorgestellt/ "TCP/IP vorgestellt")-Artikel.

---

Der konkrete **Ablauf** beim Verbindungsaufbau mit dem TCP-Protokoll sieht folgendermaßen aus:

1. Im ersten Schritt sendet der verbindungssuchende **Client** dem Server ein **SYN-Paket** bzw. -Segment (von engl. *synchronize* = „synchronisieren“) mit einer individuellen, zufälligen Sequenznummer. Diese Nummer stellt die vollständige Übertragung in der korrekten Reihenfolge (ohne Duplikate) sicher.
2. Hat der **Server** das Segment erhalten, stimmt er dem Verbindungsaufbau zu, indem er ein **SYN-ACK-Paket** (von engl. *acknowledgement* = „Bestätigung“) inklusive der um 1 erhöhten Sequenznummer des Clients zurückschickt. Zusätzlich übermittelt er dem Client seine eigene Sequenznummer.
3. Zum Abschluss bestätigt der **Client** den Erhalt des SYN-ACK-Segments, indem er ein eigenes **ACK-Paket** versendet, das in diesem Fall die um 1 erhöhte Sequenznummer des Servers enthält. Gleichzeitig kann er bereits die ersten Daten an den Server übertragen.

[![Bild: TCP-Verbindungsaufbau (Drei-Wege-Handshake)](https://www.ionos.at/digitalguide/fileadmin/_processed_/b/8/csm_tcp-verbindungsaufbau-drei-wege-handshake_ac262f64f2.webp "TCP-Verbindungsaufbau (Drei-Wege-Handshake)")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Schaubilder/tcp-verbindungsaufbau-drei-wege-handshake.jpg) TCP-Verbindungsaufbau (Drei-Wege-Handshake)       Da der Verbindungsaufbau via Transmission Control Protocol also insgesamt drei Schritte umfasst, hat sich für diesen Prozess der Name „**Drei-Wege-Handshake**“ etabliert.

---

### Hinweis

Ist der Port des Servers geschlossen bzw. der Zugriff blockiert, erhält der Client anstelle eines Bestätigungspakets ein **TCP-RST-Paket** (von engl. *reset* = „zurücksetzen“).

---

### TCP-Teardown: So funktioniert der geregelte TCP-Verbindungsabbau

Beide Kommunikationspartner können eine etablierte TCP-Verbindung trennen und sogar ein einseitiger Verbindungsabbau ist möglich. Letzteres wird auch als **halb geschlossene Verbindung** bezeichnet, bei der es der Gegenseite auch dann noch erlaubt ist, Daten zu übertragen, wenn ein Teilnehmer die Verbindung bereits getrennt hat.

Die einzelnen Stationen des **beiderseitigen Verbindungsabbaus** (der Einfachheit halber auch in diesem Fall vom Client initiiert) lassen sich folgendermaßen zusammenfassen:

1. Der **Client** sendet ein **FIN-Segment** an den Server und teilt diesem damit mit, dass er keine Daten mehr senden möchte. Wie beim Verbindungsaufbau sendet er eine eigene Sequenznummer mit.
2. Den Erhalt des Pakets quittiert der **Server** mit einem **ACK-Segment**, das die um 1 erhöhte Sequenznummer enthält.
3. Ist der **Server** seinerseits mit der Datenübertragung fertig, sendet er ebenfalls ein **FIN-Paket**, dem er wiederum seine Sequenznummer beifügt.
4. Nun ist der **Client** an der Reihe, ein **ACK-Paket** inklusive der um 1 erhöhten Sequenznummer zu senden, wodurch die TCP-Verbindung für den Server offiziell beendet ist.

[![Bild: TCP-Verbindungsaufbau (TCP-Teardown)](https://www.ionos.at/digitalguide/fileadmin/_processed_/5/1/csm_tcp-verbindungsabbau-tcp-teardown_091d1cc18c.webp "TCP-Verbindungsaufbau (TCP-Teardown)")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Schaubilder/tcp-verbindungsabbau-tcp-teardown.jpg) TCP-Verbindungsaufbau (TCP-Teardown)       Für die Partei, die das letzte ACK-Segment gesendet hat (in unserem Fall: der Client), ist die Verbindung allerdings **noch nicht sofort beendet**. Da es keine Garantie dafür gibt, dass das zuletzt geschickte Paket auch tatsächlich angekommen ist, verweilt der jeweilige Kommunikationspartner zunächst in einem **Wartemodus** (auch „Time-Wait-Zustand“), bis die **maximalen Laufzeiten** des ACK- und eines eventuell neu verschickten FIN-Segments abgelaufen sind (nach RFC 793 jeweils zwei Minuten).

## Wie sieht der Aufbau des TCP-Headers aus?

Protokolltypisch befinden sich die entscheidenden Daten, die für den Verbindungsaubau und die Datenübertragung mit dem Transmission Control Protocol benötigt werden, im **Header** eines TCP-Pakets. Diese **Kopfdaten** (auch Steuerinformationen) stehen der zu übertragenden Nutzlast (Payload) voran und haben **typischerweise eine Größe von 20 Byte** (160 Bit), gefolgt von bis zu 40 Byte (320 Bit) Zusatzinformationen, die optional sind und nicht in allen Paketen Verwendung finden.

---

### Hinweis

Sollen lediglich Bestätigungen, Fehlernachrichten etc. übermittelt werden, wie z. B. bei den SYN- und FIN-Nachrichten (Verbindungsaufbau/-abbau), sind auch **TCP-Segmente ohne Nutzdaten**, also im Prinzip reine Header, zulässig.

---

Im Detail setzt sich der **TCP-Header** wie folgt zusammen:

[![Bild: TCP-Header: Aufbau](https://www.ionos.at/digitalguide/fileadmin/_processed_/2/2/csm_tcp-header_208c418ea7.webp "TCP-Header: Aufbau")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2019/tcp-header.jpg) TCP-Header: Aufbau       Die einzelnen Komponenten bzw. Felder der Kopfzeile des TCP-Protokolls haben dabei folgende Bedeutung:

**Quell-Port** (16 Bit): Gibt die Portnummer des Senders an.

**Ziel-Port** (16 Bit): Gibt die Portnummer des Empfängers an.

**Sequenznummer** (32 Bit): Die Sequenznummer gibt wahlweise das erste Byte der angehängten Nutzdaten an oder wird im Rahmen des Verbindungsaufbaus bzw. -abbaus mitgeschickt. Sie dient gleichermaßen der Validierung und Sortierung (im Anschluss an die Übertragung) der Segmente.

**Bestätigungsnummer** (32 Bit): In diesem Feld wird die Bestätigungsnummer angegeben, die der Absender als nächstes erwartet. Voraussetzung für die Gültigkeit ist ein gesetztes ACK-Flag (im Feld „Flags“).

**Offset** (4 Bit): Das Feld „Offset“ weist die Länge des TCP-Headers in 32-Bit-Blöcken aus, um den Startpunkt der Nutzdaten hervorzuheben. Dieser ist aufgrund des variablen Optionsfelds von Segment zu Segment verschieden.

**Reserviert** (6 Bit): RFC 793 entsprechend für künftige Nutzung reserviert, bis dato nicht verwendet. Dieses Feld muss immer den Wert „0“ haben.

**Flags** (6 Bit): Über die sechs möglichen Einzel-Bits im Flags-Feld lassen sich verschiedene TCP-Aktionen aktivieren, um die Kommunikation und Datenverarbeitung zu organisieren. Bei den Flags, die hierfür entweder gesetzt oder nicht gesetzt werden, handelt es sich um folgende:

- **URG**: Das „Urgent“-Flag (dt. „dringend“) signalisiert der TCP-Anwendung, dass die Nutzdaten bis zum gesetzten Urgent-Pointer (s. u.) sofort zu verarbeiten sind.
- **ACK**: In Kombination mit der Bestätigungsnummer hat das ACK-Flag die Funktion, den Empfang von TCP-Paketen zu quittieren. Ist das Flag nicht gesetzt, ist automatisch auch die Bestätigungsnummer ungültig.
- **PSH**: Das „Push“-Flag sorgt dafür, dass ein TCP-Segment sofort bereitgestellt wird, ohne zunächst im Puffer von Sender und Empfänger zu landen.
- **RST**: Ist bei der Übertragung ein Fehler aufgetreten, lässt sich die Verwendung durch ein TCP-Paket mit gesetztem RST-Flag („Reset“) zurücksetzen.
- **SYN**: Nachrichten mit gesetztem SYN-Flag stellen den ersten Schritt des Drei-Wege-Handshakes dar – initiieren also den Verbindungsaufbau.
- **FIN**: Das „Finish“-Flag signalisiert dem Gegenüber, dass ein Kommunikationspartner die Übertragung beendet.

**Fenstergröße** (16 Bit): In diesem Feld wird dem Kommunikationspartner die Anzahl an Bytes übermittelt, die der Sender bereit ist zu empfangen.

**Prüfsumme** (16 Bit): Das Transmission Control Protocol kann Übertragungsfehler zuverlässig erkennen. Hierfür wird die Prüfsumme herangezogen, die aus dem Header, den Nutzdaten und dem sogenannten Pseudo-Header berechnet wird.

**Urgent-Pointer** (16 Bit): Der Urgent-Pointer („Dringend“-Anzeiger) gibt die Position des ersten Bytes nach den dringlich zu behandelnden Nutzdaten an. Folglich ist dieses Feld nur gültig und relevant, wenn das URG-Flag gesetzt ist.

**Optionen** (0–320 Bit): Sollen TCP-Funktionen bereitgestellt werden, die nicht in den generellen Header gehören, geschieht dies über das Optionsfeld – ein mögliches Beispiel ist die Definition der maximalen Segmentgröße. Die Optionen müssen immer eine Länge des Vielfachen von 32 Bit haben, andernfalls ist die Auffüllung mit Null-Bits (Padding) erforderlich.

## So funktioniert die Datenübertragung via TCP-Protokoll im Detail

Noch bevor die ersten Daten übertragen werden, einigen sich Sender und Empfänger typischerweise zunächst auf die **maximale Größe der zu versendenden TCP-Segmente** (Maximum Segment Size – MSS). Standardmäßig sind dabei bis zu 1.500 Byte pro Segment möglich, wobei mindestens 20 Byte für den TCP-Header und weitere 20 Byte für den IP-Header einzuplanen sind, sodass **1.460 Byte für Nutzdaten** übrigbleiben. Ist eine individuelle Größe gewünscht, muss dies wie oben beschrieben über das Optionsfeld spezifiziert werden, wodurch weitere Abstriche für den Nutzdatenteil zu machen sind.

Rechnet man mit der maximalen Segmentgröße abzüglich der Header, bedeutet das also, dass ein TCP-Paket lediglich Daten mit einer Größe von **1,46 Kilobyte** bzw. **0,00146 Megabyte** übertragen kann. Damit nun Webinhalte wie Bilder, die auch mal mehrere Hunderte Kilobyte groß sind, über das TCP-Protokoll ausgetauscht werden können, kommt die **Segmentierung** zum Einsatz, bei der die Anwendungsdaten vor dem Transport in mehrere Datenblöcke aufgeteilt, nummeriert und dann in zufälliger Abfolge versendet werden. Da der Empfänger den Erhalt jedes einzelnen Segments **quittieren** muss und die **tatsächliche Reihenfolge** anhand der Sequenznummern **rekonstruieren** kann, kann er die erhaltenen Nutzdaten im Anschluss an die TCP-Übertragung problemlos und vollständig wieder zusammensetzen.

---

### Hinweis

Erhält der Sender für ein verschicktes Segment keine Rückmeldung, kommt der sogenannte **Retransmission Timeout (RTO)** zum Tragen. Läuft dieser Timer nach dem Versand eines Pakets ab, bevor eine Antwort übertragen wird, wird automatisch der erneute Versand initiiert. Die Laufzeit des Timers, die dynamisch durch einen Algorithmus angepasst wird, hängt dabei von der individuellen Übertragungsgeschwindigkeit ab.

---

## Die wichtigsten Fakten zum Transmission Control Protocol in der Zusammenfassung

Rund ein halbes Jahrhundert lang hat das TCP-Protokoll die Geschichte und Entwicklung von Computernetzwerken bereits geprägt. Das liegt einerseits an der guten Kombinierbarkeit mit dem ebenfalls geschichtsträchtigen Internetprotokoll (IP), andererseits an den vorwiegend vorteilhaften Eigenschaften, durch die sich TCP von Alternativen wie UDP und SCTP abhebt. Die wichtigsten Merkmale lassen sich dabei wie folgt zusammenfassen:

- TCP ist **verbindungsorientiert** und ermöglicht eine wechselseitige Kommunikation zwischen zwei Endpunkten nach dem sogenannten Drei-Wege-[Handshake](https://www.ionos.at/digitalguide/server/knowhow/was-ist-das-handshake-verfahren/).
- TCP ist **zuverlässig**, denn das Protokoll stellt sicher, dass alle Daten vollständig übertragen werden und vom Empfänger in der richtigen Reihenfolge zusammengesetzt werden können.
- TCP sieht den Versand der Daten in einzelnen Segmenten vor, die eine maximale Größe von **1.500 Bytes** (inklusive Header) haben können.
- TCP wird – im OSI-Modell – auf der **Transportschicht** (Layer 4) eingestuft.
- TCP setzt in den meisten Fällen auf dem **Internetprotokoll (IP)** auf, weshalb häufig auch vom TCP/IP-Protokollstapel gesprochen wird.
- Der **TCP-Header** hat eine Standardgröße von 20 Byte – es können bis zu 40 Byte an Zusatzoptionen hinzukommen.


This is a markdown version of: [https://www.ionos.at/digitalguide/server/knowhow/tcp-vorgestellt/](https://www.ionos.at/digitalguide/server/knowhow/tcp-vorgestellt/) for AI/LLM consumption.