🌐

TCP – Von Anfang bis Ende

Verbindungsaufbau · Datentransfer · Verbindungsabbau · Hintergrundwissen · Übungen

Netzwerke · Klasse 10 · Gymnasium
🎯 Worum geht's? Klasse 8–11 · 2 Unterrichtsstunden

Nach dieser Seite kannst du …

  • eine vollständige TCP-Verbindung beschreiben: Aufbau, Datentransfer, Abbau
  • Sequenz- und Bestätigungsnummern beim Datentransfer verfolgen
  • den Verbindungsabbau mit vier Schritten und TIME_WAIT erklären

Vorwissen: TCP-Handshake

📊 Sequenzdiagramm

💻
Client
Browser
🖥️
Server
Web-Server
⏸ Wähle ein Szenario und starte die Animation

📍 Phasen

🤝
Verbindungsaufbau Three-Way Handshake
✅
📦
Datentransfer HTTP Request / Response
✅
👋
Verbindungsabbau Four-Way Handshake
✅

📋 Protokoll

Paket Flags SEQ / ACK Daten

🎮 Steuerung

🐢 🐇 1.5 s

🤝 Verbindungsaufbau

Der Three-Way Handshake (SYN → SYN-ACK → ACK) stellt sicher, dass beide Seiten bereit sind und ihre Sequenznummern ausgetauscht haben.

📦 Datentransfer

Jedes Datenpaket wird mit einer Sequenznummer versehen. Der Empfänger bestätigt mit ACK. Fehlen Pakete, werden sie wiederholt.

👋 Verbindungsabbau

Der Four-Way Handshake (FIN → ACK → FIN → ACK) erlaubt beiden Seiten unabhängig voneinander zu signalisieren, dass sie fertig sind.

⏳ TIME_WAIT

Nach dem letzten ACK wartet der Client im Zustand TIME_WAIT, bevor er vollständig schließt – um verspätete Pakete noch verarbeiten zu können.

📝 Aufgaben

🏆 Fortschritt

Punkte: 0 / 0
✏️

Wähle links eine Aufgabe aus.

📑 Inhalt

📡 Was ist TCP?
🗂️ TCP-Header
🚩 Flags erklärt
🔄 Zustände
🤝 Handshake-Detail
⚖️ TCP vs. UDP
📜 Geschichte
🌍 Anwendungen

📡 Was ist TCP?

TCP steht für Transmission Control Protocol und ist eines der wichtigsten Protokolle des Internets. Es gehört zur Transportschicht (Schicht 4) des OSI-Modells und stellt sicher, dass Daten zuverlässig, vollständig und in der richtigen Reihenfolge übertragen werden.

TCP ist ein verbindungsorientiertes Protokoll: Bevor Daten übertragen werden, wird eine logische Verbindung zwischen Sender und Empfänger aufgebaut. Diese Verbindung wird nach der Übertragung wieder geordnet abgebaut.

💡 Merksatz: TCP ist wie ein Telefonat – erst wird eine Verbindung aufgebaut, dann wird gesprochen, dann wird aufgelegt. Jedes Wort wird bestätigt.

TCP arbeitet über IP (Internet Protocol) und bildet zusammen mit diesem das Fundament des Internets – oft als TCP/IP-Suite bezeichnet.

✅

Zuverlässigkeit

Jedes Paket wird bestätigt. Verlorene Pakete werden wiederholt.

🔢

Reihenfolge

Sequenznummern garantieren die richtige Reihenfolge der Daten.

🚦

Flusskontrolle

Window-Size verhindert Überlastung des Empfängers.

🌐

Staukontrolle

TCP erkennt Netzüberlastung und drosselt die Senderate.

🗂️ Der TCP-Header

Jedes TCP-Paket (Segment) enthält einen Header mit mindestens 20 Bytes. Der Header enthält alle Steuerinformationen, die TCP benötigt, um die Verbindung zuverlässig zu verwalten.

Source Port
Bits 0–15 · 16 Bit
Port des Senders (z. B. 54231 beim Browser)
Destination Port
Bits 16–31 · 16 Bit
Port des Empfängers (z. B. 80 für HTTP, 443 für HTTPS)
Sequence Number
Bits 32–63 · 32 Bit
Positionsnummer des ersten Datenbytes in diesem Segment
Acknowledgment Nr.
Bits 64–95 · 32 Bit
Nächste erwartete Sequenznummer vom Sender
Data Offset
Bits 96–99 · 4 Bit
Länge des Headers in 32-Bit-Wörtern (min. 5 = 20 Bytes)
Flags (Control Bits)
Bits 100–111 · 9 Bit
SYN, ACK, FIN, RST, PSH, URG, ECE, CWR, NS
Window Size
Bits 112–127 · 16 Bit
Empfangspuffergröße – Flusskontrolle
Checksum
Bits 128–143 · 16 Bit
Prüfsumme zur Fehlererkennung im Header und Daten
Urgent Pointer
Bits 144–159 · 16 Bit
Nur relevant, wenn URG-Flag gesetzt
Options (variabel)
Bits 160+ · 0–320 Bit
z. B. Maximum Segment Size (MSS), Timestamps
🔢 Ports: Bekannte Ports: HTTP=80, HTTPS=443, FTP=21, SSH=22, DNS=53, SMTP=25

🚩 TCP-Flags erklärt

TCP-Flags sind einzelne Bits im Header, die den Typ und Zweck eines Pakets bestimmen. Sie können kombiniert werden (z. B. SYN+ACK).

Flag Name Bedeutung Verwendet bei
SYN Synchronize Verbindungsaufbau initiieren, ISN austauschen Handshake (Schritt 1 & 2)
ACK Acknowledge Empfang bestätigen. ACK-Nr. = SEQ + 1 Fast alle Pakete nach dem 1. SYN
FIN Finish Sender hat keine Daten mehr → Verbindung beenden Verbindungsabbau (4-Way)
RST Reset Verbindung sofort abbrechen (Fehler oder Ablehnung) Fehlerbehandlung
PSH Push Daten sofort an Anwendung weitergeben, nicht puffern Interaktive Übertragungen
URG Urgent Daten sind dringend, sollen vorrangig verarbeitet werden Selten (z. B. Telnet-Unterbrechung)
ECE ECN-Echo Netzüberlastung rückmelden (Explicit Congestion Notification) Staukontrolle
CWR Congestion Window Reduced Bestätigung: Senderate wurde gedrosselt Staukontrolle

🔄 TCP-Zustände (State Machine)

Eine TCP-Verbindung durchläuft verschiedene Zustände. Jede Seite (Client und Server) verwaltet ihren eigenen Zustand unabhängig.

CLOSED
Keine Verbindung. Anfangszustand.
LISTEN
Server wartet auf eingehende Verbindungen.
SYN_SENT
Client hat SYN gesendet, wartet auf SYN-ACK.
SYN_RECEIVED
Server hat SYN empfangen und SYN-ACK gesendet.
ESTABLISHED
Verbindung aktiv. Datentransfer möglich.
FIN_WAIT_1
Client hat FIN gesendet, wartet auf ACK.
FIN_WAIT_2
ACK erhalten, wartet auf FIN des Servers.
CLOSE_WAIT
Server hat FIN empfangen. Kann noch Daten senden.
LAST_ACK
Server hat FIN gesendet, wartet auf letztes ACK.
TIME_WAIT
Wartet 2×MSL (ca. 60–120 s) auf verspätete Pakete.
CLOSING
Beide senden gleichzeitig FIN (selten).
💡 TIME_WAIT schützt vor dem seltenen Fall, dass das letzte ACK verloren geht und der Server erneut FIN sendet. MSL = Maximum Segment Lifetime.

🤝 Der Handshake im Detail

Der Three-Way Handshake dient drei Zwecken gleichzeitig: Verbindung ankündigen, Sequenznummern synchronisieren und Empfangsbereitschaft bestätigen.

Warum zufällige Sequenznummern (ISN)?
Zufällige Initial Sequence Numbers verhindern, dass alte Pakete aus früheren Verbindungen fälschlicherweise akzeptiert werden – eine wichtige Sicherheitsmaßnahme.

Der Four-Way Handshake beim Abbau ist nötig, weil TCP halbduplex-fähig ist: Jede Seite muss ihren Sendeschluss unabhängig ankündigen. Nach dem FIN des Clients kann der Server noch Daten senden.

⚠️ SYN-Flood-Angriff: Angreifer senden massenhaft SYN-Pakete, ohne je ACK zu antworten. Der Server blockiert Ressourcen in SYN_RECEIVED. Schutz: SYN-Cookies.

Moderne Variante: TCP Fast Open (TFO) erlaubt das Mitsenden von Daten bereits im SYN-Paket, um die Latenz um eine Round-Trip-Time zu reduzieren.

⚖️ TCP vs. UDP

Neben TCP gibt es UDP (User Datagram Protocol) als zweites wichtiges Transportprotokoll. Beide haben ihre Berechtigung – je nach Anwendungsfall.

Merkmal TCP UDP
Verbindungstyp Verbindungsorientiert Verbindungslos
Zuverlässigkeit ✔ Garantiert ✗ Keine Garantie
Reihenfolge ✔ Garantiert ✗ Nicht garantiert
Fehlerkorrektur ✔ Retransmission ✗ Keine
Flusskontrolle ✔ Ja (Window) ✗ Nein
Overhead Hoch (≥ 20 Byte Header) Niedrig (8 Byte Header)
Geschwindigkeit Langsamer ✔ Schneller
Handshake Ja (3-Way) Nein
Typische Nutzung HTTP, E-Mail, FTP, SSH Video-Streaming, DNS, VoIP, Gaming
💡 QUIC (HTTP/3) kombiniert das Beste aus beiden Welten: Schnelligkeit wie UDP, aber mit eigener Zuverlässigkeit – und läuft über UDP.

📜 Geschichte des TCP

1974
Erste Spezifikation
Vint Cerf und Bob Kahn veröffentlichen „A Protocol for Packet Network Intercommunication" – die Grundlage von TCP/IP.
1981
RFC 793 – TCP-Standard
TCP wird als offizieller Internet-Standard verabschiedet. Dieser RFC ist noch heute gültig.
1983
ARPANET wechselt zu TCP/IP
Am 1. Januar 1983 (Flag Day) stellt das ARPANET komplett auf TCP/IP um – das moderne Internet entsteht.
1988
Staukontrolle
Van Jacobson führt TCP-Staukontrolle ein (Slow Start, Congestion Avoidance) nach mehreren Netz-Zusammenbrüchen.
2022
HTTP/3 & QUIC
HTTP/3 wird standardisiert (RFC 9114). Es läuft über QUIC statt TCP – eine neue Ära der Transportprotokolle beginnt.

🌍 TCP in der Praxis

TCP ist das Rückgrat des Internets. Fast alle Anwendungen, bei denen Datenverlust inakzeptabel ist, nutzen TCP:

🌐

HTTP / HTTPS

Webseiten werden über TCP geladen. Port 80 (HTTP) und 443 (HTTPS).

📧

E-Mail

SMTP (Port 25/587), IMAP (143), POP3 (110) – alle über TCP.

🔐

SSH

Sichere Remote-Verbindungen über Port 22. Jedes Byte muss ankommen.

📁

FTP

Dateiübertragung über Port 21 (Steuerung) und 20 (Daten).

🗄️

Datenbanken

MySQL (3306), PostgreSQL (5432) – Datenintegrität ist kritisch.

💬

Chat / API

REST-APIs, WebSockets – zuverlässige bidirektionale Kommunikation.