I-EDV-HOME

  1. Einleitung

  2. Kommunikation im Netz allgemein

  3. Kommunikation unter TCP/IP

  4. Testfragen und Übungsaufgabe


GRUNDLAGEN DER INFORMATIK WS 0203 - Vorlesung
VL7: Kommunikation in Netzwerken

                       Achtung: dieses Skript gibt nur einen Teil des mündlichen Vortrags wieder !!!
                       

AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: Nov-5, 2002
DATE OF LAST CHANGE: Nov-8, 2002, 19:00h
EMAIL: Gerd Döben-Henisch



1. Einleitung


Es sollen heute in Fortsetzung zum Überblick zum vernetzten Haus einige wichtige Grundbegriffe zu Netzwerken und zur Kommunikation in Netzwerken gegeben werden. Wohlgemerkt, es handelt sich nur um erste Grundbegriffe. Mehr lässt die verfügbare Zeit nicht zu. In folgenden Semestern wird das Thema Netzwerke in mehreren Vorlesungen ausführlich behandelt werden.

Das in der vorlesung verwendete Material stammt überwiegend aus dem Netzwer-Buch [TANENBAUM 2000] sowie aus dem TCP/IP-Buch [STEVENS 1994].


START

2. Kommunikation im Netz allgemein



Die folgende Klassifizierung ist keine scharfe Definition, sondern kann nur als grobe Richtschnur gelten; der Sprachgebrauch zu den hier verwendeten Begriffen LAN ('Local Area network'), MAN ('Metropolitan Area Network'), WAN ('Wide Area Network') etc. ist 'vage'.



netze

Klassifizierung von Netzen nach Distanzen



Ein Router stellt die Verbndung zwischen Subnetzen her. Die genauere Funktion eines Routers und seine Abgrenzung zum Gateway wird weiter unten im Zusammenhang des Internet Protokoll Stapels mit TCP/IP genauer erläutert.



subnet

Subnetze





airplane

Netze im Flugzeug



Kommunikation geschieht in digitalen Netzen mittels Daten-Paketen. Eine Nachricht wird dabei in der Regel in mehrere kleine Pakete zerlegt. Diese Pakete werden 'durch das Netz' geschickt. Die Router, die die verschiedenen Teilnetze miteinander verbinden, müssen dabei jeweils protokollabhängig entscheiden, welcher Weg jeweils eingeschlagen werden soll. Das hier zustände Protokoll (siehe weiter unten) gehört zur sogenannten Verbindungsschicht. Welche Verbindung gewählt werden soll, das entscheidet ein Routing-Algorithmus. Bei manchen Protokollen wird eine einmal ermittelte Route dann für die Dauer einer Sitzung ('Session') fixiert.



packets

Pakete im Netz



Ganz abstrakt betrachtet wird die Kommunikation in Netzen meistens über mehrere Schichten ('Layers') abgewickelt. Dies hat damit zu tun, dass sich die verschiedenen benötigten Operationen nach ihrem 'Abstraktionsgrad' anordnen lassen. Die Operationen auf der untersten Hardwareebene müssen z.B. sicherstellen, dass Signale von einem Punkt der Leitung zu einem anderen Punkt 'stabil' bleiben. Davon unterscheiden kann man Operationen, die diese 'sicheren Signale' auf unterschiedliche Weise gruppieren (Frames bilden), und z.B. urch Fehlerkorrekturmechanismen auf Störungen prüfen. Unter voraussetzung von gruppierten Datenbits und z.B. deren Korrektheit gibt es dann wieder andere Operationen, die die Steuerung dieser Datenblöcke im Netz vornehmen. usw.

M.a.W. aufgrund der Komplexität der Kommunikationsmechanismen im Netz versucht man die notwendigen Operationen nach funktionalen Gesichtspunkten in typische Schichten (Layer) zusammenzufassen , so dass z.B. die Schicht auf Ebene n die Funktionen von Ebene n-1 quasi als 'Dienste' aufrufen kann. Die Art und Weise, wie die Dienste in Schicht n-1 realisiert (implementiert) sind, das interessiert die Schicht n nicht; für Schicht n ist nur interessant, auf welche Weise sie mit Schicht n-1 interagieren kann. Die Menge der Funktionen, die eine Schicht n-1 einer Schicht n zur Verfügung stellt, nennt man auch die Schnittstelle ('interface') von Schicht n-1 zu schicht n. Die Art und Weise, wie die Funktionen einner Schicht realisiert (implementiert) sind, nennt man das Protokoll ('protocol'). Die Menge aller Schichten, die nun von einer Nachricht ('message') M für eine Kommunikation durchlaufen werden muss, nennt man auch einen Protokoll-Stapel ('protocol stack').



Schichten

Kommunikationsschichten allgemein



Wird jetzt eine Botschaft ('message') M in der obersten Schicht eines Protokoll-Stapeles aktiviert, so packt jede Schicht Information in Form eines Headers zur ursprünglichen Nachricht M dazu, damit auf der Empfängerseite die zugehörige parallele Schicht weiss, was sie auf dieser Schicht mit der Nachricht tun soll. Man kann sich dies auch bildhaft als Briefumschlag ('envelope') vorstellen; jede Schicht stellt quasi einen neuen Umsclag zur Verfügung. Auf der Empfängerseite werden dann diese Umschläge in umgekehrter Reihenfolge wieder geöffnet und der Inhalt an die nächste Schicht weitergereicht. Ein anderer Vergleich wäre der mit einem Stapel ('stack'): jede Schicht eines Protokoll-Stapels packt beim Absender auf die einlaufenden Daten neue Bytefolgen 'obendrauf' (push-Operation); beim Empfänger werden diese Bytefolgen dann in umgekehrter Reihenfolge wieder heruntergenommen (pop-Aktion).



header

Schichtenspezifische Header



Die folgenden beiden Bilder zeigen ein einfaches Schema einer möglichen Kommunikation zwischen einem Server, der dienste über das Netz anbietet, und einem Client ('Kunden'), der diese Dienste anfordert. Dabei sieht man, dass der für die Netzkommunikation benötigte Protokoll-Stapel sehr eng mit dem Betriebssystem verknüpft ist wenn nicht gar von vornherein Teil von diesem; entsprechend gehören auch die verschiedenen Treiber ('drivers') zum Betriebssystem, da diese die Möglichkeit zur Verfügung zu stellen, dass Funktionen des Betriebssystems sowie ein protokoll-Stapel auf die Hardware zugreifen können.



operations

Basisoperationen allgemein









servercom

Kommunikation zwischen Servern



Die bisherigen Darstellungen zur Kommunikation in Netzen waren sehr abstrakt, ohne Bezug zu einem konkreten Protokoll-Stapel. Beim OSI-Referenzmodell der ISO ('International Standards Organization') lernen wir ein Modell kennen, das teilweise tatsächlich implementiert worden ist.

Das OSI-Referenzmodell der Internationalen Standardisierungs-Organisation wurde ab 1977 als Grundlage für die Bildung von Kommunikationsstandards entworfen. Ziel von OSI ist die Kommunikation in heterogener Umgebung, d.h. insbesondere zwischen verschiedenen Rechnerwelten auf der Grundlage anwendungsunterstützender Grunddienste. Diese Grunddienste sind z.B. die Dateiübertragung, das virtuelle Terminal, der Fernzugriff auf Dateien und der Austausch elektronischer Post. Für diese und alle weiteren Kommunikations-Anwendungen benötigt man neben den eigentlichen Anwendungsdaten strukturelle und prozedurale Zusatzinfomationen, die als OSI-Protokolle festgelegt sind.

Im OSI-Referenzmodell wird die Kommunikation durch Dienstelemente oder Arbeitseinheiten realisiert, die einen festen Platz und eine definierte Aufgabenstellung haben. Die Dienstelemente können hardware-, firmware- und softwaremäßig implementiert sein. Elemente mit vergleichbaren Funktionen können auf unterschiedlichen Systemen residieren und werden in sogenannten Schichten angeordnet. Jede Schicht beschreibt die Funktionen der Elemente. Ein Element, das Objekte realisert und Operationen bereitstellt, wird als Arbeitseinheit ('Entity') bezeichnet. In der Referenzstruktur müssen demnach die
- Aufteilung der Architektur in Schichten,
- Aufteilung der Schichten in Arbeitseinheiten,
- Kooperation der Arbeitseinheiten innerhalb einer Schicht,
- Kooperation der Arbeitseinheiten in benachbarten Schichten und die
- Kooperation der Arbeitseinheiten in gleichen Schichten verschiedener Systeme
festgelegt werden.

Die Schnittstelle zwischen zwei Schichten ist von oben nach unten gesehen eine Auftraggeber/Auftragnehmer-Schnittstelle. Eine Arbeitseinheit innerhalb einer Schicht leistet einen gewissen Dienst ('Service'). Dabei kann sie Hilfsmittel benutzen, die ihr lokal zur Verfügung stehen oder die von einer Arbeitseinheit der nächstunteren Schicht zur Verfügung gestellt werden. Neben dieser Schnittstelle ist die Einhaltung eines Regelwerkes mit gleichgestellten Arbeitseinheiten auf einem anderen System wichtig. Ein solches Regelwerk nennt man Protokoll.

Das OSI-Referenzmodell ist in sieben Schichten unterteilt und wird daher auch als 7-Schichten-Modell bezeichnet. Die Schichten lassen sich in zwei Gruppen unterteilen: in die transportorientierten und die anwendungsorientierten Schichten. Zu den transportorientierten Schichten gehören die Schichten 1 bis 4; zu den anwendungsorientierten die Schichten 5 bis 7. Diese Schichten stellen jeweils den Rahmen für Standards dar und beschreiben vereinfacht und allgemein Objekte, Operationen, Arbeitseinheiten und Protokolle. Die Beschreibungen werden dann in einzelnen Kommunikationsstandards für die einzelnen Schichten verfeinert.

  1. Die unterste Schicht 1 ist die Bitübertragungsschicht ('Physical Layer')). In ihr werden die nachrichtentechnischen Hilfsmittel für die Übertragung definiert.


  2. Die Sicherungsschicht ('Data Link Layer') faßt Folgen von binären Informationen zu Datenpaketen zusammen bzw. löst größere Einheiten, die von einer höheren Schicht kommen, gegebenenfalls in kleinere Datenpakete auf. Die Sicherungsschicht betrachtet im Wesentlichen Zweipunktverbindungen.


  3. Dies ändert sich in der Vermittlungsschicht ('Network Layer'), deren wichtigste Aufgabe das Routing, d.h. die Bestimmung eines optimalen Weges durch ein verzweigtes Netzwerk ist. Die Schicht drei realisiert dabei eine Ende-zu-Ende-Verbindung zwischen zwei kommunizierenden Stationen. Sie sorgt dafür, daß ein Datenpaket an der richtigen Stelle ankommt, egal, welche Wege es dabei über das verzweigte Netz genommen hat.


  4. Die Protokolle der nächsten Schicht, der Transportschicht ('Transport Layer'), haben Ende-zu-Ende-Charakter, weil sie eine Verbindung zwischen einzelnen Prozessen in verschiedenen Endsystemen realisieren. Die transportorientierten Schichten 1 bis 4 stellen


  5. Schicht fünf, der Kommunikationssteuerungsschicht ('Session Layer'), einen universellen Transportservice (Prozess-zu-Prozess-Verbindung) zur Verfügung. Eine Sitzung der Kommunikationssteuerungsschicht bezeichnet die logische Verbindung zwischen zwei Arbeitseinheiten der obersten Schicht, die miteinander kommunizieren.


  6. Die Darstellungsschicht ('Presentation Layer') sorgt durch spezielle Services für eine Transformation der Daten auf ein vereinbartes Standardformat und für eine einheitliche Interpretation.


  7. Die oberste Schicht 7 ist die Anwendungsschicht ('Application Layer'), die den verteilt realisierten Anwendungen die logisch-kommunikationstechnische Unterstützung in Form bestimmter Services wie Elecronic Mail, Filetransfer, virtuelles Terminal oder Remote Job Entry (RJE), anbietet.


Das OSI-Referenzmodell definiert Dienstbenutzer ('Service User') und Dienstanbieter ('Service Provider')). Jede Schicht n ist Dienstanbieter für den Dienstbenutzer der höheren Schicht n+1. Die Arbeitseinheiten der Schicht n realisieren Dienste, die durch Arbeitseinheiten der Schicht n+1 genutzt werden können. Ein Dienst wird durch den Zugriff auf sogenannte Dienstzugangspunkte ('Service Access Point' (SAP)) erreicht. Jeder Dienstzugangspunkt hat seine eigene Adresse innerhalb einer Schicht. SAPs für die einzelnen Schichten werden mit einem Präfix gekennzeichnet, so z.B. SSAP := Session Service Access Point für eine SAP der Kommunikationssteuerungsschicht, TSAP := Transport Service Access Point für einen SAP der Vermittlungsschicht und LSAP := Data Link Layer Service Access Point für eine SAP der Sicherungsschicht.



iso-osi

ISO OSI-Referenzmodell




START



3. Kommunikation unter TCP/IP


Tatsächlich durchgesetzt hat sich im Internet -und nicht nur dort- nicht das OSI-Modell, sondern das Internet Protokoll mit den Protokollen TCP/IP. Das folgende Bild bringt eine erste Gegenüberstellung. Man sieht auf den ersten Blick, dass das Internet Protokoll weniger Schichten umfasst als das OSI-Modell, statt 7 nur vier.



osi-tcpip

OSI im Vergleich zu TCP/IP



  1. Der Link-Layer umfasst normalerweise die Treiber und die Netzwerkkarten


  2. Der network (oder auch internet) Layer ist verantwortlich für das Management der Datenpakete im Netz. Hier werden mindestens drei Protokolle unterschieden: IP := Internet protocol, ICMP := Internet control Message Protocol sowie IGMP := Internet Group Management Protocol.


  3. Der transport-Layer ist verantwortlich für den datenfluss zwischen zwei Hosts. Er bietet zwei sehr unterschiedliche Protokolle an:

    1. TCP := Transmission Control Protocol. TCP stellt einen zuverlässigen Dienst zur Verfügung, der u.a. die Nachricht in Datenpakete aufteilt, für Bestätigungen von empfangenen Paketen sorgt, Zeitüberschreitungen behandelt usw.

    2. UDP := User Datagram Protocol. UDP kümmert sich nicht um die erfolgreiche Versendung der daten. Hier werden Datenpakete ('datagrams') einfach verschickt. Will man mehr Zuverlässigkeit ('reliability') verwirklichen, dann muss man dies auf der nächsthöheren ebene, dem application-Layer, tun.

      .


  4. Auf dem application-Layer werden die Details konkreter anwendungen geregelt. Beispiele für häufige TCP/IP-Applikationen sind:

    1. Telnet für remote login


    2. FTP := File Transfer protocol


    3. SMTP := Simple Mail Transfer Protocol


    4. SNMP := Simple Network Management Protocol


    5. DNS := Domain Name Service


    6. HTTP := Hypertext Transfer Protocol





tcpip-services

Struktur und Dienste von TCP/IP



Einfaches Beispiel einer Kommunikation im Internet Protokoll


Eine Client-Applikation auf einem Host, der über TCP/IP verfügt, kann mithilfe von verbindenden Routern eine Verbindung über das WAN zu einem anderen LAN herstellen, in dem sich eine Server-Applikation ebenfalls unter TCP/IP befindet.

9-lan-wan-schema


TCP-COMMUNICATION in a LAN-WAN ENVIRONMENT



Schränkt man die Betrachtung auf die Kommunikation im LAN ein, so kann man grob vier Ebenen/ Schichten ('Layer') der Kommunikation unterscheiden: Die Schicht der Applikationen (die im OSI-Modell mit den Schichten 5-7 noch weiter unterschieden wird), die Transport Schicht (TCP), die Netzerk Schicht (IP) sowie die Datenverbindung (z.B. Ethernet), die auf der Hardware aufsetzt.

Der strukturell wichtigste Übergang ist der zwischen der Applikation und dem Transport. In diesem Bereich sind die Sockets angesiedelt, die im Rahmen von POSIX eine Variante eines DNIs darstellen (Detailed Network Interfaces). Die andere Variante heisst XTI (X/Open Transport Interface).



9--tcp-lan-client-server


LEVELS of TCP-COMMUNICATION in the LAN



TCP/IP Client-Server Interaktion

Das grobe Schema der Client-Server Interaktion unter TCP/IP ist im nebenstehenden Schaubild abgebildet (für Details siehe wieder STEVENS).

Der Server generiert mit der Funktion socket() und bind() einen Socket. Ein Socket ist ein Paar (IP-Adresse:Portnummer). Mit den Funktionen listen() und accept() beginnt der Server 'zu hören', ob ein Client eine Verbindung mit ihm aufnimmt.

Hat ein Client ebenfalls mit socket() und connect() einen Socket eingerichtet und eine Verbindung hergestellt, dann können nun beide sich wechselseitig Botschaften schicken.

Eine close() auf Seiten des Clients signalisiert dann das Ende der Kommunikation. Der Server kann dann die Verbindung ebenfalls aufheben oder sie für andere Clients offen halten.



9--tcp-client-server


TCP-CLIENT SERVER INTERCTION



TCP/IP Sockets beim Konkurrenten Server

Das Konzept der Sockets ist zentral für das Verständnis, wie ein konkurrenter Server arbeitet.

Ein iterativer Server kann immer nur einen Client bedienen. Solange dieser eine Client sich nicht abgemeldet hat, solange können keine weiteren Clients mit dem Server reden.

Beim konkurrenten Server ist dies möglich: nahezu beliebig viele (natürlich hardwareabhängig) Clients können beim konkurrenten Server gleichzeitig (simultan) mit dem Server 'reden'.

Dafür stehen grundsätzlich zwei Mechanismen zur Verfügung: mittels fork() erzeugten Child-Prozessen oder Posix Threads. Wir betrachten hier nur den ersten Fall (die 'klassische' Vorgehensweise).

Durch die Funktion fork() ist es einem Serverprozess möglich, sogenannte Child-Prozesse zu erzeugen, die gleichsam als 'Stellvertreter' des ursprünglichen Server-Prozesses agieren können.

Im Beispiel übernimmt Child 1 die Verbindungsdaten des Servers zum ersten Client und kommuniziert mit diesem, solange dieser aktiv ist. Unabhängig davon kann ein weiterer Child-Prozess (Child 2) generiert werden, der mit einem anderen Client kommuniziert.



9-concurrent-server-sockets


TCP-SOCKETS WITH CONCURRENT SERVER




START

4. Testfragen und Übungsaufgabe

Testfragen:

  1. Was bedeuten die Kürzel 'LAN', 'MAN' und 'WAN' im Kontext von Netztwerken?

  2. Welche Funktion hat ein Router?

  3. Wie verläuft der Weg von Datenpaketen vom Absender zum Empfänger?

  4. Wie kann man in einem Flugzeug (oder Schiff, oder Bahn...) ein LAN realisieren, das mit dem übrigen Internet kommunizieren kann?

  5. Welche Funktion haben 'Schichten' in einem Netzwerk?

  6. Was ist ein Protokoll-Stapel ('Protocol Stack')?

  7. Was passiert mit Daten, die von den obersten zu den untersten Schichten in einem Protokoll-Stapel wandern?

  8. Beschreiben sie eine einfache Kommunikation zwischen zwei Servern.

  9. Welche Schichten unterscheidet man im OSI-Referenzmodell?

  10. Worin unterscheidet sich TCP/IP vom OSI-Modell?

  11. Welche Anwendungsprogramme kennen Sie im Application-Layer von TCP/IP?

  12. Was ist ein Socket?

  13. Beschreiben sie eine einfache Kommunikation zwischen einem TCP/IP-Server und einem TCP/IP-Client.

  14. Was ist der Unterschied zwischen einem iterativen und einem konkurrenten Server unter TCP/IP?

Aufgabe:

  1. Bilden sie ein Team von 3-5 Mitgliedern

  2. Erstellung Sie gemeinsam einen Texte mit Namen und Matr.Nr. der AutorenInnen. Abgabe einer Kopie des Textes an den Dozenten vor Beginn der nächsten Vorlesung.

  3. Präsentation der Lösung als Team vor der gesamten Gruppe. Präsentationszeit max. 10 Min.

  4. Versuchen Sie in dem Text Antworten für die folgende Aufgabe zu formulieren:

  5. In der vorherigen Vorlesung VL6 wurden im Kontext es vernetzten Hauses verschiedene Kommunikationsprotokolle genannt (siehe dort), die im Kontext des vernetzten Hauses wichtig sind. Wählen Sie sich eines dieser Protokolle aus (ausser TCP/IP) und versuchen Sie in einer maximal 10-minütigen Darstellung wesentlichen Eigenschaften dieses ausgewählten Protokolls darzustellen. Versuchen Sie dabei -falls möglich- den Zusammenhang mit dem in der heutigen Voelesung vorgestellten Rahmenkonzepten herzustellen.


START