Zurück zum Inhaltsverzeichnis des Manuskripts verteilte Systeme

3 Anwendungsprotokolle im Internet

3.1 File Transfer und Remote Login

Anwendungsdienste

Die oberste (und vierte) Schicht des DoD-Kommunikationsmodells, das ist die dem Benutzer am nächsten liegende, beschreibt Anwendungsprotokolle. Ein DoD-Anwendungsprotokoll deckt die Ebenen 7, 6 und 5 des ISO/OSI-Modells ab und wird oft als Anwendungsdienst bezeichnet.

Im Folgenden werden die Programmstrukturen und prinzipiellen Arbeitsweisen einiger Internet-Anwendungsdienste vorgestellt. Dabei geht es nicht darum, die Bedienung dieser Dienste zu vermitteln, wenn es auch unvermeidbar ist, an einigen Stellen Beispiele dazu zu geben. Die Auswahl der Dienste ist pragmatisch erfolgt: Es sind bekannte und weit verbreitete Protokolle. Einige von ihnen stellen verteilte Systeme dar. Wenn das der Fall ist, wird darauf jeweils hingewiesen. Begonnen werden soll mit zwei Urgesteinen der Internetdienste: File Transfer und Remote Login.

File Transfer

Die Übertragung von Dateien zwischen Rechnern über ein Netzwerk wird File Transfer genannt und ist einer der ältesten und nach wie vor am meisten genutzten Internetdienste. Er wird als Client/Server-System realisiert, bei dem die Server den Clients als Dienstleistung das Speichern und Abrufen von Dateien anbieten. Speichert ein Client eine Datei bei einem Server, dann spricht man von einem Upload (dieser Datei). Den umgekehrten Vorgang nennt man Download (einer Datei).

FTP

Der im Internet ursprünglich entwickelte File-Transfer-Dienst wird durch ein Protokoll namens File Transfer Protocol beschrieben und deshalb kurz FTP genannt. Das Serverprogramm heißt üblicherweise ftpd, wobei der Kleinbuchstabe d in dem Namen darauf hinweisen soll, dass der Server als sogenannter Dämon arbeitet. Dämonen sind Prozesse, die blockiert (schlafend) darauf warten, angesprochen zu werden.

Clients werden in der Regel durch ein Programm namens ftp realisiert, das als Benutzerschnittstelle zum File-Transfer-Dienst dient. Anfangs war diese Benutzerschnittstelle ein zeichenorientierter Kommandointerpreter, der mit einem Promptzeichen, üblicherweise mit

FTP>

den Benutzer aufforderte, ein Kommando für das Senden oder Holen von Dateien einzugeben. Drei ganz typische FTP-Kommandos sind beispielsweise:

FTP> put a.txt # Upload a.txt zum Server FTP> get b.bak # Download b.bak vom Server FTP> quit # Client beenden

Der Dienst hat folgende Architektur:

FTP-Architektur

Nach und nach wurde FTP auf allen gängigen Betriebssystemen implementiert und sein Befehlsumfang erweitert. Damit konnten Dateien auf dem Serverrechner gelöscht oder umbenannt werden und es wurde möglich, in den Dateisystemen sowohl des Client- als auch des Serverrechners zu navigieren. Der technischen Entwicklung folgend wurden im Laufe der Zeit grafische Benutzerschnittstellen zur Verfügung gestellt, mit denen ähnlich wie mit einem Dateimanager gearbeitet werden kann. FTP ist so verbreitet, dass die gängigen Web-Browser und sogar der Windows-Explorer (gemeint ist nicht der Internet-Explorer) einen FTP-Client enthalten.

Als Transportprotokoll verwendet der FTP-Dienst TCP, also programmiertechnisch gesehen Stream Sockets. Und er belegt zwei Ports, was etwas ungewöhnlich ist. Über den Port mit der Nummer 21 werden Kontrollkommandos ausgetauscht und über den Port mit der Nummer 20 Daten. Der Vorteil dieses Vorgehens besteht darin, dass während einer Dateiübertragung Client und Server weiterhin miteinander kommunizieren können.

Ein FTP-Server prüft die Zugangsberechtigung (Benutzername und Passwort) für den Benutzer, der sich auf der Clientseite befindet, anhand der Zugangsberechtigung zum Serverrechner. Das bedeutet, dass ein FTP-Benutzer auf dem Serverrechner eine Kennung besitzen muss. Allerdings sieht der FTP-Dienst keine Maßnahmen vor, um Daten - insbesondere Anmeldedaten - verschlüsselt übertragen zu können. Im Internet findet sich nach wie vor eine Fülle frei verfügbarer FTP-Implementierungen, die für einen Einsatz im privaten Umfeld sehr nützlich sein können, aber aus Sicherheitsgründen nicht in öffentliche Umgebungen eingebunden werden sollten.

SFTP

Der Bedarf an einem sicheren File-Transfer-Dienst im Internet hat zu einer FTP-Weiterentwicklung namens Secure FTP (SFTP) geführt. Dieser Dienst hat die gleiche Funktionalität wie FTP und schließt dessen Sicherheitslücke. Er wird in großem Umfang zum Up- und Download von Dateien verwendet.

RCP

Hauptsächlich in der Umgebung des UNIX-Betriebssystems und meist auf dieses beschränkt wurden Alternativen zum FTP entwickelt. Dazu gehört unter anderem das Werkzeug Remote Copy, das als UNIX-Shellkommando rcp zur Verfügung gestellt wird.

Anonymous FTP

Manche Systemverwalter, vorallem im Umfeld der Hochschulen, gestatten einen freien Zugriff zu ihrem FTP-Server. Dafür wird dann üblicherweise eine spezielle Kennung mit dem Benutzernamen anonymous eingerichtet, die ganz ohne Passwort oder mit dem Passwort ftp zugänglich ist.

Hinweis zu den Übungsaufgaben

Bei der Abnahme der zweiten und dritten Übungsaufgabe ist es erforderlich, im laufenden Übungsbetrieb, wenn alle Rechner des Übungsraums durch Studierende belegt sind, Dateien vom lokalen Rechner zu einem der anderen zu verschieben. SFTP ist dafür das geeignete Werkzeug und der Dienst steht in der Tat auf allen Rechnern des Übungsraums zur Verfügung. Beim Start eines jeden dieser Rechner wird ein entsprechender Server gestartet und ein Clientprogramm ist vom Benutzer ausführbar.

Allerdings ist auf allen Rechnern des Übungsraums auch ein verteiltes Dateisystem implementiert worden, das bewirkt, dass eine Datei, die auf einem der Laborrechner angelegt wird, auf allen Rechnern vorhanden ist, so dass kein explizites Verschieben von Dateien erforderlich ist. Was der Begriff Vorhandensein einer Datei in diesem Zusammenhang bedeutet und wie ein verteiltes Dateisystem arbeitet, ist Inhalt des Abschnitts 3.4 (Verteilte Dateisysteme) und soll hier nicht vertieft werden.

Remote Login

Unter einem Login versteht man die Anmeldung eines Benutzers an einen Rechner. Üblicherweise sind dazu an einem Terminal, das oft auch als Konsole oder Datensichtgerät bezeichnet wird, ein Benutzername und ein Passwort einzugeben. Jedes Betriebssystem führt eine Liste aller Terminals, die an den jeweiligen Rechner angeschlossen sind. Erfolgt über eines dieser Geräte ein Login, dann spricht man von einem lokalen Login.

Eine Anmeldung über ein Netzwerk an einen fernen Rechner wird remote Login (fernes Login) genannt und hat dem zugehörigen Dienst seinen Namen gegeben. Auch er, der älteste Internetdienst überhaupt, folgt einem Client/Server-Kommunikationsmodell. Beim Remote-Login-Dienst simuliert ein Client, vom Benutzer gestartet, auf dem lokalen Rechner eine Konsole an einen fernen Rechner, wodurch für den Benutzer des Clients die Illusion entsteht, er würde auf dem fernen Rechner direkt mit der (simulierten) Konsole arbeiten. Bei fensterorientierten Benutzeroberflächen entsteht durch den Start eines Remote-Login-Clients auf dem Bildschirm des Client-Rechners ein Fenster, das sich wie ein Terminal des fernen Rechners verhält.

Eine derartige Nachbildung eines Terminals wird Terminalemulation genannt. Eine solche softwaremäßige Simulation eines Geräts kann Eigenschaften haben, die über die Möglichkeiten eines physischen Geräts hinausgehen. Man denke als Beispiel an Cut-And-Paste-Operationen in einem Konsolenfenster.

Ein Remote-Login-Server nimmt die Eingaben, die der Benutzer beim Client getätigt hat, über das Netzwerk entgegen und verhält sich gegenüber dem Betriebssystem des Serverrechners so als sei er eines von dessen Terminals. Üblicherweise kommuniziert er mit einem Kommandointerpreter (einer Shell) des Serverrechners. Er leitet die Eingaben, die er vom Client erhalten hat, an den Kommandointerpreter des Servers weiter und schickt dessen Ausgaben an die Terminalemulation auf dem Clientrechner. Da sich der Remote-Login-Server gegenüber dem Betriebssystem wie ein Terminal verhält ohne eins zu sein, spricht man von einem Pseudoterminal, einem falschen Terminal. Der Remote-Login-Dienst hat folgenden Aufbau:

TELNET-Architektur

Die Grafik macht deutlich, dass über ein Remote Login alle Ressourcen des Serverrechners so benutzt werden können, als wäre ein lokales Login erfolgt. Und wie beim File-Transfer-Dienst prüft der Remote-Login-Server bei der Anmeldung die Zugangsberechtigung. Das heißt, dass auch hier der Benutzer auf der Seite des Clients eine Kennung auf dem Serverrechner haben muss.

TELNET

Der ursprüngliche Remote-Login-Dienst, der im Internet entwickelt wurde, heißt TELNET. Sein Name ist ein Kürzel für die Bezeichnung Teletype Network. Die Clients werden in der Regel durch ein Programm namens telnet, und die Server durch eines namens telnetd realisiert. Wie beim FTP-Dienst zeigt der Kleinbuchstabe d an, dass der Server als Dämon arbeitet. TELNET benutzt als Transportprotokoll TCP und belegt den Port 23.

SSH

Wie FTP arbeitet auch TELNET ohne jede Verschlüsselung und ist inzwischen durch einen sicheren Remote-Login-Dienst namens Secure Shell (SSH) abgelöst worden. Im Internet stehen nach wie vor freie TELNET-Implementierungen zur Verfügung, die nur im privaten Umfeld genutzt werden sollten. Außerdem gibt es im Netz mehrere moderne, grafikorientierte und kostenlose SSH-Clientprogramme. Da SSH-Server in der Regel so angelegt sind, dass sie auch als SFTP-Server arbeiten können, enthalten die Clientprogramme meist auch einen SFTP-Client.

Hinweis zu den Übungsaufgaben

Bei der zweiten und dritten Übungsaufgabe ist es erforderlich, nach einem lokalen Login an einem der vorhandenen Rechner des Übungsraums auf einem anderen dieser Rechner Programme, die per SFTP oder durch das auf allen Rechnern vorhandene verteilte Dateisystem dort hingelangt sind, zu übersetzen und zu starten. Dazu bedarf es eines Remote-Login-Zugangs zu diesem fernen Rechner. Deshalb steht auf allen Rechnern des Übungsraums, wenn mit dem Linux-Betriebssystem gearbeitet wird, ein SSH-Dienst zur Verfügung, der folgendermaßen bedient wird:

  1. Nach einem lokalen Login, beispielsweise an dem Rechner namens sun65.bht-berlin.de, wird ein Konsolenfenster (Terminalfenster) geöffnet. In diesem Konsolenfenster ist das Promptzeichen (üblicherweise ein Dollarzeichen gefolgt von einem Leerzeichen) der voreingestellten lokalen Shell zu sehen. Die Eingabe des Shellkommandos hostname liefert:
    ->$ hostname sun65 ->$
  2. Mit dem Shellkommando ssh wird eine Remote-Login-Sitzung zu einem fernen Rechner, beispielsweise zu dem Rechner sun71.bht-berlin.de aufgebaut:
    ->$ ssh sun71.bht-berlin.de Abwicklung der Login-Prozedur: username und password ->$
  3. Da alle Rechner des Übungsraums hard- und softwaremäßig identisch konfiguriert worden sind, ist im Konsolenfenster optisch nicht erkennbar, dass sich irgendetwas geändert haben könnte. Aber die Eingabe des Shellkommandos hostname zeigt jetzt Folgendes:
    ->$ hostname sun71 ->$
    Das Konsolenfenster auf dem Rechner sun65 arbeitet jetzt als Terminal an den Rechner namens sun71 (in der Domäne bht-berlin.de). Die Shell, deren Promptzeichen in diesem Fenster angezeigt wird, ist eine Shell, die zu dem Rechner sun71 gehört. Alle Shellkommandos (Übersetzungen, Programmstarts usw.), die hier eingegeben werden, werden auf dem Rechner sun71 ausgeführt.

  4. Das Shellkommando exit beendet eine Shell. Wird es in die sun71-Konsole des Rechners sun65 eingegeben, wird die Remote-Login-Sitzung beendet und das Konsolenfester zeigt wieder das Promptzeichen der Shell des Rechners sun65 an.


Zurück zum Inhaltsverzeichnis des Manuskripts verteilte Systeme