Wirtschaftsinformatik (Bachelor-Studiengang): Rechnernetze/Onlinedienste (2. Semester)
Sie sind hier: Startseite › Wirtschaftsinformatik › Rechnernetze/Onlinedienste: Grundprinzipien der Rechnernetze (Teil 3)
BM / CM, Kurs vom 01.10.2002 - 31.03.2003
Flusskontrolle
Flusskontrolle = Datenflusskontrolle = Mechanismus zur Steuerung der Datenmenge, die gesendet werden darf.
Flusskontrolle ist immer erforderlich, wenn die beteiligten Kommunikationspartner nicht dieselbe Leistungsfähigkeit haben oder für die Kommunikation ausreichende Leistungen erbringen können, z.B. weil sie mit anderen Aufgaben belastet sind.
Anders formuliert: wenn die Kommunikationsleistung abgestimmt (synchronisiert) werden muss.
Der eine Extremfall: Empfänger kann immer alles dem Sender abnehmen und verarbeiten. Keine Flusskontrolle notwendig.
Der andere: Empfänger kann nichts empfangen. Der Sender muss das zu Sendende zwischenspeichern (store and forward-Prinzip, angewendet bei E-Mail).
Verfahren der Flusskontrolle:
Folgende Verfahren gibt es prinzipiell
- Halt/Weiter-Meldungen (xon/xoff)
- Kredit-Verfahren
- Sliding Window-Verfahren
Das oben eingeführte Stop and Wait-Protocol (Sender wartet nach Senden auf Bestätigung) realisiert implizit eine Flusskontrolle, da der Empfänger die Bestätigung solange verzögern kann, bis er Kapazität für das nächste Paket hat (allerdings nicht zu lange, da sonst der Time Out-Mechanismus auf der Senderseite eine Wiederholung startet, was ja wieder den Empfänger belastet). Dieses Verfahren ist eine Sonderform des Sliding Window-Verfahrens, nämlich mit Window size von 1.
Halt/Weiter-Meldungen (xon/xoff)
Hat der Empfänger für weitere Pakete keine Kapazität, sendet er ein xoff-Signal; hat er wieder Kapazität, dann ein xon:
- xoff bedeutet "Stop!"
xoff ist das ASCII-Zeichen 019 (oktal) oder DC3 (Device Control 3), auf Tastaturen: ^s (Control_s). - xon bedeutet "Weiter machen!"
xon ist das ASCII-Zeichen 017 (oktal) oder DC1 (Device Control 1), auf Tastaturen: ^q (Control_q).
Aber: Das xoff-Signal muss früh genug gesendet werden, da das Medium/Verbindung eine Speicherkapazität hat und der Sender ein schon angefangenes Paket nicht abbrechen möchte. Auch kann das xoff verloren gehen!
Statt der ASCII-Zeichen können auch Pakete mit der entsprechenden Bedeutung sowie bestimmte Bitkombinationen innerhalb von Paketen benutzt werden.
Kredit-Verfahren
Der Empfänger erlaubt dem Sender eine bestimmte Menge von Paketen zu senden (Kredit). Nach jedem Senden wird ein Kredit-Punkt entfernt. Hat der Sender keine Punkte, so muss er schweigen. Der Empfänger kann jederzeit den Kredit erhöhen.
Einfaches Verfahren, das den Nachteil des Nachlaufens beim xon/xoff-Verfahren aufgrund der Speicherkapazität des Mediums nicht hat und einen einfachen Algorithmus zur Bestimmung der Kreditpunkte anhand der freien Puffer beim Empfänger erlaubt.
Nachteil:
Der Verlust der Krediterhöhung muss festgestellt und behandelt werden, wobei das mehrfache Senden desselben Krediterhöhungpakets ohne besondere Maßnahmen zur mehrfachen Krediterhöhung führt.
Sliding Window-Verfahren
Das Sliding Window-(Schiebefenster) Verfahren ist eine Kombination aus Flusskontrolle und Bestätigung, wobei es möglich ist, mit einem Paket mehrere empfangene zu bestätigen, indem die höchste Nummer aller zu bestätigenden Pakete übertragen wird (Pakete mit niedrigerer Nummer sind damit mitbestätigt).
Ein Fenster ist ein Bereich von aufsteigenden Paketnummern, die ohne Bestätigung vom Sender für weitere Pakete benutzt werden können. Die Fenstergröße (Window size) ist damit der maximale Vorlauf, den der Sender gegenüber dem Empfänger haben darf (entspricht dem Kreditrahmen im vorherigen Verfahren).
In der Praxis kommen Fenstergrößen im Bereich von 4 bis 16 vor.
Bildbeschreibung "Sliding Window-Verfahren 1": Auf einer Zeitachse werden die Paketnummern 0 bis 14 abgebildet. Die Paketnummern 0 bis 3 sind schon bestätigt (verbraucht), das nächste Fenster beginnt somit bei Paketnummer 4. In diesem Beispiel wird eine Fenstergröße von 4 abgebildet.
Sender sendet 2 Pakete mit Nummer 4 und 5. Er darf noch 6 und 7 ohne Bestätigung senden, dann erst ist sein Fenster ausgeschöpft:
Bildbeschreibung "Sliding Window-Verfahren 2": Nach dem Senden der Pakete 4 und 5 ist erst die Hälte des gewährten Zeitfensters ausgeschöpft.
Sender sendet weitere 2 Pakete mit Nummer 6 und 7; da sein Fenster ausgeschöpft ist, muss er schweigen:
Bildbeschreibung "Sliding Window-Verfahren 3": Nach dem Senden der Pakete 6 und 7 ist das gewährte Zeitfenster der Größe 4 ausgeschöpft.
Der Empfänger bestätigt Paket 6. Das bedeutet, dass die linke, untere Kante des Fenster um 3 nach oben verschoben wird und dass damit der Sender 3 weitere Pakete senden darf:
Bildbeschreibung "Sliding Window-Verfahren 4": Nach Bestätigung des Paketes 6 (und damit auch den vorangegangen Paketen 4 und 5) wird das Zeitfenster weiter vorgeschoben. Es beginnt nun bei Paket 7 und endet bei Paket 10.
Der Sender sendet die Pakete 8 und 9:
Bildbeschreibung "Sliding Window-Verfahren 5": Nach dem Senden der Pakete 8 und 9 ist nur noch das Senden eines Paketes in dem gewährten Zeitfenster möglich.
Der Empfänger bestätigt Paket 9:
Bildbeschreibung "Sliding Window-Verfahren 6": Mit der Bestätigung des Paketes 9 werden auch die vorangegangenen Pakete 7 und 8 bestätigt. Das Zeitfenster wird erneut vorgeschoben, beginnt bei Paket 10 und endet bei Paket 13.
Das Sliding-Window-Verfahren ist weit verbreitet, da es
- Bestätigungen einsparen hilft,
- mit den erforderlichen Bestätigungen kombiniert werden kann
Im Duplex-Betrieb gibt es für jeden Sender ein eigenes Fenster, dessen Größe auch unterschiedlich sein kann.
Beispiel aus der Praxis: X.25
Multiplexing
Multiplexing = Verfahren, das eine unabhängige Mehrfachverwendung eines Betriebsmittels durch mehrere Nutzer, hier insbesondere eines Mediums bzw. einer Verbindung, realisiert.
Das Verfahren arbeitet nach folgenden Arten:
- Zeitmultiplexing:
Die Benutzer wechseln sich zu verschiedenen Zeitpunkten in der Benutzung der Verbindung ab. - Frequenzmultiplexing:
Die Benutzer benutzen verschiedene Frequenzen, die sich nicht stören. - Raummultiplexing:
Die Benutzer arbeiten räumlich soweit auseinander, dass keine Störungen auftreten.
Daneben gibt es noch im Funknetzbereich Sonderformen des Multiplexing.
Zeitmultiplexing
Bildbeschreibung "Zeitmultiplexing": Das abgebildete Verfahren wird nachfolgend näher beschrieben.
Die Datenpakete mehrerer Benutzer - hier als Verbindungen dargestellt - werden zu verschiedenen Zeitpunkten auf die Verbindung geschaltet. Auf der Empfängerseite werden die Pakete wieder auseinander sortiert.
Der Multiplexer muss eine spezielle Nummer jedem Datenstrom zuordnen und diese Nummer in den Kopf der Pakete eintragen.
Der Demultiplexer analysiert diese Nummer und verteilt die Pakete entsprechend der Nummer auf die empfangenen Datenströme.
Dieser Simplex-Fall kann auch Halb- oder Vollduplex realisiert sein, wobei dann in der Gegenrichtung die Rollen vertauscht sind.
Es gibt statische Multiplexer, bei denen in einem festen Zeitrhythmus Paket für Paket jeder angeschlossenen Leitung - auch dann, wenn kein Paket zu senden ist - behandelt wird. Die Alternative sind statistische/- dynamische Multiplexer, die möglichst gerecht entsprechend der Situation Pakete auf die Leitung kopieren.
Virtuelle Verbindungen
Früher hießen die statistisch - dynamisch sich anpassenden - Multiplexer auch Konzentratoren.
Die benutzten Nummern im Paketkopf werden auch- Kanalnummern von Kanälen (Channels)
- Identifikationen (ID) von Verbindungen (Connections)
Virtuelle Verbindung = Virtual Connection = Virtual Channel = Isolierte Realisierung im Sinne einer Nachbildung einer realen Verbindung mit erwünschten Eigenschaften.
Der Begriff des Virtuellen ist derselbe wie bei den Begriffen der Virtuellen Maschine (z.B. Java-Interpreter) oder des Virtuellen Speichers bei Betriebssystemen. Bei den Rechnernetzen gibt es noch Virtuelle Netze.
Virtuelle Verbindungen sind immer dann erforderlich, wenn
- Multiplexing (Mehrfachbenutzung) erforderlich ist. In diesem Falle wird simuliert.
- eine reale Verbindung, z.B. ein Kupferdraht, in bestimmten Eigenschaften, z.B. Fehlerrate, verbessert wird. In diesem Falle wird nicht simuliert, sondern realisiert.
- eine Verbindung innerhalb eines Netzwerks aus Einzelelementen zusammengesetzt wird.
Reale Verbindungen gibt es nur bei den Medien. Alle Verbindungen, die auf Medien aufsetzen, sind virtuell.
Multiplexing ist immer dann erforderlich, wenn es mehr Benutzer als Betriebsmittel (Resourcen) gibt - und das ist in dieser Welt (fast) immer der Fall.
Verbindung über mehrere Wegstrecken:
Bildbeschreibung "Verbindung über mehrere Wegstrecken": Rechner 1 ist mit Rechner 2 verbunden. Rechner 2 ist desweiteren mit Rechner 3 und 4 verbunden. Auch Rechner 3 ist mit Rechner 4 verbunden. Rechner 4 hat dann noch eine Verbindung zu Rechner 6. An diesen wiederum sind Rechner 5 und 7 angebunden.
Die Verbindung zwischen Rechner R7 und R3 muss virtuell sein, da sie aus 3 Teilstücken zusammengesetzt wird, d.h. R7 und R3 sind verbunden, obwohl es keine physikalische Verbindung zwischen ihnen gibt.
Verbindung über dieselbe Wegstrecke:
Bildbeschreibung "Verbindung über dieselbe Wegstrecke": Rechner 7 kommuniziert mit Rechner 3 über Rechner 6 und Rechner 4. Wenn Rechner 5 mit Rechner 1 kommunizieren möchte, dann läuft die Verbindung über Recher 6, Rechner 4 und Rechner 2. In beiden Verbindungen ist somit das Teilstück zwischen Rechner 6 und Rechner 4 enthalten.
Die Verbindung R7-R3 benutzt dasselbe Teilstück R6-R4 wie die Verbindung R1-R5. Dies geht nur dann gleichzeitig, wenn R6-R4 gemultiplext wird.
Virtuelle Verbindungen abstrakter:
Bildbeschreibung "Virtuelle Verbindungen abstrakter (Teil 1)": Erläuterungen folgen weiter unten.
Bildbeschreibung "Virtuelle Verbindungen abstrakter (Teil 2)": Erläuterungen folgen weiter unten.
Aus der Sicht der Programme/Prozesse verbindet irgendwie die Virtuelle Maschine die Kommunikationspartner: die Implementierung ist verborgen. Lediglich Schnittstellen sind erkennbar.
Aufbau und Abbau virtueller Verbindungen:
Virtuelle Verbindungen bestehen nicht einfach, sie müssen in einem Dialog zwischen den Multiplexern bzw. Programmen, die die Virtuelle Verteilte Maschine realisieren, vereinbart werden. Dies erfolgt durch spezielle Pakete samt Bestätigungen, in denen u.a. die Nummer der neuen virtuellen Verbindung festgelegt wird.
Nach dem letzten Austausch eines Datenpakets werden Virtuelle Verbindungen durch andere spezielle Pakete abgebaut; auch der Abbau wird meistens bestätigt, so dass beide Seiten sich über den Abbau einig sind.
Daher gibt es mindestens drei Phasen:
- Aufbauphase
- Datentransferphase (Betriebsphase)
- Abbauphase
Virtuelle Verbindungen durch Netzwerke:
Wenn eine Virtuelle Verbindung durch Zusammensetzung mehrerer Teilverbindungen innerhalb eines Netzwerkes realisiert wird - dieses Zusammensetzen erfolgt in der Aufbauphase -, dann bestehen zwei Möglichkeiten:
- Es wird eine permanent stehende Verbindung durch das Netzwerk
eingerichtet.
Dies wird Leitungsvermittlung genannt.
Beispiele: Telefonnetz, Datex-L - Es wird lediglich ein Weg durch das Netzwerk festgelegt, der
von allen Paketen der Virtuellen Verbindung benutzt wird.
Dies wird Paketvermittlung genannt.
Beispiele: ATM, X.25 (Datex-P)
In beiden Fällen muss in jedem Knoten des Netzwerks die Information über die Verbindung gespeichert sein.
Frequenzmultiplexing
Bildbeschreibung "Frequenzmultiplexing": Kanal 1, 2, 3 bis n senden gleichzeitig, aber auf verschiedenen Frequenzen. Zwischen zwei Frequenzen liegt jeweils eine für die Kanaltrennung erforderliche Frequenzlücke.
Wenn jeder Kanal (Virtuelle Verbindung) ein
eigenes Frequenzspektrum mit einem Sicherheits-Abstand verwendet,
wird dasselbe Medium mehrfach verwendet.
Dies ist nur bei Medien möglich.
Frequenzmultiplexing wird beim Radio, Fernsehen und bei den Funknetzen (Sprechfunk, Fernsteuerungen) verwendet.
Splitting, Segmenting, Routing
Splitting
Verfahren der Aufteilung einer Verbindung auf mehrere, um einen hohen Datendurchsatz mit mehreren Verbindungen mit einem niedrigen Durchsatz zu realisieren.
Bildbeschreibung "Splitting": Das Verfahren wird nachfolgend erklärt.
Verfahren:
- Die Pakete des zu bewältigenden Datenstroms werden nummeriert.
- Dann werden diese entsprechend der Datenrate der benutzten Verbindungen verteilt.
- Auf der Empfangsseite werden die Pakete sortiert und in der ursprünglichen Reihenfolge nach oben gegeben.
- Einer der benutzten Verbindungen hat Durchsatzprobleme, z.B. Stop der Datenflusskontrolle.
- Pakete gehen verloren und der Puffer auf der Empfangsseite reicht nicht aus.
Segmenting
Netzwerke bzw. benutzte Verbindungen unterstützen nur Pakete mit einer maximalen Länge.
Diese kann kleiner als die erforderliche sein.
Segmenting = Verfahren, lange Pakete in kleinere aufzuteilen und auf der Empfangsseite wieder zusammenzusetzen.
Bildbeschreibung "Segmenting": Ein Paket wird in mehrere kleine Pakete aufgeteilt (segmentiert).
Routing
Verfahren zur Bestimmung des Weges durch ein Netzwerk.
Bei verbindungsorientierten Netzen wird das Routing einmalig zum Beginn (Aufbauphase) der Verbindung durchgeführt. Alle Pakete nehmen denselben Weg durch das Netz.
Beispiele: X.25, ATM, Datex-L
Bei verbindungslosen Netzen wird das Routing für jedes Paket einzeln durchgeführt; es gibt keine Verbindung durch das Netzwerk - jedes Paket wird mit einem eigenen Routing individuell transportiert, so dass die Reihenfolge beim Empfang nicht unbedingt die Reihenfolge des Sendens ist (Pakete können sich überholen).
Beispiele: IP, UDP (Internet)
Optimierungsgrößen:
Das Routing kann den Weg, der- am billigsten ist,
- am schnellsten ist,
- die gewünschte Güte (Fehlerrate) hat
Da sich große Netze wie das Internet ständig ändern, kann keine korrekte und vollständige "Landkarte" erstellt werden, so dass alle Algorithmen sich ständig ändernden Situationen anpassen müssen.
Die Routing-Algorithmen sind Näherungsverfahren, die nie das Optimum erreichen können.Protokolle und Dienste
Protokoll:
Menge von Regeln, die die Kommunikation zwischen Rechnern festlegen. Diese definieren die Syntax und Semantik der auszutauschenden Daten.
Dienst:
Service. Leistung eines ausgeführten Protokolls.
Unterschiedliche Protokolle können denselben Dienst erbringen. So können Protokolle als Implementierungen von Diensten angesehen werden, oder der Dienst als Spezifikation der Anforderungen an Protokolle.
Beispiele für Dienste:
- Datentransfer (FTP, HTTP)
- Entferntes Einloggen (rlogin, Telnet)
- Entferntes Window-System (Unix: X)
- Booten (TFTP)
- Namensdienst (DNS)