4.1 FTP命令 (FTP Commands)
4.1.1 访问控制命令 (ACCESS CONTROL COMMANDS)
以下命令指定访问控制标识符 (命令代码显示在括号中)。
USER NAME (USER) - 用户名
参数字段是标识用户的Telnet字符串。用户标识是服务器访问其文件系统所需的标识。此命令通常是建立控制连接后用户传输的第一个命令 (某些服务器可能需要此命令)。某些服务器可能还需要密码和/或帐户命令形式的附加标识信息。服务器可能允许在任何时候输入新的USER命令, 以更改访问控制和/或记帐信息。这具有刷新已提供的任何用户、密码和帐户信息并重新开始登录序列的效果。所有传输参数保持不变, 并且正在进行的任何文件传输在旧的访问控制参数下完成。
PASSWORD (PASS) - 密码
参数字段是指定用户密码的Telnet字符串。此命令必须紧接在用户名命令之后, 对于某些站点, 完成用户的访问控制标识。由于密码信息非常敏感, 通常希望"屏蔽"它或抑制输出。服务器似乎没有万无一失的方法来实现这一点。因此, user-FTP进程有责任隐藏敏感的密码信息。
ACCOUNT (ACCT) - 帐户
参数字段是标识用户帐户的Telnet字符串。该命令不一定与USER命令相关, 因为某些站点可能需要帐户进行登录, 而其他站点仅需要特定访问 (例如存储文件)。在后一种情况下, 命令可能在任何时候到达。
有回复代码来区分自动化的这些情况: 当登录需要帐户信息时, 对成功的PASSword命令的响应是回复代码332。另一方面, 如果登录不需要帐户信息, 对成功的PASSword命令的回复是230; 如果稍后在对话中发出的命令需要帐户信息, 服务器应返回332或532回复, 具体取决于它是存储 (等待接收ACCounT命令) 还是丢弃命令。
CHANGE WORKING DIRECTORY (CWD) - 更改工作目录
此命令允许用户使用不同的目录或数据集进行文件存储或检索, 而不改变其登录或记帐信息。传输参数同样保持不变。参数是指定目录或其他系统相关文件组指示符的路径名。
CHANGE TO PARENT DIRECTORY (CDUP) - 更改到父目录
此命令是CWD的特例, 包括它是为了简化在具有不同命名父目录语法的操作系统之间传输目录树的程序实现。回复代码应与CWD的回复代码相同。有关更多详细信息, 请参见附录II。
STRUCTURE MOUNT (SMNT) - 结构挂载
此命令允许用户挂载不同的文件系统数据结构, 而不改变其登录或记帐信息。传输参数同样保持不变。参数是指定目录或其他系统相关文件组指示符的路径名。
REINITIALIZE (REIN) - 重新初始化
此命令终止USER, 刷新所有I/O和帐户信息, 但允许正在进行的任何传输完成。所有参数重置为默认设置, 控制连接保持打开状态。这与用户在打开控制连接后立即发现自己所处的状态相同。可能会跟随USER命令。
LOGOUT (QUIT) - 注销
此命令终止USER, 如果文件传输未在进行中, 服务器关闭控制连接。如果文件传输正在进行中, 连接将保持打开以进行结果响应, 然后服务器将关闭它。如果user-process正在为多个USER传输文件, 但不希望为每个USER关闭然后重新打开连接, 则应使用REIN命令而不是QUIT。
控制连接上的意外关闭将导致服务器采取中止 (ABOR) 和注销 (QUIT) 的有效操作。
4.1.2 传输参数命令 (TRANSFER PARAMETER COMMANDS)
所有数据传输参数都有默认值, 仅当要更改默认参数值时才需要指定数据传输参数的命令。默认值是最后指定的值, 或者如果未指定值, 则标准默认值如此处所述。这意味着服务器必须"记住"适用的默认值。命令可以是任何顺序, 但它们必须在FTP服务请求之前。以下命令指定数据传输参数:
DATA PORT (PORT) - 数据端口
参数是用于数据连接的数据端口的HOST-PORT规范。用户和服务器数据端口都有默认值, 在正常情况下不需要此命令及其回复。如果使用此命令, 参数是32位互联网主机地址和16位TCP端口地址的连接。此地址信息被分解为8位字段, 每个字段的值作为十进制数 (以字符串表示) 传输。字段用逗号分隔。端口命令将是:
PORT h1,h2,h3,h4,p1,p2
其中h1是互联网主机地址的高位8位。
PASSIVE (PASV) - 被动
此命令请求server-DTP在数据端口 (不是其默认数据端口) 上"侦听", 并等待连接而不是在接收到传输命令时发起连接。对此命令的响应包括此服务器正在侦听的主机和端口地址。
REPRESENTATION TYPE (TYPE) - 表示类型
参数指定数据表示和存储部分中描述的表示类型。几种类型采用第二个参数。第一个参数由单个Telnet字符表示, 第二个Format参数对于ASCII和EBCDIC也是如此; 本地字节的第二个参数是指示Bytesize的十进制整数。参数由<SP> (空格, ASCII代码32) 分隔。
为类型分配了以下代码:
\ /
A - ASCII | | N - Non-print (非打印)
|-><-| T - Telnet format effectors (Telnet格式效果符)
E - EBCDIC | | C - Carriage Control (ASA) (回车控制)
/ \
I - Image (图像)
L <byte size> - Local byte Byte size (本地字节 字节大小)
默认表示类型是ASCII Non-print。如果更改Format参数, 然后仅更改第一个参数, Format则返回到Non-print默认值。
FILE STRUCTURE (STRU) - 文件结构
参数是单个Telnet字符代码, 指定数据表示和存储部分中描述的文件结构。
为结构分配了以下代码:
F - File (文件, 无记录结构)
R - Record structure (记录结构)
P - Page structure (页结构)
默认结构是File。
TRANSFER MODE (MODE) - 传输模式
参数是单个Telnet字符代码, 指定传输模式部分中描述的数据传输模式。
为传输模式分配了以下代码:
S - Stream (流)
B - Block (块)
C - Compressed (压缩)
默认传输模式是Stream。
4.1.3 FTP服务命令 (FTP SERVICE COMMANDS)
FTP服务命令定义用户请求的文件传输或文件系统功能。FTP服务命令的参数通常是路径名。路径名的语法必须符合服务器站点约定 (适用标准默认值) 和控制连接的语言约定。建议的默认处理是使用最后指定的设备、目录或文件名, 或为本地用户定义的标准默认值。命令可以是任何顺序, 除了"rename from"命令必须后跟"rename to"命令, 重启命令必须后跟中断的服务命令 (例如STOR或RETR)。响应FTP服务命令传输的数据应始终通过数据连接发送, 除了某些信息性回复。以下命令指定FTP服务请求:
RETRIEVE (RETR) - 检索
此命令导致server-DTP将路径名中指定的文件的副本传输到数据连接另一端的server-或user-DTP。服务器站点上的文件的状态和内容不受影响。
STORE (STOR) - 存储
此命令导致server-DTP接受通过数据连接传输的数据, 并将数据作为文件存储在服务器站点上。如果路径名中指定的文件存在于服务器站点上, 则其内容将被正在传输的数据替换。如果路径名中指定的文件尚不存在, 则在服务器站点上创建新文件。
STORE UNIQUE (STOU) - 唯一存储
此命令的行为类似于STOR, 只是生成的文件将在当前目录下以该目录唯一的名称创建。250 Transfer Started响应必须包含生成的名称。
APPEND (with create) (APPE) - 追加(带创建)
此命令导致server-DTP接受通过数据连接传输的数据, 并将数据存储在服务器站点上的文件中。如果路径名中指定的文件存在于服务器站点上, 则数据应追加到该文件; 否则, 应在服务器站点上创建路径名中指定的文件。
ALLOCATE (ALLO) - 分配
某些服务器可能需要此命令来保留足够的存储空间以容纳要传输的新文件。参数应是表示要为文件保留的存储字节数 (使用逻辑字节大小) 的十进制整数。对于以记录或页结构发送的文件, 最大记录或页大小 (以逻辑字节为单位) 也可能是必需的; 这由命令的第二个参数字段中的十进制整数指示。第二个参数是可选的, 但存在时应由三个Telnet字符<SP> R <SP>与第一个参数分隔。此命令后应跟STORe或APPEnd命令。对于不需要预先声明文件最大大小的那些服务器, ALLO命令应被视为NOOP (无操作), 并且那些仅对最大记录或页大小感兴趣的服务器应接受第一个参数中的虚拟值并忽略它。
RESTART (REST) - 重启
参数字段表示要重新启动文件传输的服务器标记。此命令不会导致文件传输, 而是跳过文件到指定的数据检查点。此命令后应立即跟随适当的FTP服务命令, 该命令将导致文件传输恢复。
RENAME FROM (RNFR) - 重命名自
此命令指定要重命名的文件的旧路径名。此命令后必须立即跟随指定新文件路径名的"rename to"命令。
RENAME TO (RNTO) - 重命名为
此命令指定在紧接在前面的"rename from"命令中指定的文件的新路径名。这两个命令一起导致文件被重命名。
ABORT (ABOR) - 中止
此命令告诉服务器中止先前的FTP服务命令和任何相关的数据传输。中止命令可能需要"特殊操作", 如FTP命令部分中所讨论的, 以强制服务器识别。如果前一个命令已完成 (包括数据传输), 则不采取任何操作。服务器不应关闭控制连接, 但必须关闭数据连接。
服务器在收到此命令时有两种情况: (1) FTP服务命令已经完成, 或 (2) FTP服务命令仍在进行中。
- 在第一种情况下, 服务器关闭数据连接 (如果它是打开的) 并以226回复响应, 指示中止命令已成功处理。
- 在第二种情况下, 服务器中止正在进行的FTP服务并关闭数据连接, 返回426回复以指示服务请求异常终止。然后服务器发送226回复, 指示中止命令已成功处理。
DELETE (DELE) - 删除
此命令导致在服务器站点上删除路径名中指定的文件。如果需要额外的保护级别 (例如查询"您确实要删除吗?"), 则应由user-FTP进程提供。
REMOVE DIRECTORY (RMD) - 删除目录
此命令导致删除路径名中指定的目录 (如果路径名是绝对的) 或作为当前工作目录的子目录 (如果路径名是相对的)。请参见附录II。
MAKE DIRECTORY (MKD) - 创建目录
此命令导致创建路径名中指定的目录 (如果路径名是绝对的) 或作为当前工作目录的子目录 (如果路径名是相对的)。请参见附录II。
PRINT WORKING DIRECTORY (PWD) - 打印工作目录
此命令导致在回复中返回当前工作目录的名称。请参见附录II。
LIST (LIST) - 列表
此命令导致从服务器向被动DTP发送列表。如果路径名指定目录或其他文件组, 服务器应传输指定目录中的文件列表。如果路径名指定文件, 则服务器应发送有关该文件的当前信息。空参数意味着用户的当前工作或默认目录。数据传输通过类型ASCII或类型EBCDIC的数据连接进行。(用户必须确保TYPE适当地是ASCII或EBCDIC。) 由于文件信息可能因系统而异, 因此此信息可能难以在程序中自动使用, 但对人类用户可能非常有用。
NAME LIST (NLST) - 名称列表
此命令导致从服务器站点向用户站点发送目录列表。路径名应指定目录或其他特定于系统的文件组描述符; 空参数意味着当前目录。服务器将返回文件名流, 不返回其他信息。数据将以ASCII或EBCDIC类型通过数据连接作为由<CRLF>或<NL>分隔的有效路径名字符串传输。(再次, 用户必须确保TYPE是正确的。) 此命令旨在返回可由程序用于进一步自动处理文件的信息。例如, 在实现"多重获取"功能时。
SITE PARAMETERS (SITE) - 站点参数
服务器使用此命令提供特定于其系统的服务, 这些服务对于文件传输是必需的, 但不够普遍以至于无法作为命令包含在协议中。这些服务的性质及其语法的规范可以在对HELP SITE命令的回复中说明。
SYSTEM (SYST) - 系统
此命令用于查找服务器上的操作系统类型。回复的第一个词应是分配号码文档 [4] 当前版本中列出的系统名称之一。
STATUS (STAT) - 状态
此命令应导致以回复形式通过控制连接发送状态响应。该命令可以在文件传输期间发送 (连同Telnet IP和Synch信号--参见FTP命令部分), 在这种情况下, 服务器将以正在进行的操作的状态响应, 或者可以在文件传输之间发送。在后一种情况下, 命令可以有参数字段。如果参数是路径名, 则该命令类似于"list"命令, 只是数据应通过控制连接传输。如果给出部分路径名, 服务器可以以与该规范相关联的文件名或属性列表响应。如果没有给出参数, 服务器应返回有关服务器FTP进程的一般状态信息。这应包括所有传输参数的当前值和连接的状态。
HELP (HELP) - 帮助
此命令应导致服务器通过控制连接向用户发送有关其实现状态的有用信息。该命令可以接受参数 (例如, 任何命令名称) 并作为响应返回更具体的信息。回复是类型211或214。建议在输入USER命令之前允许HELP。服务器可以使用此回复指定站点相关参数, 例如, 响应HELP SITE。
NOOP (NOOP) - 无操作
此命令不影响任何参数或先前输入的命令。它仅指定服务器发送OK回复的操作。