Navigation überspringen

Übung Verbindungsaufbau

TCP - Verbindungsaufbau

Das TCP-Protokoll ist ein verbindungsbasiertes Protokoll, d. h. bevor die Nutzdaten gesendet werden, wird zunächst eine Verbindung etabliert, damit beide Kommunikationspartner wissen, dass der andere kommunikationsbereit ist. Das ist gar nicht so einfach. Das Problem wird an folgendem Beispiel deutlich.

Quelle der folgenden Übung: inf-schule | Kommunikation in Rechnernetzen - Datentransport zwischen Anwendungsprozessen » Fachkonzept - Verbindungsaufbau, Peter Dauscher, Klaus Merkert, Daniel Jonietz, Klaus Becker (Lizenz: CC BY-SA 4.0)

1-Weg

1-Weg-Handshake
Schaller. 1-Weg-Handshake (CC BY-NC-SA)

Greta und Simon sind im gleichen Kurs und schicken sich Zettel mit Nachrichten zu. Es kann vorkommen, dass auch einmal ein Zettel auf dem Weg vom Sender zum Empfänger verloren geht.

Greta ergreift die Initiative und sendet Simon die folgende Nachricht. Sobald Simon von dem Termin erfährt, kommt er auch.

Zettel geht verloren. Zettel geht nicht verloren.
Greta kommt. 
Simon kommt 

Enable JavaScript

2-Wege

2-Wege-Handshake
Schaller. 2-Wege-Handshake (CC BY-NC-SA)


Der Zettel ging verloren, Greta hat vor dem Kino gewartet und war stinksauer, dass Simon nicht kam. Erst als er einigermaßen überzeugend darstellen konnte, dass er gar nichts vom Termin gewusst hat, glätten sich die Wogen. Das nächste mal wollen sie es besser machen und vereinbaren, dass Simon eine Bestätigung schickt, dass er den Zettel erhalten hat. Greta kommt nur zum Kino, wenn sie diese Bestätigung erhalten hat.

1. Zettel geht verloren 2. Zettel geht verloren kein Zettel geht verloren
Greta kommt
Simon kommt

Enable JavaScript

3-Wege

3-Wege-Handshake
Schaller. 3-Wege-Handshake (CC BY-NC-SA)


Diesmal hat Simon vergeblich gewartet, da der 2. Zettel verloren ging. Ihm schwant schon, was schief gelaufen ist. Greta muss bestätigen, dass sie seine Zusage bekommen hat. Dann wissen wirklich alle Bescheid...

1. Zettel geht verloren 2. Zettel geht verloren 3. Zettel geht verloren kein Zettel geht verloren
Greta kommt
Simon kommt

Enable JavaScript

3-Wege-Handschlag (Handshake)

Diese Spiel könnte man nun ewig so weiter spielen, da immer wenn die letzte Nachricht verloren geht, einer der beiden nicht zum Kino erscheint. In der Nachrichtentechnik tritt dieses Problem immer dann auf, wenn Nachrichten über einen unsicheren Kanal ausgetauscht werden sollen. 

In der Praxis verwendet man den 3-Wege-Handshake, da dann das Problem erst auftreten kann, wenn die Kommunikation in beiden Richtungen mindestens einmal geklappt. Man hofft dann, dass auch die 3. Nachricht ankommt. Da nach dem Aufbau der Verbindung in der Regel zunächst der Sender wieder aktiv wird, wartet dieser auch nicht vergebens auf eine Nachricht des Empfängers. 

Der Empfang aller folgenden Nachrichten wird dann nur noch einfach bestätigt. Erst beim Abbau der Verbindung wird der 3-Wege-Handshake wieder genutzt.

TCP-Verbindungsaufbau

  1. 3-Wege-Handshake
    Schaller. 3-Wege-Handshake (CC BY-NC-SA)

    Führe in Filius den Abruf einer Webseite mit einem Webbrowser durch.
  2. Lasse den Datenaustausch des Rechners mit dem Browser (Rechtsklick auf den Rechner anzeigen).
    Suche den Verbindungsaufbau und Verbindungsabbau mit 3-Wege-Handshake der TCP-Verbindung mit dem Webserver und untersuche die ausgetauschten Nachrichten.
    Hinweis: Um den TCP-Inhalt einer Nachricht der Anwendungsschicht anzuzeigen, muss diese Nachricht durch einen Linksklick auf die Nachricht ausgewählt werden.

Der Rechner mit dem ist der Sender und beginnt die Kommunikation (Nachricht A). Er sendet eine Anfrage ergänzt um eine . Der Rechner mit dem ist der Empfänger und antwortet auf die Anfrage (Nachtricht B), indem er mit einem antwortet. Die Sequenznummer wird dabei . In der gleichen Nachricht sendet er außerdem selbst eine Anfrage ergänzt um eine . Diese ist . Der Sender antwortet im 3. Schritt (Nachricht C) mit einem und ergänzt die Sequenznummer des Empfängers .

Bei der folgenden Kommunikation verwaltet jeder der beiden Rechner seine eigene Sequenznummer und verwendet für eine Nachricht immer die zuletzt vom Kommunikationspartner beim gesendete Sequenznummer. Damit ergibt sich eine fortlaufende Folge von Sequenznummern, die auch die Sortierung der Datenpakete in die richtige Reihenfolge zulässt, falls ein Paket schneller als ein vorhergehendes ankommt.

Enable JavaScript