File Exchange Protocol (FXP)

File Exchange Protocol (FXP) ist ein Feature zur Dateiübertragung zwischen zwei FTP-Servern. Die Dateien müssen dabei nicht zu dem Client gesendet werden, der die Übertragung steuert, wodurch Bandbreite gespart wird. Viele aktuelle FTP-Clients unterstützen FXP.

FXP ist kein im File Transfer Protocol (FTP) definiertes Feature, sondern eine Ausnutzung von gleichzeitigem Active und Passive Mode. Beim Active Mode öffnet der Client einen zufälligen Port und teilt dem Server diesen sowie die eigene IP-Adresse mittels des PORT-Kommandos mit. Der Server verbindet dann zu diesem Ziel, worauf der Datentransfer stattfinden kann. Beim Passive Mode wird dieses Prinzip umgedreht, der Client sendet ein PASV-Kommando, der Server öffnet einen Port und übermittelt diesen mitsamt IP-Adresse an den Client.

Beim FXP sendet der Client an einen FTP-Server ein PASV-Kommando und erhält zur Antwort dessen IP-Adresse und geöffneten Port. Nun sendet er an einen FTP-Server ein PORT-Kommando, welches als Argument nicht die eigene IP-Adresse und Port enthält, sondern die Antwort des ersten FTP-Servers. Der zweite FTP-Server baut eine Datenverbindung zum ersten FTP-Server auf. Der Client kann nun an den zweiten FTP-Server ein RECV-Kommando und an den ersten ein STOR-Kommando übermitteln, um eine Dateiübertragung zu starten.

Wenn einer der beiden FTP-Server Probleme mit dieser Konstellation hat, also zum Beispiel der Ziel-Server keinen Passive Mode unterstützt, kann auch auf dem Quellen-Rechner das PASV-Kommando ausgeführt werden. Man spricht dann hierbei vom Alternative Mode.