Rechnernetze (8) : Transport Control Protocol (TCP)

avatar

Nachdem in den vorangegangenen Abschnitten die Grundlagen von Transportprotokollen und den verbindungslosen Transportdienst UDP im Internet besprochen wurden, wollen wir uns nun mit dem zweiten Transportdienst im Internet, dem verbindungsorientierten Transportprotokoll TCP (Transmission Control Protocol) beschäftigen.

TCP realisiert einen zuverlässigen Datentransfer zwischen zwei Anwendungsprozessen. TCP arbeitet immer Punkt-zu Punkt, d. h. zwischen genau zwei Anwendungsprozessen. Anwendungsprozesse nutzen TCP, indem sie zuerst eine Verbindung zwischen Sender und Empfänger aufbauen. Nachdem die Verbindung aufgebaut ist, kann der Senderprozess beliebige Bytefolgen über die Verbindung an den Empfänger schicken. TCP garantiert, dass die identische Bytefolge beim Empfänger ankommt. Insofern funktioniert TCP wie eine Datei, in die der Sender Daten schreibt und aus welcher der Empfänger Daten liest.
TCP vermittelt nicht, wie UDP, einzelne Nachrichten zwischen den Anwendungsprozessen, sondern einen Datenstrom. Wenn die Anwendungsprozesse den Datenstrom zur Übertragung von Nachrichten, also Blöcken von Informationen, nutzen wollen, so müssen sie Beginn und Ende von Nachrichten selbst im Datenstrom codieren, so dass der Empfänger Beginn und Ende einer Nachricht erkennen kann.

Wenn ein Anwendungsprozess die Kommunikation beenden will, dann baut er die TCP-Verbindung wieder ab. Sobald die Verbindung abgebaut ist, können keine Daten mehr über die Verbindung übertragen werden. TCP nennt man auch ein verbindungsorientiertes Protokoll.

Bevor Daten auf einer TCP-Verbindung übertragen werden können, muss diese Verbindung zwischen Sender-Anwendungsprozess und Empfänger-Anwendungsprozess aufgebaut werden. Analog zu UDP wird auch hier ein Socket verwendet, um eine Verbindung von einem Client-Prozess zu einem Server-Prozess zu erzeugen. Dabei gibt der Client-Prozess die IP-Adresse und die Portnummer des Server-Prozesses an. Mit dieser Information kann das TCP auf dem Client-Host (im folgenden Client-TCP genannt) eine Verbindung zum TCP auf dem Server-Host (im folgenden Server-TCP) aufbauen. Dabei geht der Client in drei Schritten vor.

rn8.png

  1. Das Client-TCP sendet ein sogenanntes SYN-Segment an das Server-TCP. Dieses Segment enthält keine Anwendungsdaten, aber es hat ein spezielles Header-Feld, das SYN-Bit, auf 1 gesetzt. Zusätzlich enthält das Sequenznummer-Feld des SYN-Segments eine initiale Sequenznummer client_isn, die das Client-TCP gewählt hat.

  2. Sobald das SYN-Segment beim Server-TCP ankommt, erzeugt es eine neue Verbindung und weist ihr entsprechende Puffer und Variablen zu. Dann schickt das Server-TCP ein SYNACK-Segment an das Client-TCP zurück. Dieses Segment enthält noch keine Anwendungsdaten, aber es enthält drei wichtige Informationen im Segment-Header: das SYN-Bit ist auf 1 gesetzt, das Acknowledgement-Feld ist auf die gerade empfangene Sequenznummer client_isn+1 gesetzt, und das Sequenznummer-Feld ist auf eine initiale Sequenznummer des Servers server_isn gesetzt, die das Server-TCP gewählt hat. Dieses SYNACK-Segment bestätigt dem Client-TCP, dass das Server-TCP die Verbindung mit der initialen Sequenznummer client_isn des Client-TCP akzeptiert hat und dass die initiale Sequenznummer des Servers server_isn ist.

  3. Sobald das Client-TCP das SYNACK-Segment empfängt, erzeugt es ebenfalls eine entsprechende Verbindung und weist ihr entsprechende Puffer und Variablen zu. Dann schickt das Client-TCP eine Bestätigungsnachricht. In diesem Segment ist das Acknowledgement-Feld auf server_isn+1 und das SYN-Bit auf 0 gesetzt.

Sobald diese drei Nachrichten erfolgreich ausgetauscht wurden, ist die Verbindung etabliert und die Anwendungsprozesse können Daten über die Verbindung übertragen. Weil beim Verbindungsaufbau genau drei Nachrichten ausgetauscht werden, heißt dieses Verfahren auch Drei-Wege-Handschlag (Threeways handshake).

Quelle
Transmission Control Protocol (TCP). http://www.rfc-editor.org/rfc/rfc793.txt [letzter Zugriff: 21.12.2019 15:10]



0
0
0.000
2 comments
avatar

Congratulations @ozelot47! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published a post every day of the week

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

You can upvote this notification to help all Steem users. Learn how here!

0
0
0.000