Das FTP-Protokoll (File Transfer Protocol)

April 2018
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
BefehlBeschreibung
USERZeichenkette, die den Benutzer kenntlich machen. Diese Benutzeridentifizierung ist für das Einleiten der Kommunikation auf dem Datenkanal notwendig.
PASSZeichenkette mit dem Benutzer-Passwort. Dieses Befehl folgt unmittelbar auf den Befehl USER. Der Benutzer kann diesen Befehl zwecks Datenschutz verbergen.
ACCTZeichenkette 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.
CWDChange Working Directory: Der Befehl bewirkt einen Wechsel aus dem laufenden Verzeichnis. Er erwartet den path zum Verzeichnis als Argument.
CDUPChange to Parent Directory: Gibt Zugang zum Hauptverzeichnis.
SMNTStructure Mount: Über diesen Befehl kann der User eine Dateisytemstruktur erzeugen, ohne sich noch einmal einloggen zu müssen.
REINReinitialize: Damit wird die Berechtigung des Users aufgehoben. Um neue Datentransfers einzugeben, muss ist ein erneuter Login mit USER und PASS notwendig.
QUITDas Befehl beendet die laufende Sitzung. Der Server wartet eventuell laufende Transfers ab, gibt die entsprechende Antwort und schließt dann die Verbindung.



Transferparameterbefehle
BefehlBeschreibung
PORTZeichenkette mit der Nummer des verwendeten Ports.
PASVGibt 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.
TYPESchreibt das Typformat der zu sendenden Daten vor.
STRUTelnet-Zeichen mit der Dateistruktur (F für File, R für Record, P für Page).
MODETelnet-Zeichen mit dem Datentranfer-Modus (S für Stream, B für Block, C für gepackt).



FTP-Dienstbefehle
BefehlBeschreibung
RETRDieser Befehl (retrieve) fragt den DTP-Server nach einer Kopie der Datei, mit dem Streckenverlauf als Parameter.
STORDieser 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.
STOUDieses 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.
APPEMit Hilfe dieses Befehls (append) werden die Daten in eine Datei zusammengekettet mit dem als Argument übergebenen Dateinamen, der erzeugt wird falls nicht vorhanden.
ALLODieser Befehl (allocate) bittet den Server um genügend Speicherplatz für die Datei, deren Namen als Argument übergeben wurde.
RESTDieser 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.
RNFRMit dem Befehl (rename from) kann eine Datei umbenannt werden. Er enthält als Argument den umzubenennenden Dateinamen und wird gefolgt von RNTO.
RNTODer Befehl (rename to) bennent eine Datei um. Er enthält als Argument den umzubenennenden Dateinamen und folgt nach dem Befehl RNFR.
ABORDer 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.
DELEDieser 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.
RMDMit dem Befehl (remote directory) kann ein Verzeichnis gelöscht werden. Als Parameter wird der Verzeichnisname übergeben.
MKDDer Befehl (make directory) erzeugt ein Verzeichnis, der Verzeichnisname wird als Parameter übergeben.
PWDDer Befehl (print working directory) übermittelt den vollständigen Weg des laufenden Verzeichnisses.
LISTDer 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.
NLSTDer Befehl (name list) sendet die Liste der Dateien sowie Unterverzeichnisse des aktuellen Verzeichnisses.
SITEMit dem Befehl (site parameters) kann der Server nicht im FTP-Protokoll eingebettete Sonderdienste anbieten.
SYSTDer Befehl (system) löst das Senden von Informationen über das System an den Server aus.
STATDer 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.
HELPDieser Befehl gibt die vollständige Liste der Befehle, die der Server verarbeiten kann, bekannt. Diese Informationen werden auf dem Kontrollkanal zurückgetragen.
NOOPDer 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
ZifferBedeutungBeschreibung
1 yzPrepositive AntwortDer angegebene Auftrag ist in Bearbeitung, eine zweite Antwort soll stattfinden, bevor ein zweiter Befehl gesendet wird.
2 yzPositive ErledigungsantwortDer Auftrag wurde abgeabeitet, ein neuer wird erwartet.
3 yzPositive ZwischenantwortDer Auftrag wurde vorläufig angehalten. Zusätzliche Informationen werden vom Clienten erfragt.
4 yzNegativer AuftragsabgangDie Bearbeitung fand wegen Zeitüberschreitung nicht statt. Der Client soll es später versuchen.
5 yzEndgültige AbsageDie Bearbeitung des Auftrags fand nicht statt. Der Client soll ihn neu verfassen



Zweite Ziffer
ZifferBedeutungBeschreibung
x 0 zSyntaxIm Befehl liegt ein Syntaxfehler vor oder es handelt sich um einen Befehl, den der Server nicht versteht.
x 1 zInformationAntwort mit Informationsinhalt (zum Beispiel Antwort auf STAT-Befehl).
x 2 zVerbindungenAntwort betrifft den Datenkanal.
x 3 zAuthentifizierung und KontenAntwort betrifft Login (USER/PASS) oder auch Kontoänderung (CPT).
x 4 zim FTP-Protokoll nicht benutzt. 
x 5 zDateisystemAntwort betrifft das Ferndateisystem.

Foto: © Pixabay.

Protocolo FTP (protocolo de transferencia de archivos)
Protocolo FTP (protocolo de transferencia de archivos)
Le protocole FTP (File Transfer Protocol)
Le protocole FTP (File Transfer Protocol)
Il protocollo FTP (File Transfer Protocol)
Il protocollo FTP (File Transfer Protocol)
O protocolo File Transfer Protocol
O protocolo File Transfer Protocol
Letztes Update am 12. November 2017 05:55 von SilkeCCM.
Das Dokument mit dem Titel "Das FTP-Protokoll (File Transfer Protocol)" wird auf CCM (https://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.
POP3, SMTP, IMAP
Telnet