TCP verstehen: Verbindung, Zuverlässigkeit und Fehler
Du lernst, wie TCP Verbindungen aufbaut, Daten bestätigt und Verluste behandelt und welche Aufgaben IP, UDP und Verschlüsselung übernehmen.
Kurz gesagt
TCP baut eine Verbindung auf und liefert Daten als geordneten Datenstrom. Fehlende Daten werden erneut gesendet; bei dauerhaften Ausfällen kann die Verbindung abbrechen.
Ein Protokoll legt Regeln für den Datenaustausch fest. TCP steht für Transmission Control Protocol, etwa „Protokoll zur Steuerung der Übertragung“. Die Teilnehmer einer TCP-Verbindung heißen Endpunkte. Du untersuchst, wie sie eine Verbindung aufbauen und den Empfang von Daten bestätigen.
Deine Lernziele
Ein Bit kann den Wert 0 oder 1 haben. Acht Bits bilden ein Byte. TCP überträgt einen Bytestrom: eine fortlaufende Folge solcher Bytes. Eine Anwendung ist hier ein Programm, das Daten über das Netz austauscht. TCP liefert die empfangenen Daten an die Anwendung in der gesendeten Reihenfolge und behandelt fehlende Daten durch erneutes Senden. Bei einem dauerhaften Ausfall kann die Verbindung jedoch abbrechen.
Für den Transport teilt TCP den Bytestrom in Abschnitte, die TCP-Segmente heißen. Jedes Segment wird in einem IP-Paket übertragen. IP steht für Internet Protocol, also Internetprotokoll. Es ermöglicht die Weiterleitung von Paketen zum Ziel. Ein Router ist ein Gerät, das Pakete zwischen Netzen weiterleitet. IP selbst bestätigt keinen lückenlosen Bytestrom und wiederholt verlorene TCP-Daten nicht.
UDP steht für User Datagram Protocol, etwa „Protokoll für einzelne Datennachrichten“. Es nutzt ebenfalls IP. UDP übermittelt einzelne Nachrichten und garantiert weder deren Zustellung noch ihre Reihenfolge oder Schutz vor doppeltem Empfang. UDP selbst sendet verlorene Nachrichten nicht erneut. Anwendungen können dafür eigene Regeln ergänzen. Aus diesen Unterschieden folgt keine allgemeine Aussage, dass eines der Protokolle schneller ist.
Bytestrom
Eine fortlaufende Folge von Bytes. TCP stellt der Anwendung diese Daten in ihrer gesendeten Reihenfolge bereit.
Merke: TCP ordnet den Datenstrom und behandelt Verluste. UDP übermittelt einzelne Nachrichten ohne entsprechende Zustellgarantie. IP ermöglicht die Weiterleitung der Pakete.
Teste dich
Der Drei-Wege-Handshake ist der gewöhnliche Aufbau einer TCP-Verbindung durch drei Nachrichten. Handshake bedeutet hier gegenseitige Abstimmung. Dabei teilen beide Endpunkte ihre Startnummer für die Bytezählung mit und bestätigen die Startnummer des anderen.
Die Nachrichten enthalten Kennzeichen, also Markierungen mit einer bestimmten Bedeutung. SYN kommt von englisch synchronize, also synchronisieren: Damit beginnt ein Endpunkt die Abstimmung seiner Startnummer. ACK kommt von englisch acknowledgment, also Bestätigung: Dieses Kennzeichen zeigt an, dass die Nachricht eine gültige Bestätigungsnummer enthält. Kennzeichen und Bestätigungsnummer sind also unterschiedliche Angaben.
Beim gewöhnlichen Ablauf beginnt A, während B auf einen Verbindungswunsch wartet. A sendet SYN. B antwortet mit SYN und ACK: B teilt seine eigene Startnummer mit und bestätigt die von A. Anschließend sendet A ein ACK, das die Startnummer von B bestätigt.
Dieser Ablauf hat zulässige Varianten. Beide Endpunkte können gleichzeitig einen Aufbau beginnen. Auch Daten können bereits während des Aufbaus mitgeschickt werden. Der Empfänger darf sie erst an die Anwendung weitergeben, wenn ihre Gültigkeit feststeht.
Beispiel: Ausgedachter Aufbau: Zeichenprogramm und Speicherprogramm
- 1Das Zeichenprogramm beginnt und sendet SYN an das wartende Speicherprogramm.
- 2Das Speicherprogramm antwortet mit SYN und ACK. Es bestätigt den Beginn und teilt seine eigene Startnummer mit.
- 3Das Zeichenprogramm sendet ACK und bestätigt damit die Startnummer des Speicherprogramms.
Merke: Der gewöhnliche Aufbau lautet: SYN → SYN mit ACK → ACK. Die mittlere Nachricht erfüllt zwei Aufgaben zugleich.
Teste dich
Jedes Datenbyte einer TCP-Verbindung erhält eine Sequenznummer, also eine laufende Nummer. Die Sequenznummer eines Datensegments nennt die Nummer seines ersten Datenbytes. Die folgenden Bytes werden fortlaufend nummeriert. Die Nummern reichen von 0 bis 4.294.967.295; danach folgt wieder 0. Die Rechnungen hier überschreiten diese Grenze nicht.
Die Bestätigungsnummer nennt das nächste Byte, das für einen lückenlosen Empfang fehlt. Eine Bestätigung mit der Nummer 70 bedeutet: Alle Datenbytes vor 70 sind lückenlos angekommen. Sie nennt nicht das zuletzt empfangene Byte. Später eintreffende Bytes können bereits vorläufig gespeichert sein; das heißt gepuffert. Solange davor eine Lücke bleibt, rückt die Bestätigungsnummer nicht über diese Lücke hinaus.
Für eine einfache Rechnung gelten diese Voraussetzungen: Das Segment beginnt genau beim erwarteten Byte und kommt vollständig an. Es schließen sich keine bereits gepufferten Folgedaten an. Das Segment enthält weder SYN noch FIN. Dann gilt a = s + n. Dabei ist a die nächste Bestätigungsnummer, s die Sequenznummer des ersten Datenbytes und n die Anzahl der Datenbytes. Sind passende Folgedaten schon gepuffert, kann die Bestätigung nach dem Schließen einer Lücke weiter springen.
SYN belegt zusätzlich eine Sequenznummer. FIN, vom lateinischen finis für Ende, ist das Kennzeichen für das Ende der Datenübertragung eines Senders und belegt ebenfalls eine Sequenznummer. Ein reines ACK ohne Daten, SYN oder FIN belegt dagegen keine Sequenznummer.
Beispiel: Ausgedachte Übertragung von 35 Datenbytes
- 1Der Empfänger erwartet Byte 420. Es gibt keine gepufferten Folgedaten.
- 2Ein Segment ohne SYN und FIN liefert 35 Datenbytes ab Sequenznummer 420 vollständig.
- 3Die Datenbytes tragen die Nummern 420 bis 454.
- 4Die nächste Bestätigungsnummer ist 420 + 35 = 455.
Merke: Bestätigt wird das nächste fehlende Byte. Addiere die Datenlänge zur Startnummer nur unter den genannten Voraussetzungen.
Teste dich
Ein Modell ist eine vereinfachte Darstellung. Hier teilen wir die Aufgaben des Datenaustauschs in drei Schichten ein. Die Anwendungsschicht bestimmt die inhaltlichen Regeln zwischen Programmen, etwa die Bedeutung einer Anfrage. Die Transportschicht stellt den Datentransport für Anwendungen bereit; hier arbeiten TCP und UDP. Die Internetschicht ermöglicht mit IP die Weiterleitung von Paketen zum Ziel.
Mit dem inhaltlichen Austausch von Anwendungsdaten meinen wir hier die Regeln und Bedeutungen der Anwendung. Auch TCP und IP befördern diese Daten. Das bloße Mitführen eines Nachrichtentextes macht ihre Arbeit daher nicht zu einer Aufgabe der Anwendungsschicht.
TCP behandelt fehlende Daten in der Transportschicht. Sequenznummern und Bestätigungen helfen dabei, Lücken und ausstehenden Empfang zu erkennen. Läuft die Wartezeit für eine ausstehende Bestätigung ab, sendet TCP die betreffenden Daten erneut. Auch eine starke Verzögerung kann eine Wiederholung auslösen. TCP prüft außerdem Übertragungsfehler mithilfe einer Prüfsumme, eines aus den Segmentdaten berechneten Prüfwerts. Zuverlässigkeit bedeutet keine unbegrenzte Zustellgarantie: Bei dauerhaften Problemen kann eine Zeitüberschreitung zum Verbindungsabbruch führen.
TCP selbst verschlüsselt nicht. Verschlüsseln bedeutet, Daten mithilfe eines Schlüssels in eine geschützte Form umzuwandeln. Ein Schlüssel ist dabei eine festgelegte Folge von Bits, die die Umwandlung steuert. Ein zusätzliches Protokoll wie TLS übernimmt solchen Schutz. TLS steht für Transport Layer Security, etwa „Schutz für den Datentransport“. Auch IP selbst übernimmt die hier beschriebene Verschlüsselung nicht. Erneutes Senden und Verschlüsseln lösen unterschiedliche Aufgaben: Das eine behandelt Verluste, das andere schützt den Dateninhalt vor Mitlesen.
| Schicht | Aufgabe im Modell |
|---|---|
| Anwendungsschicht | Bedeutung und Regeln einer Nachricht festlegen |
| Transportschicht | Mit TCP fehlende Daten erneut senden |
| Internetschicht | Mit IP Pakete zum Ziel weiterleiten |
Merke: TCP behandelt Verluste, IP ermöglicht die Weiterleitung und die Anwendung bestimmt die Bedeutung der Daten. Für Verschlüsselung kommt ein eigenes Protokoll wie TLS hinzu.
Teste dich
Alles auf einen Blick
TCP
TCP liefert einen geordneten Bytestrom, UDP einzelne Nachrichten ohne entsprechende Zustellgarantie und IP ermöglicht die Weiterleitung.
Der gewöhnliche Ablauf ist SYN → SYN mit ACK → ACK; zulässige Varianten sind möglich.
Die Nummer nennt das nächste fehlende Byte für einen lückenlosen Empfang.
Inhaltliche Regeln gehören zur Anwendungsschicht, TCP-Wiederholungen zur Transportschicht und IP-Weiterleitung zur Internetschicht.
Dauerhafte Ausfälle können zum Verbindungsabbruch führen. TCP selbst verschlüsselt nicht; dafür kann TLS hinzukommen.
Die Bestätigung für ein ausgedachtes Datenmuster berechnen
- 1Der Empfänger erwartet Byte 760. Es gibt keine bereits gepufferten Folgedaten.
- 2Ein Segment liefert 24 Datenbytes ab Sequenznummer 760 vollständig. SYN und FIN sind nicht gesetzt.
- 3Die Voraussetzungen für die Addition sind erfüllt: Start beim erwarteten Byte, vollständiger Empfang und keine zusätzlichen Nummern durch SYN oder FIN.
- 4Die Datenbytes tragen die Nummern 760 bis 783.
- 5Die nächste Bestätigungsnummer ist 760 + 24 = 784. Sie nennt das nächste erwartete Byte.
Fehler finden
Fehler in Zeile 3877 ist die Nummer des letzten empfangenen Datenbytes, nicht die nächste Bestätigungsnummer. Richtig: Die Bestätigungsnummer lautet 860 + 18 = 878.
Lückentext
Ein Empfänger erwartet Byte 640. Er empfängt 12 Datenbytes ab 640 vollständig, ohne SYN oder FIN. Es schließen sich keine gepufferten Daten an. Die nächste Bestätigungsnummer ist . A beginnt einen gewöhnlichen TCP-Aufbau; B wartet und hat selbst noch keinen Aufbau begonnen. Die zweite Nachricht trägt . Das erneute Senden verlorener Daten übernimmt TCP in der .