File transfer protocol (FTP) is an Internet-standard application for transferring files. FTP was first developed in 1971 as part of the U.S. Department of Defense's ARPANET protocols and thus predates both TCP and Internet Protocol (IP) . It is currently documented for use with TCP in RFC 959.
The objectives of FTP are to promote file-sharing between different file systems, to promote use of remote computers across the Internet, and to allow effective file transfer. Although the World Wide Web became the major application for transferring files in 1995, FTP can still be used with most web browsers, and many organizations still maintain an FTP repository for public and/or restricted access. The convention for public FTP access is popularly referred to as anonymous FTP because the username is "anonymous."
FTP transmits copies of files between two computers. It allows users to upload and download file copies between local and remote computers. FTP is an elastic application that is sensitive but adjustable to traffic fluctuations over the Internet. User expectation of file transfer delay is not only proportional to file size but also sensitive to changes caused by Internet traffic load.
FTP is an interactive, connection-oriented client/server protocol that relies on TCP for transferring files. After a user invokes an FTP application, he or she receives a prompt that signals the application is ready for user commands. A username and password are requested by the remote FTP server in order to determine ownership and limit file system access. After successful authentication , the local FTP client accepts user requests.
After receiving each request from the client, the remote FTP server responds by interacting with its local file system to execute each request as if it had been locally generated. Throughout each session, the remote FTP server maintains state information on each control connection and restricts file system access according to defined security permissions. Normally a single client can support multiple users and an FTP server can respond to multiple clients concurrently, but keeping track of each session can significantly constrain the total number of simultaneous sessions.
Different FTP packages have different commands available, and even those with similar names may operate differently. To access an FTP site, users must know three pieces of information: the remote computer domain name, the file system path location of desired file(s) (folders/directories and/or subfolders/subdirectories), and the name of the file(s) to be transmitted. The general command for initiating an FTP session to a specific remote computer is FTP remote_computer_domain_name_or_IP_address. If FTP is already executing, OPEN remote_computer_domain_name_or_IP_address can be used. This opens an FTP control connection dedicated to sending commands and receiving responses for the entire session.
A separate data transfer connection is needed for each file transfer. Two parallel connections are necessary: a first connection for control information, and a second connection for the actual data transfer. Although one control connection exists for an entire session, many data connections come and go. The local FTP client does not pass user keystrokes directly to the remote FTP server but instead interprets user input. Only if a user command requires interaction with the remote FTP server does the local FTP client send an FTP request to the remote FTP server. Because FTP uses a separate control connection, it is said to send its control information out-of-band , which provides extra functionality. For example, a client can abort a transfer while FTP is executing.
After a file transfer connection begins, files are transferred over the data connection without the overhead of any headers or control information at the application layer. When an end-of-file condition indicates a file transfer has finished, the control connection is used to signal completion and to accept new FTP commands. Because the server does not tell the client how much data to expect in advance, the file can grow during transfer. An FTP session between a local/remote pair of computers is closed with a BYE (CLOSE) command, and the FTP application is terminated with a QUIT command.
The two most common FTP commands are GET (or RETRieve) and PUT (or STORe). The GET command downloads, or copies, a file from a remote computer to a local computer. The FTP server locates the file that the user requested and uses TCP to send a copy of the file across the Internet to the client. As the client program receives data, it writes the data into a file on the user's local disk. The PUT command uploads a file from a local computer to a remote computer in a reversal of the GET command. Other FTP commands address the additional complexity introduced by file systems. For instance, data representation can be text (ASCII characters) or binary (nontext). FTP assumes that data transfers are text transfers unless the TYPE command is used to change the transfer mode to binary. FTP has the following commands for file system navigation: cd (move down a directory), cdup (move up a directory), dir (show contents of present directory), ls (show contents of present directory), and pwd (present working directory).
FTP accommodates diversity—it can be used to transfer a copy of a file between any arbitrary pair of computers. It hides the details of individual computer systems from users by providing a common set of services similar to those found on most operating systems, such as list directory, create new files, read an existing file, and delete files.
see also Distance Learning; Electronic Campus; Telecommunications.
William J. Yurcik
Comer, Douglas E. The Internet Book: Everything You Need to Know About Computer Networking and How the Internet Works, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 2000.
Postel, Jon, and Joyce Reynolds. "File Transfer Protocol (FTP)." IETF, RFC 959 (superceding RFC 765). <http://www.ietf.org/rfc/rfc959.txt>
• Computing file-transfer protocol