FTP stands for File Transfer Protocol and is a network protocol that is designed to allow files to be shared on the Internet. FTP is the most popular protocol for transferring large amounts of data on the Internet. The objective of FTP is fourfold; outlined by Jon Postel in RFC 765.
FTP is based upon a client server model, with client programs initiating a communication session and the server 'listening' for incoming requests. FTP is a protocol that is part of the application layer of the Internet Protocol Suite, and uses transport layer protocols to help it reliable send data between a client program and a server. The File Transfer Protocol (FTP) can use the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP) to complete the transfer of files. However, FTP exclusively uses the TCP transport protocol because UDP is a 'best effort' unreliable delivery protocol, whereas TCP guarantees data delivery with a connection based transport model. TCP and UDP take a data stream from FTP, then package this data into segments which are then encapsulated (enclosed) into an IP packet. TCP and UDP uses port numbers to ensure FTP data is sent to the correct location, port numbers are assigned by IANA, and the port numbers assigned to FTP are:
There are a wide range of FTP client programs, some of which are packaged with operating systems. The features of a FTP client programs are fairly similar: due to them being based upon the functions of the protocol. Client programs can be run in either an active or passive mode: most clients will be run in active mode, but passive mode may be required if a firewall is causing connection issues. Data can be transferred in four modes/types: ASCII (text files), Binary (data files), EBCDIC, and Local. When client programs attempt to access a server, they usually need to provide a username and password, but some servers allow anonymous access. Most modern Web browsers can access files via FTP, the syntax for a FTP URL is similar to a HTTP (web) address:: the prefix is 'ftp://' instead of 'http://'.
The File Transfer Protocol (FTP) was developed in the early 1970's to transfer files on the ARPANET computer network. ARPANET was a forerunner to the Internet, and pioneered packet switching in North America. The first version of FTP was authored by Abhay Bhushan: Bhushan was born in Allahabad, India, and went on to study at the Massachusetts Institute of Technology. It was at MIT, from 1970-1971, that Bhushan wrote the File Transfer Protocol. The version of FTP that Bhushan wrote was designed to work with the Network Control Program (NCP): the original protocol program of ARPANET. TCP/IP was developed from 1973-1980, and in 1983, it replaced the Network Control Program (NCP) on ARPANET. Therefore, the File Transfer Protocol (FTP) had to be updated to be compatible with TCP/IP: which it was from 1980-1985. The last major update of the File Transfer Protocol (FTP) was in 1998: this was due to the release of the Internet Protocol (IP) Version 6. IPv6 created 128bit IP addresses - previously they were 32-bit - and FTP needed to be updated to support the new 128bit addresses.
FTP Client Programs
The File Transfer Protocol is an application layer protocol of the Internet protocol suite (TCP/IP). The protocols of the application layer typically use a client-server model, and typically use the TCP and UDP transport layer protocols to complete communication sessions. Within a client-server model, an end-user will install a client program, and the client program will request data from an Internet server (computer). The client program will use FTP and TCP to complete the request for data. Listed below are some examples of a FTP client program: