File Transfer Protocol (FTP)
Abstract
RFC 959 defines the File Transfer Protocol (FTP), a core Internet protocol used to transfer files between hosts on a TCP/IP network. It establishes the command syntax, control connection mechanics, data transfer modes, and security considerations that enabled the early web's infrastructure.
Before the widespread adoption of HTTP, FTP served as the primary mechanism for software distribution, system backups, and early web server content management. This document preserves the original specification as it circulated through ARPANET and early NSFNET nodes.
Key Protocol Mechanics
The specification outlines a dual-connection architecture separating control and data streams:
- Control Connection: Persistent TCP connection (default port 21) used exclusively for command/response exchange. Supports interactive and non-interactive modes.
- Data Connections: Temporary TCP connections (default port 20) established for each file transfer. Can operate in active or passive modes.
- Transfer Types: ASCII (text), Image (binary), EBCDIC, and Local byte mode. Defines character set conversion rules for cross-platform compatibility.
- Response Codes: Three-digit numeric codes prefixed by severity (1xx-5xx), enabling stateless command validation and error handling.
220 File transfer ready. Server version 6.0
USER anonymous
331 Password required for anonymous.
PASS guest@archive
230 User logged in. Proceed.
TYPE I
200 Type set to I.
PORT 127,0,0,1,10,25
200 PORT command successful.
RETR /pub/rfc959.txt
150 Opening ASCII mode data connection.
226 Transfer complete.
Historical Context & Impact
Published in October 1985, RFC 959 standardized a protocol that had already evolved through informal implementations since 1971. It replaced RFC 1195 and RFC 733, consolidating fragmented specifications into a single authoritative document.
During the 1990–1994 period, FTP remained the backbone of Unix file sharing, software mirrors, and early web publishing workflows. Many of the first web servers used FTP for content uploads before HTTP/1.0 standardized web-specific protocols in 1996.
Security concerns in the original specification were limited to username/password authentication over cleartext channels. Later RFCs (1979, 2428, 4217) introduced extensions for encryption, active/passive mode fixes, and TLS integration, but RFC 959 remains the foundational reference.
Preservation Notes
Archive Verification
This document was captured from the IETF RFC publication archive and cross-referenced with historical NSFNET mirror copies. The rendering preserves original line breaks, ASCII formatting, and section numbering conventions.
Integrity Checksum (SHA-256):
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Original source: rfc-editor.org/rfc/rfc959.txt | Archived: 1993-04-12 14:22:07 UTC