File Transfer Protocol (FTP)

 

Das File Transfer Protocol (FTP), ist ein 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.

 
FTP im TCP/IP-Protokollstapel
Anwendung FTP
Transport TCP
Netzwerk IP
Netzzugang Ethernet Token
Ring
FDDI ...

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 (allgemein gilt: Port 20 - Datenübertragung, Port 21 - Initiierung der Session, Kommandoübertragung). 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. Man spricht auch von der Steuerung "Out of Band". Somit bleibt es möglich, dass während der Datenübertragung 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 für den Server nicht erreichbar ist. Dies ist beispielsweise der Fall, wenn der Client sich hinter einem Router befindet, der die Adresse des Clients mittels NAT umschreibt, oder wenn eine Firewall das Netzwerk des Client vor Zugriffen von außen abschirmt.

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" und/oder "ftp", vorgesehen, für das kein (oder ein beliebiges) Passwort angegeben werden muss. Zum "guten Ton" gehört jedoch, bei anonymem FTP seine eigene, gültige E-Mail-Adresse als Passwort anzugeben.

Für das Datenübertragungsverfahren wird ein FTP Client benötigt.


Kommandos

Die folgenden Kommandos sind im Client-Programm einzugeben:

![Kommando] 
Führt ein Shell-Kommando aus
$[Makroname] ([Argumente]) 
Führt ein Makro aus
append [lokal_file] [remote_file] 
Kopiert den Inhalt einer lokalen Datei [lokal_file] an das Ende der Datei [remote_file] auf dem Server
ascii 
Einstellen von ASCII als Übertragungsmodus
binary 
Einstellen von binary als Übertragungsmodus
bye 
Schließt die Verbindung zum Server und beendet das Programm
cd [remote-directory] 
Wechselt in das Arbeitsverzeichnis [remote-directory] auf dem Server
cdup 
Wechselt in die nächsthöhere Verzeichnisebene auf dem Server
close 
Schließt die Verbindung zum Server und löscht alle Makros. Das Programm wird jedoch nicht beendet
delete [remote_file] 
Löscht die Datei [remote_file] auf dem Server
dir 
Zeigt den Inhalt des aktuellen Arbeitsverzeichnisses an
disconnect 
Äquivalent zu close
get [remote_file] ([local_file]) 
Kopiert die Datei [remote_file] vom Server auf den Client und speichert sie unter dem Namen [local_file]. Ist [local_file] nicht gegeben, wird sie unter dem ursprünglichen Namen abgespeichert.
hash 
Gibt für jeden übertragenden Datenblock ein Doppelkreuz (#) aus. Sinnvoll bei der Übertragung von sehr großen Dateien
help ([Kommando]) 
Gibt Informationen über das Kommando [Kommando] aus. Ist kein Kommando gegeben, wird eine Liste aller verfügbaren Kommandos ausgegeben
lcd ([local_directory]) 
Wechselt in das Verzeichnis [local_directory] auf dem Client. Ist kein Verzeichnis angegeben, wird in das Home-Verzeichnis des aktuellen Benutzers gewechselt
ls [remote_directory] ([local_file]) 
Gibt eine Kurzform des Verzeichnisses [remote_directory] aus und leitet die Ausgabe, wenn gegeben, in die Datei [local_file] auf dem Client-Rechner um
macdef [Makroname] 
Definiert ein Makro
mget [remote_files] 
Kopiert mehrere Dateien vom Server auf den Client. Wildcards sind erlaubt
mkdir [directory_name] 
Erstellt das Verzeichnis [directory_name] auf dem Server
mput [locale_files] 
Kopiert mehrere Dateien vom Client auf den Server. Wildcards sind erlaubt
open [host] ([port]) 
Baut eine Verbindung zum FTP-Server [host] auf
passive 
Schaltet den Passive Mode ein/aus
prompt 
Schaltet den interaktiven Modus ein/aus
put [locale_file] ([remote_files]) 
Kopiert eine Datei [locale_file] aus dem Arbeitsverzeichnis des Client zum Server und legt sie dort unter dem Namen [remote_files] ab. Ist [remote_files] nicht gegeben, wird der ursprüngliche Dateiname beibehalten
pwd 
Gibt das aktuelle Arbeitsverzeichnis auf dem Server aus
quit 
Äquivalent zu bye
rename [from] [to] 
Benennt die auf dem Server liegende Datei [from] in [to] um
reset 
Rücksetzen und Resynchronisation der Sitzung
rmdir [remote_directory] 
Löscht das Verzeichnis [remote_directory] auf dem Server
runique 
Verbietet das Überschreiben von Dateien auf dem Client-Rechner, indem an den Dateinamen eine Endung in Form von .Zahl angehängt wird
send [locale_file] ([remote_file]) 
Äquivalent zu put
status 
Gibt Statusinformationen aus
sunique 
Wie runique nur für Dateien auf dem Server.
type ([type]) 
Festlegen des Übertragungsmodus (ASCII,IMAGE). Fehlt [type], wird der aktuell verwendete Type ausgegeben
user [username] [password] 
Anmelden mit dem Benutzer [username] und dem Passwort [password]
verbose 
Umstellen des Anzeigemodus. Standardmäßig werden alle Antworten vom Server angezeigt