Netzwerktechnik: Layer-5-Protokolle
Einleitung
[Bearbeiten]Schichten im OSI-Modell
[Bearbeiten]Bei der Kommunikation über Rechner-Netze kommen zahlreiche Übertragungsprotokolle zum Einsatz. Diese werden gerne in sieben Schichten (Layers) des sogenannten OSI-Modells angeordnet. Die aufeinander aufbauenden Schichten sind:
7 | Anwendungsschicht |
6 | Darstellungsschicht |
5 | Sitzungsschicht |
4 | Transportschicht |
3 | Netzwerkschicht |
2 | Sicherungsschicht |
1 | Physikalische Schicht |
Die Bedeutung von "aufeinander aufbauen" kann an folgendem Beispiel veranschaulicht werden:
Ich bekomme von einem Freund eine Tüte Schokoladeneis und sage mit einem verschmitzten Lächeln "Schokoladeneis mag ich ja gar nicht", so dass er die Ironie sofort bemerkt und weiß, dass mir das Eis sehr gut schmeckt. Bei dieser Kommunikation können wir drei Schichten beobachten, die wir folgendermaßen benennen können:
3 | Inhaltsschicht |
2 | Sprachen-Schicht |
1 | Physikalische Schicht |
Damit er mich versteht, müssen wir beide auf der physikalischen Schicht das gleiche "Protokoll" verwenden; in unserem Fall: die Akustik. Falls der Freund ein Problem mit den Ohren hat, oder ich selbst stumm bin, oder falls wir uns im luftleeren Raum aufhalten und somit der Schall nicht übertragen werden kann, wird keine Kommunikation zustande kommen. Wir könnten dann aber auf Schicht 1 ein anderes Protokoll verwenden, z.B. schreibe ich meine Botschaft auf einen Zettel, den er lesen kann.
Auf der Sprachen-Schicht könnte es nun passieren, dass ich meinen Satz (auf Deutsch) sage, mein Freund aber nicht deutsch spricht. Er wird zwar auf Schicht 1 hören (bzw. auf dem Zettel lesen), dass ich ihm etwas mitteile, kann aber mit den Worten nichts anfangen. Anstatt deutsch könnten wir natürlich auch englisch oder spanisch reden.
Wenn wir uns auf Schicht 1 und 2 jeweils auf ein Protokoll geeinigt haben, könnte es auf der Inhaltsschicht passieren, dass er die Ironie nicht versteht und stattdessen wörtlich interpretiert, dass ich kein Schokoladeneis mag. Erst wenn auch auf dieser Schicht das gleiche Protokoll gesprochen wird, kommt eine vernünftige Kommunikation zustande.
Schicht 5
[Bearbeiten]Auf Schicht 5 sind verschiedene Protokolle üblich, die alle nach folgendem Muster ablaufen:
Ein Rechner (Server) wartet darauf, dass sich auf Schicht 4 (TCP) ein Client auf einer definierten Portnummer anmeldet, also eine Leitung eröffnen will. Dann werden durch den offenen TCP-Kanal (oft ASCII-lesbare) Daten ausgetauscht, bevor am Ende von einem der beiden Partner die Verbindung unterbrochen wird.
HTTP bietet dabei im Wesentlichen den Dienst an: Nenne mir eine URL einer Datei (z.B. eine Web-Seite), ich schicke sie über die Leitung (auf Port 80).
SMTP bietet den Dienst an: Gib mir die benötigten Daten einer Email (Adresse, Inhalt, ...), ich schicke sie an den die Empfänger-Mailbox (oder einen anderen Relay-Rechner, der die Mail weiterleitet). SMTP arbeitet auf Port 25.
POP3 bietet den Dienst an: Identifiziere dich mit Name, Passwort, etc. und sende mir ein Kommando, ich werde dir darauf Daten aus deiner Mailbox liefern. (Port 110)
Telnet als Werkzeug
[Bearbeiten]Sowohl unter Linux, als auch unter Windows gibt es das Programm telnet. Es ist ein manuell zu betreibender TCP-Client. Das bedeutet: Wenn auf irgendeinem Rechner ein sogenannter "Socket-Server" läuft, also dieser Rechner darauf wartet, dass auf einem bestimmten Port eine TCP-Verbindung geöffnet wird, kann man mit Telnet eine solche Verbindung von Hand aufbauen und betreiben.
Telnet zeigt ein Textfenster an. Alles, was man dort eintippt, kommt über die TCP-Verbindung beim Server an. Alles, was der Server sendet, wird im Telnet-Programm auf dem Bildschirm ausgegeben.
HTTP
[Bearbeiten]Einleitendes Experiment
[Bearbeiten]Wir öffnen eine Kommandozeilen-Shell (DOS-Fenster oder Eingabeaufforderung bei Windows bzw. bash bei Linux) und geben ein:
telnet www.wikibooks.org 80
Gefolgt von der Enter-Taste. Dadurch starten wir das Programm Telnet und öffnen damit eine TCP-Verbindung auf Port 80 zum WikiBooks-Webserver mit dem Namen www.wikibooks.org. (Dieser Name entspricht einer IP-Adresse aus vier Zahlen, was uns an dieser Stelle nicht interessieren muss.)
Alles, was wir nun auf die Konsole schreiben, kommt beim WikiBooks-Server an, und was dort gesendet wird, sehen wir auf dem Bildschirm. Je nach verwendetem Telnet-Client werden dabei von uns eingegebene Zeichen angezeigt und übertragen oder nur übertragen - sie kommen also auf wenn scheinbar "nichts passiert" beim Server an.
Wir schreiben nun:
GET http://www.wikibooks.de/wiki/Hauptseite HTTP/1.0
Und drücken zweimal die Enter-Taste. Darauf sollte der Bildschirm mit HTML-Code vollgeschrieben werden und eine Fehlermeldung erscheinen, wie z.B.
Connection closed by foreign host.
Folgendes ist nun geschehen: Auf Port 80 wartet bei www.wikibooks.de ein Webserver, der das Protokoll HTTP versteht. Das heißt, der Server wartet, dass über die TCP-Verbindung ein Kommando gesendet wird, er beantwortet dieses und bricht die Verbindung wieder ab.
Wir haben gesendet: "Liefere mir die Seite http://www.wikibooks.de/wiki/Hauptseite unter Verwendung des HTTP-Standards Version 1.0". Diesen Befehl hat der Server verstanden und die in HTML-geschriebene Titel-Seite zurückgeliefert. Danach wurde die Verbindung beendet.
Ein Internet-Browser tut genau das gleiche, wenn wir in die Adresszeile oben die URL schreiben.
SMTP
[Bearbeiten]POP3
[Bearbeiten]Experiment mit Telnet
[Bearbeiten]Wir öffnen eine Kommandozeilen-Shell (DOS-Fenster oder Eingabeaufforderung bei Windows bzw. bash bei Linux) und geben ein:
- telnet <Unser Mailserver> 110
Für <Unser Mailserver> haben wir natürlich die Adresse unseres Mailservers, z.B. pop.gmx.net eingesetzt. Ähnlich wie im Beispiel zu HTTP öffnen wir also eine TCP-Verbindung zum Port 110 unseres Mailservers.
Wir schreiben nun:
- USER <Unser Benutzername>
Eventuell müssen Sie unter Terminal - Einstellungen erst das lokale Echo einstellen, um den Befehl nicht blind eintippen zu müssen.
- PASS <Unser Passwort>
Falls der Server unser Login akzeptiert, sollte er jede Zeile mit +OK, eventuell gefolgt von informativem Text, quittiert haben. Wir können nun prüfen, ob wir Post im Posteingang haben:
- LIST
Und uns - falls existent - die erste Nachricht anzeigen lassen:
- RETR 1
Der Server zeigt die Nachricht nach diesem Kommando übrigens nur an, er löscht sie erst nachdem wir ihn mit
- DELE 1
dazu aufgefordert und die Verbindung ordnungsgemäß mit
- QUIT
beendet haben.