Jump to content

File eXchange Protocol

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Thumperward (talk | contribs) at 10:19, 4 March 2010 (Added {{refimprove}} tag to article using Friendly). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

File eXchange Protocol (FXP) and (FXSP) is a method of data transfer which uses the FTP protocol to transfer data from one remote server to another (inter-server) without routing this data through the client's connection. Conventional FTP involves a single server and a single client; all data transmission is done between these two. In the FXP session, a client maintains a standard FTP connection to two servers, and can direct either server to connect to the other to initiate a data transfer. The advantage of using FXP over FTP is evident when a high-bandwidth server demands resources from another high-bandwidth server, but only a low-bandwidth client, such as a network administrator working away from location, has the authority to access the resources on both servers.

Risk

Enabling FXP support, however, can make a server vulnerable to an exploit known as FTP bounce. As a result of this, FTP server software often has FXP disabled by default.

FXP over SSL

Some FTP Servers such as glFTPd, RaidenFTPd, and wzdftpd support negotiation of a secure data channel between two servers using either of the FTP protocol extension commands; CPSV or SSCN. This normally works by the client issuing CPSV in lieu of the PASV command - or by sending SSCN prior to PASV transfers -, which instructs the server to create either a SSL or TLS connection. However, both methods - CPSV and SSCN - are susceptible to Man-in-the-Middle attacks, since the two FTP servers do not verify each other's SSL certificates. SSCN was first introduced by RaidenFTPd and SmartFTP in 2003 and has been widely adopted now.

Technical

Although FXP may be classed as its own "protocol", it is in fact merely an extension of FTP and is specified in RFC 959:

        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

References

This "protocol" is standardized as a subset of RFC 0959 by the IETF as:

  • RFC 959 File Transfer Protocol (FTP). J. Postel, J. Reynolds. Oct-1985. This obsoleted the preceding RFC 765 and earlier FTP RFCs back to the original RFC 114.

See also