D. J. Bernstein
Internet publication
FTP: File Transfer Protocol

The SYST, STAT, HELP, and NOOP verbs

The SYST verb

A SYST request asks for information about the server's operating system. The server accepts this request with code 215. Examples from five different servers:
     215 UNIX Type: L8
     215 UNIX Type: L8 Version: BSD-44
     215 NetWare system type.
     215 MACOS Peter's Server
     215 AmigaOS
RFC 959 requires that the first word of the response text be a system type registered with IANA, but some servers violate this requirement.

Many clients misuse SYST as a declaration of server features. Some clients behave in rather strange ways when they see particular strings in the SYST response. Some clients disable essential features when they do not see particular strings in the SYST response; this poses a serious problem for servers. I recommend that all new servers respond to SYST with the meaningless string

     215 UNIX Type: L8
exactly as used by the majority of current servers.

The STAT verb

A STAT request asks for human-readable information about the server's status. The server normally accepts this request with code 211:
     211- ftp.heaven.af.mil FTP server status:
          Version 6.00
          Connected to heaven.af.mil (10.1.2.3)
          Logged in anonymously
          TYPE: ASCII, FORM: Nonprint; STRUcture: File; transfer MODE: Stream
          No data connection
     211 End of status
The response format varies widely from server to server. RFC 959 says that the server should ``return general status information about the server FTP process. This should include current values of all transfer parameters and the status of connections.'' RFC 959 does not explain why this information is supposed to be useful.

A STAT request may include a parameter. In this case it asks for information about a file identified by the parameter, similar to the information provided by LIST. The server normally accepts this request with code 211, 212, or 213, returning information in its response. According to RFC 959, information about a regular file uses code 212, and information about a directory uses code 213; in practice, however, most servers use code 211 in all cases, and some servers use code 213 in all cases. If the file cannot be accessed, the server rejects the request with code 450.

Some servers (e.g., MultiNET FTP Server 4.1-91) ignore STAT parameters. Some servers reject STAT parameters with code 504. Even when servers try to support STAT, the output is even more difficult to parse than the output of LIST.

The HELP verb

A HELP request asks for human-readable information from the server. The server may accept this request with code 211 or 214, or reject it with code 502.

A HELP request may include a parameter. The meaning of the parameter is defined by the server. Some servers interpret the parameter as an FTP verb, and respond by briefly explaining the syntax of the verb:

     HELP RETR
     214 Syntax: RETR <sp> file-name
     HELP FOO
     502 Unknown command FOO.

I use HELP (without a parameter) in automated surveys of FTP servers. The HELP response is a good place for server implementors to declare the operating system type and the name of the server program.

The NOOP verb

A NOOP request does nothing other than elicit a response from the server. NOOP parameters are prohibited. A typical server accepts NOOP (required code 200).