FTP (File Transfer Protocol)

FTP, the File Transfer Protocol, is among the very oldest application protocols still in use on the internet. Its lineage reaches back to the early ARPANET: RFC 114, “A File Transfer Protocol,” was written by Abhay Bhushan and published on April 16, 1971. That early specification set out to let users move files between dissimilar machines, defining transaction types such as retrieve, store, delete, rename, and execute, and supporting multiple data representations from network ASCII to binary. Bhushan designed it for the heterogeneous hosts of the day, explicitly citing implementations between Multics on a GE 645 and ITS on a PDP-10 at MIT, and he emphasized extensibility so that new transaction types and security mechanisms could be added later.

The protocol that practitioners know today was consolidated in RFC 959, “File Transfer Protocol (FTP),” written by Jon Postel and Joyce Reynolds at the USC Information Sciences Institute and published in October 1985. RFC 959 states FTP’s objectives clearly: to promote the sharing of files, to encourage indirect use of remote computers via programs, to shield a user from variations in file storage systems among different hosts, and to transfer data reliably and efficiently. The same document notes that although terminal users can drive FTP directly, it was “designed mainly for use by programs.”

A distinctive feature of FTP is its use of two separate connections. A control connection carries commands and replies in a Telnet-like text dialogue, while a separate data connection is opened to transfer the actual file contents or directory listings. This split between control and data channels was unusual and gave FTP flexibility, but it also became a long-running source of complexity, particularly the distinction between active and passive data connections, which interacts awkwardly with firewalls and network address translation.

FTP reuses conventions from the Telnet protocol for its control channel, sending commands as ASCII text lines and receiving three-digit reply codes, a pattern that also shows up in SMTP. The command set includes verbs such as USER and PASS for authentication, RETR to retrieve a file, STOR to store one, and LIST to enumerate a directory. Because the protocol is text-driven, it could be implemented and tested across the many different operating systems of the early internet.

For decades FTP was the default way to distribute software, documents, and datasets across the network, underpinning the anonymous-FTP archives that predated the Web. Its plaintext authentication eventually became a security liability, and secured alternatives layered over TLS or built on SSH supplanted it for sensitive transfers. Even so, the protocol Postel and Reynolds documented in 1985 remained in widespread use long after, a testament to how thoroughly the early internet community settled the basic problem of moving a file from one machine to another.