rfc-5797

FTP Command and Extension Registry

J. Klensin, A. Hoenes
date2010-03 streamIETF wgnon working group statusPROPOSED STANDARD pages10 canonicalhttps://www.rfc-editor.org/rfc/rfc5797 doi10.17487/RFC5797 errataview
Every version of the FTP specification has added a few new commands, with the early ones summarized in RFC 959. RFC 2389 established a mechanism for specifying and negotiating FTP extensions. The number of extensions, both those supported by the mechanism and some that are not, continues to increase. An IANA registry of FTP Command and Feature names is established to reduce the likelihood of conflict of names and the consequent ambiguity. This specification establishes that registry. [STANDARDS-TRACK]

updates

Extracted elements (15)

design-rationale §2.2

Placeholder 'pseudo FEAT codes' (listed in lowercase) are introduced for commands predating RFC 2389 and others lacking a formal FEAT keyword. These reserve reasonable feature names for future standardization and are not intended to appear in FEAT responses. Real FEAT keywords are listed in uppercase; IANA enforces uniqueness case-insensitively.

registry

design-rationale §2.2

The FEAT String registration item is optional because in many cases the FEAT string consists solely of the FEAT Code itself, making the field redundant. It should only be specified when the FEAT string contains mandatory elements beyond the FEAT Code (e.g., REST STREAM for REST+, or AUTH TLS for AUTH+).

registry

design-rationale §2.3

The registry's primary purpose is to avoid conflicting uses of the same extension names, not to 'approve' extensions. Registration via Expert Review requires only that the extension be documented in a public specification or actually implemented in generally available FTP clients and servers.

registry

interoperability-note §2.5

Deployed FTP clients still make use of the deprecated XCUP/XCWD/XMKD/XPWD/XRMD commands, and most FTP servers support them as aliases for the standard RFC 959 successors. Implementations should be aware of this widespread practice.

registry

normative-requirement §2.2 MUST

Command names MUST be entered in all uppercase in the registry. For extensions amending a specific command, a plus sign ('+') is appended to the command name. For extensions affecting overall parameter handling not bound to a specific command, '-N/A-' is used.

registry

normative-requirement §2.3 REQUIRED

For a command or extension to be marked mandatory ('m'), an IETF Standards Track specification is required. Beyond initial registrations, Standards Action is needed to register new mandatory entries or move entries to historic.

registry, process

normative-requirement §3 REQUIRED

While a Standards Action would be required to make the FEAT mechanism itself mandatory, implementation of FEAT and OPTS is clearly required in conjunction with any extension or feature that depends on it. FEAT and OPTS are thus listed as mandatory ('m') in the registry.

registry

protocol-element §2.4

Base FTP commands from RFC 959 are assigned the immutable pseudo FEAT code 'base'. Mandatory commands include ABOR, ACCT, ALLO, APPE, CWD, DELE, HELP, LIST, MODE, NLST, NOOP, PASS, PASV, PORT, QUIT, REIN, REST, RETR, RNFR, RNTO, SITE, STAT, STOR, STRU, TYPE, USER. Optional commands include CDUP, MKD, PWD, RMD, SMNT, STOU, SYST.

registry

protocol-element §2.2

Command Type field uses single characters: 'a' for Access control, 'p' for transfer Parameter setting, 's' for Service execution, following RFC 959 Section 4.1. Combinations (e.g., 's/p') are allowed.

registry

protocol-element §2.2

Conformance Requirements field uses: 'm' for mandatory-to-implement, 'o' for optional, and 'h' for historic/obsoleted entries. Historic entries are retained to avoid conflicts with deployed implementations.

registry

protocol-element §2.2

Each registry entry includes: Command Name (all uppercase, '+' suffix for amendments, '-N/A-' for general extensions), FEAT Code (uppercase for real keywords, lowercase for pseudo/placeholder codes), Description, optional FEAT String, Command Type (a/p/s), Conformance Requirements (m/o/h), and Reference.

registry

protocol-element §2.5

Obsolete commands XCUP, XCWD, XMKD, XPWD, XRMD (from RFC 775, deprecated by RFC 1123) and LPRT, LPSV (from RFC 1545/1639, FOOBAR effort) are assigned the immutable pseudo FEAT code 'hist' and marked conformance 'h' (historic). They remain in the registry to avoid conflicts with deployed implementations.

registry

registry §2.1

RFC 5797 establishes the IANA 'FTP Commands and Extensions' registry to reduce likelihood of conflicting extension names and command keywords. The registry records FTP commands, their FEAT codes, descriptions, types, conformance requirements, and references.

registry

registry §3

The initial registry includes five pseudo FEAT codes: 'base' (RFC 959 standard commands), 'hist' (historic experimental commands, RFC 775/1639), 'secu' (FTP Security Extensions, RFC 2228), 'feat' (FTP Feature Negotiation, RFC 2389), and 'nat6' (FTP Extensions for NAT/IPv6, RFC 2428).

registry

security-consideration §6

The creation of this registry provides improved documentation and protection against interoperability problems arising from name conflicts in FTP extensions. The registry introduces no new security issues.

security, registry