Das ISO/OSI-Modell (Teil 4) – Anwendungsentwickler-Podcast #86

Wir beenden das ISO/OSI-Modell mit den letzten drei Schichten in der sechsundachzigsten Episode des Anwendungsentwickler-Podcasts.

TL;DR

Ich gehe mit dir die anwendungsorientierten Schichten 5 bis 7 des ISO-OSI-Modells durch und ordne bekannte Netzwerkprotokolle ein. Die Sitzungsschicht verbindet zusammengehörige Anfragen und Antworten zu einem Dialog, während die Darstellungsschicht dafür sorgt, dass beteiligte Systeme die übertragenen Daten verstehen. Auf der Anwendungsschicht erhalten Daten und Befehle ihre Bedeutung für das jeweilige Protokoll. Anhand einer E-Mail lässt sich nachvollziehen, wie alle sieben Schichten zusammenarbeiten und welche Aufgaben sie beim Übertragen übernehmen.

Kapitelmarken

  • [00:00:00] Begrüßung und Abschluss der Reihe zum ISO-OSI-Modell
  • [00:01:48] Transportorientierte und anwendungsorientierte Schichten
  • [00:03:12] Schicht 5: Sitzungsschicht und zusammengehörige Anfragen
  • [00:05:20] Warenkorb als Beispiel und Websessions auf Anwendungsebene
  • [00:06:38] Wiederaufsetzpunkte bei unterbrochenen Verbindungen
  • [00:07:36] Schichtübergreifende Komponenten und RPC
  • [00:09:02] Schicht 6: Darstellungsschicht und Syntax der Daten
  • [00:10:59] Zeichenkodierung, Verschlüsseln und Komprimieren
  • [00:13:31] Zeilenenden zwischen Windows und Linux
  • [00:14:18] Datenstrukturen mit ASN.1 beschreiben
  • [00:16:12] Schicht 7: Anwendungsschicht als Einstiegspunkt für Programme
  • [00:18:10] Semantik und Bedeutung von Befehlen
  • [00:19:27] Firewalls auf Anwendungsebene
  • [00:20:41] Proxyserver: Stellvertreter, Cache und Inhaltsfilter
  • [00:22:17] Anfragen mit einem Loadbalancer verteilen
  • [00:23:14] Gateways zwischen unterschiedlichen Technologien
  • [00:25:21] Bekannte Protokolle auf Anwendungsebene
  • [00:26:52] Rückblick auf die Schichten 5 bis 7
  • [00:29:36] Eine E-Mail durch alle sieben OSI-Schichten
  • [00:32:31] Prüfungswissen und Fehlersuche in der Praxis
  • [00:33:49] Feedback, Begleitmaterial und Podcastpause

Probeabo bei Audible (Affiliate)

Inhalt

5: Sitzungsschicht (Session Layer)

  • Wie wird eine dauerhafte Kommunikation von Netzwerkteilnehmern aus unterschiedlichen Anfragen und Antworten (Dialog) ermöglicht?
  • Einheit: Daten
  • Zusätzliche Informationen: Zuordnung von Anfragen und Antworten zueinander, Wiederaufsetzpunkte bei Ausfall der Kommunikation
  • Hardware: siehe Anwendungsschicht
  • Protokolle: RPC, siehe Anwendungsschicht

6: Darstellungsschicht (Presentation Layer)

  • Wie können Daten unabhängig von der konkreten Repräsentation auf den beteiligten Systemen verständlich ausgetauscht werden?
  • Einheit: Daten
  • Zusätzliche Informationen: Syntax der Daten, Encoding, Verschlüsselung, Kompression
  • Hardware: siehe Anwendungsschicht
  • Protokolle: ASN.1, siehe Anwendungsschicht

7: Anwendungsschicht (Application Layer)

  • Wie können anwendungsspezifische Daten und Befehle ein- und ausgegeben werden?
  • Einheit: Daten
  • Zusätzliche Informationen: Semantik der Daten
  • Hardware: Gateway, Load Balancer, Proxy, Firewall
  • Protokolle: HTTP, FTP, SMTP

Literaturempfehlungen

Heinrich Hübscher - IT-Handbuch: IT-Systemelektroniker, -in, Fachinformatiker, -in (Affiliate)*

Links

Zusammenfassung

Die oberen Schichten des ISO-OSI-Modells

Zum Abschluss meiner Reihe zum ISO-OSI-Modell gehe ich mit dir die anwendungsorientierten Schichten 5 bis 7 durch. Als IT-Azubi zum/zur Fachinformatiker:in Anwendungsentwicklung brauchst du dieses Wissen für die Prüfung und für die Fehlersuche im Alltag.

Die Schichten 1 bis 4 übernehmen den Transport. Darauf bauen die oberen Schichten auf, deren übertragene Einheit jeweils Daten heißt. Protokolle und Netzwerkkomponenten können Aufgaben auf mehreren dieser oberen Schichten übernehmen, weshalb sich ihre Funktionen teilweise über die Schichtgrenzen erstrecken.

Schicht 5: Sitzungsschicht, Session Layer

Wenn mehrere Anfragen zusammengehören, muss die Kommunikation ihren Zusammenhang erhalten. Die Sitzungsschicht ordnet Anfragen und Antworten einander zu, sodass zwischen den beteiligten Systemen ein Dialog entsteht. Dabei greift sie auf die Dienste der Transportschicht zurück.

Über Wiederaufsetzpunkte lässt sich eine unterbrochene Kommunikation fortführen. Wird beispielsweise eine große Datei übertragen und die Verbindung bricht nach einem bereits übertragenen Teil ab, kann der Austausch an einer passenden Stelle weitergehen.

Am Warenkorb eines Onlineshops lässt sich das Prinzip zusammengehöriger Anfragen veranschaulichen: Wenn du einen Artikel hineinlegst und später den Warenkorb aufrufst, muss der Server beide Vorgänge miteinander verbinden. Solche Websessions werden auf Anwendungsebene verwaltet, etwa über eine Session-ID und serverseitig gespeicherte Daten. Die Sitzungsschicht behandelt den Zusammenhang auf einer technischeren Ebene.

Als Beispiel für diese Schicht dient RPC, Remote Procedure Call. Wenn auf einem entfernten Rechner eine Funktion aufgerufen wird, müssen die ausgetauschten Daten dem Aufruf zugeordnet werden können.

Schicht 6: Darstellungsschicht, Presentation Layer

Damit unterschiedliche Systeme dieselben Daten verstehen, brauchen sie gemeinsame Regeln für deren Darstellung. Auf Schicht 6 geht es um die Syntax, also darum, wie Daten aufgebaut und dargestellt werden.

  • Zeichenkodierung: Zeichensätze wie ASCII und Unicode müssen beim Austausch berücksichtigt und gegebenenfalls umgewandelt werden.
  • Verschlüsselte Daten: Auf der Gegenseite müssen die Daten entschlüsselt werden, damit sie gelesen werden können. Verschlüsseln dient der Geheimhaltung.
  • Komprimierte Daten: Vor dem Darstellen werden die Daten wieder entpackt. Komprimieren spart Speicherplatz und verringert die zu übertragende Datenmenge.
  • Zeilenenden: Beim Austausch von Textdateien zwischen Windows und Linux kann eine Anpassung nötig sein. Windows verwendet Carriage Return und Line Feed, Linux verwendet Line Feed.

Mit ASN.1, Abstract Syntax Notation One, lassen sich Datenstrukturen unabhängig von einem konkreten Endsystem beschreiben. Die Beschreibungssprache kennt beispielsweise Boolean und Integer. Ihre Aufgabe lässt sich mit XML vergleichen, wobei ASN.1 eine eigene Syntax hat. Über gemeinsame Regeln können beteiligte Systeme die übertragenen Daten wieder in ihre jeweilige Darstellung zurückführen.

Schicht 7: Anwendungsschicht, Application Layer

Ein E-Mail-Programm wie Thunderbird greift auf die Anwendungsschicht zu, um mit einem Mailserver Befehle auszutauschen. Diese Schicht bildet den Einstiegspunkt für Programme, die über das Netzwerk kommunizieren. Die darunterliegenden Schichten übernehmen die weiteren Aufgaben des Austauschs.

Zur Form der Daten kommt hier ihre Semantik hinzu: Welche Bedeutung hat ein Befehl innerhalb des Protokolls, und passt er zum jeweiligen Ablauf? Bei SMTP führen bestimmte Befehle dazu, dass eine E-Mail auf dem Mailserver angelegt wird.

Zu den bekannten Protokollen auf Anwendungsebene gehören HTTP und FTP sowie SSH, SMTP, IMAP und POP3. HTTP definiert beispielsweise die Methoden GET, POST, PUT, DELETE, HEAD und PATCH. Diese Protokolle solltest du für die Prüfung kennen. Ihre Funktionen können auch Aufgaben der Sitzungsschicht und der Darstellungsschicht umfassen.

Komponenten auf den oberen Schichten

Je nachdem, welche Daten eine Komponente auswertet und welche Aufgaben sie übernimmt, arbeitet sie auf unterschiedlichen Ebenen des Modells.

  • Firewall: Eine Firewall auf Anwendungsebene kann übertragene Inhalte prüfen und gefährliche Daten erkennen. Dafür muss sie die Bedeutung der Daten verstehen können.
  • Proxy: Er stellt stellvertretend Anfragen und nimmt Antworten entgegen. Wenn er Antworten zwischenspeichert, kann er wiederholte Anfragen aus seinem Cache bedienen. Außerdem kann er Inhalte prüfen oder bestimmte URLs sperren.
  • Loadbalancer: Er verteilt Anfragen auf mehrere Server. Auf höheren Schichten kann er anhand einer URL entscheiden, an welchen Server eine Anfrage geht, oder verschiedene Protokolle unterschiedlich behandeln.
  • Gateway: Es übersetzt zwischen unterschiedlichen Technologien oder Protokollen. Ein SMS-Gateway kann beispielsweise eine per E-Mail eingehende Nachricht als SMS weitergeben. Ein Fax-Gateway kann empfangene Faxe per E-Mail ins interne Netzwerk schicken.

Das in der IP-Konfiguration angegebene Standard-Gateway bezeichnet den Router, an den Pakete für Ziele außerhalb des eigenen Netzwerks geschickt werden. Ein Gateway auf den oberen Schichten übernimmt das Übersetzen zwischen Technologien.

Eine E-Mail durch alle sieben Schichten

Am Beispiel einer versendeten E-Mail gehe ich den Weg von oben nach unten durch:

  1. Anwendungsschicht: Das E-Mail-Programm tauscht anwendungsspezifische SMTP-Befehle mit dem Mailserver aus.
  2. Darstellungsschicht: Sie regelt, wie die Daten dargestellt werden, und berücksichtigt dabei etwa die Zeichenkodierung oder eine verschlüsselte Verbindung.
  3. Sitzungsschicht: Zusammengehörige Anfragen werden miteinander in Beziehung gesetzt.
  4. Transportschicht: TCP sorgt dafür, dass die Segmente vollständig und in der richtigen Reihenfolge ankommen und wieder zusammengesetzt werden können. Ports gehören zu dieser Schicht.
  5. Vermittlungsschicht: IP-Adressen bezeichnen logische Ziele. Router leiten die Pakete durch die beteiligten Netzwerke weiter.
  6. Sicherungsschicht: Hier werden Frames übertragen und MAC-Adressen herangezogen. Ein Switch kann darüber entscheiden, an welchem Anschluss das Ziel erreichbar ist.
  7. Bitübertragungsschicht: Die Bits werden über das jeweilige Medium übertragen, beispielsweise über Kabel oder WLAN.

Für die Prüfung und die Fehlersuche

Wenn du untersuchst, weshalb ein Ping keine Antwort liefert, hilft dir das Modell dabei, die beteiligten Vorgänge einzuordnen. Bekannte Protokolle aus deinem Alltag lassen sich ihren Aufgaben im Modell zuordnen, wodurch du dir die Schichten leichter merken kannst.

Begleitmaterial und Podcastpause

In den Shownotes zu Episode 86 habe ich weiterführende Wikipedia-Artikel verlinkt. Auch ein IT-Handbuch eignet sich, um die behandelten Inhalte nachzulesen. Nach dieser letzten Episode des Podcastjahres 2016 ist die nächste Folge für den 9. Januar 2017 angekündigt. Über meinen kostenlosen Newsletter erhältst du wöchentlich neue Website-Inhalte und Links mit Bezug zur IT-Ausbildung.

Transkription der gesamten Episode

Automatisch erzeugte Transkription der Episode

[0:00] Herzlich Willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker

[0:09] für Anwendungsentwicklung. In dieser Episode beenden wir das ISO-OSI-Modell. Viel Spaß!

[0:15] Hallo und herzlich Willkommen zur 86. Episode des Anwendungsentwickler-Podcasts. Mein Name

[0:28] ist Stefan Macke und heute beende ich mal meinen Podcastjahr 2016 etwas vorzeitig, denn

[0:36] das hier ist für dieses Jahr jetzt erstmal die letzte Episode. Ich möchte auch ein bisschen

[0:40] Ruhe haben über die Feiertage und deswegen gibt es die nächste Podcast-Episode erst

[0:45] am 9.01.2017, also im neuen Jahr. Bis dahin möchte ich aber ganz gerne das ISO-OSI-Modell

[0:54] endlich abschließen, denn ich will auch mal wieder ein bisschen Programmierthemen hier

[0:57] behandeln. Wir haben jetzt die vierte Episode zum ISO-OSI-Modell. Das ist sicherlich wichtiger

[1:02] Prüfungsinhalt und wir haben ja auch viele Sachen rechts und links vom Modell angesprochen,

[1:06] TCP und IP und ich weiß nicht was alles. Also das ist alles prüfungsrelevant, auch für

[1:11] Anwendungsentwickler, keine Frage. Aber mir persönlich machen natürlich auch die Programmierthemen

[1:15] deutlich mehr Spaß als diese Netzwerkgeschichten hier. Das ist wichtiger Kram und ich kann das

[1:21] ja auch noch und brauche das auch im Prinzip jeden Tag. Ist ein bisschen übertrieben,

[1:25] aber es sind wichtige Themen natürlich und deswegen gehe ich das auch gerne durch. Aber

[1:31] irgendwann muss auch mal Schluss sein und wir kommen wieder zu Programmierthemen. Ich bin

[1:34] schon sehr gespannt, mit welchen Themen es hier weitergeht. Ich weiß es selber noch nicht so

[1:38] ganz. Wir hören uns dann nächstes Jahr, aber bis dahin haben wir natürlich noch drei Schichten

[1:43] vor uns, die ich jetzt mal durchkauen muss. Und zwar die Schichten 5 bis 7 und um die soll es

[1:48] heute gehen. Also lasst uns loslegen. Die drei Schichten, um die es heute geht, sind die Schicht

[1:55] 5, die Sitzungsschicht, die Schicht 6, das ist die Darstellungsschicht und die Schicht 7, die

[2:01] Anwendungsschicht. Warum mache ich die drei zusammen und gehe da nicht so individuell,

[2:06] doch ich gehe individuell auf einen, aber warum sind die zusammen in einer Episode? Nun,

[2:10] ich hatte ganz am Anfang in der allerersten Episode schon gesagt, dass man das ISO-OSI-Modell grob

[2:14] einteilt in zwei Bereiche und zwar immer so in die transportorientierten Schichten, das sind

[2:18] nämlich die 1 bis 4 und dann in die anwendungsorientierten Schichten, das sind die 5 bis

[2:23] 6, ne Entschuldigung, 5, 6 und 7, also 5 bis 7 so. Und die behandeln wir heute. Die anderen Schichten,

[2:29] da gibt es ganz ganz viel Kram zu, auch technisches Zeug und so, was man lernen kann. Deswegen hat

[2:33] das auch so lange gedauert mit den anderen Schichten. Da waren ja die verschiedensten

[2:36] Protokolle, die man auch im Alltag immer braucht und die man auch für die Prüfung braucht und so

[2:40] weiter. Aber in Schicht 5 und 6 und 7 sieht das ein bisschen anders aus. Die sind ein bisschen

[2:44] dünner, sage ich mal. Da sind nicht so viele spannende Sachen drin, die man auch im Alltag

[2:49] häufig trifft und auch für die Prüfung braucht. Deswegen kann man die auch ganz gut zusammendampfen.

[2:53] Man muss schon wissen, was da drin läuft und wofür die da sind und was die machen,

[2:56] keine Frage. Aber man kann die nicht so individuell intensiv behandeln, wie halt

[3:02] die vier bisherigen Schichten. Deswegen passen die ganz gut zusammen und wir gehen so ein bisschen im

[3:07] Schnelldurchlauf mal durch, was diese drei Schichten machen. Fangen wir also mit der untersten an.

[3:12] Das ist die Nummer 5, die Sitzungsschicht oder auf Englisch Session Layer genannt. Auch hier wieder

[3:17] wie bei der Transport Layer, Transportschicht, kann man das ganz gut übersetzen. Wenn man weiß,

[3:22] dass Sitzung auf Englisch Session heißt, ist es wirklich eine 1 zu 1 Übersetzung. Das war bei den

[3:26] anderen Schichten ja teilweise etwas anders. Also Bit-Übertragung und Physical, naja,

[3:31] das muss man sich dann wirklich schon merken. Aber Sitzungsschicht, Session Layer, das kann

[3:35] man 1 zu 1 übersetzen. Das ist die Schicht 5 und ich habe mal so die Frage dazu gestellt,

[3:39] wie wird eine dauerhafte Kommunikation von Netzwerkteilnehmern aus unterschiedlichen

[3:44] Anfragen und Antworten, also eine Art Dialog, ermöglicht. Das soll unsere fünfte Schicht,

[3:49] die Sitzungsschicht machen. Wir reden jetzt hier auf allen drei Schichten, die wir uns heute angucken,

[3:55] von der Einheit Daten. Man kann jetzt also nicht mehr sowas unterscheiden wie Paket und Segment

[4:01] und Datagramm, was es da alles gab, sondern wir reden jetzt hier immer von diesen Daten und da

[4:06] gibt es jetzt also nicht unbedingt mehr so Header-Geschichten, die irgendwo vorgeschrieben

[4:10] werden oder solche Sachen, sondern, ja, das gab es wunderbar auf den unteren Ebenen. Da konnte man

[4:15] auch schöne Diagramme zeichnen, wie die Header aufgebaut sind und wie viel Byte für was reserviert

[4:19] ist und so weiter. Das ist auf diesen Schichten jetzt nicht mehr ganz so interessant, deswegen

[4:23] lassen wir das einfach weg. Wir sprechen ab jetzt einfach nur noch von Daten, die von A nach B

[4:28] geschickt werden bzw. zurück. Was jetzt in Schicht 5 dazukommt zur Schicht 4, die da drunter liegt,

[4:34] ist die Zuordnung von Anfragen und Antworten, die zueinander gehören, um eben so einen Dialog zu

[4:41] ermöglichen. Grundsätzlich bietet die Schicht 4 nach oben hin quasi das Transportmedium unabhängig

[4:48] von der konkreten Implementierung an. Das heißt, die Schichten 5, 6, 7, die verlassen sich darauf,

[4:54] dass sie halt irgendwie die Daten von A nach B transportieren. Aber wie genau,

[4:58] das ist denen jetzt halt egal. Das regelt Schicht 4. Und Schicht 4 regelte ja auch schon,

[5:02] dass wir zum Beispiel eine Verbindung aufbauen können mit TCP zum Beispiel, wo ich also sicher

[5:07] sein kann, dass alle Segmente von A nach B übermittelt werden und auch in der richtigen

[5:11] Reihenfolge und wieder zusammengesetzt werden und und und. Das macht das Ding alles. Aber jetzt

[5:15] bewegen wir uns auf so einer Art logischen Ebene. Das heißt, wir haben jetzt hier mehrere Anfragen,

[5:20] die vielleicht miteinander in Beziehung stehen. Ich nehme jetzt einfach mal so ein Beispiel. Ich

[5:25] lege bei Amazon etwas in meinen Warenkorb und erwarte, wenn ich auf den Warenkorb klicke,

[5:30] dass natürlich die Sachen, die ich da vorher reingelegt habe, auch da drin sind. Obwohl dieser

[5:34] Klick auf den Warenkorb eigentlich einen ganz neuen HTTP-Request auslöst, der mit dem ersten

[5:40] eigentlich nichts zu tun hat, denn HTTP ist ein zustandsloses Protokoll, muss trotzdem der

[5:44] Webserver diese beiden Sachen miteinander in Verbindung bringen und wissen, dass die zweite

[5:49] Anfrage dem Warenkorb aus der ersten Anfrage zuzuordnen ist. Und das kann man im Prinzip mit

[5:54] einer Sitzung beschreiben. Das heißt, mehrere Antworten oder mehrere Anfragen und deren Antworten

[6:00] müssen einander zugeordnet werden. Davon reden wir, wenn wir von einer Sitzung sprechen, von so

[6:06] einer Session. Bitte jetzt aber nicht durcheinanderwerfen. Ich habe es jetzt noch mal so

[6:10] ein bisschen verständlicher erklärt. Wir reden hier auf Schicht 5 nicht von diesen Sitzungen im

[6:15] Webbrowser-Umfeld. Das sind tatsächlich Sitzungen, die auf der Anwendungsebene nochmal

[6:19] gesondert betrachtet werden müssen. Das würde zum Beispiel jetzt, wenn ich eine PHP-Anwendung

[6:24] habe, würde so eine Session abgelegt auf Server-Seite und die wird aufgerufen, wenn der

[6:29] Client seine Session-ID mitschickt und so weiter. Das hat mit dieser Session auf Schicht 5 erstmal

[6:33] nichts zu tun. Bei der Sitzungsschicht geht es noch auf einer etwas technischeren Ebene darum,

[6:38] die Sachen einander zuzuordnen. Das heißt, insbesondere werden hier Protokolle, die

[6:43] die sogenannten Wiederaufsetzpunkte beim Ausfall von Kommunikationsbeziehungen definieren. Das heißt,

[6:49] wenn ich zum Beispiel per TCP Sachen hin und her schicke und die sollen einander zugeordnet

[6:55] werden und jetzt bricht mir einfach mittendrin die Verbindung weg. Keine Ahnung, zieht jemand

[6:59] einen Stecker oder Stromausfall oder was auch immer und ich kann dann ein paar Sekunden später

[7:03] vielleicht, gut beim Stromausfall wäre es jetzt schwierig, aber ich kann dann ein paar Sekunden

[7:06] später diese Verbindung wieder aufnehmen. Dann müssen die Daten, also die logischen

[7:11] Informationen, die da hin und her geschickt werden, einander wieder zugeordnet werden,

[7:15] sodass ich zum Beispiel jetzt nicht, jetzt mal angenommen, ich habe gerade eine Datei übertragen

[7:18] per FTP und ich habe jetzt einen von vier Gigabyte übertragen und jetzt bricht mir die Verbindung

[7:23] kurz ab. Dann will ich natürlich nicht wieder ganz von vorne anfangen, sondern irgendwo bei

[7:27] dem Gigabyte, was ich schon übertragen habe. Und diese Geschichten müssen einander zugeordnet

[7:31] werden. Davon reden wir, wenn wir von so einer Sitzung reden, auf Ebene 5 des ISO-OSI-Stacks.

[7:36] Die Hardware, die wir uns hier auf Schicht 5 angucken können, die ist auch nicht so schön

[7:43] zuordnenbar wie bei den anderen vier Schichten und deswegen mache ich jetzt einfach für 5 und 6

[7:47] und 7 die Hardware und auch die Protokolle, die wir sehen werden, auch die Einheiten alle

[7:52] identisch, denn man kann die nicht mehr eindeutig einer Schicht zuordnen. Viele Protokolle und viele

[7:57] Hardwarekomponenten arbeiten auf allen diesen drei Schichten, sodass ich jetzt also nicht sagen

[8:01] kann, hier, das Stückchen Hardware passt zu Schicht 5 und 6 und 7, sondern das gehört halt

[8:06] eben zu all diesen Schichten. Deswegen kann man diese Schichten auch gut zusammenfassen. Auf den

[8:10] Schichten 1, 2, 3, 4 konnte man wirklich explizit sagen, das Protokoll arbeitet nur auf dieser

[8:14] Schicht. Aber das ist hier jetzt einfach ein bisschen anders bei diesen drei Schichten,

[8:17] deswegen komme ich da nachher noch mal drauf, welche Hardware hier jetzt eingesetzt werden kann.

[8:21] Das gucken wir uns dann ganz am Ende an, wenn wir uns die Schicht 7 angucken. Protokolle,

[8:26] genau das gleiche machen wir auch bei Schicht 7, aber ein konkretes Protokoll, was man durchaus

[8:31] auch der Sitzungsschicht zuordnen kann, wäre das RPC, Remote Procedure Call. Da geht es nämlich

[8:37] genau darum, wenn ich also remote auf einem entfernten Rechner irgendeine Funktion aufrufen

[8:42] möchte, Procedure Call, wie der Name sagt, dann muss ich halt eben auch Daten, die denn

[8:47] und her gereicht werden, einander zuordnen. Also ich muss, wenn irgendwas ausfällt,

[8:52] wieder aufsetzen können und das macht eben diese Sitzungsschicht. Das soll es jetzt auch

[8:58] erstmal schon gewesen sein zur Schicht Nummer 5. Da gehen wir dann gleich weiter zur Schicht Nummer

[9:02] 6, denn die kann man sich wieder etwas besser vorstellen, wie ich finde. Also dieses Wiederaufsetzpunkte

[9:07] hin definieren und da gibt es dann auch irgendwelche wilden Protokolle, die will ich hier jetzt auch

[9:11] gar nicht durchgehen. Irgendwelche X-Punkt-Irgendwas-Protokolle sind auch für die Prüfung

[9:15] nicht relevant. Das ist zu technisch, ehrlich gesagt. Aber auf Schicht 6 gibt es durchaus

[9:19] wieder Informationen, die wir auch in unserem Alltag häufiger mal sehen und die auch zum

[9:23] Beispiel für Anwendungsentwickler durchaus relevant sind oder die uns jeden Tag begegnen,

[9:27] nämlich zum Beispiel das Encoding. Ja, wenn wir von Linux nach Windows mal ein paar Dateien

[9:31] übertragen, dann haben wir nämlich genau ein Problem, was diese Darstellungsschicht eigentlich

[9:36] lösen soll. Dazu gleich mehr. Fangen wir wieder vorne an. Die Darstellungsschicht auf Englisch

[9:41] Presentation Layer kann man also auch wieder ganz gut übersetzen. Darstellung, Presentation,

[9:46] das passt ganz gut zusammen. Wofür ist die also da? Die sorgt eigentlich dafür, dass Daten unabhängig

[9:53] von der konkreten Repräsentation auf den beiden beteiligten Systemen verständlich

[9:58] ausgetauscht werden können. Mein Beispiel von eben, ich habe ein Linux-System und ein Windows-System,

[10:03] die reden quasi zwei völlig verschiedene Sprachen, sage ich jetzt einfach mal, und trotzdem möchte

[10:08] ich von A nach B irgendwie Daten übertragen können. Und jedes System soll die vernünftig

[10:12] interpretieren und verstehen können. Und dafür ist die Darstellungsschicht da. Einheit hatte

[10:18] ich schon gesagt, Daten genau wie bei 5 und 7. Und zusätzliche Informationen, die jetzt hier aber

[10:24] an die Daten rangehängt werden, sind eben genau diese Sachen, die wir vielleicht aus dem Alltag

[10:29] kennen, nämlich die Syntax der konkreten Daten. Hier wird also definiert, wie die Daten auszusehen

[10:34] haben, damit sie korrekt interpretiert werden können. Also als Beispiel, wenn wir mal das

[10:39] SMTP-Protokoll meinetwegen nehmen, da gibt es einen Befehl, hello, und der muss geschrieben

[10:44] werden. Und das wäre jetzt hier halt einzuhalten. Ich kann jetzt also nicht auf einmal zwei

[10:49] Buchstaben vertauschen, dann wäre die Syntax nicht mehr korrekt und das würde halt eben auf

[10:54] der Darstellungsschicht hier geprüft. Aber es kommen auch noch andere Sachen dazu, die auf

[10:59] Schicht 6 arbeiten, nämlich zum Beispiel das Encoding. Also wenn ich verschiedene Zeichensätze

[11:05] benutze, also meinetwegen den ASCII-Zeichensatz oder Unicode, die müssen ineinander eventuell

[11:11] umgewandelt werden, wenn die Daten korrekt interpretiert werden können sollen. Außerdem

[11:17] würde so etwas wie eine Verschlüsselung oder auch eine Kompression auf Schicht 6 arbeiten.

[11:22] Man kann sich vorstellen, wenn ich zum Beispiel einen riesengroßen Text auf meiner Website platziere

[11:27] und ein Client möchte den sich anschauen, möchte den herunterladen, dann interessiert ihn ja erst

[11:32] mal wenig, ob der Text irgendwie bei der Übertragung komprimiert wird oder nicht. Er wünscht sich das

[11:38] vielleicht sogar, dass er komprimiert wird, damit er nicht so viele Bytes herunterladen muss. Aber

[11:42] wenn er den dann heruntergeladen hat, möchte er den natürlich im Klartext lesen können, so dass

[11:47] also diese Kompression wieder aufgelöst werden muss und quasi die Daten wieder entpackt werden

[11:52] müssen, um sie vernünftig darzustellen. Und das würde eben auf dieser Schicht 6, auf der

[11:57] Darstellungsschicht erledigt. Genau das gleiche bei der Verschlüsselung. Verschlüsselung, ich will

[12:01] jetzt nicht Kompression und Verschlüsselung durcheinander bringen, das ist was definitiv

[12:05] unterschiedliches, aber es funktioniert halt ähnlich. Ich habe Daten, die da irgendwo reingehen,

[12:09] entweder in einen Kompressions- oder in Verschlüsselungsalgorithmus und die kommen

[12:12] auf der Gegenseite auch wieder raus. Das heißt, wenn ich etwas verschlüsselt habe, muss ich es

[12:16] wieder entschlüsseln, damit ich es lesen kann. Und wenn ich etwas komprimiert habe, muss ich es

[12:20] wieder dekomprimieren, damit ich es auch lesen kann. Also nicht durcheinander bringen sind zwei

[12:25] verschiedene Sachen. Verschlüsselung dient der Geheimhaltung. Das heißt, ich gebe irgendwie

[12:29] ein Passwort oder einen Schlüssel mit, damit niemand anderes diese Daten lesen kann. Und eine

[12:33] Kompression dient ausschließlich dazu, Speicherplatz zu sparen. Aber das heißt nicht, dass

[12:38] dann niemand mehr reingucken kann, sondern wenn ich den Kompressionsalgorithmus kenne, dann kann

[12:41] ich die Daten einfach dekomprimieren, dann kann ich natürlich da reingucken. Also es hat nichts

[12:45] mit Geheimhaltung zu tun an dieser Stelle. Und all diese Dinge kann man sich immer gut vor Augen

[12:49] halten. Da geht es eigentlich weniger darum, die Daten irgendwie zu manipulieren, sondern es wird

[12:53] einfach anders dargestellt. Daten werden vielleicht in einem anderen Zeichensatz abgelegt

[12:59] oder sie sind halt verschlüsselt oder sie sind komprimiert, aber es handelt sich immer noch um

[13:03] dieselben Daten. Und die müssen natürlich von A nach B ausgetauscht werden, denn beide Endpunkte

[13:09] sollen ja mit den gleichen Daten arbeiten. Aber wie sie jetzt konkret repräsentiert werden, also

[13:14] meinetwegen g7 oder in Unicode anstatt in ASCII oder wie auch immer, das ist erst mal völlig egal

[13:21] für die darunter liegenden Schichten, denn das wird hier auf der Darstellungsschicht jetzt, sag

[13:27] ich mal, vereinbart, sodass die Gegenseite dann mit diesen Daten auch irgendwas anfangen kann. Also

[13:31] jetzt mal ein ganz blödes Beispiel. Ich hole mir irgendwie eine Datei von Linux nach Windows,

[13:35] dann muss ich vielleicht sicherstellen, dass meine Datei, Entschuldigung, dass meine Zeilenenden

[13:40] entsprechend umgeändert werden. Das kann man sogar, wenn man per FTP Dateien überträgt, kann man

[13:45] sogar anhaken, dass man von Windows nach Linux Sachen umändern will, sodass also eine Textdatei

[13:50] zum Beispiel aus einem Carry-to-Turn-Line-Feed nur noch ein Line-Feed gemacht wird. Wenn ich

[13:57] jetzt also von Windows nach Linux übertrage, Windows benutzt Carry-to-Turn-Line-Feed als

[14:01] Zeilenende, Linux benutzt nur Line-Feed, das heißt, ich könnte das hin und her transformieren.

[14:07] Ist jetzt ein doofes Beispiel, weil ich da wirklich in die Datei so eingreifen muss quasi, aber das wäre

[14:13] etwas, was auf der Darstellungsschicht eventuell gemacht werden müsste. Die Hardware hatte ich schon gesagt,

[14:18] gucken wir uns bei Schicht 7 an, aber es gibt ein kleines Protokoll, was man sich nur angucken kann,

[14:23] beziehungsweise, naja, ein richtiges Protokoll ist es jetzt auch nicht. Es ist mehr eine Notation und

[14:29] das ist die sogenannte ASN.1. Das ist die Abstract Syntax Notation One und das ist eine

[14:36] Beschreibungssprache für Datenstrukturen. Ich will da jetzt nicht zu sehr ins Detail gehen, aber man

[14:41] kann das vielleicht so ein bisschen vergleichen mit XML. Mit XML kann ich auch Dateiformate zum

[14:47] Beispiel spezifizieren, wie die aufgebaut sind, welche Elemente es da geben muss, Attribute und so

[14:51] weiter und so fort und das ASN ist im Prinzip etwas sehr ähnliches. Damit kann ich auch Aufbauten

[14:57] von Dateien zum Beispiel beschreiben. Das kennt Datentypen wie zum Beispiel Boolean und Integer

[15:02] und so weiter und das ist durchaus vergleichbar mit so etwas wie XML. Die Syntax ist eine komplett

[15:09] andere, sieht ganz anders aus, also keine spitzen Klammern und so weiter, sieht völlig anders aus,

[15:13] aber das ist ein allgemein gültiger Standard, mit dem ich solche Datenstrukturen festlegen kann.

[15:17] Und die ist wirklich völlig unabhängig von irgendeinem konkreten Endsystem. Das heißt,

[15:22] ich könnte jetzt zum Beispiel auf dem einen System irgendeine Nachricht losschicken und

[15:27] auf der Schicht 6 würde diese Nachricht jetzt umgewandelt in diese ASN-Notation und die kann

[15:32] dann halt über das Netzwerk übertragen werden und auf der Gegenseite können daraus die

[15:40] Originaldaten quasi wiederhergestellt werden. Und das ist halt ein Format, das es mir erlaubt,

[15:45] auch verschiedenste Datentypen, ich hatte es gerade schon gesagt, Boolean und Integer und Strings und

[15:50] was es da alles gibt, halt sauber von A nach B zu transportieren, ohne dass sie jetzt irgendwie

[15:54] besonders interpretiert werden müssten. Sie müssen halt diesem Standard ASN entsprechen und dann kann

[16:02] halt die Gegenseite wunderbar was damit anfangen, die wieder quasi in das Originalformat zurück

[16:06] wandeln und die dann auch entsprechend interpretieren. Gut, damit wären wir mit den ersten beiden Schichten

[16:12] schon durch. Dann kommen wir jetzt zur letzten Schicht, zur Anwendungsschicht. Und da geht es

[16:17] darum, dass wir anwendungsspezifische Daten und Befehle ein- und ausgeben können. Das heißt,

[16:23] hier reden wir jetzt wirklich von der Schicht, wo wir, sage ich mal, das Übliche, was wir auch aus

[16:28] den Protokollen, die wir uns schon mal anguckt haben, HTTP und SMTP usw. kennen, tatsächlich auch

[16:33] ein- und ausgeben können. Also wenn ich mich jetzt zum Beispiel mit meinem Mail-Server verbinde und

[16:37] eine Mail hinschicke über SMTP, dann werden ja diese Befehle zum Beispiel eingegeben. Hatte ich

[16:41] gerade schon gesagt, Halo oder Mail from, Recipient to usw. Und die Sachen befinden sich oder bewegen

[16:48] sich hier auf der Anwendungsschicht. Das ist die Schicht, also eine ganz abstrakte Schicht, die

[16:55] dann zum Beispiel meine Programme nutzen, um die Daten tatsächlich auszutauschen. Also wenn ich

[16:59] jetzt zum Beispiel mein Thunderbird hier starte, mein E-Mail-Client oder mein Outlook oder was auch

[17:03] immer du benutzt, dann setzt der direkt auf der Anwendungsschicht ganz ganz oben auf und benutzt

[17:08] jetzt die Funktion, die diese Anwendungsschicht uns bereitstellt. Also das ist quasi der Einstiegspunkt

[17:13] für ein Programm, was jetzt über das Netzwerk kommunizieren will. Das sieht es eigentlich nur

[17:19] von diesem ganzen ISO-OSI-Modell, denn der ganze Kram, der unter der Anwendungsschicht ist, ist ja

[17:25] versteckt für den Aufrufer. Das ist ja die Idee dieses Modells, dass wir immer abstrakter werden

[17:29] und wir nicht mehr die Details der darunter liegenden Schichten kennen müssen. Das heißt,

[17:34] so ein Thunderbird zum Beispiel könnte jetzt hergehen und mit einem Remote-Mail-Server einfach

[17:40] Halo, Mail from, Recipient usw. austauschen, ohne sich darüber Gedanken machen zu müssen,

[17:45] ob es jetzt per WLAN oder Kabel, ob es per TCP oder UDP oder wie auch immer kommuniziert. Das

[17:51] muss das Ding nicht wissen und das interessiert es auch überhaupt nicht. Es hat nur einen

[17:55] Einstiegspunkt, wo es Befehle abliefern kann quasi und kriegt eventuell was zurück. Und das ist

[18:00] alles, was das Ding sieht. Es ist also wirklich völlig abstrahiert von der konkreten Netzwerk-

[18:05] Technologie darunter. Das macht dieses Modell halt so interessant. Okay, aber fangen wir wieder von

[18:10] vorne an bei der Anwendungsschicht. Also anwendungsspezifische Daten werden hier ausgetauscht,

[18:15] Einheit, logischerweise also Daten, wie bei den anderen Schichten auch. Aber die zusätzliche

[18:19] Information, die jetzt dazukommt, das ist jetzt die Semantik der Daten. Während wir auf der

[18:23] Darstellungsschicht einfach nur von der Syntax gesprochen haben, also wie müssen die Daten

[18:28] aussehen, damit sie korrekt interpretiert werden können, kommt jetzt die eigentliche Bedeutung

[18:32] dieser Daten, also genau die Semantik, auf der Schicht 7 zum Tragen. Das heißt, ich kann auf

[18:38] Schicht 6 zum Beispiel prüfen, ob ich statt Halo vielleicht Hallo eingegeben habe. Das wäre

[18:42] syntaktisch falsch. Aber der Befehl Halo ist syntaktisch korrekt. Wenn er jetzt in der falschen

[18:50] Reihenfolge passiert zum Beispiel, dann ist die Semantik dieser Daten falsch. Also das Wort Halo

[18:56] ist zwar syntaktisch ein korrekter SMTP-Befehl, wenn ich ihn aber nicht zurück zum richtigen

[19:01] Zeitpunkt absende oder doppelt hintereinander absende zum Beispiel, dann ist die Bedeutung

[19:06] dieses Befehls im Kontext des Protokolls nicht korrekt und das kann dann die Darstellungsschicht

[19:11] nicht mehr prüfen. Dafür wäre dann die Anwendungsschicht da. Hier reden wir also wirklich

[19:15] davon, was diese Daten eigentlich heißen sollen. Was will ich denn jetzt machen? Ich möchte zum

[19:20] Beispiel eine E-Mail versenden, also muss ich konkrete Befehle eingeben, die dann dazu führen,

[19:24] dass so eine Mail auf dem Mail-Server angelegt wird.

[19:27] Ja, die Hardware, die auf dieser Schicht arbeitet und eben auch auf Schicht 5 und 6,

[19:33] es gilt also jetzt wie gesagt für alle drei Schichten, das wären zum Beispiel

[19:36] ein Gateway, ein Loadbalancer, ein Proxy oder eine Firewall. Fangen wir hinten an

[19:43] mit der Firewall, die hatte ich doch eigentlich schon auf Schicht 4 und 3

[19:45] erklärt. Ja, richtig, da arbeiten auch die Paketfilter, so heißen sie auch, aber es

[19:50] gibt auch Firewalls, die ein bisschen mehr drauf haben. Die können nämlich in

[19:53] die Semantik, also in die Daten, die da über die Leitung geschickt werden,

[19:58] Einblick bekommen. Und die können dann zum Beispiel ein bisschen mehr als

[20:02] einfach nur sagen, oh, da will jemand auf Port 80 mit mir Verbindung aufnehmen, der

[20:06] sieht dann zum Beispiel auch, dass über Port 80 da gerade ein böser Virus

[20:09] übertragen wird, erst mal ganz blöd gesagt. Das heißt, er kann auch mit den

[20:13] Daten hier etwas anfangen. Dafür muss er natürlich auf Schicht 7 arbeiten und da

[20:17] reicht es eben nicht mehr aus, einfach nur einen Port zu scannen, sondern es kann

[20:21] natürlich auch sein, dass so eine Firewall sagt, ja klar, das HTTP, was da

[20:24] reinkommt, lasse ich durch, aber das andere HTTP da, da ist was gefährliches

[20:28] drin. Dafür muss ich aber da reingucken können und das auch verstehen, was da

[20:32] über die Leitung läuft. Also ich muss Kenntnis dieser Semantik haben. Dafür

[20:35] muss ich halt eben auf den Schichten 5 bis 7 arbeiten. Ein Proxy-Server, was ist

[20:41] das? Das ist ein Server, der stellvertretend für mich Anfragen

[20:45] rausschickt oder Antworten entgegen nimmt. Also Proxy auf Englisch, das ist

[20:49] eben der Stellvertreter auf Deutsch und ein Proxy-Server wird ganz häufig in

[20:53] Unternehmen eingesetzt, um zum Beispiel alle Anfragen ins Internet über diesen

[20:57] Proxy-Server laufen zu lassen. Dann stellt der die Anfrage ans Internet, kann

[21:01] dann die Antwort zum Beispiel zwischenspeichern, also cachen. Also wenn

[21:04] ich mir jetzt zum Beispiel die neuesten Nachrichten bei spiegel.de angucke und

[21:08] mein Büronachbar macht das fünf Sekunden später auch, dann kann der

[21:11] Proxy-Server entscheiden, okay, in fünf Sekunden wird sich wohl nichts geändert

[21:14] haben, also liefere ich dem zweiten Anfrager einfach die gleiche Seite aus,

[21:18] die ich vor fünf Sekunden auch schon mal ausgeliefert habe und dann spare ich

[21:21] mir quasi einen Internetzugriff. Das kann ein Proxy-Server tun.

[21:24] Er kann aber auch, wie ich gerade schon gesagt habe, bei der Firewall in den

[21:28] Inhalt noch mal reingucken. Er kann vielleicht einen Virenscan durchführen.

[21:31] Er kann Sachen ausschließen, also er kann zum Beispiel, was weiß ich, in einem

[21:35] Hochschulnetzwerk YouTube sperren, wenn ich also auf YouTube will und der Proxy

[21:38] sagt, nein, da darfst du aber nicht hin, diese URL habe ich ausgeschlossen.

[21:42] Das ist ja auch etwas, was über das hinausgeht, was auf Port- und IP-Adressebene

[21:48] da unten funktioniert. Wenn ich zum Beispiel sage, YouTube-Traffic möchte ich

[21:51] nicht haben, dann geht es ja schon darüber hinaus, einfach zu sagen, eine IP-Adresse

[21:55] wird gesperrt, denn YouTube hat vielleicht einfach mehrere IP-Adressen.

[21:58] Das heißt, ich muss gucken, der Name, der da angefragt wird, ist der erlaubt?

[22:01] Und das, was da zurückkommt, ist zum Beispiel Video-Traffic, den lasse ich

[22:04] nicht durch und so weiter. Also das sind alles Informationen, die erst auf den

[22:09] Schichten fünf bis sieben zur Verfügung stehen. Von daher arbeitet so ein Proxy-

[22:12] oder eine Firewall auf diesen Schichten. Ein Loadbalancer, was ist das? Den kann ich

[22:17] auch auf weiter unten liegenden Schichten haben, also Loadbalancer ganz

[22:21] klassisch. Ich habe zum Beispiel einen Webserver, da habe ich aber nicht nur

[22:23] eine einzige physikalische Maschine stehen, sondern zum Beispiel drei, weil ich

[22:27] einfach eine Last verteilen will. Wenn ich jetzt zum Beispiel mehrere Millionen

[22:31] Aufrufe am Tag habe, dann reicht das nicht, wenn da ein Server steht. Ich

[22:33] stelle also mehrere hin. Jetzt brauche ich aber irgendwie eine Komponente, die

[22:37] diese Last jetzt auf die drei Server verteilt. Und das ist dann zum Beispiel

[22:41] so ein Stück Hardware, ein Loadbalancer. Das geht auch auf den unteren Ebenen, zum

[22:45] Beispiel auf IP-Ebene kann ich sagen, wenn dieser angesprochen wird, wird im

[22:49] Hintergrund aber auf drei Server rotierend quasi die Anfrage weiter

[22:54] verteilt. Ich kann das Ganze aber auch auf den höheren Ebenen machen, also fünf

[22:58] bis sieben in diesem Fall, wo ich dann zum Beispiel anhand der URL zum Beispiel,

[23:02] die eingegeben wird, irgendein Routing mache oder ich weiß es nicht, bestimmte

[23:06] Protokolle auf andere Server leite, SMTP zum Beispiel anders behandle als FTP

[23:11] oder wie auch immer. Das sind Dinge, die ich auf diesen Ebenen auch machen kann.

[23:14] Und das Letzte ist ein Gateway. Das wird heute häufig missverstanden als

[23:18] Standard-Gateway, was man auch immer sieht, wenn man zum Beispiel unter

[23:21] Windows-IP-Config sich anguckt. Das ist immer das Standard-Gateway, ist

[23:25] eigentlich der Standard-Router, der da drin steht. Das ist nämlich auf IP-Ebene

[23:29] der nächste Hop im Netzwerk, den ich frage, wenn ich mein Ziel nicht im eigenen

[23:36] Netzwerk finde. Wenn ich also zum Beispiel aus meinem Netzwerk heraus, aus

[23:39] meinem privaten Netzwerk heraus Google ansprechen möchte, dann steht Google halt

[23:43] nicht einfach einen PC neben mir, hat eine ähnliche IP-Adresse und ich kann

[23:46] direkt damit reden, sondern es ist halt ein ganz anderer IP-Adressbereich und ich

[23:50] habe keine Ahnung, wie ich da hinkomme. Und wie komme ich jetzt dahin?

[23:53] Naja, ich sende mein Paket einfach mal an meinen Standard-Router und der wird es

[23:58] schon wissen, denn der ist ja genau dafür da, das Paket eben weiter zu routen.

[24:03] Deswegen ist das Standard-Gateway eigentlich ein bisschen irreführend. Es

[24:05] sollte eigentlich Standard-Router heißen. Ein Gateway, von dem ich jetzt hier rede

[24:10] auf Ebene 5 bis 7, da reden wir wirklich von einem Stückchen Hardware oder

[24:14] Software, was zwei völlig unterschiedliche Technologien oder

[24:18] Netzwerkprotokolle ineinander übersetzt. Als Beispiel ein SMS-Gateway, wo ich zum

[24:24] Beispiel eine SMS per E-Mail verschicken kann. Oder umgekehrt, wenn ich ein Fax-

[24:28] Gateway habe, dann kann vielleicht dieses Gateway mit der Außenwelt über Fax

[24:33] kommunizieren und schickt mir dann das Fax aber per E-Mail ins interne Netz. Also

[24:37] ich habe da wirklich zwei völlig unterschiedliche Technologien SMS, Fax,

[24:40] E-Mail, wie auch immer. Und so ein Gateway, das übermittelt quasi zwischen diesen

[24:45] Technologien. Und dafür muss es aber auch eben auf den höheren Schichten

[24:48] arbeiten. Allein um eine E-Mail zu versenden, muss ich halt SMTP sprechen.

[24:52] Also bin ich auf Schicht 7 der Anwendungsschicht.

[24:55] Ich habe übrigens, fällt mir gerade ein, glaube ich noch gar nicht den Namen der

[24:58] Schicht 7 gesagt. Also sie heißt Anwendungsschicht auf Deutsch und

[25:00] Application Layer auf Englisch. Also dieses Mal, diese Woche ist ein bisschen

[25:04] einfacher. Alle Schichten, die wir gehört haben, können wir eins zu eins ins

[25:07] Englische übersetzen. Sitzungsschicht, Session Layer, Darstellungsschicht,

[25:10] Presentation Layer, Anwendungsschicht, Application Layer. Also einfach nur die

[25:14] englischen Worte und dann sind wir fertig. Also nicht großartig, was zu

[25:17] merken. Das ist auch mal ganz gut. Ja und zum Schluss kommen noch zu so ein paar

[25:21] Protokollen. Und da geht es jetzt natürlich ins Eingemachte. Die können wir

[25:24] jetzt auch nicht alle im Detail durchgehen. Aber im Prinzip alles, was ich

[25:27] schon als Beispiel gerade gebracht habe. HTTP, FTP, SSH, SMTP, IMAP, POP3 und so

[25:34] weiter. Alle diese Dinge, die ich in der letzten Episode zu TCP, wo wir die ganzen

[25:37] Ports durchgesprochen haben, erwähnt habe, die arbeiten natürlich letztlich

[25:42] auf Ebene 7, auf der Anwendungsschicht. Und was wird hier also definiert? HTTP

[25:47] zum Beispiel definiert auf Ebene 7 seine ganzen Befehle. Wie zum Beispiel GET, POST,

[25:51] PUT, DELETE. Was gibt es noch? HEAD und PATCH und ich weiß nicht, was noch alles

[25:55] gibt. SMTP eben MAIL FROM, RECIPIENT TO, was ich schon oft gesagt habe. FTP, so

[26:01] was wie USER und PASSWORD und DOWNLOAD. Das heißt gar nicht DOWNLOAD, aber irgendwie GET

[26:06] glaube ich oder UP oder ich weiß es selber gar nicht mehr, wie die Befehle

[26:09] genau heißen. Aber alles das, um jetzt wirklich meinen Daten irgendeine

[26:13] Bedeutung zu geben, das ist jetzt auf Schicht 7 definiert. Und da spielen halt

[26:18] alle diese sehr bekannten Protokolle eine Rolle. Und die sollte man natürlich

[26:21] auch unbedingt für die Prüfungen kennen. Also alles das, was ich jetzt hier

[26:24] erwähnt habe. Aber das sind im Prinzip die Sachen, die ich auch letzte Woche

[26:28] schon erwähnt habe in Episode 3 hier. Deswegen will ich da jetzt auch nicht

[26:32] mehr im Detail darauf eingehen. Aber dir sollte einfach bewusst sein, wenn du von

[26:36] diesen Protokollen sprichst, die ja auch, sage ich mal, landläufig bekannt sind.

[26:39] Also HTTP, das hat wahrscheinlich jeder draußen schon mal irgendwo in seinem

[26:42] Browser eingegeben, auch wenn er nichts mit IT zu tun hat. Das sind aber alles

[26:45] Dinge, die letztlich auf der Ebene 7 des ISO-OSI-Protokolls arbeiten.

[26:52] Okay, damit sind wir jetzt mit allen Schichten des OSI-Modells durch. Ich fasse

[26:57] noch mal zusammen, was wir heute jetzt hier gelernt haben. Die Schicht 5, das ist

[27:01] die Sitzungsschicht oder Session Layer auf Englisch. Und die sorgt dafür, dass

[27:05] sich eine dauerhafte Kommunikation zwischen verschiedenen Netzwerkteilnehmern

[27:09] erreichen kann. Das heißt, es wird so ein Dialog hergestellt. Die Einheit, von der

[27:14] wir hier reden, sind unsere Daten. Zusätzliche Informationen ist eben genau

[27:18] diese Zuordnung der Anfragen zueinander, aber auch Wiederaufsetzpunkte für den

[27:23] Fall, dass die Verbindung mal ausfällt. Hardware sind die Dinger, die ich eben

[27:28] schon gesagt habe. Gateway, Loadbalancer, Proxy, Firewall gehören aber auch zu

[27:31] Schicht 6 und 7. Und ein spezifisches Protokoll vielleicht für Schicht 5

[27:36] wäre eher PC, aber auch alle anderen Protokolle, die wir gerade besprochen

[27:39] haben, haben einen Anteil in der Sitzungsschicht. Also HTTP, FTP, SMTP und

[27:45] so weiter. Dann, darauf setzt auf die Schicht Nummer 6, die Darstellungsschicht,

[27:49] Präsentation Layer auf Englisch. Da geht es darum, auch unabhängig von der

[27:53] konkreten Repräsentation der Daten auf den beteiligten Systemen, miteinander

[27:58] verständlich kommunizieren zu können. Was passiert hier? Es geht um die Syntax

[28:03] der Daten, also auch um das Encoding, eventuelle Verschlüsselung und

[28:07] Kompression der Daten. Also wie werden die Daten auf dem Endsystem konkret

[28:11] repräsentiert? Eventuell muss ich zum Übertragen die Daten in ein

[28:15] allgemeingültiges Format übertragen und das wäre zum

[28:20] Beispiel das ASN. Das dient eben dazu, um unabhängig von konkreten Systemen

[28:26] Datenstrukturen definieren zu können. Wenn wir dann mit der Darstellung durch

[28:31] sind, also wissen, wie die Sachen kodiert sind und komprimiert sind und so weiter,

[28:35] dann kann ganz ganz oben aufsetzen die Anwendungsschicht, der Application Layer.

[28:39] Und da geht es jetzt wirklich um die anwendungsspezifischen Daten und Befehle,

[28:43] die dort auch ein- und ausgegeben werden können. Und was hier halt dazu

[28:47] kommt, ist die Semantik dieser Daten, also Syntax der Daten auf

[28:52] Darstellungsschicht und auf der siebten Ebene kommt die Semantik, also die

[28:54] Bedeutung dazu. Und hier reden wir jetzt halt von diesen Protokollen HTTP, FTP,

[29:00] SMTP, IMAP, POP3, SSH und wie sie alle heißen. Die arbeiten letztlich auf all

[29:05] diesen drei Schichten, aber die Programme, die dann wirklich mit diesen Protokollen

[29:10] arbeiten, also zum Beispiel dein Outlook, dein Firefox Browser, dein, ich weiß es

[29:14] nicht, Win oder Filezilla für FTP und so weiter, die setzen auf Schicht 7 auf und

[29:20] sehen von dem ganzen Rumsch da drunter auch nichts mehr. Denn das ist ja genau

[29:25] der Sinn dieses ISO-OSI Modells. Ich muss nicht mehr wissen, was da drunter

[29:28] passiert. Ich kann einfach mit der direkt unter mir liegenden Schicht

[29:32] kommunizieren und alles andere wird vor mir verborgen.

[29:36] So, dann gehen wir jetzt zum Abschluss noch mal einmal die kompletten Schichten

[29:40] von oben nach unten durch, was jetzt passiert, wenn ich mit irgendwem

[29:43] kommunizieren möchte. Stellen wir uns vor, ich schicke jetzt eine Mail ab. Was macht

[29:48] jetzt mein Thunderbird, wenn es mit dem Mails-Hörer spricht? Es wird erstmal auf

[29:51] Schicht 7, der Anwendungsschicht, ein paar Befehle hin und her schicken, zum

[29:55] Beispiel Hello, Mail from, Recipient to und so weiter. Wie genau diese Sachen

[30:00] jetzt syntaktisch übermittelt werden müssen, regelt die Schicht da drunter, die

[30:04] Darstellungsschicht. Das heißt, habe ich vielleicht eine verschlüsselte Verbindung

[30:07] zu meinem Mails-Hörer oder brauche ich ein bestimmtes Encoding oder oder oder?

[30:11] Das macht die Präsentationsschicht. Wenn es nötig ist, sorgt die dafür, die Daten

[30:16] in ein allgemeines Format zu übertragen, damit die Gegenseite sie versteht.

[30:19] Sollten mehrere Anfragen nötig sein, die miteinander in Bezug gesetzt werden

[30:24] müssen, dann regelt das die Sitzungsschicht, die da drunter liegt.

[30:28] Wenn ich dann hinbekommen habe, dass meine logischen Daten quasi zusammenhängend

[30:33] übermittelt wurden, sorgt die Transportschicht darunter dafür, dass

[30:38] wirklich auch auf Netzwerkebene die Daten von A nach B kommen. Zum Beispiel mit dem

[30:42] TCP-Protokoll wird sichergestellt, dass alle meine Segmente in der richtigen

[30:46] Reihenfolge beim Gegenüber ankommen, da wieder zusammengesetzt werden können und

[30:50] dann eben die Logik aus den Daten extrahiert werden kann.

[30:53] Wie macht die Transportschicht das? Die nutzt dafür die Ports. Das heißt, es wird

[30:58] eine sogenannte Socket-Verbindung hergestellt zu meinem Gegenüber auf

[31:02] einer IP-Adresse auf einem bestimmten Port. Dieser Port ist Teil der

[31:07] Transportschicht. Die IP-Adresse gehört zur Schicht 3 der Vermittlungsschicht.

[31:11] Die ist eine logische Adresse, die

[31:15] unabhängig von meiner konkreten physikalischen Netzwerkausgestaltung

[31:19] irgendwo auf dem Erdball quasi sich befinden kann. Wie kommt sie

[31:25] dahin? Auf dieser Vermittlungsschicht findet ein Routing statt. Das heißt,

[31:29] mehrere Router, die miteinander verbunden sind, können dieses Datenpaket dann bis

[31:33] zu seinem Ziel durchwinken im Prinzip. Wenn es dann da angekommen ist, wird auf

[31:38] Schicht Nummer 2 der Sicherungsschicht sichergestellt, dass dieses

[31:42] Datenpaket, was es jetzt hier auf der Ebene nicht mehr gibt, denn hier reden

[31:46] wir jetzt von sogenannten Frames, dass die bei dem konkreten Hardware-

[31:49] Bestandteil auch richtig ankommen. Das heißt, die sogenannte MAC-Adresse wird

[31:54] herangezogen, um zu schauen, ob der konkrete Netzwerkpartner hier der

[31:57] richtige ist, dem dieses Paket zugestellt werden soll. Zum Beispiel der

[32:01] letzte Switch in der Reihe vor dem Server bei Google meinetwegen entscheidet,

[32:06] der Google-Server, der jetzt antworten soll, hängt an meinem Port 5 und

[32:10] sendet da dann die Daten hin. Letztlich geht es aber immer darum,

[32:14] irgendwelche Bits zu übertragen. Das kann dann zum Beispiel physikalisch

[32:18] über WLAN oder Kabel oder wie auch immer erfolgen. Das passiert dann auf

[32:22] der Schicht Nummer 1, der Bitübertragungsschicht. Das ist die

[32:25] allerunterste Schicht. Das war jetzt einmal unsere Reise durch das ISO-OSI-

[32:31] Modell. Ich hoffe, ich konnte einigermaßen verständlich vermitteln, was die

[32:34] einzelnen Schichten machen, wofür die da sind und warum du das vor allem auch

[32:37] wissen musst. Das ist natürlich das Allerwichtigste. Also insbesondere musst

[32:40] du es wissen, weil es halt prüfungsrelevant ist, aber auch in der

[32:42] Praxis finde ich es immer ganz ganz wichtig, mal zu verstehen, was da

[32:46] eigentlich genau passiert. Wenn ich irgendwo einen Ping hinschicke, was

[32:49] heißt das jetzt eigentlich? Was bringt mir das? Wer ist da beteiligt? Und wieso

[32:52] funktioniert das zum Beispiel nicht? Wieso kriege ich keine Antwort? Wenn ich

[32:55] dann auf die Fehlersuche gehe, dann sollte ich vielleicht mal verstanden

[32:57] haben, was da eigentlich im Detail im Hintergrund abläuft. Deswegen ist dieses

[33:01] ISO-OSI-Modell schon seit Jahren ein ganz wichtiger Standard, der

[33:05] halt auch in der Praxis und in der Prüfung immer wieder gerne abgefragt

[33:10] wird. Gut, damit sind wir jetzt aber durch mit dem ISO-OSI-Modell. Vier

[33:15] Episoden habe ich drauf verwendet, also knapp zwei Stunden Inhalt zu diesem

[33:18] zentralen Thema. Aber wir haben auch ganz ganz viele Sachen angesprochen, ganz

[33:22] viele Protokolle und so weiter, die direkt mit dem Modell eigentlich nichts

[33:25] zu tun haben, die dort aber arbeiten. Und genau darum ging es mir hier eigentlich.

[33:29] Ich wollte das ISO-OSI-Modell auch ein bisschen mit der Praxis in Berührung

[33:32] bringen, wo man sich dann halt auch die Sachen besser merken kann. So die

[33:35] Protokolle DNS und HTTP und so, die kennen wir eigentlich alle aus dem Alltag.

[33:39] Und am besten kann man sich dann eigentlich so ein neues Modell vielleicht

[33:43] merken, wenn man diese Sachen, die man aus dem Alltag kennt, dort zuordnen kann.

[33:46] Deswegen habe ich auch immer diese ganzen Informationen hier untergebracht.

[33:49] Gut, ich hoffe, es war ein bisschen was für dich dabei. Wenn ich noch was

[33:52] Wichtiges vergessen habe, wie immer, schick mir eine Mail, schreibt mir einen

[33:56] Kommentar zur Episode, wie auch immer, damit wir davon irgendwie profitieren

[34:00] können oder mit anderen Prüflingen auch davon profitieren können, wenn ich hier

[34:03] noch was vergessen habe oder falsch erklärt habe. Könnte ja auch sein. Dann

[34:06] schreibt mir auf jeden Fall gerne, was ich hier für einen Quatsch erzählt habe.

[34:10] Gut, damit wäre ich jetzt durch. Wie gesagt, 2016 beende ich jetzt mit dieser

[34:14] Episode. Ich wünsche dir schon mal ganz fröhliche Weihnachten und einen riesen

[34:19] Haufen Geschenke. Vielleicht liegt ja das eine oder andere IT-Handbuch darunter.

[34:23] Das könntest du auf jeden Fall benutzen, um dir diese ganzen Geschichten von heute

[34:27] und von den letzten Wochen noch mal anzugucken.

[34:28] Ansonsten guck dir die Wikipedia-Artikel wieder an, die ich hier verlinkt habe. Zu

[34:33] den Shownotes kommst du, wie immer, unter anwendungs-und-entwickler-podcast.de

[34:36] slash 86 für die 86. Episode. Und ich würde mich natürlich freuen, wenn du

[34:42] auch nächstes Jahr dann wieder einschaltest, wenn es mit dem Podcast

[34:46] hier weitergeht. Am 9.1. wird halt die nächste Episode veröffentlicht. Bis

[34:51] dahin kannst du fleißig mein Newsletter abonnieren, wenn du möchtest. Ich

[34:55] vermute, dass ich den zwischendurch auch mal weiter schicken werde, denn das ist

[34:59] immer nicht ganz so viel Aufwand, wie hier eine ganze Podcast-Episode immer

[35:01] aufzunehmen. Also das kann man auch mal zwischen den Feiertagen mal eben schnell

[35:04] machen. Die Newsletter findest du unter anwendungs-und-entwickler-podcast.de

[35:07] slash Newsletter. Du kannst dich da einfach eintragen und kriegst dann einmal die Woche

[35:11] von mir alle neuen Infos von der Website. Spannende Links, die ich auch über die

[35:15] Woche so gefunden habe. Natürlich auch alles mit Bezug zur Ausbildung,

[35:18] selbstverständlich. Und wenn du irgendwann keine Lust mehr darauf hast,

[35:20] auf den ganzen Kram, dann melde ich einfach wieder ab. Kostet nix, bin ich

[35:23] auch nicht böse drum. Okay, in diesem Sinne wünsche ich dir frohe Weihnachten, guten

[35:28] Rutsch ins neue Jahr und wir hören uns dann hoffentlich Anfang 2017 wieder. Bis

[35:34] dann, tschüss.

Polyglot Clean Code Developer
About the Author
Ausbildungsleiter für Fachinformatiker:innen Anwendungsentwicklung, IHK-Prüfer und ehemaliger Hochschuldozent für Programmierung und Software-Engineering.

5 comments on “Das ISO/OSI-Modell (Teil 4) – Anwendungsentwickler-Podcast #86”

  1. P.Schmidt sagt:

    Deine Ordnung auf der Homepage macht mich fertig.
    Bisschen mehr Struktur und Ordnung wäre super.

  2. Stefan Macke sagt:

    Was meinst du denn damit genau?

  3. Anonymous sagt:

    Danke für die wundervolle Podcast-Reihe! Ich finde es super, dass du das Modell so ausführlich mit den verschiedenen Protokollen und Hardware-Komponenten erklärt hast. Auf anderen Seiten habe ich das Modell nur kurz zusammengefasst gefunden, was mir allerdings nicht reicht, um es in der Tiefe verstehen zu können.

    Hier noch eine Eselsbrücke, um sich die englischen Begriffe von Schicht 1 beginnend bis 7 merken zu können: “Please Do Not Throw Salami Pizza Away.”

  4. Sihem Ould Mohand sagt:

    Hallo!
    Ich finde es Super, was du machst, besonders für die dual Stundenten die keine Berufsschule haben!
    Vielen Dank

  5. Stefan Macke sagt:

    Hallo Sihem, freut mich, dass ich helfen kann! 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert