File eXchange Protocol

File eXchange Protocol（FXP、FXSP）は、FTPプロトコルを使ってデータ転送を行う手段であり、クライアントのコネクションを経由しなくとも転送元のサーバから別のサーバにデータを転送できる。FTPは単一のサーバと単一のクライアントの間のプロトコルである。全てのデータ転送はその両者の間で直接行われる。FXPでは2つのサーバとFTPコネクションを確立し、さらにその2つのサーバ間でのデータ転送が可能である。ネットワーク管理者が作業しているクライアントがサーバ群とは離れていて低バンド幅であるとき、高バンド幅のサーバから別の高バンド幅のサーバにリソースを転送するような作業に便利である。
危険性.
FXPを利用可能にすると、サーバはFTPバウンス攻撃と呼ばれるエクスプロイトに対して脆弱になることが知られている。そのため、FTPサーバソフトウェアはデフォールトではFXPを使用不可にしていることが多い。
FXP over SSL.
glFTPd、RaidenFTPd、wzdftpd といったFTPサーバは、FTPプロトコル拡張コマンド CPSV または SSCN を使い、セキュアなデータチャネルをサーバ間に構築できる。これは通常クライアントがPASVコマンドの代わりにCPSVコマンドを発行するか、PASVの前にSSCNを送ることでなされ、それによってサーバはSSLまたはTLSコネクションを作成する。しかし2つのFTPサーバは互いのSSL証明書を検証しないので、CPSVでもSSCNでも中間者攻撃に弱い。SSCNは2003年に RaidenFTPd と SmartFTP で採用されたのが最初で、その後他にも広く採用されている。
詳細.
FXPはそれ自体が「プロトコル」に分類されることもあるが、実際には RFC 959 にある通りFTPの単なる拡張である。
 User-PI - Server A (Dest) User-PI - Server B (Source)
 
 C->A : Connect C->B : Connect
 C->A : PASV
 A->C : 227 Entering Passive Mode. A1,A2,A3,A4,a1,a2
 C->B : PORT A1,A2,A3,A4,a1,a2
 B->C : 200 Okay
 C->A : STOR C->B : RETR
 B->A : Connect to HOST-A, PORT-a
参考文献.
この「プロトコル」は RFC 0959 のサブセットとしてIETFにより標準化されている。