Websalon

Die sieben OSI Schichten

                ------------------------

Grosse Programme zerlegt man i.A. in kleinere Module, zwischen denen
man dann exakte Schnittstellen definiert. Das macht die Angelegenheit
uebersichtlicher und man kann Module austauschen, ohne dass die
anderen geaendert werden muessen.

Bei den OSI Protokollen ist man genau diesen Weg gegangen um die
sehr umfangreichen Protokolldefinitionen zu gliedern. Eine
Verbindung zwischen zwei Programmen durchlaeuft 7 'Schichten',
die die Datenpakete aufbauen, die schliesslich auf die
Leitung gehen.

Die Schichten liegen uebereinander und verstaendigen sich nur
mit den direkt darueber und darunter liegenden Schichten.
Jede Schicht stellt der ueber ihr gelegenen Schicht einen
'Dienst' zur Verfuegung. Um diesen Dienst erbringen zu koennen,
greift sie dabei auf die direkt unter ihr liegende Schicht zu
und nutzt deren Dienste. Im Allgemeinen heisst das, dass eine
Schicht von oben eine Anweisung oder ein Datenpacket bekommt.
Dieses wird evtl. mit zusaetzlichen Informationen (Bytes) versehen
und an die naechsttiefere Schicht zur Weiterbearbeitung
durchgereicht.

Die Kommunikation erfolgt abstrakt durch den Austausch von
'service primitives'. Das koennen in einer realen Implementation
Prozeduraufrufe, per message passing verschickte Datenstrukturen
oder sonst was sein (OSI beschreibt nicht die Implementierung,
sondern nur das abstrakte Zusammenspiel der Schichten).

Betrachten wir z.B. das service primitive N-CONNECT.request:
Es wird von der Transportschicht (Layer 4) mit einer Hand
voll Parameter (Adressen, quality of service, ...) an die
Netzwerkschicht (Layer 3) gesendet und fordert die Netzwerkschicht
auf, fuer die Transportschicht eine Netzverbindung aufzubauen.
Falls die Netzwerkschicht z.B. das X.25 Protokoll unterstuetzt,
wird ein entsprechendes Call-Datenpacket (protocol data
unit = PDU) zusammengestellt und zur Uebertragung an die
Schicht 2 weitergereicht (mit einem DL-DATA.request).

Auf dem Zielrechner wird nun von Schicht 3 an Schicht 4
ein N-CONNECT.indication gemeldet -- beim Telefon wuerde
man sagen, es klingelt. Nun muss diese Schicht 4 ein
N-CONNECT.response loslassen um 'abzuheben', was dann der
anrufenden Schicht 4 schliesslich als N-CONNECT.confirm bestaetigt
wird. Nun ist z.B. eine Schicht 3 Verbindung aufgebaut.

Es gibt im einzelnen folgende sieben Schichten:

1) Physical Layer (PHY)
-----------------------

Diese Schicht erlaubt es ueber eine Leitung oder ein anderes
Medium Bits zu uebertragen. Sie kuemmert sich um den Auf- und Abbau
der Leitungsverbindung (carrier signal aktivieren, ...) und um ein
eventuelles Umschalten der Senderichtung, falls ein halfduplex
Medium benutzt wird.

2) Datalink Layer (DL)
----------------------

Die Daten, die zwischen zwei Stationen ausgetauscht werden, werden
von der Schicht 2 mit einen fehlerkorrigierenden Protokoll
uebertragen. Sie stellt als Dienst also die fehlerfreie
Uebertragung von Datenpaketen auf einen physikalisch
an den Rechner angeschlossenen Zielrechner zur Verfuegung.
Meistens wird dazu eine Version des ISO HDLC Protokolls
eingesetzt (z.B. LAP-B bei X.25). Bei LANs wird diese Schicht
noch in eine Medium Access Control Schicht (MAC) und in eine
Logical Link Control Schicht (LLC) eingeteilt. Erstere regelt,
wer wann senden darf, die LLC uebernimmt die Fehlerkorrektur.
Fuer den Einsatz auf PCs wurde 1990 der HDLC Standard auch auf
asynchrone Schnittstellen (start/stop mode) ausgedehnt.

3) Network Layer (N)
--------------------

In einem Netz sind in der Regel nicht alle Knoten vollstaendig
miteinander vernetzt, sondern die Daten muessen ueber Zwischenknoten
(intermediate systems [IS], router, switches) weitergeleitet werden.
Zwischensysteme haben nur die untersten 3 Schichten. Ein
Datenpacket wird fehlerkorrigiert empfangen, es wird die
Adresse analysiert, die die sendende Netzwerkschicht den
Daten angehaengt hat und schliesslich an den naechsten Knoten
weitergeleitet. Erst die Netzwerkschicht des Zielrechners gibt die
Daten nach oben durch. Unter OSI sind derzeit zwei Netzwerkprotokolle
definiert: Das X.25 (z.B. in WIN und DATEX-P verwendet) und
das CLNP (connectionless network protocol), dass dem Internet IP
sehr aehnlich ist und daher oft auch als OSI IP bezeichnet wird.
Da die Netzwerkschicht selbst noch einmal gegliedert ist,
kann man auch ein Protokoll ueber dem anderen benutzen.

4) Transport Layer (T)
----------------------

Dieses Protokoll sichert die Verbindung zwischen zwei Endsystemen
und wird von den intermediate systems nicht gelesen. Bei OSI
ist ein Transportprotokoll definiert, das in 5 unterschiedlichen
Leistungsstufen benutzt werden kann. Waehrend TP0 voll auf die
Sicherheit des Netzdienstes vertraut (was bei DATEX-P ausreicht),
fuehrt TP4 eine komplett fehlerkorrigierte Uebertragung durch
(wie sie bei CLNP noetig ist). TP1 versucht beim Zusammenbrechen
einer Verbindung, diese selbststaendig und ohne die hoeheren
Schichten zu informieren, neu aufzubauen (das ist bei instabilen
Netzen nuetzlich, bei denen hin und wieder ein disconnect auftritt),
TP2 erlaubt das Multiplexen von mehreren Transportverbindungen ueber
einen Netzanschluss und TP3 vereinigt TP1 und TP2. TP4 kann schliesslich
alles zusammen und ist mit dem Internet TCP vergleichbar.

5) Session Layer (S)
--------------------

Es ist oftmals notwendig, in einen Datenstrom Synchronisationsmarken
einzufuegen, die dann eventuell erst von der Partnerstation
bestaetigt werden muessen, bevor die Uebertragung weiter geht.
Wenn etwas schief geht, kann sich ein Programm dann auch auf so
eine Marke zurueckberufen und die Uebertragung neu starten.
Damit man so etwas nicht in jede einzelne Anwendung einbauen
muss, hat man bei OSI dieser Aufgabe eine eigene Schicht gewidmet.
Ausserdem koennen sich zwei Programme ueber diese Schicht
einigen, ob jeder staendig senden darf (duplex) oder ob
abwechselnd immer nur ein Partner dieses Recht haben darf.

6) Presentation Layer (P)
-------------------------

Fast jeder Rechner hat sein eigenes Datenformat. Mal kommt
bei 32bit Zahlen das niederwertigste, mal das hoechstwertigste
Byte zuerst, es gibt etliche Formate fuer Strings, REAL-Zahlen,
Uhrzeiten, etc. Die Presentation Layer wandelt die Daten der
Anwendungsschicht in ein netzeinheitliches Format um.

Man hat eine eigene Sprache (ASN.1) definiert, um das Format
der Datenpakete formal zu definieren. Genauso wie man mit
Grammatiken (EBNF, etc.) z.B. die Menge aller syntaktisch korrekten
C Programme sehr leicht festlegen kann, werden mit ASN.1
Datenstrukturen beschrieben, die als Pakete versendet werden koennen.
Dadurch werden die Normdokumente wesentlich uebersichtlicher,
als wenn man die Datenstrukturen nur in englischer Sprache definieren
wuerde. Es gibt inzwischen auch ASN.1 Compiler, die die formalen
Definitionen in C-Funktionen umwandeln, aehnlich wie man sich
mit dem bekannten YACC leicht Compilerskelette erzeugen lassen kann.
In der Presentation Layer werden die zu sendenden Daten mit den Basic
Encoding Rules (BER) in Bytesequencen umgewandelt. Zuvor werden
noch mit der Partner-Presentationschicht die verwendete Grammatik
und die Encoding Rules ausgemacht.

7) Application Layer
--------------------

Hier gibt es eine ganze Reihe von verschiedenen Protokollen,
die den darueberliegenden Anwendungsprogrammen (oder evtl.
auch nur dem Betriebssystem) anwendungsspezifische Dienste
zur Verfuegung stellen. Einige der bereits definierten
Anwendungsprotokolle sind:

- X.400: (auch MHS = message handling system genannt) Ein Protokoll
  (eigentlich mehrere), dass es erlaubt, zwischen Rechnern
  electronic mail auszutauschen.
- FTAM: (file transfer, access and management) Es koennen einfach
  nur Files uebertragen werden (wie bei Kermit) oder es kann auch
  voll auf das Dateisystem des anderen Rechners zugegriffen werden
  (create file, copy file, list directory, change directory,
  auf einzelne Records zugreifen, einfuegen, loeschen, ...)
- VT: (virtual terminal) Ein Rechner fungiert als Terminalemulatur,
  ueber den dann der User mit einem Host arbeiten kann. Das
  Protokoll unterstuetzt Dienste, mit denen der Hostrechner
  den Bildschirm des Users steuern kann (Schriftarten, Farben,
  Eingabemasken, Cursorsteuerung, Schirm loeschen, ...)
- DS: (directory service) Eine Art globales ueber das Netz verteiltes
  Telefonbuch. Man kann z.B. ueber meinen Namen und die Tatsache,
  das ich an der Uni Erlangen in Deutschland bin (c=de;o=uni-erlangen),
  meine e-mail Adresse heraussuchen (meine bevorzugte ist markiert),
  ebenso wenn ich es eingetragen habe, meine Adresse, Telefonnummer,
  Faxnummer, mein oeffentliches FTAM directory, eine kurze
  Beschreibung meiner Taetigkeit/Stellung uvam.
- CMIP: (common management information protocol) Grosse Netzwerke
  mit vielen Knoten muessen oft von einem zentralen System
  Administrator verwaltet werden. Mit CMIP kann er auf die
  Resourcen der einzelnen Rechner zugreifen und z.B. Passwoerter
  eintragen, neue Softwareversionen installieren/patchen,
  Fehlermeldungen empfangen (Platte voll, Leitung weg,
  Stromausfall, Einbrecheralarm, uvam.) und noch einige
  tausend andere Sachen tun.

Es gibt noch einige andere Protokolle (Spezialprotokolle fuer
Bibliotheken, Banken, ...) und viele sind noch geplant
(News Service, Multimedia, ...).

Ausserhalb des Schichtenmodelles definiert OSI noch eine
Management- und eine Security-Architektur, die alle Schichten
umfasst.

Einfuehrungsliteratur:
----------------------

- Uyless Black, OSI - A Model for Computer Communications Standards,
  Prentice Hall 1991, ISBN 0-13-637133-7, 528 S., DM 96,-.
- ISO 7489, OSI Reference Model, International Standards
  Organisation, Genf 1984.


Dieser Text darf nach Belieben fuer nichtkommerzielle Zwecke kopiert
werden, wenn er in voller Laenge und ungeaendert uebernommen wird.
Ich uebernehme fuer den Inhalt keine Gewaehr.

Markus Kuhn, 16. Mai 1991,
X.400  : G=Markus;S=Kuhn;OU1=rrze;OU2=cnve;P=uni-erlangen;A=dbp;C=de
RFC822 : mskuhn@faui43.informatik.uni-erlangen.de


------------------------------------------------------------------------------