Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Phasen des verbindungsorientierten Dienstes

&pagelevel(4)&pagelevel

Der verbindungsorientierte Dienst besteht aus vier Phasen:

  • lokale Verwaltung

  • Verbindungsaufbau

  • Datenübertragung

  • Verbindungsabbau

Lokale Verwaltung

Die lokale Verwaltung definiert Funktionen zwischen dem Transportbenutzer, dem Transportanbieter und anderen Instanzen, die den Verbindungsaufbau steuern.

Beispiele für lokale Funktionen:

  • Der Benutzer muss einen Kommunikationskanal zum Transportanbieter aufbauen. Jeder Kanal zwischen dem Benutzer und dem Transportanbieter wird Transportendpunkt genannt. Mit der Funktion t_open() wählt der Benutzer einen speziellen Transportanbieter aus und richtet einen Transportendpunkt ein.

  • Jeder Benutzer kann einen oder mehrere Transportendpunkte verwalten, die er gegenüber dem Transportanbieter identifizieren muss. Zu diesem Zweck ordnet der Benutzer jedem Transportendpunkt mit der Funktion t_bind() eine netzweit eindeutige Transportadresse zu, d.h. er bindet eine Transportadresse an den Transportendpunkt. Die Struktur der Transportadresse wird durch den entsprechenden Transportanbieter bestimmt.

Zusätzlich zu t_open() und t_bind() gibt es weitere Funktionen, die die lokale Verwaltung der Transportschnittstelle unterstützen. In folgender Tabelle sind sie zusammengefasst:

Funktion

Beschreibung

t_alloc()

Reserviert Speicher für die Transportschnittstelle.

t_bind()

Bindet eine Adresse an einen Transportendpunkt.

t_close()

Schließt einen Transportendpunkt.

t_error()

Gibt eine Fehlermeldung des Transportanbieters aus.

t_free()

Gibt den mit t_alloc() reservierten Speicherbereich frei.

t_getinfo()

Liefert den Parametersatz des aktuellen Transportanbieters.

t_getstate()

Liefert den Zustand des Transportendpunkts.

t_look()

Liefert die momentanen Ereignisse des Transportendpunkts.

t_open()

Richtet einen Transportendpunkt ein, der an einen bestimmten Transportanbieter gebunden wird.

t_optmgmt()

Verhandelt mit dem Transportanbieter über protokollspezifische Optionen.

t_sync()

Synchronisiert den Transportendpunkt mit dem Transportanbieter.

t_unbind()

Löst eine Adresse von einem Transportendpunkt.

Verbindungsaufbau

Beim Verbindungsaufbau wird zwischen zwei Benutzern eine Kommunikationsverbindung aufgebaut.
Der Verbindungsaufbau kann am Beispiel zweier Transportbenutzer veranschaulicht werden, die in einem Client/Server-Verhältnis zueinander stehen: Ein Transportbenutzer (Server) stellt einer Gruppe von Benutzern (Clients) eine Reihe von Diensten zur Verfügung und wartet dann auf Anforderungen der Clients. Jeder Client kann einen Dienst anfordern, nachdem er zum Server eine Verbindung aufgebaut hat.

Der Client fordert mit der Funktion t_connect() eine Verbindung an. Ein Parameter von t_connect(), die Adresse, identifiziert den Server, den der Client erreichen will. Der Server muss die Funktion t_listen() verwenden, um sich von jeder ankommenden Verbindungsanforderung unterrichten zu lassen. Mit t_accept() nimmt der Server eine Anforderung zum Verbindungsaufbau an. Danach ist die Transportverbindung aufgebaut.

Folgende Tabelle zeigt die Funktionen für einen Verbindungsaufbau:

Funktion

Beschreibung

t_accept()

Nimmt einen Auftrag zum Verbindungsaufbau an.

t_connect()

Fordert eine Verbindung mit einem bestimmten Benutzer bei einer spezifizierten Adresse an.

t_listen()

Wartet auf eine Anforderung zum Verbindungsaufbau durch einen anderen Benutzer.

t_rcvconnect()

Bestätigt einen Auftrag zum Verbindungsaufbau, wenn t_connect() im asynchronen Betrieb aufgerufen wurde.

Datenübertragung

Die Datenübertragung ermöglicht es zwei Benutzern, Daten über eine bestehende Verbindung in beiden Richtungen auszutauschen. Die Funktionen t_snd() und t_rcv() senden bzw. empfangen Daten über diese Verbindung. Es ist gewährleistet, dass die gesendeten Daten beim Empfänger in derselben Reihenfolge ankommen, in der sie abgeschickt wurden.

Folgende Tabelle zeigt die Funktionen für die verbindungsorientierte Datenübertragung:

Funktion

Beschreibung

t_rcv()

Empfängt Daten.

t_snd()

Sendet Daten.

Verbindungsabbau

Der Benutzer schickt dem Transportanbieter einen Auftrag, eine bestehende Verbindung abzubauen.
Es gibt zwei unterschiedliche Arten von Verbindungsabbau:

  • Verbindungsabbruch:
    Der Verbindungsabbruch weist den Transportanbieter an, die Verbindung sofort zu beenden. Dabei können alle zuvor gesendeten Daten verloren gehen, die noch nicht den Empfänger erreicht haben. Mit der Funktion t_snddis() kann ein Transportbenutzer einen solchen Verbindungsabbruch herbeiführen. Der Kommunikationspartner, der von diesem Verbindungsabbruch betroffen ist, kann mit der Funktion t_rcvdis() die Ursache des Verbindungsabbruchs abfragen. Die Funktion t_rcvdis() behandelt ankommende Wünsche nach Abbruch einer Verbindung.

  • geordneter Verbindungsabbau:
    Neben dem Verbindungsabbruch ermöglichen einige Transportanbieter einen geordneten Verbindungsabbau, bei dem niemals Daten verloren gehen. Die Funktionen t_sndrel() und t_rcvrel() realisieren einen geordneten Verbindungsabbau.

    Der geordnete Verbindungsabbau zwischen zwei Benutzern Benutzer1 und Benutzer2 läuft immer in folgenden Schritten ab:

    1. Benutzer1, der als Erster die Verbindung abbauen will, benutzt die Funktion t_sndrel(), um an Benutzer2 einen Wunsch nach Abbau der Verbindung zu senden. t_sndrel() informiert den Benutzer2, dass Benutzer1 keine weiteren Daten sendet.

    2. Wenn Benutzer2 eine solche Nachricht mit der Funktion t_rcvrel() empfängt, kann er weiterhin Daten an Benutzer1 senden.

    3. Wenn Benutzer2 alle Daten übertragen hat, muss er ebenfalls t_sndrel() aufrufen. Dies signalisiert dem Benutzer1, dass Benutzer2 nun bereit ist, die Verbindung abzubauen.

    4. Sobald Benutzer1 mit t_rcvrel() die Nachricht von Benutzer2 empfangen hat, wird die Verbindung abgebaut.

Folgende Tabelle zeigt die Funktionen für einen Verbindungsabbau:

Funktion

Beschreibung

t_rcvdis()

Informiert über einen Verbindungsabbruch.

t_rcvrel()

Zeigt an, dass der Kommunikationspartner einen geordneten Verbindungsabbau wünscht.

t_snddis()

Fordert zum Verbindungsabbruch auf oder weist eine Verbindungsanforderung zurück.

t_sndrel()

Fordert zum geordneten Verbindungsabbau auf.

Zusammenspiel der Funktionen des verbindungsorientierten Dienstes

Folgendes Bild veranschaulicht das Zusammenspiel der XTI-Funktionen, die die einzelnen Phasen des verbindungsorientierten Dienstes realisieren. Ausführlich beschrieben sind die einzelnen XTI-Funktionen im Abschnitt "Benutzerfunktionen von XTI(POSIX)".