Entity Tracking
- RFC 959: The official specification established in October 1985 that defines the File Transfer Protocol (FTP) for reliable data exchange between hosts.
- Protocol Interpreter (PI): The functional component of FTP that manages the control connection, exchanging commands and replies.
- Data Transfer Process (DTP): The mechanism responsible for establishing and managing the data connection to transfer files.
- Control Connection: A communication path following the Telnet Protocol used specifically for command exchange between the user and server.
- Data Connection: A full-duplex path over which actual file data is transferred in a specified mode and type.
- NVT-ASCII: The standard 8-bit character representation used to ensure text files are interpreted correctly across different computer systems.
- User-FTP Process: A set of functions including a PI, DTP, and user interface that initiates file transfers in cooperation with server processes.
- Passive Mode (PASV): A command that requests the server to listen on a data port rather than initiating the connection itself.
RFC 959 is the official network specification for the File Transfer Protocol (FTP). It provides a standardized way to move computer programs and data between different systems reliably and efficiently.
Marketers and SEO practitioners use these standards daily, often behind the scenes, whenever they upload website assets, manage backups, or move large data crawls between servers. [RFC 959 was published in October 1985] (IETF), effectively replacing the older [RFC 765 specification] (IETF).
What is RFC 959?
RFC 959 defines how files move across the Internet without the user needing to worry about how different computers store data. Each system might have unique file naming conventions or storage structures, but this protocol shields the user from those variations.
While humans can use FTP directly via a terminal, the protocol is designed primarily for programs to use. In the context of the web, this allows SEO tools and CMS platforms to automate file management across diverse server environments, from personal workstations to large mainframes.
Why RFC 959 matters
The protocol provides a specific framework for data integrity and system interoperability. Its importance is defined by four main objectives:
- Promotes file sharing: It encourages the exchange of programs and data between remote systems.
- Shields system variations: Users do not need to understand the internal storage logic of the host computer.
- Ensures reliable transfer: The protocol is built to transfer data efficiently even when moving between dissimilar hosts.
- Enables automation: Because it uses a [standardized set of three-digit reply codes] (Hugh Brown), programs can automatically handle successful transfers or errors without human intervention.
How RFC 959 works
The protocol splits communication into two distinct paths: the Control Connection and the Data Connection. This separation allows you to send commands while data is moving.
- Protocol Interpreter (PI): This "brain" handles the control connection. The user-PI initiates the connection and sends commands like
USERorRETR. The server-PI listens on [Port 21] (IETF) and sends back replies. - Data Transfer Process (DTP): This "worker" handles the actual file movement. It establishes the connection and manages the bits.
- The Dialogue: The user and server engage in an alternating conversation. The user sends a command, and the server responds with a reply code.
- Data Representation: Before sending, the system converts data into a standard type, most commonly [ASCII Non-print] (IETF), which is the default for all implementations.
Best practices
Use Passive Mode (PASV) for connectivity. If your server is behind a firewall, the PASV command tells the server to "listen" for a connection rather than trying to initiate one to your computer.
Rely on the minimum implementation. For a server to be workable, it must at least support [ASCII Non-print, Stream Mode, and File Structure] (IETF). When troubleshooting SEO tool connections, ensure these defaults are active.
Mask password inputs. RFC 959 notes that the server has no "foolproof" way to hide passwords. It is the responsibility of your User-FTP process (the client software) to hide sensitive information.
Wait for secondary replies. Some commands require more than one response. For example, a transfer command might get a "preliminary" reply (1xx) when it starts and a "completion" reply (2xx) when it finishes. Do not send new commands until the final reply arrives.
Common mistakes
Mistake: Assuming the data connection is always open. Fix: The data connection does not need to exist at all times. It is often created for a specific transfer and closed immediately afterward.
Mistake: Ignoring the first digit of reply codes. Fix: Use the first digit to quickly diagnose issues. [A 4yz code indicates a transient error] (IETF) where you should try again, while a 5yz code means the error is permanent and you must change your command.
Mistake: Assuming built-in security. Fix: Use an alternative if security is a priority. RFC 959 [does not provide any security for the exchange] (ARC-IT).
Examples
Example scenario: Moving a crawl file.
A user at Host U wants to retrieve a crawl report test.pl1 from Host S.
* User-PI sends: RETR test.pl1
* Server-PI replies: 150 File status okay; about to open data connection.
* Data connection opens, the file transfers, and the connection closes.
* Server-PI replies: 226 Closing data connection, file transfer successful.
Example scenario: Changing directories.
An SEO needs to move into a subdirectory named assets.
* User sends: CWD assets
* Server replies: 250 Requested file action okay, completed.
FAQ
What port does RFC 959 use?
The control connection is assigned to Port 21. For the data connection, the server default is typically Port 20 (L-1), though this can be changed using the PORT or PASV commands.
What is the difference between ASCII and Image types? ASCII is the default and is used for text files. Image type (also called Binary) sends data as contiguous bits and is used for programs, images, or compressed files.
How does the protocol handle errors? While TCP handles lost bits, RFC 959 provides a [restart procedure for Block and Compressed modes] (IETF). It uses special markers in the data stream so a transfer can resume from a checkpoint after a system failure.
Can I transfer files between two remote servers? Yes. A user can set up control connections with two different servers and arrange for a data connection directly between them. The user-PI acts as the controller while data moves from Server A to Server B.
What are reply codes? These are three-digit numbers sent by the server. The first digit identifies success or failure: 1 (Preliminary), 2 (Completion), 3 (Intermediate), 4 (Transient Negative), and 5 (Permanent Negative).