Das FTP-Protokoll (File Transfer Protocol)

Das FTP-Protokoll ist ein Protokoll zur Übertragung von Dateien in IP-Netzwerken. Es wurde bereits in den 1970er Jahren entwickelt und im RFC 959 von 1985 weiter spezifiziert.

Aufgaben und Modell des FTP-Protokolls

Das-FTP Protokoll (File Transfer Protocol) beschreibt die Art und Weise, mit der Daten im Netz TCP/IP übertragen werden. Ziel des FTP Protokolls ist der zuverlässige Austausch von Dateien zwischen entfernten Rechner, ungeachtet der Dateisysteme von Client-Rechner und Server.

FTP basiert auf dem [/contents/115-client-server-umgebung Client-Server-Modell, das heißt ein Rechner sendet Befehle (Client) und der andere Rechner wartet auf Anfragen, um bestimmte Aufgaben zu erledigen (Server).

Bei einer FTP-Verbindung werden zwei separate TCP-Übertragungskanäle geöffnet, ein Kanal für die Befehle (Kontrollkanal) und ein Kanal für die Daten:

Le modèle FTP
Client und Server wachen über zwei Prozesse, die diese beiden Informationstypen verwalten:

DTP (Data Transfer Process) ist der Prozess, der die Verbindung erstellt und die Datenkanäle überwacht. Der DTP auf Server-Seite wird Server-DTP genannt, der DTP auf Client-Seite User-DTP.

PI (Protocol Interpreter) ist der Protokollübersetzer. Er setzt die über die Kontrollkanäle empfangenen Befehle zum DTP um. Der PI hat auf Seiten von Server und Client unterschiedliche Aufgaben. Der PI-Server horcht auf Kontrollkanalbefehle über einen vom User-PI geöffneten Port, stellt die Kontrollkanalverbindung her, empfängt und beantwortet auf diesem Kanal die FTP-Befehle vom User-PI und steuert den DTP-Server. Der User-PI stellt die Verbindung zum FTP-Server her, sendet FTP-Befehle, empfängt Antworten vom Server-PI und steuert wenn nötig den User-DTP.

Nach der Verbindung eines FTP-Client mit dem FTP-Server startet der User-PI die Verbindung zum Server nach dem Telnet-Protokoll. Der Client sendet FTP-Befehle zum Server, der sie wiederum interpretiert, steuert seinen DTP und sendet eine Standard Antwort zurück. Wenn die Verbindung zustande kommt, gibt der Server-PI den Port für die Übertragung der User-DTP-Daten an. Der User-DTP horcht dann auf diesem Port auf die vom Server stammenden Daten.

Da Kontrollport und Datenport nicht gleich sind, besteht die Möglichkeit, Befehle von einem Rechner zu senden und Daten auf einen anderen zu bekommen. So ist beispielsweise möglich, Daten zwischen zwei FTP-Servern zu übertragen und sich eines Client zu bedienen, um die Kontrollweisungen zu senden, oder Informationen zwischen zwei Prozess-Servern zu übertragen, die mit entsprechenden Ports verbunden sind:

Transfert de données par FTP entre deux serveurs
In dieser Konfiguration zwingt das Protokoll zu offenen Kontrollkanälen während des gesamten Datentransfers. Sollte das Kontrollkanal unterbrochen werden, kann der Server die Übertragung anhalten.

Die FTP-Befehle

Sämtliche durchgeführte Übertragungen passieren auf dem Kontrollkanal mit Hilfe des Telnet-Protokolls. So sind FTP-Befehle Telnet-Zeichenketten (nach Code NVT-ASCII), die durch das Telnet-Code-Zeilenende <CR> (Carriage Return, zu Deutsch "Wagen-Rücklauf") und <LF> (Line Feed) abgeschlossen werden, zusammengesetzt <CRLF>.

Wenn der FTP Befehl mit einem Parameter spezifiziert werden soll, dann wird dieser duch ein Leerzeichen getrennt (<SP>).

Die FTP Befehle definieren:

den verwendeten Port,
den Datentranfer-Modus,
die Datenstruktur und
die Art der eingeleiteten Handlung (retrieve, list, store usw.).

Man unterscheidet drei Befehlstypen:

Zugriffskontrollbefehle

Transferparameterbefehle

FTP-Dienstbefehle

Zugriffskontrollbefehle
Befehl Beschreibung
USER Zeichenkette, die den Benutzer kenntlich machen. Diese Benutzeridentifizierung ist für das Einleiten der Kommunikation auf dem Datenkanal notwendig.
PASS Zeichenkette mit dem Benutzer-Passwort. Dieses Befehl folgt unmittelbar auf den Befehl USER. Der Benutzer kann diesen Befehl zwecks Datenschutz verbergen.
ACCT Zeichenkette mit dem Benutzerkonto (account). Das Befehl ist im Allgemeinen nicht notwendig, wird aber erneut abgefragt, wenn zum Beispiel Daten auf dem Server gespeichert werden sollen.
CWD Change Working Directory: Der Befehl bewirkt einen Wechsel aus dem laufenden Verzeichnis. Er erwartet den path zum Verzeichnis als Argument.
CDUP Change to Parent Directory: Gibt Zugang zum Hauptverzeichnis.
SMNT Structure Mount: Über diesen Befehl kann der User eine Dateisytemstruktur erzeugen, ohne sich noch einmal einloggen zu müssen.
REIN Reinitialize: Damit wird die Berechtigung des Users aufgehoben. Um neue Datentransfers einzugeben, muss ist ein erneuter Login mit USER und PASS notwendig.
QUIT Das Befehl beendet die laufende Sitzung. Der Server wartet eventuell laufende Transfers ab, gibt die entsprechende Antwort und schließt dann die Verbindung.
Transferparameterbefehle
Befehl Beschreibung
PORT Zeichenkette mit der Nummer des verwendeten Ports.
PASV Gibt dem DTP-Server die Anweisung, sich in Wartestellung zu begeben und auf einen willkürlichen aber verfügbaren Port zu horchen. Die Antwort auf diesen Befehl ist die IP-Adresse des Geräts und dessen Port.
TYPE Schreibt das Typformat der zu sendenden Daten vor.
STRU Telnet-Zeichen mit der Dateistruktur (F für File, R für Record, P für Page).
MODE Telnet-Zeichen mit dem Datentranfer-Modus (S für Stream, B für Block, C für gepackt).
FTP-Dienstbefehle
Befehl Beschreibung
RETR Dieser Befehl (retrieve) fragt den DTP-Server nach einer Kopie der Datei, mit dem Streckenverlauf als Parameter.
STOR Dieser Befehl (store) bittet den DTP-Server darum, Daten auf dem Datenkanal anzunehmen und sie in eine Datei zu speichern, deren Namen als Parameter übergeben wurde. Wenn die Datei nicht vorhanden ist, wird sie erzeugt, sonst wird sie überschrieben.
STOU Dieses Befehl ist identisch mit dem vorigen, mit dem Unterschied, dass der Server um einen eindeutigen Namen gebeten wird. Der Dateiname wird mit der Antwort zurückgesendet.
APPE Mit Hilfe dieses Befehls (append) werden die Daten in eine Datei zusammengekettet mit dem als Argument übergebenen Dateinamen, der erzeugt wird falls nicht vorhanden.
ALLO Dieser Befehl (allocate) bittet den Server um genügend Speicherplatz für die Datei, deren Namen als Argument übergeben wurde.
REST Dieser Befehl (restart) gestattet die Wiederaufnahme des Transfers von der Bruchstelle an. Dabei wird als Parameter die Abbruchstelle in der Transferdatei übergeben. Dem Befehl folgt unmittelbar ein Transferbefehl.
RNFR Mit dem Befehl (rename from) kann eine Datei umbenannt werden. Er enthält als Argument den umzubenennenden Dateinamen und wird gefolgt von RNTO.
RNTO Der Befehl (rename to) bennent eine Datei um. Er enthält als Argument den umzubenennenden Dateinamen und folgt nach dem Befehl RNFR.
ABOR Der Befehl (abort) veranlasst den DTP-Server, sämtliche mit dem vorherigen Befehl assoziierte Tranferaufträge abzubrechen. Wenn kein Datentransfer aussteht, schließt der DTP-Server den Datenkanal. Der Kontrollkanal bleibt dagegen offen.
DELE Dieser Befehl (delete) veranlasst die Löschung einer Datei, deren Name als Argument übergeben wird. Dieser Befehl ist unwiderruflich und kann nur vom Client bestätigt werden.
RMD Mit dem Befehl (remote directory) kann ein Verzeichnis gelöscht werden. Als Parameter wird der Verzeichnisname übergeben.
MKD Der Befehl (make directory) erzeugt ein Verzeichnis, der Verzeichnisname wird als Parameter übergeben.
PWD Der Befehl (print working directory) übermittelt den vollständigen Weg des laufenden Verzeichnisses.
LIST Der Befehl übermittelt die vollständige Belegung des laufenden Verzeichnisinhalts. Diese Liste wird auf dem Passiv-DTP übertragen. Als Befehlsparameter kann ein Verzeichnisname angeheftet werden, der DTP-Server sendet dann die Dateiliste in das als Parameter übergebene Verzeichnis.
NLST Der Befehl (name list) sendet die Liste der Dateien sowie Unterverzeichnisse des aktuellen Verzeichnisses.
SITE Mit dem Befehl (site parameters) kann der Server nicht im FTP-Protokoll eingebettete Sonderdienste anbieten.
SYST Der Befehl (system) löst das Senden von Informationen über das System an den Server aus.
STAT Der Befehl (status) sendet den Server-Status, wenn zum Beispiel der Fortgang des laufenden Transfers benötigt wird. Das Befehl nimmt als Argument den Weg und übergibt die gleichen Informationen wie LIST zurück auf dem Kontrollkanal.
HELP Dieser Befehl gibt die vollständige Liste der Befehle, die der Server verarbeiten kann, bekannt. Diese Informationen werden auf dem Kontrollkanal zurückgetragen.
NOOP Der Befehl (no operations) dient lediglich der OK-Bestätigung des Servers. Er kann nur dazu verwendet werden, das Abklemmen vom Server zu verhindern, wenn die Verbindung zu lange inaktiv ist.

Die FTP-Antworten

FTP-Antworten sichern den Synchronlauf zwischen Client und FTP-Server. Jeder gesendete Befehl vom Client erzeugt eventuell eine Aktion und gibt systematisch eine Antwort. Die Antworten bestehen aus einem Code aus drei Ziffern für die Art der Befehlsbearbeitung des Client-Auftrags.

Die erste Ziffer gibt den Status der Antwort an (Erfolg oder Misserfolg). Die zweite Ziffer gibt an, worauf sich die Antwort bezieht. Die dritte Ziffer gibt eine genauere Beschreibung (bezogen auf die zweite Ziffer).

Erste Ziffer
Ziffer Bedeutung Beschreibung
1 yz Prepositive Antwort Der angegebene Auftrag ist in Bearbeitung, eine zweite Antwort soll stattfinden, bevor ein zweiter Befehl gesendet wird.
2 yz Positive Erledigungsantwort Der Auftrag wurde abgeabeitet, ein neuer wird erwartet.
3 yz Positive Zwischenantwort Der Auftrag wurde vorläufig angehalten. Zusätzliche Informationen werden vom Clienten erfragt.
4 yz Negativer Auftragsabgang Die Bearbeitung fand wegen Zeitüberschreitung nicht statt. Der Client soll es später versuchen.
5 yz Endgültige Absage Die Bearbeitung des Auftrags fand nicht statt. Der Client soll ihn neu verfassen
Zweite Ziffer
Ziffer Bedeutung Beschreibung
x 0 z Syntax Im Befehl liegt ein Syntaxfehler vor oder es handelt sich um einen Befehl, den der Server nicht versteht.
x 1 z Information Antwort mit Informationsinhalt (zum Beispiel Antwort auf STAT-Befehl).
x 2 z Verbindungen Antwort betrifft den Datenkanal.
x 3 z Authentifizierung und Konten Antwort betrifft Login (USER/PASS) oder auch Kontoänderung (CPT).
x 4 z im FTP-Protokoll nicht benutzt.  
x 5 z Dateisystem Antwort betrifft das Ferndateisystem.

Foto: © Pixabay.

Unsere Inhalte werden in Zusammenarbeit mit IT-Experten erstellt, unter der Leitung von Jean-François Pillou, Gründer von CCM.net. CCM ist eine führende internationale Technologie-Webseite und in elf Sprachen verfügbar.
Das Dokument mit dem Titel « Das FTP-Protokoll (File Transfer Protocol) » wird auf CCM (de.ccm.net) unter den Bedingungen der Creative Commons-Lizenz zur Verfügung gestellt. Unter Berücksichtigung der Lizenzvereinbarungen dürfen Sie das Dokument verwenden, verändern und kopieren, wenn Sie dabei CCM deutlich als Urheber kennzeichnen.