5.4 命令和回复的序列 (Sequencing of Commands and Replies)
用户和服务器之间的通信旨在成为交替对话。因此, 用户发出FTP命令, 服务器以提示主回复响应。用户应等待此初始主成功或失败响应, 然后再发送进一步的命令。
某些命令需要第二次回复, 用户也应等待。这些回复可能例如报告文件传输的进度或完成或数据连接的关闭。它们是对文件传输命令的次要回复。
一组重要的信息性回复是连接问候。在正常情况下, 当连接完成时, 服务器将发送220回复"等待输入"。用户应在发送任何命令之前等待此问候消息。如果服务器无法立即接受输入, 应立即发送120"预期延迟"回复, 并在准备好时发送220回复。然后用户将知道如果有延迟就不要挂断。
自发回复 (Spontaneous Replies)
有时"系统"自发地有一条消息要发送给用户 (通常是所有用户)。例如, "系统将在15分钟内关闭"。FTP中没有规定将此类自发信息从服务器发送到用户。建议将此类信息在server-PI中排队, 并在下一个回复中传递给user-PI (可能使其成为多行回复)。
下表列出了每个命令的替代成功和失败回复。这些必须严格遵守; 服务器可以替换回复中的文本, 但代码编号隐含的含义和操作以及特定的命令回复序列不能更改。
命令-回复序列 (Command-Reply Sequences)
在本节中, 介绍命令-回复序列。每个命令都列出了其可能的回复; 命令组一起列出。预备回复首先列出 (其后续回复缩进并在其下), 然后是肯定和否定完成, 最后是中间回复, 序列中的其余命令紧随其后。此列表构成状态图的基础, 状态图将单独呈现。
连接建立 (Connection Establishment)
120
220
220
421
登录 (Login)
USER
230
530
500, 501, 421
331, 332
PASS
230
202
530
500, 501, 503, 421
332
ACCT
230
202
530
500, 501, 503, 421
CWD
250
500, 501, 502, 421, 530, 550
CDUP
200
500, 501, 502, 421, 530, 550
SMNT
202, 250
500, 501, 502, 421, 530, 550
注销 (Logout)
REIN
120
220
220
421
500, 502
QUIT
221
500
传输参数 (Transfer parameters)
PORT
200
500, 501, 421, 530
PASV
227
500, 501, 502, 421, 530
MODE
200
500, 501, 504, 421, 530
TYPE
200
500, 501, 504, 421, 530
STRU
200
500, 501, 504, 421, 530
文件操作命令 (File action commands)
ALLO
200
202
500, 501, 504, 421, 530
REST
500, 501, 502, 421, 530
350
STOR
125, 150
(110)
226, 250
425, 426, 451, 551, 552
532, 450, 452, 553
500, 501, 421, 530
STOU
125, 150
(110)
226, 250
425, 426, 451, 551, 552
532, 450, 452, 553
500, 501, 421, 530
RETR
125, 150
(110)
226, 250
425, 426, 451
450, 550
500, 501, 421, 530
LIST
125, 150
226, 250
425, 426, 451
450
500, 501, 502, 421, 530
NLST
125, 150
226, 250
425, 426, 451
450
500, 501, 502, 421, 530
APPE
125, 150
(110)
226, 250
425, 426, 451, 551, 552
532, 450, 550, 452, 553
500, 501, 502, 421, 530
RNFR
450, 550
500, 501, 502, 421, 530
350
RNTO
250
532, 553
500, 501, 502, 503, 421, 530
DELE
250
450, 550
500, 501, 502, 421, 530
RMD
250
500, 501, 502, 421, 530, 550
MKD
257
500, 501, 502, 421, 530, 550
PWD
257
500, 501, 502, 421, 550
ABOR
225, 226
500, 501, 502, 421
信息性命令 (Informational commands)
SYST
215
500, 501, 502, 421
STAT
211, 212, 213
450
500, 501, 502, 421, 530
HELP
211, 214
500, 501, 502, 421
其他命令 (Miscellaneous commands)
SITE
200
202
500, 501, 530
NOOP
200
500 421