Das OSI-Modell


Bei der Kommunikation zwischen zwei Rechnern müssen sich beide Rechner an ein gemeinsames Protokoll halten. Das OSI-Modell wurde als Referenzmodell für solche Netzwerkprotokolle im Jahre 1979 entwickelt. Die OSI ist ein Teil der ISO, weshalb das Modell auch ISO/OSI-Modell genannt wird.

Das OSI-Modell ist kein verbindlicher Standard, sondern eher ein Grund- bzw. Referenzmodell, das die Entwicklung und Beschreibung von Netzwerkprotokollen vereinfachen soll. Daher ist das Modell auch sehr offen formuliert. Es geht bei diesem Modell eher um die logischen Zusammenhänge als um eine konkrete Implementierung. Die einzige zur Zeit bedeutende Implementation des OSI-Standards ist IBMs SNA, das zur Vernetzung von Großrechenanlagen benutzt wird.

Warum brauchen wir ein solches Modell ?


Damit zwei Rechner kommunizieren können sind eben nicht nur zwei Rechner und ein paar Meter Kabel notwendig. Sondern es
bedarf einer genauen Spezifikation, wie die Software die Daten verpacken muß, damit die Hardware sie übertragen kann.
Vor allen Dingen aber damit sie auch beim richtigen Empfänger ankommen und dort auch richtig interpretiert werden können.

Diese Spezifikation nennt man Protokoll. Das OSI-Modell beschreibt diese Protokolle auf verschiedenen Ebenen. Durch die Einteilung in verschiedene Ebenen oder auch Schichten ist es Möglich verschiedene Systeme anzupassen. So wird ein Datenpaket von einem
Rechner zum anderen mehrmals verändert oder sogar geteilt, ohne das der Empfänger davon Kenntnis hat, ja er merkt es
normalerweise noch nicht mal.

Was ist ein Schichtenmodell ?


Ein Modell hat die Aufgabe die Wirklichkeit abstrakt und möglichst allgemeingültig abzubilden. Ein Schichtenmodell zerlegt den zu beschreibenden Gegenstand in mehrere Schichten. Es besitzt einen hirarchischen Aufbau.

Die Schichtenbildung folgt dabei folgenden Prinzipien :

  • Eine Schicht sollte dann definiert werden wenn ein neues Abstarktionsniveau erreicht wird.
  • Jede Schicht sollte eine wohldefinierte Funktionalität aufweisen.
  • Jede Schicht sollte im Hinblick auf die Definition internationaler Standards für Protokolle gewählt werden.
  • Die Schichtgrenzen sollten im Hinblick auf die Definition internationaler Standards für Protokolle gewählt werden.
  • Die Schichtgrenzen sollten im Hinblick auf minimalen Informationsfluß über die Schnittstellen erfolgen.
  • Die Anzahl der Schichten sollte so groß wie nötig und so klein wie möglich sein.

Die einzelnen Schichten eines solchen Modells bauen hirarchisch auf einander auf. Jede Schicht besitzt eine Sammlung von Funktionen, zu denen Schnittstellen existieren, die den angrenzenden Schichten bekannt sind.

CCITT X.200 Schichtenmodell

Schicht Sn+1 nutzt den Dienst Dn der Schicht Sn über die definierte Schnittstelle. Die Schicht Sn+1 hat dabei keine genauen Informationen über die Hintergründe der Dienstes Dn , sie kennt und benutzt lediglich die Schnittstelle.

Hier werden wie in der Objektorientierten Programmierung die Methoden des Infomation Hiding und der Data Abstraction angewandt. Der Anwender benutzt den Dienst Dn also wie eine Black Box.

Ein Schichtenmodell hat folgende Eigenschaften:

  • Aufbau einer hirarchischen Struktur
  • Verbergen von Details. Also verbergen der Implementation (des WIE).
  • Weitergabe der Dienste (des WAS) über definierte Schnittstellen.

Auf diese Weise lassen sich herstellerunabhängige Systeme schaffen, bei denen die einzelnen Schichten einfach ausgetauscht werden können ohne andere Schichten zu verändern.

Man stelle sich zur Vereinfachung ein Telefonat vor :
Dieses Modell besteht dann im Wesentlichen aus vier Schichten, dem Menschen, dem Hörer, dem Telefon un der Vermittlung. Das Telefonnetz stellt das physikalische Übertragungsmedium dar. Der Mensch kommuniziert in Wirklichkeit jeweils mit seinem Hörer, der die Schallwellen in elektirsche Signale umwandelt. Das Telefon und die Vermittlung bilden jeweils die transportorientierten Schichten, während der Mensch und der Hörer die anwendungsorientierten Schichten bilden. Wie man aus der Abbildung leicht erkennt haben alle Schichten eine virtuelle Verbindung zu ihrem Pendant auf der Gegenseite, obwohl die Informationen auf der Senderseite von
oben durch alle Schichten bis auf das physikalische Übertragungsmedium nach unten und auf der Gegenseite wieder hoch gereicht werden.

Das OSI-Schichtenmodell


Das OSI-Modell besteht aus 7 Schichten, die zur Kommunikation von Rechnern erforderlich sind. Dabei ist gewährleistet, das Anwendungen die auf der obersten Schicht aufsetzten unabhängig von Modell und Netzwerk funktionieren. Der Zugriff auf das Netzwerk ist durch alle Schichten hindurch gewährleistet.

Die eigentliche Übertragung verläuft entlang des durchgezogene Flusses, das heißt auf der einen Seite von Schicht 7 runter zu Schicht 1 und auf der anderen Seite wieder hoch von Schicht 1 zu Schicht 7. Die logische Verbindung verläuft nach dem Modell entlang der gestrichelten Linien, also z.B. von einer Schicht des Senders zur selben Schicht des Empfängers.

Jede Schicht unterhält also mit ihrem "Partner" eine sogenannte Peer-to-Peer-Verbindung. Diese horizontalen Verbindungen bestehen natürlich nur virtuell.

Eine Information die von einem System zum anderen übertragen werden soll muß zuerst von der obersten Schicht durch alle darunterliegenden Schichten durchegereicht werden, bevor sie über das physiaklische Medium übertragen wird. Dabei wird die Information in jeder Schicht um Protokollinformationen erweitert, die auf dem Zielsystem von der entsprechenden Schicht wieder entfernt werden. Die Information kommt so korrekt in Schicht 7 der Gegenseite an.

Jede Schicht hängt also den Daten, die ihr von der darüberliegenden Schicht übergeben werden einen eigenen Protokoll-Overhead an und entfernt diesen wieder bei den von unten kommenden Paketen. Damit ist klar, daß nur solche Systeme miteinander kommunizieren können, wo die Schichten in der Lage sind den jeweiligen Protokoll-Overhead wie Prüfsummen und Zieladresse richtig zu interpretieren. Dieser Sachverhalt kommt bei Netzübergängen, also Schnittstellen zwischen Systemen die sich normalerweise nicht verstehen würden erst richtig zum Tragen. Ein Router z.B. ist in der Lage ein Datenpaket eines LANs so umzuwandeln, daß man es über eine ISDN-Strecke in ein anderes LAN übertragen kann.

Die Schichten


Wie sich aus der Abbildung erkennen läßt sind die drei oberen Schichten anwendungsorientiert und die unteren vier transportorientiert. Diese Unterscheidung spielt bei direkt miteinander verbundenen Systemen keine Rolle. Anders ist dies, wenn wie in der folgenden Abbildung ein oder mehrere Netzübergänge dazwischen sind.

Wie später noch klar wird sind die anwendungsorientierten Schichten in realen Implementationen meistens nicht näher definiert und ihre Realisation und Kontrolle obliegt der Anwendung. Die realen Implementationen der tarnsportorientierten Schichten lassen sich meist sehr gut in dem Modell darstellen.

Bei einer Netzstruktur wie sie in der Abbildung zu sehen ist bauen die unteren drei Schichten lediglich eine virtuelle Verbindung zum Netzknoten auf. Der Netzknoten ist für die Anpassung der Datenpakete an das jeweilige Subnetz zuständig. Dadurch wird die Verbindung für dir Schicht vier und alle oberhalb liegenden transparent. Diese Schichten unterhalten ihre virtuellen Verbindungen direkt zur Gegenstelle.

Für die anwendungsorientierten Schichten ist das darunterliegende Transportsystem immer transparent, d.h. sie unterhalten ihre Verbindungen grundsätzlich mit der Gegenstelle.

Die Definition der Transportschichten ist streng hirarchisch und restriktiv, die Anwendungsschichten hingegen arbeiten auch schon mal parallel oder werden in der Implementation zusammengefasst.

Die Schichten im Einzelnen


  1. Bitübertragungsschicht / Physikalische Ebene / Physikal
    Layer

    Die physikalische Ebene ist die einzige Ebene die direkten Kontakt zum physichen Übertragungsmedium hat. Sie ist für die elektrische und mechanische Definition verantwortlich. Hier werden Signalpegel, Stecker sowie Anordnung und Anzahl der Kontakte definiert.
    Diese Schicht ist die einzige die unstrukturierte Bitströme sendet und empfängt.
    Meistens benutzt man in dieser Schicht das Ethernet nach IEEE 802.3. Das klassische Ethernet besteht aus einem Koaxial-Kabel, dem Bus, mit dem die Rechner durch einen Transceiver verbunden sind. Eine der Bestimmungen ist z.B. daß das Kabel nicht länger als 180m sein darf.
    Weiter Implementationen sind Token-Ring nach IEEE 802.5 und RS232C (die serielle Schnittstelle am PC).

  2. Sicherungsschicht / Datenverbindungsebene / (Data) Link Layer
    Die Sicherungsschicht ist für die Fehlererkennung und -Behebung zuständig. Sie teilt den von oben kommenden Bitstrom in sogenannte Frames ein und kontrolliert den Fluß, damit die Gegenseite die Frames wieder zu einem Bitstrom zusammensetzten kann. Diese Segmentierung des Datenstromes ermöglicht eine bessere Fehlerkontrolle und -Behebung. Außerdem verhindert die Framebildung das eine Station das Medium beliebig lange belegt.
    Weiterhin hat die Sicherungsschicht die Aufgabe die Eigenarten der Hardware vor den oberen Schichten zu verbergen und für diese eine Herstellerunabhängige Schnittstelle zu schaffen. In der Regel ist diese Schicht als Kartentreiber implementiert.
    Die IEE 802.3 befaßt sich ebenfalls mit dieser Ebene. Genau genommen definiert die IEE 802.3 die physikalische Ebene und den medium access sublayer (MAC) des Ethernet. Der MAC ist der untere Teil der Datenverbindungsebene. Der obere Teil wird durch den Logical Link Control (LLC) abgedeckt, welcher ebenso bei Token-Ring benutzt wird und in IEEE 802.2 beschrieben wird. Bei dieser Implementierung schafft also der LLC schon eine Herstellerunabhängigkeit zwischen Ethernet und Token-Ring.

  3. Vermittlungsschicht / Netzwerkebene / Network Layer
    Die Vermittlungsebene schafft eine Verbindung zwischen Geräten. Sie ist in einfachen Netzen, bei denen die Endgeräte direkt miteinander verbunden sind eigentlich nicht notwendig. Allerdings in komplexen und heterogenen Netzen ist diese Schicht für die Auswahl des geeigneten Transportweges verantwortlich. Sie besitzt also die Logik um die Daten über mehrere Zwischenknoten zum Endsystem zu befördern. Da diese Schicht eine Verbindung zwischen Geräten herstellt nennt man diese Verbindung Ende-zu-Ende-Verbindung zwischen Geräten, diese Geräte müssen allerdings nicht zwingend die Endgeräte sein.
    Die Wegewahl bezeichnet man im Fachchinesisch als Routing. Dabei unterscheidet man
    1. statisches Routing : Die Zwischenknoten führen eine Tabelle mit Wegen.
    2. dynamisches Routing : Die Zwischenknoten entscheiden auf Grund der Netzlast über den besten (schnellsten) Weg.
    Ein weiterer Dienst dieser Schicht ist es Netzwerke unterschiedlicher Topologien zu einem homogenen Netzwerk zu verbinden, wie z.B. ein Ethernet Subnetz mit einem Token-Ring Subnets. Systeme dieser Art werden auch Bridges genannt.
    Die so entstandenen Netzwerke bezeichnet man als Internets. Man beachte allerdings den feine Unterschied zwischen einem Internet und dem weltweiten Internet. Letzteres ist der ofizielle Name eines Internets, wenn auch des mit Sicherheit größten.
    Um die Illusion eines einzigen Netzwerks für die höheren Schichten aufrecht zu erhalten verbirgt die Vermittlungsschicht die unterschiedliche Ausstattung durch eine abstrakte Schnittstelle, die die selben Funktionen für die gesamte Hardware zur Verfügung stellen.
    In diese Schicht kann man aus der Protokoll-Familie TCP/IP das IP-Protokoll einordnen, daß für das statische Routing in TCP/IP-Netzen zuständig ist.
    Dynamisches Routing gewährleisten auf Unix-Maschinen sogenannte Routing-Daemon-Prozesse. Diese Daemon-Prozesse verändern die statischen Tabellen auf Grund von Informationen die sie von Routing-Daemonen anderer Rechner erhalten. Hier wird in kleinen Netzwerken auf TCP/IP-Basis meist das Routing Information Protokoll (RIP) eingesetzt.
    Ebenfalls in diese Schicht fällt ein weiteres Protokoll der TCP/IP-Familie, das Internet Control Message Protokoll (ICMP).

  4. Transportschicht / Transport Layer
    Diese Schicht ist für den Auf- und Abbau von Verbindungen zwischen Prozessen Verantwortlich. Sie ist die einzige transportorientierte Schicht die immer eine direkte Verbindung zu einem Prozeß auf dem Endgerät unterhält. Ihre Aufagbe ist es den darüberliegenden Schichten die zwingend notwendige unabhängigkeit von der benutzten Hardware und den eigenarten der Topologie zu gewährleisten. Außerdem kontrolliert sie den Fluß der Daten um sich an die Sende- und Empfangsgeschwindigkeit der Gegenstelle anzupassen. Die Transportschicht besitzt auch einen Mechanismus zur Erkennung und Behebung von Fehlern die von der Sicherungsschicht nicht erkannt worden sind. Ob eine Verbindung über ein WAN oder ein LAN geht ist für die Transportschicht uninteressant. Da diese Schicht eine Verbindung zwischen Prozessen auf den Endgeräten herstellt. Bei dieser Verbindung spricht man auch von einer Ende-zu-Ende-Kommunikation.
    Die Transportschicht erkennt z.B. eine falsche Reihenfolge, Verdopplung oder Verlust von Datenpaketen.
    Im Bereich TCP/IP kann man die drei Protokolle TCP, UDP und RAW in dieser Ebene ansiedeln.
    TCP ist ein sogennanter stream-basierter Service, d.h. die Kontrolle über die Reihenfolge der Datenpakete und die Betsätigung der Ankunft eines Datenpaketes obliegt dem Protokoll. Dieser Service läßt sich am ehesten mit einem Dateizugriff vergleichen, bei dem man sich auch nicht darum kümmern muß ob die Daten korrekt in der Steuerelektronik der Festplatte angekommen sind.
    UDP ist ein Datagramm-basierter Service, bei dem die Anwendung die Kontrolle der Reihenfolge und der Bestätigung des Datenempfangs übernehmen muß.
    Das RAW-Protokoll wird nur für Daten auf IP-Ebene benutzt und hat im Anwendungsbereich keine Bedeutung.
    Bei der TCP/IP-Familie wird der richtige Prozeß auf dem Empfangsgerät durch sogenannte Ports identifiziert, die auch als Sockets bezeichnet werden.

  5. Kommunikationssteuerungsschicht / Steuerungsebene / Session Layer
    Als unterste anwendungsorientierte Schicht nutzt sie als erstes die von unten bereitgestellten Datentransportdienste. Sie ist die letzte Ebene auf der noch mit logischen und nicht mit physikalischen Namen gearbeitet wird. Die Steuerungsebene ist für die Synchronisation des Dialogs zuständig. Sie sorgt ebenfalls für eine Resynchronisation wenn der Datenstrom abbricht. Außerdem baut sie die Verbindungen zwischen den Anwendungen auf und ab.
    Die TCP/IP-Protokoll-Familie sieht für die anwendungsorientierten Schichten keine Standard-Implementation vor. Jede Anwendung muß also ihr eigenes Protokoll auf dieser und allen höheren Schichten definieren. Ein Beispiel hierfür ist SMTP. Bei diesem Protokoll werden Zeilen durch Carriage-Return und Linefeed abgeschlossen. Der Empfänger quitiert den Empfang durch eine dreistellige
    oktale Zahl.
    Beispiel für eine SMTP-Sitzung :
    220 monad.swb.de Smail 3.1.28.1 #6 ready at Tue, 29 Jun 93 10:45 MET DST
    HELLO fubar.swb.de
    250 monad.swb.de Hello fubar.swb.de
    MAIL FROM:okir@fubar.swb.de
    250 <okir@fubar.swb.de> ... Sender Okay
    DATA
    354 Enter mail, end with "." on a line by itself
    --- (sending mail message) ---
    .
    250 Mail accepted
    quit
    221 monad.swb.de closing connection

  6. Darstellungschicht / Anpassungsebene / Presentation Layer
    Diese Schicht bietet dem Anwendungsprogramm die Schnittstelle zum Netzwerk. Während die weiter unten liegenden Schichten nur noch mit Bitströmen arbeiten, ist für diese Schicht noch die volle Syntax der Daten relevant. Sie transformiert die Daten in ein systemunabhängiges Übertragungsformat.
    Zu ihren Aufgaben gehören also das Formatieren, Verschlüsseln und Komprimieren der Daten. Auf der Gegenseite sorgt sie für die Wiederherstellung der Daten im dortigen plattformspezifischen Format.
    Auch für diese Schicht müssen TCP/IP-Anwendungen selbst sorgen. FTP sieht hier eine Darstellung von ASCII-Text-Dateien vor, die einen Transfer zwischen unterschiedlichen Systemen erlaubt (z.B. DOS und UNIX). Telnet definiert in dieser Schicht ein virtuelles Terminal, das maschinenunabhängige Steuerbefehle entgegennimt.

  7. Anwendungsschicht / Verarbeitungsebene / Application Layer
    Die Anwendungsschicht bildet die Schnittstelle zwischen der eigentlichen Anwendung und der Übertragungstechnik, sie ist Teil der Anwendungssoftware und ermöglicht eine Hard und Softwareunabhängige Programmierung der Anwendung. Sie ist gleichzeitig Ausgangs- und Zielpunkt der Daten. In dieser Schicht wird das eigentliche Ziel von OSI verwirklicht, diese Schicht stellt dem Endbenutzer die Kommunikationsdienste zur Verfügung. Die untergeordneten Schichten dieses Modell existieren nur um die Dienste der Anwendungsschicht zu ermöglichen.
    Dienste der Anwendungsschicht sind z.B. Dateiübertragung und Dateiverzeichnistätigkeiten, Nachrichtenübertragungs-
    und -Verwaltungsdienste sowie Auftragsübertragung und remote Auftragsverwaltung.

Pro und Kontra OSI-Modell


Das Modell definiert nur das WAS, d.h. die eigentlichen Funktionen werden unabhängig von Herstellern und Protokollen.

Das Modell gibt allerdings keine Garantie dafür, daß zwei Systeme kommunikationsfähig sind, es müssen auch gkleiche oder sich entsprechende Protokolle auf beiden Seiten verwendet werden. Erst dadurch sind die schon öfter erwähnten virtuellen Verbindungen möglich.

Neben dem OSI-Modell haben sich diverse andere Protokolle und Protokollfamilien, wie z.B. TCP/IP durchgesetzt, die sich nicht unbedingt an den OSI-Standard halten. Aufgrund ihrer Verbreitung und durch die Veröffentlichung der Definitionen sind sie allerdings ebenfalls herstellerunabhängig.

Das OSI-Modell ist in der Theorie entstanden und deshalb nicht sehr praxisgerecht. Die Forderungen sind oft schwer umzusetzen und Funktionen tauchen in mehreren Schichten auf. Dadurch ist eine Eindeutige Zuordnung einzelner Funktionen oft nicht möglich. Diese Probleme führen dazu, daß die Implementation meist sehr langsam wird.

Weiterhin verliert das Modell immer mehr an Aktualität. Multiprotokollumgebungen, parallel arbeitende Netzwerkkarten und intelligente Treibersoftware sind nur einige Beispiele dis sich nicht mehr in das OSI-Modell zwängen lassen.

Trotzdem erleichtert das OSI-Modell immer noch das Verständnis von Zusammenhängen im Netzwerkbereich. Deshalb taucht es auch sehr oft in Zusammenhang mit Erklärungen auf, wenn auch in manchmal in abgewandelter Form.

Quellen :


J. Henshall, S. Shaw : OSI praxisnah erklärt, Hanser 1992
Craig Hunt : TCP/IP Netzwerk Administration, O'Reilly 1995
F.-J. Kauffels : Personalcomputer und loakle Netzwerke, Markt&Technik 1991
Olaf Kirch : The LINUX Network Administrators' Guide, LINUX Documentation Project 1993
A. Tannenbaum : Computer Netzwerke, Wolframs

©1995 by Thomas Kriener