FTP - Dateitransfer

Einer der wichtigsten Dienste im Internet ist FTP (File Transfer Protocol). FTP bezeichnet neben dem Protokoll gleichzeitig auch den Dienst der mit Hilfe des Protokolls realisiert wird: Die Übertragung von Dateien über das Netz. Wie viele andere Internet-Dienste auch, arbeitet FTP Client/Server orientiert und steht auf fast allen Plattformen zur Verfügung. FTP ist erstmals im RFC 114 von 1971 (geltender Standard ist RFC 959 mit Updates in RFC 2228 und RFC 2640) spezifiziert und ist damit ebenfalls nahezu 20 Jahre alt.

Wie in der nachstehenden schematischen Darstellung der Architektur (nach Scheller et al., 1994) von FTP zu sehen, benutzt das FTP Protokoll die (wellknown-) TCP-Ports 20 (ftp-data) und 21 (ftp). Man findet übrigens diese und weitere Portzuordnungen in fast allen Betriebssystemen die TCP unterstützen, in Form einer ASCII Datei (z.b. /etc/services in UNIX-Systemen, \%SystemRoot%\system32\drivers\etc\services in MS-NT-Systemen oder \%System%\services in Windows 95/98.

FTP-Architekturmodell

Das Filetransferprotokoll spezifiziert den benutzergesteuerten Datenaustausch zwischen zwei Rechnern, basierend auf einer TCP-Verbindung. Es hat seit seinen Anfängen im ARPANET mehrere Entwicklungsstufen durchlaufen. Neben dem FTP gibt es noch ein auf dem UDP-Datagramm aufsetzendes, einfacheres, TFTP genanntes Dateitransferprotokoll.

Der FTP-Standard beschreibt eine Architektur nach dem Client/Server-Prinzip, deren zentraler Bestandteil die Trennung von Kontroll- und Datenverbindung ist. Die Steuerkommandos werden dabei über Port 21, die Daten über Port 20 übertragen. Eine FTP-Sitzung läuft schematisch folgendermassen ab: Der Client initiiert den Aufbau einer Kontrollverbindung zum Server und schickt über diese Verbindung Kommandos an den Server. Der Server antwortet ebenfalls über die Kontrollleitung. Dabei legen die Kommandos des Clients die Parameter der Datenübertragung, wie z.B. den Dateityp, den Übertragungsmodus und die durchzuführenden Operationen (Speichern, Anfügen, Abholen von Dateien) fest. Nach Festlegung der erforderlichen Parameter wird dann auf das entsprechende Kommando mit der Dateiübertragung über die Datenverbindung begonnen. Das Kommandoprotokoll ist ähnlich wie bei den übrigen Diensten die in diesem Abschnitt beschrieben werden, ASCII-orientiert und arbeitet mit Klartextmeldungen und Dezimalcodes als Server Rückmeldungen. Im FTP-Protokoll werden Vorkehrungen für viele unterschiedliche Fälle und Konstellationen getroffen. Es gibt unterschideliche Dateitypen, z.B. ASCII, EBCDIC, BINARY (oder IMAGE) die der Benutzer angeben kann. Ausserdem werden verschiedene Übertragungsarten z.B. Stream (unstrukturierter Datenstrom), Block (Daten werden blockweise übertragen) oder Compressed (einfache Datenkompression) berücksichtigt.

Die Antworten des Servers auf FTP Kommandos bestehen aus einer dreistelligen Zahl und einer kurzen Textnachricht. Die Nachricht ist zur Information des Benutzer gedacht, die Zahl zur Auswertung durch den Client. Nachfolgend wird eine Tabelle mit der Struktur der Server-Antwortcodes angegeben:

1. Stelle des Antwortcodes 1yz positive Vorabbestätigung, die angeforderte Aktion konnte gestartet werden.
2yz positive Vollzugsmeldung, die angeforderte Aktion wurde korrekt beendet.
3yz positive Übergangsbestätigung, zur vollständigen Bearbeitung ist ein weiteres Kommando notwendig.
4yz vorübergehende negative Vollzugsmeldung, die angeforderte Aktion kann z.Zt. nicht durchgeführt werden.
5yz dauerhaft negative Vollzugsmeldung, die angeforderte Aktion kann prinzipiell nicht erbracht werden.
2. Stelle des Antwortcodes x0z Fehler, selbst bei korrekter Syntax macht das Kommando keinen Sinn.
x1z Informationsantwort, die z.B. den Status des Servers zurückgibt.
x2z Antwort bezieht sich auf die Kontroll- oder Datenverbindung.
x3z Antwort steht in Zusammenhang mit dem Benutzerkennung des Benutzers
x4z unbenutzt
x5z Antwort bezieht sich auf den Status des Server-Dateisystems
Die 3. Stelle z verfeinert lediglich die Bedeutung der zweiten Stelle.

Scheller, von dem auch die vorangegangenen Eigenschaften von FTP zusammengetragen wurden (Scheller et al., 1994), gibt noch eine ungewöhnlichere Einsatzmöglichkeit von FTP an, bei der der Client-Rechner nur als Steuerinstanz und Initiator bei der Dateiübertragung zwischen zwei Serverrechnern dient:

Möglicher FTP-Einsatz nach Scheller et al., 1994

Hier noch eine kurze Zusammenstellung der wichtigsten FTP-Kommandos (nach Kyas, 1995) die erforderlich sind, um sich auf einem FTP-Server zurechtzufinden und die gewünschten Daten zu übertragen:

open <rechnername> Verbindungsaufbau zu einem Server
close Verbindung schliessen
dir bzw. ls (directory/list) Inhaltsverzeichnis anzeigen
cd bzw. pwd (change directory/print working directory) Inhaltsverzeichnis wechseln/anzeigen
bin bzw. ascii Übertragungsmodus binär/ascii
hash Übertragungsablauf graphisch darstellen (hat nichts mit 'Hashverfahren' zu tun!), FTP schreibt daraufhin für jeden übertragenen Datenblock ein '#')
get <dateiname> bzw. put<dateiname> Datei vom/zum Server übertragen