Informatik

TCP verstehen: Verbindung, Zuverlässigkeit und Fehler

TCP verstehen: Verbindung, Zuverlässigkeit und Fehler
TCP verstehen: Verbindung, Zuverlässigkeit und Fehler
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

TCP sorgt dafür, dass Anwendungen über IP einen geordneten, zuverlässigen Datenstrom austauschen können. Es baut dazu eine logische Verbindung auf, nummeriert übertragene Bytes, bestätigt Empfangsfortschritte und wiederholt fehlende Daten.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Wo arbeitet TCP?

Wenn du eine Webseite abrufst oder eine Datei überträgst, müssen mehrere Protokolle zusammenarbeiten. Sie erfüllen unterschiedliche Aufgaben:

  • Ein Anwendungsprotokoll wie HTTP beschreibt die Bedeutung von Anfrage und Antwort.
  • TCP transportiert den Datenstrom zuverlässig zwischen zwei Endpunkten.
  • IP adressiert und vermittelt die einzelnen Pakete durch verschiedene Netze.
  • Ethernet oder WLAN übertragen sie über den jeweiligen Netzzugang.
Definition

TCP

Das Transmission Control Protocol ist ein verbindungsorientiertes Transportprotokoll. Es stellt Anwendungen einen bidirektionalen, geordneten Byte-Datenstrom bereit und behandelt Verlust, Duplikate und eine falsche Ankunftsreihenfolge.

TCP überträgt keine unveränderlichen „Nachrichtenblöcke“ der Anwendung. Es betrachtet die Daten als Folge von Bytes, teilt sie in Segmente und setzt den Strom beim Empfänger anhand von Sequenznummern wieder richtig zusammen.

Merke

IP beantwortet vor allem: Wohin soll ein Paket vermittelt werden? TCP beantwortet: Welche Anwendungskommunikation gehört zusammen, und welche Bytes fehlen noch?

TCP oder UDP?

TCP baut vor dem Datenaustausch eine Verbindung auf und bestätigt Empfangsfortschritte. UDP ist verbindungslos und schreibt weder Bestätigungen noch automatische Wiederholungen vor. Deshalb eignet sich TCP besonders, wenn vollständige und geordnete Daten wichtiger sind als möglichst wenig Verwaltungsaufwand.

Teste dich
Frage 1 von 1LeichtWelche Aussage trennt TCP und IP korrekt?
Lösung: TCP stellt einen geordneten Datenstrom bereit; IP adressiert und vermittelt Pakete. — TCP arbeitet auf der Transportschicht über IP. Die unterschiedlichen Aufgaben ermöglichen eine klare Schichtentrennung.
Woran erkennt TCP eine Verbindung?

Eine Anwendung greift gewöhnlich über einen Socket auf TCP zu. Ein TCP-Endpunkt besteht aus einer IP-Adresse und einem Port. Der Port hilft dem Betriebssystem, die Kommunikation dem richtigen Anwendungsendpunkt zuzuordnen.

Eine Verbindung wird durch vier Werte eindeutig beschrieben:

  1. lokale IP-Adresse,
  2. lokaler Port,
  3. entfernte IP-Adresse,
  4. entfernter Port.

Diese Kombination heißt Vierertupel. Zwei Verbindungen können daher denselben Serverport verwenden, solange sich mindestens einer der übrigen Werte unterscheidet. So kann ein Webserver gleichzeitig mit vielen Clients kommunizieren.

Beispiel

Ein Client mit der Adresse 192.0.2.10 und dem lokalen Port 53000 verbindet sich mit einem Server unter 198.51.100.8 an Port 80.

Das Vierertupel lautet:

192.0.2.10 : 53000 → 198.51.100.8 : 80

Ein zweiter Client darf ebenfalls den Zielport 80 verwenden. Seine andere IP-Adresse oder sein anderer lokaler Port hält die Verbindung eindeutig unterscheidbar.

Teste dich
Frage 1 von 1MittelZwei Clients greifen gleichzeitig auf denselben Webserver und denselben Zielport zu. Warum verwechselt TCP die Verbindungen nicht?
Lösung: Jede Verbindung besitzt ein eigenes Vierertupel aus zwei IP-Adressen und zwei Ports. — Erst die Kombination aus Quell- und Zieladresse sowie Quell- und Zielport identifiziert eine TCP-Verbindung eindeutig.
Wie entsteht die Verbindung?

Vor den Nutzdaten synchronisieren beide Seiten ihre Startsequenznummern. Dazu dient der Drei-Wege-Handshake:

  1. Der Client sendet SYN mit seiner Startsequenznummer x.
  2. Der Server antwortet bei einem offenen Port mit SYN/ACK. Er bestätigt x + 1 und sendet seine eigene Startsequenznummer y.
  3. Der Client sendet ACK und bestätigt y + 1.

SYN bedeutet, dass eine Seite eine Verbindung beginnen und Sequenznummern synchronisieren möchte. ACK kennzeichnet eine gültige Bestätigung. Antwortet ein erreichbarer Rechner auf einen geschlossenen Port, kann er die Anfrage mit RST zurückweisen.

Lückentext

Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.

Beim Drei-Wege-Handshake sendet der Client zuerst . Ein offener Server antwortet mit . Abschließend sendet der Client .

Lösungen: Lücke 1: SYN; Lücke 2: SYN/ACK; Lücke 3: ACK. Die Reihenfolge lautet SYN, SYN/ACK, ACK. Erst danach beginnt gewöhnlich die Übertragung der Anwendungsdaten.
Gut zu wissen

Ein erfolgreicher Handshake zeigt, dass beide TCP-Endpunkte zu diesem Zeitpunkt erreichbar und bereit waren. Er garantiert nicht, dass der Netzwerkpfad danach störungsfrei bleibt oder alle späteren Daten ankommen.

Wie macht TCP den Datenstrom zuverlässig?

TCP verwendet mehrere Mechanismen gemeinsam:

  • Sequenznummern bezeichnen Positionen im Byte-Datenstrom.
  • Bestätigungen nennen das nächste erwartete Byte.
  • Prüfsummen helfen, Übertragungsfehler in Segmenten zu erkennen.
  • Timeouts lösen Wiederholungen aus, wenn eine Bestätigung ausbleibt.
  • Der Empfänger sortiert verspätete Segmente und verwirft Duplikate.
Beispiel

Ein Segment beginnt mit der Sequenznummer 1001 und enthält 500 Byte Nutzdaten. Nach lückenlosem Empfang bestätigt die Gegenseite:

1001 + 500 = 1501

Sie sendet also ACK = 1501. Das bedeutet nicht nur „Segment angekommen“, sondern genauer: Alle Bytes bis 1500 liegen lückenlos vor; als Nächstes wird Byte 1501 erwartet.

Bestätigungen können kumulativ sein. Sind mehrere aufeinanderfolgende Bereiche angekommen, genügt die Angabe des nächsten fehlenden Bytes. Fehlt ein Bereich, kann die Bestätigung zunächst nicht über diese Lücke hinausgehen. Mit SACK kann der Empfänger zusätzlich mitteilen, welche späteren Bereiche bereits vorhanden sind.

Warum braucht TCP einen Timeout?

Bleibt eine Bestätigung aus, kann ein Segment oder seine Bestätigung verloren gegangen sein. Nach einer angemessenen Wartezeit überträgt der Sender die Daten erneut. Ein zu kurzer Timeout erzeugt unnötige Wiederholungen; ein zu langer Timeout verzögert die Reparatur eines Verlusts. TCP passt die Wartezeit deshalb an gemessene Laufzeiten an.

Teste dich
Frage 1 von 2MittelEin Segment beginnt bei SEQ = 1001 und transportiert 500 Byte. Welche Bestätigung passt nach lückenlosem Empfang?
Lösung: ACK = 1501 — Das erste Byte hat die Nummer 1001. Nach 500 aufeinanderfolgenden Bytes ist 1501 die nächste erwartete Position.
Frage 2 von 2SchwerDie Segmente 1, 2 und 4 sind angekommen, Segment 3 fehlt. Warum kann die normale kumulative Bestätigung nicht einfach Segment 4 als lückenlos bestätigen?
Lösung: Weil die Bestätigung nur bis zum nächsten fehlenden Byte reicht. — Der spätere Bereich kann gepuffert werden. Die kumulative ACK-Nummer bleibt dennoch an der Lücke stehen; SACK kann den später empfangenen Bereich zusätzlich melden.
Wie begrenzt TCP die Sendemenge?

Zuverlässigkeit allein reicht nicht. Ein schneller Sender könnte einen langsamen Empfänger oder ein überlastetes Netz mit Daten überfordern. TCP unterscheidet deshalb zwei Aufgaben.

Definition

Flusssteuerung

Die Flusssteuerung schützt den Empfänger. Er meldet mit seinem Empfangsfenster, wie viele weitere Bytes in seinen Puffer passen.

Meldet der Empfänger Window = 0, hält der Sender die normale Datenübertragung zunächst an. Gibt die Anwendung Pufferplatz frei, kann der Empfänger wieder ein größeres Fenster ankündigen.

Definition

Überlaststeuerung

Die Überlaststeuerung schützt den Netzwerkpfad. TCP passt die Sendemenge an Hinweise auf Netzstau an, etwa an Verluste oder Überlastungsmeldungen.

Das tatsächliche Sendelimit richtet sich nach dem kleineren Wert aus Empfangsfenster und Überlastungsfenster. Ein freier Empfängerpuffer allein erlaubt also noch keine beliebig schnelle Übertragung.

Beispiel

Ethernet stellt typischerweise 1500 Byte für ein IP-Paket bereit. Bei einem IPv4-Header von 20 Byte und einem TCP-Header von 20 Byte ohne Optionen bleiben:

1500 - 20 - 20 = 1460 Byte TCP-Nutzdaten

Die Header sind notwendiger Verwaltungsaufwand. Viele winzige Segmente würden deshalb im Verhältnis besonders viel Zusatzaufwand erzeugen.

Teste dich
Frage 1 von 1MittelDer Empfänger meldet ein sehr kleines Fenster, obwohl der Netzwerkpfad nicht überlastet ist. Welcher Mechanismus begrenzt den Sender unmittelbar?
Lösung: Die Flusssteuerung — Das Empfangsfenster verhindert, dass der Sender mehr unbestätigte Daten liefert, als der Empfänger aufnehmen kann.
Was TCP nicht leistet

TCP-Zuverlässigkeit bedeutet, dass der Byte-Datenstrom geordnet und nach erkannten Verlusten erneut übertragen wird. Sie bedeutet nicht, dass eine Übertragung geheim oder der Kommunikationspartner zweifelsfrei echt ist.

Merke

Zuverlässige Übertragung ist nicht dasselbe wie sichere Verschlüsselung. Für Vertraulichkeit und kryptografische Integrität wird ein zusätzliches Verfahren wie TLS benötigt.

Auch ein aufgebauter TCP-Zustand ist keine reservierte physische Leitung. Pakete können verschiedene Wege nehmen, sich verspäten oder nach einer Störung ausbleiben.

Fehler nach Schichten unterscheiden

BeobachtungWahrscheinlich betroffener BereichBegründung
Ein Name lässt sich nicht in eine IP-Adresse auflösen.DNS beziehungsweise AnwendungsebeneNoch vor der TCP-Verbindung fehlt die Zieladresse.
Pakete finden keinen Weg zum Zielnetz.IP beziehungsweise RoutingDie Vermittlung zum Ziel scheitert.
SYN wird wiederholt, aber es kommt keine passende Antwort.TCP oder darunterliegende ErreichbarkeitDer Handshake wird nicht abgeschlossen.
Der Handshake gelingt, aber Daten müssen wiederholt werden.TCP-Übertragung oder NetzwerkpfadTCP erkennt fehlenden Empfangsfortschritt.
Eine HTTP-Antwort meldet eine nicht vorhandene Ressource.AnwendungsebeneTCP hat die Antwort transportiert; die Bedeutung stammt von HTTP.
Teste dich
Frage 1 von 1SchwerEine Webseite liefert nach erfolgreicher TCP-Verbindung eine HTTP-Fehlermeldung zu einer nicht vorhandenen Ressource. Welche Diagnose passt am besten?
Lösung: Die Anwendungsebene hat geantwortet; der TCP-Transport hat grundsätzlich funktioniert. — Trenne Transport und Inhalt: TCP überträgt Bytes, während HTTP die Bedeutung der Antwort festlegt.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • TCP
    • Einordnung: Transportschicht zwischen Anwendung und IP
    • Verbindung: IP-Adressen und Ports bilden das Vierertupel
    • Aufbau: SYN → SYN/ACK → ACK
    • Zuverlässigkeit: Sequenznummern → ACKs → Wiederholung fehlender Daten
    • Flusssteuerung: Empfangsfenster schützt den Empfänger
    • Überlaststeuerung: Sendefenster reagiert auf den Netzwerkpfad
    • Grenze: Zuverlässigkeit ersetzt keine Verschlüsselung
Abschluss-Check
Teste dich
Frage 1 von 4LeichtWelche Reihenfolge beschreibt den Drei-Wege-Handshake?
Lösung: SYN → SYN/ACK → ACK — Beide Seiten synchronisieren ihre Sequenzräume mit SYN, SYN/ACK und dem abschließenden ACK.
Frage 2 von 4MittelEin Segment beginnt bei SEQ = 3001 und enthält 100 Byte. Welche ACK-Nummer bestätigt diese Bytes lückenlos?
Lösung: ACK = 3101 — Nach den Bytes 3001 bis 3100 wird als Nächstes Byte 3101 erwartet.
Frage 3 von 4SchwerEin Empfänger hat viel freien Puffer, doch der Netzwerkpfad zeigt deutliche Überlastung. Warum darf TCP trotzdem nicht unbegrenzt senden?
Lösung: Das Überlastungsfenster kann kleiner als das Empfangsfenster sein und begrenzt dann die Sendemenge. — Flusssteuerung schützt den Empfänger, Überlaststeuerung den Pfad. Entscheidend ist das kleinere der beiden Fenster.
Frage 4 von 4SchwerEine Datei kommt vollständig und in der richtigen Reihenfolge an. Welche Aussage darfst du daraus nicht ableiten?
Lösung: Die Übertragung war automatisch verschlüsselt. — TCP behandelt Übertragungsreihenfolge und Verluste, bietet aber allein keine Vertraulichkeit. Dafür ist zusätzliche kryptografische Absicherung nötig.

Passend dazu