File Transfer Protocol
Anwendung | FTP | |||
Transport | TCP | |||
Netzwerk | IP | |||
Netzzugang | Ethernet | Token Ring |
FDDI | ... |
Das File Transfer Protocol (engl., "Dateiübertragungsverfahren", kurz FTP), ist ein in RFC 959 spezifiziertes Netzwerkprotokoll zur Dateiübertragung über TCP/IP-Netzwerke. FTP ist in der Anwendungsschicht des TCP/IP Protokollstapels angesiedelt. Es wird benutzt, um Dateien vom Server zum Client (Download), vom Client zum Server (Upload) oder clientgesteuert zwischen zwei Servern zu übertragen.
Anders als z.B. HTTP benutzt FTP zur Kommunikation mehr als eine Verbindung: Zunächst wird zum Port 21 des Servers, dem Control Port, eine Verbindung zur Authentifizierung und Befehlsübertragung aufgebaut. Hier reagiert der Server auf jeden Befehl des Clients mit einem Statuscode, oft mit einem angehängten, erklärenden Text. Zur eigentlichen Datenübertragung wird dann im Bedarfsfall eine separate Verbindung initiiert. FTP kennt dazu zwei Modi:
- Beim Active Mode baut der Server von seinem Port 20, dem Data Port, eine Datenverbindung zu einem vom Client gewählten Endpunkt auf. Dieser Endpunkt ist typischerweise ein Port des Clients der jenseits 1023 liegt, kann aber auch ein anderer Server sein, der seinerseits in den Passive Mode geschaltet wurde, also auf eine Verbindung wartet (sogenanntes FXP).
Die Kommunikation mit Befehlen erfolgt auf dem Port 21. Somit bleibt es möglich, dass während der Übertragung von Daten die Partner noch immer miteinander kommunizieren können.
- Beim Passive Mode baut der Client eine Datenverbindung zum vom Server gewünschten Port auf. Hier wird typischerweise von beiden Seiten ein Port jenseits 1023 benutzt.
Diese Technik wird eingesetzt, wenn der Client z.B. hinter einem Router sitzt, da ihm nicht eindeutig eine IP-Adresse zugeordnet werden kann.
Viele FTP-Server, vor allem Server von Universitäten und Fachhochschulen, bieten so genanntes Anonymous FTP an. Hier ist zum Einloggen neben den realen Benutzerkonten ein spezielles Benutzerkonto, typischerweise "anonymous", vorgesehen, für das kein (oder ein beliebiges) Passwort angegeben werden muss.
Beispiel
Eine Beispielsitzung, die Anonymous FTP und Passive Mode nutzt:
220 FTP.FU-Berlin.DE ready. USER anonymous 331 Anonymous login ok, send anything as password. PASS anything 230 FTP.FU-Berlin.DE login ok. CWD /doc/jargon 250 CWD command successful. PWD 257 "/doc/jargon" is current directory. PASV 227 Entering Passive Mode (130,133,1,100,202,162). LIST 150 Opening ASCII mode data connection for file list 226 Transfer complete. PASV 227 Entering Passive Mode (130,133,1,100,237,201). RETR jargon.html 150 Opening ASCII mode data connection for jargon.html (2360016 bytes) 226 Transfer complete. QUIT 221 Goodbye.
Beispiele für FTP-Clients:
- Unter Windows
- Unter Unix
- Kommandozeilenversion:
ftp
, wget, wput - kbear
- AxY FTP
- gFTP (Gnome)
- Kommandozeilenversion:
- Unter Mac OS X
- Kommandozeilenversion:
ftp
- Fetch
- Transmit
- Captain FTP
- Interarchie
- Cyberduck
- RBrowserLite
- Kommandozeilenversion:
Fast alle Webbrowser haben ebenfalls FTP implementiert und können als Clients für den Download von Dateien benutzt werden. Beispiel-URL für FTP: ftp://ftp.rfc-editor.org/
Der Benutzername und das Passwort können auch direkt in die URL eingebaut werden: ftp://login:password@ftp.rfc-editor.org
In Benutzernamen oder Kennwörtern, die ein @
enthalten, sollte dieses durch %40
ersetzt werden.
Die gebräuchlichsten ftp-Kommandos
Die gebräuchlichsten Kommandos des Kommandozeilenprogramms "ftp", welches FTP auf der Client-Seite versteht. (Bei einem grafischen FTP Programm funktioniert die Bedienung auf Klick.)
Befehl | Beschreibung |
---|---|
open | Öffnet eine Verbindung zum Server |
user | Definiert das Benutzerkonto des Benutzers, der sich einloggen will |
close | Beendet eine Verbindung zum Server. |
quit | Beendet das FTP-Programm. |
bye | Beendet eine Verbindung zum Server und beendet das FTP-Programm. |
cd | Wechselt in ein anderes Verzeichnis auf dem ftp-Server. Statt "\" wie unter DOS und Windows wird als Trennzeichen der normale Schrägstrich "/" (Unix-Konvention) verwendet. |
lcd | Wechselt in ein anderes Verzeichnis auf dem lokalen System. Wird nur "lcd" eingegeben, gibt das FTP-Programm das aktuelle lokale Verzeichnis aus. |
list | Fordert das Ergebnis eines Verzeichnisdurchsuchung auf. Es können auch das zu durchsuchende Verzeichnis und ein Suchmuster angegeben werden. |
asc | Schaltet in den ASCII Übertragungsmodus. Wichtig, wenn auf Server und Client verschiedene Betriebssysteme laufen, die unterschiedliche Organisation von Textzeilen (Windows, Un*x vs. VMS) bzw. Zeilenende-Kennzeichnung (CR, LF, CR+LF) verwenden. |
bin | Schaltet bei älteren Clients in den binären Übertragungsmodus. Im ASCII Modus werden z.B. ZIP-Archive oder Bilder nicht korrekt übertragen. |
get | Kopiert eine Datei vom Server auf den lokalen Rechner. Das Kopieren funktioniert aber nur, wenn man Leserechte auf dem Server hat. |
put | Kopiert eine Datei vom lokalen Rechner auf den Server. Funktioniert aber nur, wenn man Schreibrechte auf dem Server hat. Viele Server stellen für diesen Zweck ein incoming-Verzeichnis zur Verfügung, in das Dateien abgelegt werden dürfen. |
mget | Kopiert eine oder mehrere Dateien vom Server auf den lokalen Rechner. Vor jedem Kopiervorgang wird die Datei angezeigt und der Anwender gefragt, ob diese übertragen werden soll. Dies kann man mit dem ftp-Kommando "prompt" ab- und anschalten. Das Kopieren funktioniert aber nur, wenn man Leserechte auf dem Server hat. |
mput | Kopiert eine oder mehrere Dateien vom lokalen Rechner auf den Server. Vor jedem Kopiervorgang wird die Datei angezeigt und der Anwender gefragt, ob diese übertragen werden soll. Dies kann man mit dem ftp-Kommando "prompt" ab- und anschalten.
Das Kopieren funktioniert aber nur, wenn man Schreibrechte auf dem Server hat. Viele Server stellen für diesen Zweck ein incoming-Verzeichnis zur Verfügung, in das Dateien abgelegt werden dürfen. |
prompt | Damit kann man die Rückfragen bei dem Kommandos mget und mput an- oder abschalten. |
pwd | Gibt das aktuelle Verzeichnis auf dem ftp-Server aus |
mkdir | Erzeugt ein neues Verzeichnis auf dem Server |
delete | Löscht eine Datei auf dem Server. |
mdelete | Löscht mehrere Dateien über eine Maske |
rename | Mit dieser Funktion können Dateien und Verzeichnisse auf dem Server umbenannt werden. |
! cmd | Führt den Befehl cmd auf dem lokalen Rechner aus.
Beispiel: ! pwd gibt das aktuelle lokale Verzeichnis aus |
Beispiele für FTP-Server:
- unter Windows
- unter Unix
- in Java (betriebssystemunabhängig)
Sicherheit
FTP benutzt sowohl zur Authentifizierung als auch zur Datenübertragung standardmäßig jeweils unverschlüsselte Kanäle. Dadurch lassen sich z.B. übertragene Passwörter sehr leicht abhören; im Fall eines Man-In-The-Middle-Angriffs ist sogar die unbemerkte Veränderung von Dateien während der Übertragung möglich. RFC 2228 stellt allerdings einen Mechanismus bereit, auf den aufbauend ein Standard TLS-gesicherte Authentifizierung und Datenübertragung ermöglichen soll ("FTP-TLS", auch "FTPS").
Weblinks
- RFC 959 - File Transfer Protocol
- RFC 2228 - FTP Security Extensions
- RFC 2640 - Internationalization of the File Transfer Protocol
- Ausführliche Erklärung von Aktiv und Passiv FTP