FTP回复码由3个数字和对应文本组成
恢复定义为3个数字编码,紧跟一个空格 sp,然后是一行文本,以telnet的换行符表是结束
但是,某些情况下,文本内容太长超过一行,这就需要在第一行和最后一行特殊处理。处理格式如下:
第一行: 3位编码-text文本1
文本2…
其他行开头需要用户进程做行检测判断是否达到最后行
所以其他行开头若也存在3位相同编码的情况,需要人为添加空格解决歧义。
文本3…
最后一行:3位相同编码 (可选择进行添加最后一行文本) telnet行结束符"\r\n"
第一个数字表示响应状态的良好程度:好、坏、不完整。
简单的用户进程将能够通过简单地检查第一个数字来确定其下一步操作(按计划进行、重做、缩减等)
1:1yz Positive Preliminary reply
正在启动请求的操作,在继续执行新命令之前等待另一个答复。 (用户进程在完成回复之前发送另一个命令将违反协议;但是服务器 FTP 进程应该对在前一个命令正在进行时对到达的任何命令进行排队。)这种类型的回复可用于指示命令被接受,用户进程现在可能会注意数据连接,以用于难以同时监视的实现。FTP服务器进程每个命令最多可以发送一个 1yz 回复。
2:2yz Positive Completion reply
请求的操作已成功完成。 可能会发起新的请求。
3:3yz Positive Intermediate reply
命令已被接受,但要求的行动被搁置,等待收到进一步的信息。 用户应发送另一个指定此信息的命令。 此回复用于命令序列组。
4:4yz Transient Negative Completion reply
该命令未被接受且请求的操作未发生,但错误情况是暂时的,可能会再次请求该操作。 如果有的话,用户应该返回到命令序列的开头。 很难为“瞬态”赋予含义,尤其是当两个不同的站点(服务器进程和用户进程)必须就解释达成一致时。
4yz 类别中的每个回复的时间值可能略有不同,但目的是鼓励用户进程重试。 确定回复是否属于 4yz 或 5yz(永久否定)类别的经验法则是,如果可以重复命令而不改变命令形式或用户或服务器的属性(例如, 命令拼写相同,使用的参数相同;用户不更改他的文件访问权限或用户名;服务器不提供新的实现。)
5: 5yz Permanent Negative Completion reply
该命令没有被接受,所要求的行动也没有发生。不鼓励用户进程重复相同的请求(以相同的顺序)。甚至一些“永久的”错误条件也可以被纠正,因此人类用户可能希望在将来的某个时候(例如,在拼写被改变之后,或者用户已经改变了他的目录状态之后)通过直接操作指示他的用户进程重新启动命令序列。
第二个数字进一步表示错误类型
一个用户进程想要大致知道发生了什么类型的错误(例如文件系统错误,命令语法错误)可以检查第二个数字
1:x0z Syntax
这些回复指的是语法错误、语法正确但不适合任何功能类别的命令、未实现或多余的命令。
2:x1z Information
这些是对信息请求的回复,例如状态或帮助。
3:x2z Connections
关于控制和信息连接的回复
4:x3z Authentication and accounting
关于登陆进程和核算程序的回复
4:x4z Unspecified as yet
未被指定
5:x5z File system
这些回复指示服务器文件系统相对于请求的传输或其他文件系统操作的状态。
第三个数字用于更好的信息分类
第三个数字给出了由第二个数字指定的每个功能类别的更精细的含义等级。
状态码 | 定义 | 语义 |
---|---|---|
200 | Command okay | 命令正常 |
500 | Syntax error, command unrecognized | 语法错误,命令无法识别。如命令过长 |
501 | Syntax error in parameters or arguments | 参数或自变量中的语法错误 |
202 | Command not implemented, superfluous at this site | 命令未执行,在此站点是多余的 |
502 | Command not implemented | 命令未执行 |
503 | Bad sequence of commands | 命令顺序错误 |
504 | Command not implemented for that parameter | 此参数下的命令功能未实现 |
110 | Restart marker reply | 重启标记,固定回复格式:MARK cccc = ssss cccc表示客户机进程数据流标记,ssss表示服务器标记 |
211 | System status, or system help reply | 系统状态或系统帮助 |
212 | Directory status | 目录状态 |
213 | File Status | 文件状态 |
214 | Help message | 关于如何使用服务器或特定非标准命令 |
215 | NAME system type | 其中 NAME 是 Assigned Numbers 文档中列表中的官方系统名称 |
120 | Service ready in nnn minutes. | 服务等待就绪时间 |
220 | Service ready for new user | 服务已为新用户准备就绪 |
221 | Service closing control connection | 关闭控制连接 |
421 | Service not available, closing control connection | 服务不可用,正在关闭控制连接 |
125 | Data connection already open; transfer starting | 数据连接已经打开;传输开始 |
225 | Data connection open; no transfer in progress | 数据连接打开;没有传输 |
425 | Can’t open data connection | 无法打开数据连接 |
226 | Closing data connection | 正在关闭数据连接 |
426 | Connection closed; transfer aborted | 连接关闭;传输中止 |
227 | Entering Passive Mode | 进入被动模式 |
230 | User logged in, proceed | 用户登录 |
530 | Not logged in | 未登录 |
331 | User name okay, need password | 用户名正确,需要密码 |
332 | Need account for login | 需要账户登录 |
532 | Need account for storing files | 需要账户来存储文件 |
150 | File status okay; about to open data connection | 文件状态正常;即将打开数据连接 |
250 | Requested file action okay, completed | 请求的文件操作正常,已完成 |
257 | “PATHNAME” created | 创建"路径名" |
350 | Requested file action pending further information. | 请求的文件操作等待更多信息 |
450 | Requested file action not taken.File unavailable | 请求的文件操作未执行。文件忙 |
550 | Requested action not taken.File unavailable | 未执行请求的操作。文件未找到 |
451 | Requested action aborted. Local error in processing | 请求的操作已中止。正处理局部错误 |
551 | Requested action aborted. Page type unknown | 请求的操作已中止。 页面类型未知 |
452 | Requested action not taken.Insufficient storage space in system | 未执行请求的操作。系统存储空间不足 |
552 | Requested file action aborted.Exceeded storage allocation (for current directory or dataset) | 请求的文件操作中止。超出存储 |
553 | Requested action not taken. File name not allowed | 未采取请求的操作。 不允许的文件名 |