Referenzmodell und Protokollstack

Info
Bisher habt ihr euch ausgiebig damit beschäftigt, Netzwerke aufzubauen und zu testen. In der vergangenen Lektion habt ihr sogar gelernt einen eigenen Webserver aufzusetzen und kleine Änderungen an der hinterlegten Internetseite zu machen. In dieser Lektion wird es nun darum gehen zu verstehen, wie diese Kommunikation tatsächlich funktioniert.
Aufgabe 1 - Vorbereitung

Öffnet eure letzte Filius-Projektdatei (WebServer und DNS-Server). Falls ihr diese nicht (korrekt) vorliegen habt, nehmt die Vorlage unten. Das Netzwerk sollte ungefähr so aussehen:

Aufgabe 2 - verschiedene Schichten & Protokolle

Öffnet auf einem der Clients die Befehlszeile und gebt den Befehl host www.max-mustermann.de ein, wobei ihr die URL hier durch die von euch im DNS-Server hinterlegte ersetzt. Betrachtet nun im Datenverkehr-Fenster des Rechners die beiden blauen Zeilen der Anwendungsschicht im Detail. Eine Zeile im Datenverkehr Fenster steht für ein über das Netzwerk versendetes "Paket".

Das Sequenz-Diagramm der Kommunikation könnte so aussehen:

info:sek-ii:e1:ip:sequenzdiagramm-1.png

Beantwortet die folgenden Fragen:

  1. Wer hat welches Paket an wen gesendet?
  2. Welches Transport- und welches Vermittlungs-Protokoll wurde benutzt?
  3. Was könnten jeweils die Bemerkungen in der Anwendungsschicht bedeuten?
Aufgabe 3 - Die Protokolle TCP, HTTP

Löscht nun den Inhalt des Datenverkehr-Fensters. Startet anschließend den Web-Browser auf Rechner 1.10 und ruft die Website http://www.max-mustermann.de auf und beobachtet den Datenverkehr. Vergleicht den Datenverkehr mit dem folgenden Sequenzdiagramm.

info:sek-ii:e1:ip:sequenzdiagramm-2.png

Beantwortet die folgenden Fragen:

  1. Informiert euch auf Wikipedia (TCP) (nur die Kapitel "Verbindungsaufbau", "Verbindungsabbau" und "3-Wege-Handschlag") über das TCP-Protokoll. Was bedeuten die Begriffe Handshake und Teardown?
  2. Informiert euch auf Wikipedia (HTTP) (nur die Kapitel Aufbau und Funktionsweise) über das HTTP-Protokoll. Was bedeuten die Begriffe Request und Response?
  3. Schaut euch nun ganz genau die beiden Pakete aus der Anwendungsschicht an, die HTTP benutzen.
    1. Welche Daten werden in der Anwendungsschicht gesendet?
    2. Achtet auch auf die Transport-Schicht. Was haben TCP und HTTP in diesem Beispiel miteinander zu tun?
Das OSI-Schichtenmodell

Schaut euch die verschiedenen Schichten in Filius an. Es gibt die Netzzugangs-, die Vermittlungs-, die Transport- und die Anwendungsschicht.

Filius benutzt hierbei eine vereinfachte Version des OSI-Schichtenmodells.

OSI FILIUS
7: Anwendung 4: Anwendung
6: Darstellung
5: Sitzung
4: Transport 3: Transport
3: Vermittlung 2: Vermittlung
2: Sicherung 1: Netzzugang
1: Bitübertragung

In den folgenden Beispielen werden wir uns genau ansehen, was beim Aufruf der Beispielseite im Browser passiert ist.

Beispiel - Schritt 1

Der Browser möchte gerne die Website www.max-mustermann.de angezeigt bekommen, dies funktioniert mit dem GET-Befehl des HTTP-Protokolls.

Paket auf Anwendungsschicht: HTTP
GET / HTTP/1.1 HOST: www.max-mustermann.de
Beispiel - Schritt 2

Um das Paket zu versenden, wird das TCP-Protokoll benutzt. Dieses benutzt zunächst den Handshake, um die Verbindung aufzubauen und ergänzt anschließend die Daten der Anwendungsschicht um Meta-Daten, die Ports. Diese sind dafür da, verschiedene Programme zu identifizieren, die gleichzeitig auf einem Rechner Daten über die IP-Adresse des Rechners senden und empfangen:

Paket auf Transportschicht: TCP
Meta-Daten Daten der Anwendungsschicht
Quell-Port: 8283, Ziel-Port: 80 GET / HTTP/1.1 HOST: www.max-mustermann.de
Beispiel - Schritt 3

Das Versenden an einen anderen Rechner übernimmt das IP-Protkoll. Dieses ergänzt erneut Meta-Daten zum bereits vorhandenen Paket, die IP-Adressen von Sender und Empfänger:

Paket auf Vermittlungsschicht: IP
Meta-Daten Daten der Transportschicht
Quell-IP: 192.168.1.10, Ziel-IP: 192.168.0.12 Meta-Daten Daten der Anwendungsschicht
Quell-Port: 8283, Ziel-Port: 80 GET / HTTP/1.1 HOST: www.max-mustermann.de
Beispiel - Schritt 4

Jetzt erst übernimmt die Netzwerkkarte: Sie versendet die Daten auf physikalischer Ebene mit Hilfe des Ethernet-Protokolls. Auch hier werden wieder Meta-Daten ergänzt, nämlich die MAC-Adressen:

Paket auf Netzzugangsschicht: Ethernet-Protokoll
Meta-Daten Daten der Vermittlungsschicht
Quell-MAC: B1:2A:C2:4F:D3:59, Ziel-MAC: 6F:36:4C:04:CF:4F Meta-Daten Daten der Transportschicht
Meta-Daten Daten der Anwendungsschicht
Quell-IP: 192.168.1.10, Ziel-IP: 192.168.0.12 Quell-Port: 8283, Ziel-Port: 80 GET / HTTP/1.1 HOST: www.max-mustermann.de
Aufgabe 4

Erstellt die vier Tabellen aus dem Beispiel auch für die HTTP-Response. Vergleicht anschließend die Tabellen des Requests mit denen der Response.

Aufgabe 5

Ihr habt nun den Weg der Daten von der Anwendung bis zur Netzwerkkarte kennen gelernt. In jedem Schritt werden Meta-Daten hinzugefügt, die für den Transport benötigt werden.

Überlegt euch, wie der Empfänger des Pakets mit den Daten umgehen könnte?

Aufgabe 6

Macht euch klar, was die Meta-Daten der einzelnen Schichten zu bedeuten haben und wofür man diese benötigt. Beantwortet dazu die folgenden Fragen:

  1. Was sind die MAC-Adressen?
  2. Was sind die IP-Adressen?
  3. Was ist ein Port?
  4. Enthält die Anwendungsschicht auch Meta-Daten? Wenn ja, welche?
Aufgabe 7

Informiert euch weiter über die angesprochenen Prokolle (Ethernet, IP, TCP und HTTP).

  1. Gibt es auf den verschiedenen Schichten auch noch andere Protokolle?
  2. Was ist das FTP-Protkoll?
  3. Was ist das UDP-Protkoll?