TCP verstehen: Verbindung, Zuverlässigkeit und Fehler
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.
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.
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.
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.
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:
- lokale IP-Adresse,
- lokaler Port,
- entfernte IP-Adresse,
- 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.
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.
Wie entsteht die Verbindung?
Vor den Nutzdaten synchronisieren beide Seiten ihre Startsequenznummern. Dazu dient der Drei-Wege-Handshake:
- Der Client sendet
SYNmit seiner Startsequenznummerx. - Der Server antwortet bei einem offenen Port mit
SYN/ACK. Er bestätigtx + 1und sendet seine eigene Startsequenznummery. - Der Client sendet
ACKund bestätigty + 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.
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 .
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.
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.
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.
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.
Ü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.
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.
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.
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
| Beobachtung | Wahrscheinlich betroffener Bereich | Begründung |
|---|---|---|
| Ein Name lässt sich nicht in eine IP-Adresse auflösen. | DNS beziehungsweise Anwendungsebene | Noch vor der TCP-Verbindung fehlt die Zieladresse. |
| Pakete finden keinen Weg zum Zielnetz. | IP beziehungsweise Routing | Die Vermittlung zum Ziel scheitert. |
SYN wird wiederholt, aber es kommt keine passende Antwort. | TCP oder darunterliegende Erreichbarkeit | Der Handshake wird nicht abgeschlossen. |
| Der Handshake gelingt, aber Daten müssen wiederholt werden. | TCP-Übertragung oder Netzwerkpfad | TCP erkennt fehlenden Empfangsfortschritt. |
| Eine HTTP-Antwort meldet eine nicht vorhandene Ressource. | Anwendungsebene | TCP hat die Antwort transportiert; die Bedeutung stammt von HTTP. |
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- 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
Mit Google fortfahren