Fact-checked by Grok 2 weeks ago

File eXchange Protocol

The File eXchange Protocol (FXP) is a that extends the (FTP) to facilitate direct file transfers between two remote FTP servers, bypassing the client machine so that data does not route through the user's local connection. Developed as a practical application of standard FTP commands, FXP allows a client to orchestrate the transfer by establishing control connections to both servers while enabling the servers to communicate data directly with each other. In operation, an FXP client logs into both the source and destination FTP servers, navigates to the appropriate directories, and issues FTP commands such as PASV (passive mode) on one server to open a data port and on the other to specify the connection details, resulting in a peer-to-peer data channel between the servers. This approach leverages the core FTP specification outlined in 959, which defines the necessary control and data connection mechanisms, though FXP itself is not a formally separate but rather a server-to-server utilization of FTP features. Transfer speeds are typically limited only by the between the two servers, making it efficient for large files when high-speed links are available. Despite its efficiency, FXP adoption is limited due to significant vulnerabilities, including susceptibility to FTP bounce attacks where malicious clients can exploit the PORT command to scan ports or perform unauthorized transfers on behalf of the servers. Most modern FTP servers disable FXP by default to mitigate these risks, and it is incompatible with secure variants like (FTP over TLS), further restricting its use in contemporary environments. Clients supporting FXP, such as certain FTP software tools, often provide no real-time visibility into transfer progress or speed, showing only success or failure outcomes. As a result, FXP remains a niche primarily suited for controlled, internal scenarios rather than or internet-facing applications.

Overview

Definition and Purpose

The File eXchange Protocol (FXP) is an unofficial extension to the File Transfer Protocol (FTP), as standardized in RFC 959, that enables direct file transfers between two remote FTP servers without routing the data through an intermediate client computer. This mechanism leverages existing FTP commands, such as PORT and PASV, to establish a data connection directly between the servers, allowing one server to send files to another as if it were a client. Unlike standard FTP operations, which require the client to act as an intermediary for downloads and uploads, FXP streamlines the process by eliminating this bottleneck. The primary purpose of FXP is to support efficient large-scale file movements in scenarios such as system backups, website mirroring, or data synchronization across distributed networks. By facilitating server-to-server connections, it addresses the limitations of traditional FTP, where client-side bandwidth and processing constraints can slow down transfers of substantial data volumes. This direct approach reduces transfer times and optimizes resource utilization, making it ideal for administrative tasks in enterprise environments where high-volume data exchange is routine. Key benefits of FXP include significantly increased transfer speeds for large files, as server interconnections often provide higher bandwidth than client links, and the conservation of client-side resources by offloading the data handling to the servers themselves. It also enables seamless inter-server operations in multi-site setups, promoting in distributed systems without requiring local or . For example, FXP allows the transfer of gigabytes of data between remote data centers directly, bypassing the need to download files to a local machine first, which would otherwise double the usage and extend completion times.

History and Development

The concept of server-to-server file transfers, later termed File eXchange Protocol (FXP), originated in the early development of the (FTP), with initial specifications for inter-server data movement appearing in RFC 542 published in 1973. This allowed a user to establish connections to two remote servers and command them to exchange files directly using existing FTP commands like PASV and , without routing data through the client. Although not formalized as a distinct protocol, this capability addressed limitations in standard client-server FTP by enabling efficient transfers between remote hosts, particularly useful in early network environments with constrained bandwidth. FXP emerged as an ad-hoc feature in graphical FTP clients during the mid-, coinciding with the growth of personal and . One of the earliest documented implementations was in LLNL XFTP, a Motif-based graphical FTP client for systems released around 1995, which explicitly supported FXP for transfers between remote hosts. By the late , FXP gained popularity through Windows-based clients; for instance, WS_FTP, first released in 1991, incorporated server-to-server transfer capabilities in its versions from the mid-1990s onward, allowing users to bypass local downloads for large files. FlashFXP, launched in July 1998 as version 1.0, further popularized FXP by making it a core feature, with early builds emphasizing multi-server connections for web hosting and tasks. Key milestones in FXP's development included its integration into additional clients like SmartFTP, with comprehensive documentation appearing in , which highlighted its utility for direct server transfers amid rising broadband adoption that facilitated larger file movements. Discussions in FTP-related forums and server configurations during this period noted FXP's informal status, with no dedicated ever standardizing it beyond FTP's existing mechanisms, though it was referenced in community resources as an extension for practical use. By the early , FXP saw widespread adoption in hosting environments for efficient site migrations and backups. FXP's mainstream use declined in the due to inherent vulnerabilities in plain FTP, such as the potential for attacks where malicious clients exploit FXP to scan ports or transfer unauthorized data between servers. Many FTP server implementations, including , disable FXP by default to mitigate these risks, accelerating the shift toward secure alternatives like and , which offer encrypted transfers without FXP's exposure. As of 2025, FXP persists in niche enterprise FTP setups where legacy systems require direct server interactions, but its role has diminished significantly in favor of more secure protocols.

Technical Implementation

Core Mechanism

The core mechanism of the File eXchange Protocol (FXP) enables direct file transfers between two FTP servers by leveraging the existing FTP control and data channel architecture, allowing the servers to establish a peer-to-peer connection without routing data through the client. This process begins with the client establishing separate control connections to both the source server (from which the file is retrieved) and the destination server (to which the file is stored), authenticating via standard FTP login commands on each. Once authenticated, the client coordinates the setup of a direct data channel between the servers, ensuring that the transfer utilizes the full bandwidth available between them rather than being limited by the client's connection. To initiate the data channel, the client issues a PASV command to the source , prompting it to enter passive mode and open a listening for incoming ; the source responds with its and the specific number (e.g., in the format "227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)"). The client then relays this information to the destination by issuing a command, which specifies the source 's IP and , instructing the destination to initiate an active to that when the transfer begins. This negotiation ensures compatibility, as the source listens passively while the destination actively connects. The client then issues a STOR command to the destination to store the incoming under the desired name, prompting the destination to connect to the source 's listening and establish the channel. Simultaneously or immediately following, the client issues a RETR command to the source to retrieve the specified , upon which the source streams the over this connection to the destination , which writes it to the target location. The client maintains oversight via the control channels but does not participate in the flow, enabling efficient, high-speed transfers independent of the client's resources. The specific sequence of steps in an FXP transfer is:
  1. The client authenticates to both the source and destination servers using FTP credentials over separate control connections.
  2. The client issues the PASV command on the source server and captures the returned and details.
  3. The client issues the command on the destination server, providing the source server's and from the PASV response.
  4. The client issues the STOR command on the destination server for the target file path, initiating the connection.
  5. The client issues the RETR command on the source server for the file to be transferred.
For error handling, the client monitors the control channel responses from both servers; successful completion is indicated by a 226 "Transfer complete" message from each, while failures (e.g., connection timeouts or permission denials) trigger error codes that the client can detect and report, allowing for retries or abortion of the process as needed.

FTP Command Interactions

In File eXchange Protocol (FXP), the client establishes control connections to both the source and destination FTP servers, acting as a proxy to relay commands and facilitate direct data transfer between the servers without routing the file contents through itself. This setup relies on standard FTP commands defined in RFC 959 to coordinate the data channel. Specifically, the PASV command is issued to the source server to enter passive mode, prompting it to listen on a data port and return a 227 response containing its IP address and port (e.g., "227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)"). The client then relays this address and port to the destination server using the PORT command in active mode, instructing it to connect to the source server's data port when the transfer is initiated. The client then issues the STOR command to the destination server to store the incoming as a new file, prompting the destination to establish the to the source, followed by the RETR command to the source server to retrieve the file. These commands ensure the servers handle the transfer directly: STOR allows the destination to receive and write the , and RETR prompts the source to send file contents over the data channel without client intervention. The process adheres to RFC 959 syntax, with RETR using "RETR " and STOR using "STOR ", both typically followed by a 150 response indicating the data is opening, and concluding with a 226 response upon successful completion. For modern implementations supporting , FXP incorporates extended commands from RFC 2428 to handle formats beyond IPv4 limitations. The EPSV command replaces PASV on the source server, eliciting a 229 response with the (e.g., "229 Entering Extended Passive Mode (|||port|)"), while the EPRT command substitutes for PORT on the destination, specifying the network , , and (e.g., "EPRT |2|IPv6-address|port|"). These extensions enable FXP over IPv6 networks by accommodating longer addresses and protocol delimiters, maintaining compatibility with and environments through passive mode preferences. Command sequencing is critical to prevent data channel mismatches; the client must first obtain the passive details from the source via PASV or EPSV, relay them accurately via or EPRT to the destination, issue STOR to the destination followed by RETR to the source to synchronize the transfer start. Variations for and often favor extended passive mode (EPSV), as it reuses the control connection's and avoids explicit IP exposure, reducing traversal issues compared to active modes. Additionally, the ABOR command can ongoing server-direct transfers by aborting the active service command on both servers, typically yielding a 426 response to close the data connection and a subsequent 226 confirmation. Compatibility varies across FTP servers, as not all permit relayed PORT or PASV commands due to configuration restrictions designed to mitigate risks like FTP bounce attacks; for instance, servers like disable FXP by default and require explicit enabling via directives such as AllowForeignAddress.

Security Considerations

Vulnerabilities and Risks

The File eXchange Protocol (FXP) introduces significant security risks primarily through its reliance on direct server-to-server communications, which can be exploited via FTP bounce attacks. In these attacks, an attacker authenticates to one FTP server and uses the command to instruct it to establish a data connection to an arbitrary and on a third-party system, effectively relaying commands or scanning ports without direct access from the attacker's . This , inherent to FXP's for facilitating transfers between servers, allows bypassing of firewalls and access controls, as the victim server appears to initiate the connection. FXP exacerbates this by enabling unauthorized inter-server interactions if configurations permit third-party transfers, potentially exposing sensitive data or network resources. Historical demonstrations of FTP bounce attacks, closely tied to FXP-like behaviors, were highlighted in 1997, where attackers tricked FTP servers into connecting to unintended targets, leading to port scanning or command relaying. The issued Advisory CA-1997-27, detailing how the command in active mode could be abused for such exploits, prompting IETF recommendations in RFC 2577 to restrict third-party connections in FTP implementations. Early FTP daemons, such as those vulnerable under CVE-1999-0017, suffered from insufficient validation of PORT arguments, allowing attackers to specify external hosts and ports, which directly undermined FXP's intended use for legitimate file exchanges. In misconfigured setups, attackers could exploit FXP to relay malicious commands between servers, facilitating by directing transfers to attacker-controlled endpoints. To address these vulnerabilities, major FTP servers like and have disabled FXP support by default since the early 2000s, requiring explicit configuration changes—such as enabling pasv_promiscuous in or site-to-site directives in —to activate it, often with warnings against doing so due to persistent risks. These gaps are particularly pronounced in anonymous FTP environments, where lack of amplifies the potential for abuse, as any user can initiate bounce attacks without credentials. Even in 2025, legacy systems running unpatched FTP servers remain susceptible, enabling denial-of-service () through resource exhaustion from unwanted direct connections or unintended data transfers. The impact includes not only network but also potential overload of server resources during forced inter-server sessions.

Secure Extensions

To address the inherent vulnerabilities in the base File eXchange Protocol (FXP), secure extensions have been developed to incorporate and enhanced , primarily through wrappers like FTPS-FXP, which applies SSL/TLS to both and data channels. In this approach, the client establishes secure connections to both source and destination FTP servers using explicit or implicit SSL/TLS modes, ensuring that commands and file transfers are encrypted end-to-end. The process begins with the client issuing the AUTH TLS command on each channel to negotiate TLS, followed by commands like PASV or only after successful , preventing exposure of unencrypted data during server-to-server handoffs. Implementation of FTPS-FXP requires the client to manage dual TLS negotiations, acting as a TLS client to both servers while coordinating secure data channels via extensions such as SSCN (Set Secure Client Negotiation), which toggles the servers' roles between TLS client and server for the data connection. Certificate validation is critical, with the client verifying server certificates on both ends to mitigate man-in-the-middle attacks, especially on direct server links where trust boundaries are extended. This setup maintains compatibility with standard FTP commands but enforces for data transfers, ensuring and without altering the core FXP flow. Other extensions include adaptations for to emulate FXP-like server-to-server transfers, though these are not native to FXP as operates over SSH and typically requires a client rather than direct support. Additional measures, such as IP restrictions limiting FXP initiation to whitelisted client addresses and one-time for temporary server , further bolster by controlling during transfers. These were introduced in early clients like FlashFXP and SmartFTP, which provide support for secure FXP configurations, and as of 2025, such setups are recommended for compliance in environments handling sensitive data per NIST SP 800-53 guidelines on transmission protection. Compared to the base protocol, these secure extensions prevent on large file transfers by encrypting payloads and commands, while also reducing the feasibility of attacks through obscured port negotiations over protected channels.

Applications and Support

Client Implementations

Client implementations of the File eXchange Protocol (FXP) primarily consist of (GUI) tools for Windows, with limited command-line options for other platforms. These clients facilitate server-to-server file transfers by establishing dual FTP connections and issuing commands like PASV or to enable data exchange without routing through the local machine. Among notable clients, SmartFTP has provided full FXP support since its 2002 release, including resume capabilities for interrupted transfers and multi-threaded options to handle multiple simultaneous connections for improved efficiency. FlashFXP, released in 1999 and one of the earliest clients to emphasize FXP, pioneered user-friendly site-to-site transfers with features like queue management and error recovery tailored for high-volume operations. Development of FlashFXP ceased after version 5.4 in 2016 following the of its developer in connection with illegal file-sharing operations; as of November 2025, no further updates have been issued. FTP Rush, a modern Windows-focused client, incorporates FXP scripting for automated workflows, allowing users to define transfer rules and integrate with batch processes. Unique to FXP implementations, these clients often include site managers for configuring dual-server setups, where users specify source and destination credentials in a centralized interface. Progress monitoring occurs via the control channel, displaying real-time status without direct data involvement, and many integrate with schedulers for timed or recurring transfers, such as nightly backups between remote sites. For example, in FlashFXP, users configure source and destination servers in the site manager, enable FXP mode in transfer settings, and initiate transfers through drag-and-drop in the dual-pane view or by adding items to a command queue for sequential execution. Cross-platform support remains limited, with most tools Windows-centric; however, the command-line client on provides FXP emulation through its mirror and copy commands, falling back to client-mediated transfers if direct server negotiation fails. Overall adoption is declining in favor of cloud-based alternatives such as managed services that offer built-in security and scalability.

Server Compatibility

The File eXchange Protocol (FXP) requires specific configurations on FTP servers to permit direct server-to-server data transfers, typically involving adjustments to handle foreign address commands like or PASV from remote servers. supports FXP through the explicit configuration of the AllowForeignAddress directive set to on in the global or virtual host context, allowing the server to accept data connection addresses from external sources. Pure-FTPd enables FXP via the AllowUserFXP yes option in its configuration files, such as those in /etc/pure-ftpd/conf/, though it is disabled by default in modern versions for security reasons and was more readily enabled in older releases without additional toggles. , by contrast, disables FXP by default to mitigate risks like unauthorized connections, and lacks a standard configuration flag such as --allow-fxp for enabling it, often resulting in incomplete or unreliable support even when attempted through custom setups. Enabling FXP generally necessitates proper handling of active and passive modes, including whitelisting ranges for commands to restrict transfers to trusted networks and configuring external addresses for to ensure accurate data channel establishment. IIS FTP has supported FXP since earlier versions like IIS 5.0 on , but documentation advises against enabling it due to potential security vulnerabilities such as bounce attacks, with no dedicated toggle in later iterations like IIS 8.5 on 2012. As of 2025, open-source servers like Server provide granular controls for FXP compatibility, accessible via the security settings tab where restrictions on foreign addresses can be relaxed, though anti-FXP options are recommended to limit exposure. Limitations on FXP compatibility are common, particularly in public or managed environments; for instance, AWS Transfer Family, which provides FTP gateways to S3 buckets, does not support FXP and implicitly blocks such transfers to prevent abuse and maintain service isolation. compatibility for FXP varies across servers, with some implementations like offering full support when configured, while others encounter issues in establishing direct connections over due to address handling differences. Best practices for FXP deployment emphasize use in controlled environments, such as behind VPNs to limit exposure, combined with vigilant monitoring of server logs for unauthorized direct connection attempts to detect potential exploits.

References

  1. [1]
    What Is FXP? - SmartFTP
    Apr 8, 2002 · FXP stands for File eXchange Protocol. It lets you copy files from one FTP-server to another using an FXP-client.
  2. [2]
    How to use FXP for server-to-server transfers - EnterpriseDT
    The File Exchange Protocol (FXP) is a method of using the FTP protocol to transfer files from one remote FTP server to another - without routing the data via ...
  3. [3]
    What is File Exchange Protocol? - Webopedia
    May 24, 2021 · File eXchange Protocol (FXP) allows you to copy files from one FTP server to another FTP server (two remote hosts) using an FXP client.<|control11|><|separator|>
  4. [4]
    RFC 959 - File Transfer Protocol - IETF Datatracker
    The primary function of FTP defined as transfering files efficiently and reliably among hosts and allowing the convenient use of remote file storage ...
  5. [5]
    FTP - FXP
    File eXchange Protocol (FXP) allows data to be transferred from one FTP server to another (also known as inter-server transfers) without routing the data ...
  6. [6]
    Use FXP with FTP Rush - Wing FTP Server
    FXP is File Exchange Protocol, it allows you transfer files from one FTP server to another FTP server directly. With an FXP client you do not need to download ...
  7. [7]
    RFC 542: File Transfer Protocol
    ### Summary of Inter-Server File Transfer (FXP) in RFC 542
  8. [8]
    [PDF] FTP mini-HOWTO - The Linux Documentation Project
    5.3 LLNL XDIR and XFTP. LLNL XFTP was one of the first graphical FTP clients for Linux. It supports FXP (file transfer between two remote hosts), and has a ...
  9. [9]
    What client supports FTP from one server to another? - Super User
    Oct 28, 2009 · I usually use WS_FTP (Windows) to transfer files from one server to another (without having to first transfer them to my machine) but I don't have it here.
  10. [10]
    FlashFXP v1.x version history - Windows FTP Client
    Added command to CHMOD files/folders from the FTP File Search. Improved Windows XP compatibility. FlashFXP v1.3 Build 761. Fixed an issue that prevented some ...
  11. [11]
    FXP (Site-to-Site Transfers) - ProFTPD
    FXP, or site-to-site FTP, transfers files between remote servers without using the client's host, using passive and active transfers. By default, ProFTPD does ...Missing: history origins
  12. [12]
    FXP Server To Server · robinrodricks/FluentFTP Wiki - GitHub
    Jun 14, 2023 · FXP is useful to reduce the overheads of data transfer by allowing you to transfer data directly from one server to another, bypassing the usual download/ ...Missing: eXchange | Show results with:eXchange
  13. [13]
    RFC 2428: FTP Extensions for IPv6 and NATs
    ### Summary of EPSV and EPRT Commands from RFC 2428
  14. [14]
    FXP Transfers
    ### Summary of FXP Transfer Steps
  15. [15]
    RFC 2577 - FTP Security Considerations - IETF Datatracker
    This document provides suggestions for system administrators and those implementing FTP servers that will decrease the security problems associated with FTP.
  16. [16]
    Manpage of VSFTPD.CONF
    Only enable if you know what you are doing! The only legitimate use for this is in some form of secure tunnelling scheme, or perhaps to facilitate FXP support.
  17. [17]
    FTP Service Screen | TrueNAS Documentation Hub
    Apr 25, 2025 · Select to enable the File eXchange Protocol (FXP). We do not recommend FXP since it leaves the server vulnerable to FTP bounce attacks. Allow ...
  18. [18]
    None
    ### Summary of RFC 4217 Sections on Server-to-Server Transfers, FXP, AUTH TLS, PASV/PORT, Secure Data Channels for FXP
  19. [19]
    RaidenFTPD knowledge base no.00000037
    A : To enable ftp server to server file transfers over SSL/TLS connections , a new extension command is introduced , which is called SSCN (set secured ...
  20. [20]
    Class: Net::FTPFXPTLS – Documentation for ftpfxp ... - RubyDoc.info
    Must issue this command on both control connections before CPSV or SSCN when preparing secure FXP. Both servers will attempt to initiate SSL/TLS handshake ...
  21. [21]
    Question about FXP SSL - FlashFXP Forums
    Jun 16, 2012 · ioFTPD 5.x can only SSL in a server role, therefor there is no way for two 5.x servers to FXP over SSL. Since you have a v6 ...secure fxp problem - FlashFXP ForumsCPSV vs SSCN - FlashFXP ForumsMore results from www.flashfxp.com
  22. [22]
    [PDF] NIST.SP.800-53r5.pdf
    Sep 5, 2020 · NIST is responsible for developing information security standards and guidelines, including minimum requirements for federal information systems ...Missing: FTPS FXP
  23. [23]
    Secure FTP server - SSL/TLS security - Mail Server
    The ietf draft of FTP over SSL does not provide the possibility for secured server to server file transfer, as known as: FXP over SSL. RaidenFTPD team ...
  24. [24]
    FlashFXP Features - not just a FTP Client, it's a SFTP Client too ...
    FlashFXP Features. FlashFXP is the easiest to use FTP, FTPS, SFTP, FXP and most user-friendly to master client on the market.Missing: pioneering GUI
  25. [25]
    the manual page - LFTP
    ... FXP transfer (directly between two FTP servers). lftp would fallback to plain copy (via client) if FXP transfer cannot be initiated or ftp:use-fxp is false.
  26. [26]
    FXP (File eXchange Protocol) :: Support Forum - WinSCP
    Feb 14, 2006 · Today I read about a protocol called FXP (File eXchange Protocol). Then I thought it is interesting if WinSCP can support it. It seems very practical.
  27. [27]
    Which Protocols Are Used for File Sharing? A 2025 Guide to FTP ...
    May 13, 2025 · This blog explores the most widely used file sharing protocols, how they work, their pros and cons, and where each fits best.Missing: FXP declining alternatives
  28. [28]
    Enable FXP pure-ftp ispconfig3-debian | Howtoforge
    Jan 24, 2012 · I have been searching for a solution to enable fxp for pure-ftpd on a ispconfig3 debian server. I tried to add AllowFXPUser=yes to /etc/default/ ...Pure Ftpd Passive Ports setup | Howtoforgepure-ftpd user login - how does it work? | HowtoforgeMore results from forum.howtoforge.comMissing: configuration | Show results with:configuration
  29. [29]
    vsftpd | swizzin community edition
    After altering the configuration file, restart vsftpd to make the changes take effect. Enable FXP Support​. FXP support is not enabled by default. To enable ...
  30. [30]
    Setting up servers for FXP
    FXP ... To configure ProFTPD 1.2.0rc3 to allow FXP. To support FXP when connecting as a user place "AllowForeignAddress on" in the Global or VirtualHost context.
  31. [31]
    How does one enable FXP in Windows Server 2012 R2 IIS 8.5's FTP?
    Mar 15, 2014 · As I have mentioned I read the 7.5 documentation but I can't find any options within IIS 8.5. PASV port range is enabled and the FTP does work.Missing: support | Show results with:support
  32. [32]
    Copying a file using FXP - FileZilla Forums
    In FileZilla Server, look at the Security tab in the settings. You need to relax these to enable the server FXP/server-to-server support. But, beware ...
  33. [33]
    Secure File Transfer - AWS Transfer Family - Amazon AWS
    AWS Transfer Family enables fully managed support for SFTP, FTPS and FTP to move large amounts of data into AWS.AWS Transfer Family features · Pricing · FAQs · Managed File TransferMissing: FXP | Show results with:FXP
  34. [34]
    FXP wont work on IPv6 - Wing FTP Software
    Nov 25, 2022 · Hello, i try to figure out why my stuff is not working, i tested some ftp clients and only flashfxp worked that supports fxp over ipv6.