Drei-Wege-Handschlag

Drei-Wege-Handschlag

Der Drei-Wege-Handschlag (Three-Way-Handshake) ist ein Verfahren zum Aufbau verlustfreier Datenübertragungen zwischen zwei Instanzen. Obwohl überwiegend in der Netzwerktechnik verwendet, ist der Drei-Wege-Handschlag nicht darauf beschränkt.

Inhaltsverzeichnis

Das Zwei-Armeen-Problem

Beim Transport von Nachrichten benötigen die teilnehmenden Instanzen eine Möglichkeit, sicherzustellen, dass die von ihnen kontaktierte Instanz die Nachricht erhalten hat. Die sendende Instanz möchte also eine Bestätigungsantwort, wenn die Nachricht angekommen ist. Die Probleme, die hier auftreten können, wenn das Kommunikationsmedium nicht zuverlässig ist, werden anhand des Zwei-Armeen-Problems[1] näher erläutert:

Stellung der Armeen. Armee A ist in zwei Teile, A1 und A2, aufgespalten. Armee B ist in einem Teil.

Man denke sich zwei Armeen A und B, wobei Armee A stärker ist als Armee B. Armee A ist aber auf zwei Teile A1 und A2 aufgespalten, jeder dieser Teile kann Armee B alleine nicht schlagen. A1 und A2 müssen also gleichzeitig angreifen, um zu gewinnen. Es ist daher notwendig, den genauen Angriffszeitpunkt vor dem Angriff per Boten festzulegen. A1 schickt also eine Nachricht mit dem Angriffszeitpunkt an A2. Der einzige Weg von A1 zu A2 führt jedoch durch das Gebiet von B. A1 benötigt eine Bestätigung, dass die Nachricht bei A2 angekommen ist, da A1 sich sicher sein muss, dass A2 auch über den Angriffszeitpunkt in Kenntnis gesetzt wurde. Dabei ergeben sich folgende zwei Problemstellungen:

  • A1 sendet Nachricht an A2, der Bote wird jedoch schon im Lager von B abgefangen. A1 weiß also nicht, ob die ursprüngliche Nachricht abgefangen wurde, oder nur die Bestätigungsantwort von A2.
  • A1 sendet Nachricht an A2, der Bote wird aber bei der Bestätigungsantwort von A2 im Lager von B abgefangen. A2 kann also auch nicht sicher sein, dass die Bestätigungsantwort bei A1 eingetroffen ist.

Beide Teilarmeen können also nie sicher sein, dass ihre Nachricht bei der jeweils anderen Armee eingetroffen ist, da auch die Bestätigungsantworten nicht zuverlässig transportiert werden können und A1 und A2 sich auch die Bestätigungsantworten bestätigen lassen müssten.

Der Drei-Wege-Handschlag

In der Nachrichtentechnik tritt dieses Problem immer dann auf, wenn zwischen den Kommunikationspartnern ein unsicherer Übertragungskanal vorliegt.

Das Zwei-Armeen-Problem ist unlösbar. Man müsste unendlich oft die „Bestätigung bestätigen“, um sicher sein zu können, dass der Empfänger die Nachricht auch erhalten hat. Da das unrealistisch ist, muss man beim Betrieb eines Kommunikationssystems durch geeignete Maßnahmen mit dem möglichen Paketverlust umgehen.

Besonders kritisch ist das Problem beim Verbindungsaufbau, da die Kommunikationspartner anfangs noch nicht voneinander wissen, sie also insbesondere noch keine Vorkehrungen zur Übertragungswiederholung (Timeouts usw.) getroffen haben.

Man wählt daher oft ein dreistufiges Verfahren zum Verbindungsaufbau, den so genannten Drei-Wege-Handschlag. Diesen kann man sich wie eine Terminvereinbarung per E-Mail vorstellen. Möchte Anton sich mit Berta verabreden, werden folgende Nachrichten ausgetauscht:

  1. Anton schickt Berta einen Terminvorschlag;
  2. Berta schickt Anton eine Bestätigung des Termins inkl. seines Terminvorschlags;
  3. Anton schickt Berta eine Bestätigung, dass er Bertas Bestätigung erhalten hat.

Schritt 3 ist dabei notwendig, damit Berta weiß, ob Anton die Bestätigung erhalten hat. Nachricht Nummer 2 könnte ja verloren gegangen sein und Berta würde alleine zu dem Treffen erscheinen, da Anton keine Bestätigung erhalten hat.

Anwendungsbereiche

TCP

Der wohl bekannteste Anwendungsbereich des Drei-Wege-Handschlag ist die Netzwerktechnik und hier wiederum das Protokoll TCP. Es dient dort dem Aufbau und Abbau einer stehenden Verbindung. Eine ausführliche Beschreibung dieses Drei-Wege-Handschlags findet sich im Artikel Transmission Control Protocol.

Asynchrone Busse

Die Signale auf asynchronen Rechnerbussen sind ungetaktet, so dass ein Takt nicht zur Steuerung der Kommunikation zwischen dem Mikroprozessor und unterschiedlichen angeschlossenen Komponenten verwendet werden kann. Daher kommen auch in diesem Bereich einige Varianten des Handschlag-Verfahrens zum Einsatz. Das Grundprinzip bleibt dabei weitgehend unverändert.

Ein Beispiel für diese Buskommunikation bietet eine einfache Steuerung des Buszugriffes auf den Systembus. Möchte eine Komponente lesend oder schreibend auf den Systembus zugreifen, so sendet sie ein spezielles Signal (Bus Request) an den Mikroprozessor. Sobald der Prozessor den Bus nicht benötigt, gewährt er der Komponente den Zugriff mittels eines speziellen Antwortsignals (Bus Grant). Die Komponente antwortet auf diese Erlaubnis ihrerseits mit einer Bestätigung (Bus Grant Acknowledge), um dem Prozessor und allen anderen Komponenten anzuzeigen, dass sie die Kontrolle über den Bus übernommen hat. Wie man erkennt, können die Bezeichnungen der einzelnen Nachrichten bei unterschiedlichen Handschlag-Verfahren voneinander abweichen.

Ähnliche Verfahren können auch zur Steuerung der Kommunikation auf unterschiedlichen Bussen verwendet werden. Dabei kann das Verfahren teilweise auch mit einer Taktung kombiniert werden. Ein häufiger Fall ist die Koordination von Adress- und Datenbus. Der Prozessor legt hier ein spezielles Signal (Adress Strobe) auf dem Steuerbus an, um zu signalisieren, dass er eine gültige Adresse auf dem Adressbus angelegt hat. Diese Adresse gehört einer Komponente an (es kann sich etwa um Speicher oder um ein Ein-/Ausgabegerät handeln). Mittels einer positiven ACK-Flanke kann diese Komponente den Prozessor darüber informieren, dass sie sich als Adressat erkannt hat. Der Prozessor zieht daraufhin sein Adress Strobe-Signal zurück. Die Komponente kann nun beispielsweise die angeforderten Daten auf den Datenbus schreiben oder auch von dort einlesen. Mittels einer negativen ACK-Flanke kann die Komponente den Abschluss dieses Vorganges mitteilen. Die Art der Kommunikation ist hier aufgrund der drei beteiligten Busse (Steuerbus, Adressbus und Datenbus) etwas komplexer, aber das Grundprinzip des Drei-Wege-Handschlag ist dennoch auch hier erkennbar.

Einzelnachweise

  1. Andrew S. Tanenbaum, Computer Networks, 4. Auflage, ISBN 978-0130661029, Kapitel 6.2.3., "Connection Release"

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Transmission Control Protocol — TCP (Transmission Control Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Zuverlässiger bidirektionaler Datentransport TCP im TCP/IP‑Protokollstapel: Anwendung HTTP SMTP …   Deutsch Wikipedia

  • Whois — Familie: Internetprotokollfamilie Einsatzgebiet: Abfrage von Domain , AS und IP Informationen Ports: 43/TCP Whois im TCP/IP‑Protokollstapel: Anwendung Whois Transport …   Deutsch Wikipedia

  • User Datagram Protocol — UDP (User Datagram Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Verbindungslose Übertragung von Daten über das Internet UDP im TCP/IP‑Protokollstapel: Anwendung DNS DHCP … …   Deutsch Wikipedia

  • MSL — ist eine Abkürzung für: Magick Scripting Language, die von ImageMagick genutzt wird Magnetstreifenleser, Gerät zum Lesen von Magnetstreifen Major Soccer League, eine US amerikanische Hallenfußballliga Mars Science Laboratory, eine Marsmission der …   Deutsch Wikipedia

  • Session Hijacking — (auf deutsch etwa: „Entführung einer Kommunikationssitzung“) ist ein Angriff auf eine verbindungsbehaftete Datenkommunikation zwischen zwei Computern. Während die Teilnehmer einer verbindungslosen Kommunikation Nachrichten ohne definierten Bezug… …   Deutsch Wikipedia

  • Abstand (Graphentheorie) — Dieses Stichwortverzeichnis enthält kurze Definitionen und Erklärungen zu den wichtigsten graphentheoretischen Begriffen. A Abstand Siehe: Distanz. Achromatische Zahl Die achromatische Zahl ψ(G) eines Graphen G ist die größte Zahl k, für die G… …   Deutsch Wikipedia

  • Adjazent — Dieses Stichwortverzeichnis enthält kurze Definitionen und Erklärungen zu den wichtigsten graphentheoretischen Begriffen. A Abstand Siehe: Distanz. Achromatische Zahl Die achromatische Zahl ψ(G) eines Graphen G ist die größte Zahl k, für die G… …   Deutsch Wikipedia

  • Adjazenz — Dieses Stichwortverzeichnis enthält kurze Definitionen und Erklärungen zu den wichtigsten graphentheoretischen Begriffen. A Abstand Siehe: Distanz. Achromatische Zahl Die achromatische Zahl ψ(G) eines Graphen G ist die größte Zahl k, für die G… …   Deutsch Wikipedia

  • Adjazenz (Graphentheorie) — Dieses Stichwortverzeichnis enthält kurze Definitionen und Erklärungen zu den wichtigsten graphentheoretischen Begriffen. A Abstand Siehe: Distanz. Achromatische Zahl Die achromatische Zahl ψ(G) eines Graphen G ist die größte Zahl k, für die G… …   Deutsch Wikipedia

  • Ausgangsgrad — Dieses Stichwortverzeichnis enthält kurze Definitionen und Erklärungen zu den wichtigsten graphentheoretischen Begriffen. A Abstand Siehe: Distanz. Achromatische Zahl Die achromatische Zahl ψ(G) eines Graphen G ist die größte Zahl k, für die G… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”