File Transfer Protocol (FTP) is a widely accepted standard on almost all platforms that have implemented TCP/IP. It’s used to transfer files between two systems. RFC 959 is the definitive Internet Engineering Task Force (IETF) document that defines the FTP protocol, and it also contains an excellent overview, history, and detailed explanation of the FTP protocol. The objectives of FTP, according to RFC 959, are to:
• Promote sharing of files
• Encourage use of remote computers
• Shield users from variations in file storage systems among hosts
• Transfer data reliably and efficiently.
The data connection is established independent of the control connections between the local and foreign FTP servers. Figure 1 shows the flow of control and data connections in an FTP session.
The “client” in this figure controls the transfer of files between the local and foreign systems. Notice that the data connection is established directly between the servers. Each system must provide a server. A single point of control is used to send commands to each FTP server for transferring files between the two systems. Almost all systems (e.g., Windows, Unix, VM, Linux, z/OS, etc.) come with FTP client software, but not all systems have an FTP server installed or enabled. Also, some FTP clients come with built-in server functionality, but for this discussion, they’re referred to as completely separate processes contained in the client and local FTP server.
File Transfer Concepts
The FTP client uses the telnet protocol to send commands to and receive replies from a local and foreign FTP server. The FTP client opens connections to a local FTP server that usually runs on the same system as the client and a foreign FTP server. Both the local and foreign servers usually require a user ID and password.
FTP clients often provide friendly commands that actually issue multiple commands to each server simultaneously. For instance, when transferring a file, a PUT command could be used that would actually issue a: