TCP/IP Standard-Dienste

> Linux Netzwerke

> > # TCP/IP Standard-Dienste

> > Als Großrechner-Betriebssystem mit Multiuser-Fähigkeiten hatte Unix schon von jeher fest eingebaute Mechanismen, die sich auf die Kommunikation zwischen Usern bezogen. Als Beispiele seien hier kurz die folgenden Befehle beschrieben, sie funktionieren auch ohne TCP/IP:

> > who
> >   Zeigt die gerade eingeloggten User nebst den verwendeten TTYs an.
> > write username
> >   Schreibt dem angegebenen User eine Nachricht auf den Schirm, die write von der Standard-Eingabe erwartet. D.h., dass entweder eine Datei übergeben wird mit

> >       # write < Datei

> >   oder eine Nachricht wird direkt eingegeben und mit Strg-D (EOF) abgeschlossen.
> > wall
> >   Schreibt eine Nachricht auf alle Bildschirme aller angemeldeter User (write all).
> > mesg [y | n]
> >   Bestimmt, ob andere User auf dem Bildschirm Meldungen mit write oder wall schreiben dürfen. Ohne Parameter zeigt mesg an, was die aktuelle Einstellung ist (`is y` oder `is n`) Durch die Angabe eines `y` werden Meldungen zugelassen, durch ein `n` werden sie nicht zugelassen. Root kann auch auf Terminals schreiben, die die Zulassung sonst verweigern.
> > Auch die E-Mail und ein "Telephon" (talk) gab es schon, bevor überhaupt Unix-Rechner vernetzt wurden. Durch die Einführung von TCP/IP kamen jetzt noch etliche Dienste hinzu, von denen die wichtigsten hier kurz dargestellt werden sollen:

> > ### Telnet

> > Telnet (Terminal EmuLation over NETwork) dient dazu, Zugriff auf einen, am Netz angeschlossenen Rechner in Form einer Terminalsitzung zu liefern. Auf Unix-Systemen läuft auf der Clientseite das Programm telnet, auf der Serverseite ein Daemon namens telnetd. Der Telnet-Service liegt auf dem TCP-Port 23.

> > Auf Unix-Systemen wird heute das Kommando rlogin verwendet, das etwa die gleiche Funktionalität besitzt, wie Telnet, dabei aber die Unix Eigenheiten besser unterstützt. In heterogenen Umgebungen, die nicht nur aus Unix-Systemen bestehen ist Telnet aber flexibler. rlogin wird später noch Gegenstand einer genaueren Untersuchung.

> > Eine Telnetsitzung wird gewöhnlich durch den Client mit dem Befehl

> > `telnet` hostname

> > gestartet. Das Programm stellt dann eine TCP-Verbindung mit dem gewünschten Host her und kommuniziert dort mit dem Telnet-Daemon telnetd. Dieser Daemon stellt jetzt ein sogenanntes Pseudo-Terminal (oder auch Network Virtual Terminal - NVT) zur Verfügung. Dieses Terminal lässt sich gleich steuern, wie eine Unix-Konsole, so dass auch bildschirmorientierte Programme via Telnet benutzt werden können (z.B. yast, mc, ...)

> > ### FTP

> > Das File Transfer Protokoll dient zur Übertragung von Dateien über das Netzwerk. Es nutzt die TCP-Ports 21 (Kommandokanal) und 20 (Datenkanal) um über TCP/IP Dateien von einem Rechner zum anderen zu kopieren. Auch hier gibt es unter Unix Befehle (rcp), die besser auf das System abgestimmt sind, aber auch hier gilt, in heterogenen Netzen hat FTP den Vorteil.

> > Wie bei Telnet, so gibt es auch hier einen Server (ftpd) und einen Client (ftp, xftp, Netscape), die miteinander kommunizieren. Früher war es üblich, mit der FTP-eigenen Kommandosprache zu arbeiten, heute gibt es graphische Frontends, die FTP wesentlich konfortabler machen.

> > FTP besitzt zwei Übertragungsmodi, Text und Binärformat. Heute ist es üblich, alle Übertragungen im Binärformat vorzunehmen, es entstehen so weniger Probleme beim Umgang mit Textdateien, die 8 Bit Zeichensätze verwenden (Umlaute...).

> > Die klassische Art, FTP zu nutzen war interaktiv, mit der FTP-eigenen Kommandosprache. Dabei war fast der Eindruck einer kleinen Terminalsitzung zu ahnen, um sich im Dateibaum zu bewegen und dort Dateien zu kopieren. Die wichtigsten Befehle von FTP sind:

> > open hostname
> >   Stellt eine Verbindung zum gewünschten Host her. Dabei wird ein Passwort abgefragt.
> > close
> >   Schließt eine bestehende Verbindung.
> > dir
> >   Zeigt das aktuelle Inhaltsverzeichnis.
> > cd Verzeichnis
> >   Wechselt in das angegebene Verzeichnis.
> > lcd Verzeichnis
> >   Wechselt das Verzeichnis auf der Client Seite (local change dir).
> > pwd
> >   Print Working Dir - gibt das aktuelle Verzeichnis an.
> > get Datei
> >   Kopiert eine Datei vom Server zum Client.
> > put Datei
> >   Kopiert eine Datei vom Client zum Server.
> > del Datei
> >   Löscht eine Datei auf dem Server.
> > binary
> >   Wechselt in den Binärmodus.
> > ascii
> >   Wechselt in den Textmodus.
> > quit
> >   Beendet FTP.
> > Moderne FTP-Clients wie Netscape oder xftp steuern diesen Vorgang über eine graphische Benutzeroberfläche, die den Umgang mit ftp stark vereinfacht.

> > Eine große Bedeutung im Internet hat anonymes FTP, das als Möglichkeit verwendet wird, um Public-Domain-Software downzuloaden.

> > ## Die Berkley r-Befehle

> > Die r-Befehle stellen eine ganze Familie von Befehlen dar, die alle remote, also auf anderen Rechnern ausgeführt werden können. Dabei gibt es eine zentrale Steuerung der Zugriffsberechtigung in den Dateien /etc/hosts.equiv und $HOME/.rhosts

> > Die Datei /etc/hosts.equiv enthält eine Liste von Hostnamen, deren Benutzer als äquivalent gelten. Das heißt, wenn ein User `hans` auf den Rechnern `ws1` und `ws2` einen Account hat, und auf beiden Rechnern der jeweils andere Rechner in der Datei /etc/hosts.equiv steht, so gilt der User `hans` auf beiden Systemen als die selbe Person und so kann er mit den r-Befehlen ohne Passwort auf den jeweils anderen Rechner zugreifen. Auch dort gilt er als User `hans`. Der root Account ist meist von dieser Gleichheit ausgenommen.

> > Jeder User kann in seinem Home-Verzeichnis eine Datei anlegen, die eine Liste von Rechnern und Usernamen enthält, die von ihm die Erlaubnis erhalten, r-Befehle unter seinem Namen durchzuführen. Diese Datei heißt immer .rhosts und befindet sich im Home-Verzeichnis des Users, für den sie gilt. Sie hat z.B. folgenden Inhalt:

> >       hal efka
> >       marvin efka
> >       ws345 fkalham

> > Nehmen wir an diese Datei befindet sich auf dem Rechner server01 im Home-Verzeichnis des Users `efka`. Das würde bedeuten, dass der User efka erlaubt, dass ein User efka der Rechner hal und marvin, sowie der User fkalham des Rechners ws345 mittels r-Befehlen unter der Identität des Users efka auf server01 Zugriff hat.

> > ### rlogin

> > Mit rlogin ist es möglich, sich in einem anderen Rechner wie mit Telnet einzuloggen und so auf dem Rechner zu arbeiten. Rlogin versucht eine Verbindung unter der aktuellen Identität aufzubauen (falls nicht mit -l eine andere Identität angegeben wurde), je nach Einstellung der oben genannten Dateien muß ein User ein Passwort eingeben oder nicht.

> > Syntax:

> > rlogin [`-l` Username] Hostname
> > Die -l Option ermöglicht es, einen anderen Usernamen (Logname) anzugeben, unter dessen Identität die Sitzung laufen soll.

> > ### rsh

> > Hier handelt es sich um eine remote Shell, also ein Shellaufruf auf einem anderen Rechner. Dabei kann dem Befehl rsh ein anderer Befehl mitgegeben werden, der dann auf dem anderen Rechner ausgeführt wird.

> > Auch hier gelten exakt die Regeln von rlogin, was die Zugriffsberechtigungen angeht. Die Syntax von rsh ist:

> > rsh [`-l` Username] Hostname Befehl
> > Der angegebene Befehl wird jetzt also auf dem anderen Rechner ausgeführt, die Standardkanäle sind aber mit dem lokalen Terminal verbunden. Das heißt insbesondere, dass sie lokal umgeleitet werden können.

> > Durch diese Eigenschaft ist es möglich, eine Pipe über mehrere Rechner abarbeiten zu lassen. Ein

> >       rsh ws1 Prog1 | rsh ws2 Prog2 | rsh ws3 Prog3 > Datei

> > würde also auf dem Rechner ws1 das Programm Prog1 aufrufen, dessen Ausgabe mit der Eingabe des Programms Prog2 auf ws2 verbinden usw. bis schließlich das Programm prog3 auf ws3 seine Ausgabe in die lokale Datei umleitet.

> > Alle Umleitungen und Pipes beziehen sich also auf den lokalen Rechner. Sollen sie auf dem remote-host gelten, so müssen sie ausgeklammert werden etwa:

> >       rsh ws1 'cat > remote_datei' < lokal_datei

> > Jetzt wirkt sich die Ausgabeumleitung von cat auf dem anderen Rechner aus weil sie in Hochkommas steht, die Eingabeumleitung meint aber immer noch den lokalen Rechner.

> > ### rcp

> > Hier handelt es sich um ein Kopierprogramm, das analog zum Unix-Kommando cp arbeitet. Nur können statt der Quell- und Zieldatei jeweils noch der Namen der Rechner angegeben werden, auf denen sie sich befinden.

> > Um einen Rechnernamen anzugeben wird dieser vor dem Dateinamen und durch einen Doppelpunkt von ihm getrennt angegeben. Dabei spielt es keine Rolle, ob die Quell- oder Zieldatei lokal oder remote sind. Es ist sogar möglich, von einem Rechner eine Datei eines zweiten Rechners auf einen dritten Rechner zu kopieren.

> > Beispiele (nehmen wir an unser lokaler Rechner heißt marvin):

> >       rcp hal:/etc/passwd /home/efka

> > Kopiert die Datei /etc/passwd des Rechners hal ins lokale Verzeichnis /home/efka des lokalen Rechners marvin.

> >       rcp test.dat hal:/home/efka

> > Kopiert die lokale Datei test.dat ins Verzeichnis /home/efka des Rechners hal.

> >       rcp hal:/etc/passwd ws345:/etc

> > Kopiert von marvin aus die Datei /etc/passwd des Rechners hal ins Verzeichnis /etc des Rechners ws345.

> > Um seine Useridentität zu wechseln, ist es möglich, dem Rechnernamen noch einen Usernamen voranzustellen, der mit einem at (@) vom Hostnamen getrennt wird.

> >       rcp efka@marvin:/home/efka/.profile /home/efka

> > Kopiert unter Verwendung der UserID efka die Datei /home/efka/.profile des Rechners hal in den lokalen Rechner ins Verzeichnis /home/efka.

[ Kurs Hauptseite ] [ Linux-Kurse ] [ Startseite Linux-Praxis ]

© 1999, 2000, 2001 by F. Kalhammer