150 文件状态良好,打开数据连接 200 命令成功 202 命令未实现 211 系统状态或系统帮助响应 212 目录状态 213 文件状态 214 帮助信息,信息仅对人类用户有用 215 名字系统类型 220 对新用户服务准备好 221 服务关闭控制连接,可以退出登录 225 数据连接打开,无传输正在进行 226 关闭数据连接,请求的文件操作成功 227 进入被动模式 230 用户登录 250 请求的文件操作完成 257 创建\331 用户名正确,需要口令 332 登录时需要帐户信息 350 请求的文件操作需要进一步命令 421 不能提供服务,关闭控制连接 425 不能打开数据连接 426 关闭连接,中止传输 450 请求的文件操作未执行 451 中止请求的操作:有本地错误 452 未执行请求的操作:系统存储空间不足 500 格式错误,命令不可识别 501 参数语法错误 502 命令未实现 503 命令顺序错误 504 此参数下的命令功能未实现 530 未登录 532 存储文件需要帐户信息 550 未执行请求的操作 551 请求操作中止:页类型未知 552 请求的文件操作中止,存储分配溢出 553 未执行请求的操作:文件名不合法 5. 说明 5.1. 最小实现
下面是FTP服务器的最小实现: 类型 - ASCII Non-print 模式 - Stream
结构 - File, Record
命令 - USER, QUIT, PORT,TYPE, MODE, STRU,RETR, STOR,NOOP. 传输的默认参数为: 类型 - ASCII Non-print 模式 - Stream 结构 - File
所有主机都将上面的值作为默认值。 5.2. 连接
服务器协议解释器会在端口L侦听,用户或用户协议解释器初始化全双工控制连接,服务器和用户进程应该遵守Telnet协议的说明进行。服务器不提供对命令行的编辑功能,应该由用户负责这一切。在全部传送和应答结束后,在用户的请求下服务器关闭控制连接。用户DTP必须在指定的数据端口上侦听,它可以是默认端口U或由PORT命令指定的端口。服务器的默认数据端口为L-1。传输方向和端口均可由FTP命令决定。只有用户PI可以改变默认端口。当数据在服务器A和B之间传送时,用户PI,C,在两个服务器PI之间建立控制连接。其中一个服务器A,在接收到传输服务命令时接收PASV命令初始化连接,用户PI接收到PASV命令的确认时(确认内包括主机标识和端口),将端口以PORT命令发送到B。在接收到确认后,用户PI可以发送相应的命令给A和B了,B初始连接和传输进程,命令应答序列如下面所示,请根据位置注意时差:
在任何时间,服务器和用户只要有一方关闭连接,另一方就要赶快读取缓冲中的数据,然后也关闭本方的连接。 5.3. 命令
本节主要讨论命令格式。命令对大小写不敏感。命令通常由命令码和相应的参数组成。中间由一个或几个空格分开。参数域由
5.3.1. FTP命令
下面是FTP命令,其中username代表用户名,password代表口令,pathname代表路径名,host-port代表主机端口,account-information代表帐户信息,typecode代表类型代码,decimal-integer代表十进制整数,marker代表标记,string代表字符串:
USER
ACCT
SMNT
PORT
TYPE
APPE
ALLO
[
DELE
LIST [
STAT [
下面是用BNF范式表示的参数格式: