Transport
Einführung
IP
IPv6
VPN
TCP / UDP
Überblick

Hauptmenü
Startseite
Einführung
Daten übertragen
Datennetze
Anwendungen
Info

Themen
TCP - Einführung
TCP - Paketaufbau
TCP - Verbindungen
TCP - Datenübertragung
UDP
TCP - Verbindungsauf- und -abbau

Bevor Nutzdaten übertragen werden können, erfordert TCP einen Verbindungsaufbau. Dieser beschränkt sich darauf, die Verbindung bei Sender und Empfänger zu initialisieren. Er hat nichts mit dem zugrundeliegenden Netzwerk, sprich dem physikalischen Aufbau der Verbindung zu tun. Das wird vor allem dann klar, wenn man bedenkt, dass das TCP-Protokoll ja nur von den Endgeräten ausgewertet wird. Die Router auf dem Weg jedes Pakets "sehen" nur IP-Pakete, deren Inhalt ist ihnen gleichgültig.

Der Verbindungsaufbau erfolgt in drei Schritten, weswegen er "Three Way Handshake" genannt wird. Zunächst überträgt der Client-Prozess ein Datenpaket, das noch keine Nutzdaten enthält. Er trägt aber eine zufällig bestimmte Sequenznummer ein und setzt das Flag "SYN" (Synchronize), was dem Server-Prozess einen Verbindungsaufbau signalisiert. Die Sequenznummer gilt ab jetzt als laufender Bytezähler für die Datenübertragung von Client zu Server während dieser Verbindung und wird mit jedem übertragenen Paket um die Anzahl der im vorhergehenden Paket enthaltenen Nutzdatenbytes erhöht. Waren keine Nutzdaten enthalten, erfolgt trotzdem eine Erhöhung um eins.

Der Server-Prozess antwortet auf das Datenpaket mit einer Verbindungs-Aufbaubestätigung. Diese ist durch die Flags SYN und ACK (Achnowledge, Bestätigung) gekennzeichnet. Auch er wählt für seine zukünftigen Übertragungen (die ja in Gegenrichtung laufen) eine Sequenznummer. Als Bestätigungsnummer setzt er die um eins erhöhte Sequenznummer ein, die er zuvor vom Client erhalten hatte. Damit teilt er mit, dass er nun ein Datenpaket mit dieser Sequenznummer erwartet.

Nun betrachtet der Client-Prozess die Verbindung als aufgebaut. Er muss das jedoch noch dem Server mitteilen, wobei er in diesem Paket wahlweise auch schon Nutzdaten mitschicken kann. Auf jeden Fall sendet er ein Paket mit dem Flag "ACK", das die Sequenz- und Bestätigungsnummern korrekt gesetzt hat.

Der Verbindungsabbau wird von einer der Endstellen eingeleitet, indem diese zunächst ihren Sendepuffer leert und im letzten Paket das "FIN"-Flag setzt. Die Gegenstelle bestätigt dessen Empfang, indem sie ebenfalls ein Paket mit gesetztem "FIN"-Flag sendet. Nun leert auch sie noch ihren Sendepuffer und versieht das letzte Datenpaket mit einem weiteren "FIN"-Flag. Der Auslöser des Verbindungsabbaus bestätigt dies nochmals mit einem "ACK"-Paket, bleibt aber noch für einen kurzen Zeitraum empfangsbereit, um eventuelle Nachzügler-Pakete noch entgegenzunehmen. Danach gilt die Verbindung als getrennt und der Socket wird auf beiden Seiten wieder freigegeben.