TCP
Einführung
Das Transmission Control Protocol (TCP) ist ein verbindungsorientiertes Transportprotokoll, das zusammen mit dem Internet Protocol (IP) den Kern des TCP/IP-Modells bildet. Es sorgt für eine zuverlässige, geordnete und fehlergeprüfte Übertragung von Datenströmen zwischen Anwendungen über Netzwerke hinweg.
TCP stellt sicher, dass Datenpakete (Segmente) in der richtigen Reihenfolge und ohne Duplikate beim Empfänger ankommen. Es ist das am weitesten verbreitete Transportprotokoll im Internet.
Geschichte
TCP wurde in den 1970er-Jahren im Rahmen des ARPANET-Projekts entwickelt. 1981 wurde TCP in RFC 793 standardisiert und bildet seither die Grundlage für zahlreiche Internetprotokolle. Neuere RFCs (z. B. RFC 9293) aktualisieren und erweitern den Standard.
Hauptmerkmale
- Verbindungsorientiert – Aufbau einer logischen Verbindung vor der Datenübertragung.
- Zuverlässigkeit – durch Bestätigungen (ACKs) und Wiederholungen bei Verlust.
- Reihenfolgegarantie – Daten kommen in der gesendeten Reihenfolge an.
- Fehlerkontrolle – Prüfsummen zur Erkennung von Übertragungsfehlern.
- Flusskontrolle – Anpassung der Senderate an die Empfängerfähigkeit.
- Überlastkontrolle – Mechanismen zur Stabilisierung des Netzwerks.
TCP-Segmentaufbau
Ein TCP-Segment besteht aus einem Header und Nutzdaten. Der Header enthält u. a.:
- Quell- und Zielportnummer
- Sequenznummer
- Bestätigungsnummer (ACK)
- Datenoffset
- Steuerflags (SYN, ACK, FIN, RST, PSH, URG)
- Fenstergröße (Flow Control)
- Prüfsumme
- Urgent Pointer (selten verwendet)
- Optionale Felder (z. B. für Window Scaling, Timestamps, SACK)
Verbindungsaufbau (Three-Way Handshake)
TCP baut eine Verbindung in drei Schritten auf:
- Client sendet SYN an Server.
- Server antwortet mit SYN+ACK.
- Client bestätigt mit ACK.
Danach ist die Verbindung etabliert und Daten können übertragen werden.
Datenübertragung
- Sequenznummern stellen sicher, dass Daten korrekt zusammengesetzt werden.
- Empfangene Daten werden durch ACKs bestätigt.
- Verlust von Paketen führt zu Wiederholungen (Retransmission).
Verbindungsabbau
Der Verbindungsabbau erfolgt typischerweise durch FIN/ACK-Segmente in vier Schritten (Four-Way-Teardown). Alternativ kann RST verwendet werden, um eine Verbindung abrupt zu beenden.
Flusskontrolle
TCP nutzt ein Sliding-Window-Verfahren zur Flusskontrolle:
- Der Sender darf nur so viele Daten senden, wie der Empfänger im Fenster angibt.
- Das Fenster wird dynamisch angepasst, um Überlastungen zu vermeiden.
Überlastkontrolle
Seit den 1980er-Jahren wurden verschiedene Algorithmen entwickelt, um Netzüberlastung zu verhindern:
- Slow Start – vorsichtiger Start mit niedriger Sendrate.
- Congestion Avoidance – stufenweise Erhöhung bei stabiler Übertragung.
- Fast Retransmit und Fast Recovery – schnellere Fehlerbehebung.
- Moderne Varianten: CUBIC, BBR etc.
Ports und Multiplexing
TCP nutzt Portnummern zur Adressierung verschiedener Anwendungen auf demselben Host. Beispiele:
- Port 80 – HTTP
- Port 443 – HTTPS
- Port 22 – SSH
- Port 25 – SMTP
Sicherheit
- TCP selbst bietet keine Verschlüsselung – üblicherweise wird TLS darüber verwendet.
- Schutz vor Spoofing und Session Hijacking durch kryptografische Erweiterungen (z. B. TCP MD5 für BGP).
- Firewalls und Intrusion Detection Systeme können TCP-Verbindungen überwachen und steuern.
Leistungsoptimierungen
- Nagle-Algorithmus – reduziert kleine Pakete.
- Delayed ACK – spart Bestätigungspakete.
- Window Scaling – ermöglicht größere Fenster für Hochgeschwindigkeitsnetze.
- Selective Acknowledgments (SACK) – effizientere Wiederholung nur fehlender Segmente.
Vergleich mit anderen Transportprotokollen
| Merkmal | TCP | UDP | QUIC |
|---|---|---|---|
| Verbindungsorientiert | Ja | Nein | Ja (über UDP) |
| Reihenfolgegarantie | Ja | Nein | Ja |
| Zuverlässigkeit | Ja | Nein | Ja |
| Verschlüsselung integriert | Nein (TLS optional) | Nein (DTLS optional) | Ja (TLS 1.3) |
| Typische Anwendungen | Web, E-Mail, Dateiübertragung | DNS, Streaming | HTTP/3 |
Typische Anwendungen
- Web (HTTP/HTTPS)
- E-Mail (SMTP, IMAP, POP3)
- Dateiübertragung (FTP)
- Fernzugriff (SSH)
- Datenbanken und APIs
Literatur und Standards
- RFC 793 – Transmission Control Protocol
- RFC 9293 – Transmission Control Protocol Specification (aktuelle Version)
- RFC 7323 – TCP Extensions for High Performance
- RFC 2018 – Selective Acknowledgment (SACK)
- Andrew S. Tanenbaum: Computer Networks