Overview of RFC 959

File Transfer Protocol (FTP) is a specification for how files can be transferred over the Internet. FTP is a client-server protocol in which FTP client software on one system communicates with FTP server software on another. The communication between the FTP client and server is an exchange of commands and replies that are transmitted over a control connection between the two systems; this control connection follows the Telnet model.

Files are transferred between the client and server over a second connection, a full duplex connection known as the data connection. This connection is between the client's data transfer process and the server's data transfer process (or between two servers' data transfer processes).

Both the client and the server have a protocol interpreter. The protocol interpreters receive commands or replies, send commands or replies, and govern the data connection. The server's protocol interpreter listens for a connection from a client's protocol interpreter.

In an active transfer, the FTP server's data transfer process initiates, or establishes, the data connection to the FTP client, setting up the parameters for data transfer and storage.

In a passive transfer, the FTP server's data transfer process is placed in a passive state to listen for, rather than initiate, a connection to the data port. In this case, the FTP client initiates the data connection.