📄 198.htm
字号:
样用户进程才有可能进行下面的命令。如果要求的不是可选实现的命令,而这个命 <br>
令确实没有实现,那就要返回代码502。下面我们根据数字顺序列出各个应答码及 <br>
其意义: <br>
<br>
110 <br>
重新启动标记应答。在这种情况下文本是确定的,它必须是:mark yyyy=mmmm, <br>
其中yyyy是用户进程数据流标记,mmmm是服务器标记。 <br>
<br>
<br>
120 <br>
服务在nnn分钟内准备好 <br>
<br>
125 <br>
数据连接已打开,准备传送 <br>
<br>
150 <br>
文件状态良好,打开数据连接 <br>
<br>
200 <br>
命令成功 <br>
<br>
202 <br>
命令未实现 <br>
<br>
211 <br>
系统状态或系统帮助响应 <br>
<br>
212 <br>
目录状态 <br>
<br>
213 <br>
213 <br>
文件状态 <br>
<br>
214 <br>
帮助信息,信息仅对人类用户有用 <br>
<br>
215 <br>
名字系统类型 <br>
<br>
220 <br>
对新用户服务准备好 <br>
<br>
221 <br>
服务关闭控制连接,可以退出登录 <br>
<br>
225 <br>
数据连接打开,无传输正在进行 <br>
<br>
226 <br>
关闭数据连接,请求的文件操作成功 <br>
<br>
227 <br>
进入被动模式 <br>
进入被动模式 <br>
<br>
230 <br>
用户登录 <br>
<br>
250 <br>
请求的文件操作完成 <br>
<br>
257 <br>
创建"pathname" <br>
<br>
331 <br>
用户名正确,需要口令 <br>
<br>
332 <br>
登录时需要帐户信息 <br>
<br>
350 <br>
请求的文件操作需要进一步命令 <br>
<br>
421 <br>
不能提供服务,关闭控制连接 <br>
<br>
<br>
425 <br>
不能打开数据连接 <br>
<br>
426 <br>
关闭连接,中止传输 <br>
<br>
450 <br>
请求的文件操作未执行 <br>
<br>
451 <br>
中止请求的操作:有本地错误 <br>
<br>
452 <br>
未执行请求的操作:系统存储空间不足 <br>
<br>
500 <br>
格式错误,命令不可识别 <br>
<br>
501 <br>
参数语法错误 <br>
<br>
502 <br>
502 <br>
命令未实现 <br>
<br>
503 <br>
命令顺序错误 <br>
<br>
504 <br>
此参数下的命令功能未实现 <br>
<br>
530 <br>
未登录 <br>
<br>
532 <br>
存储文件需要帐户信息 <br>
<br>
550 <br>
未执行请求的操作 <br>
<br>
551 <br>
请求操作中止:页类型未知 <br>
<br>
552 <br>
请求的文件操作中止,存储分配溢出 <br>
<br>
553 <br>
未执行请求的操作:文件名不合法 <br>
<br>
<br>
5. 说明 <br>
<br>
5.1. 最小实现 <br>
<br>
下面是ftp服务器的最小实现: <br>
<br>
类型 - ascii non-print <br>
<br>
模式 - stream <br>
<br>
结构 - file, record <br>
<br>
命令 - user, quit, port,type, mode, stru,retr, stor,noop. <br>
<br>
传输的默认参数为: <br>
<br>
类型 - ascii non-print <br>
<br>
模式 - stream <br>
<br>
结构 - file <br>
<br>
所有主机都将上面的值作为默认值。 <br>
<br>
5.2. 连接 <br>
<br>
服务器协议解释器会在端口l侦听,用户或用户协议解释器初始化全双工控制连接 <br>
,服务器和用户进程应该遵守telnet协议的说明进行。服务器不提供对命令行的编 <br>
辑功能,应该由用户负责这一切。在全部传送和应答结束后,在用户的请求下服务 <br>
器关闭控制连接。用户dtp必须在指定的数据端口上侦听,它可以是默认端口u或由 <br>
port命令指定的端口。服务器的默认数据端口为l-1。传输方向和端口均可由ftp命 <br>
令决定。只有用户pi可以改变默认端口。当数据在服务器a和b之间传送时,用户 <br>
pi,c,在两个服务器pi之间建立控制连接。其中一个服务器a,在接收到传输服务 <br>
命令时接收pasv命令初始化连接,用户pi接收到pasv命令的确认时(确认内包括主 <br>
机标识和端口),将端口以port命令发送到b。在接收到确认后,用户pi可以发送 <br>
相应的命令给a和b了,b初始连接和传输进程,命令应答序列如下面所示,请根据 <br>
位置注意时差: <br>
<br>
<br>
<br>
<br>
在任何时间,服务器和用户只要有一方关闭连接,另一方就要赶快读取缓冲中的数 <br>
据,然后也关闭本方的连接。 <br>
<br>
5.3. 命令 <br>
<br>
本节主要讨论命令格式。命令对大小写不敏感。命令通常由命令码和相应的参数组 <br>
成。中间由一个或几个空格分开。参数域由<crlf>结束,服务器在未接收到行结束 <br>
符时不会采取任何动作。下面描述的格式是以nvt-ascii以准的,方括号代表可选 <br>
的参数域,如果未选择可选的参数域则采用默认值。 <br>
<br>
5.3.1. ftp命令 <br>
<br>
下面是ftp命令,其中username代表用户名,password代表口令,pathname代表路 <br>
径名,host-port代表主机端口,account-information代表帐户信息,typecode代 <br>
表类型代码,decimal-integer代表十进制整数,marker代表标记,string代表字 <br>
符串: <br>
<br>
user <sp> <username> <crlf> <br>
<br>
pass <sp> <password> <crlf> <br>
<br>
<br>
acct <sp> <account-information> <crlf> <br>
<br>
cwd <sp> <pathname> <crlf> <br>
<br>
cdup <crlf> <br>
<br>
smnt <sp> <pathname> <crlf> <br>
<br>
quit <crlf> <br>
<br>
rein <crlf> <br>
<br>
port <sp> <host-port> <crlf> <br>
<br>
pasv <crlf> <br>
<br>
type <sp> <type-code> <crlf> <br>
<br>
stru <sp> <structure-code> <crlf> <br>
<br>
mode <sp> <mode-code> <crlf> <br>
<br>
<br>
retr <sp> <pathname> <crlf> <br>
<br>
stor <sp> <pathname> <crlf> <br>
<br>
stou <crlf> <br>
<br>
appe <sp> <pathname> <crlf> <br>
<br>
allo <sp> <decimal-integer> <br>
<br>
[<sp> r <sp> <decimal-integer>] <crlf> <br>
<br>
rest <sp> <marker> <crlf> <br>
<br>
rnfr <sp> <pathname> <crlf> <br>
<br>
rnto <sp> <pathname> <crlf> <br>
<br>
abor <crlf> <br>
<br>
dele <sp> <pathname> <crlf> <br>
<br>
<br>
rmd <sp> <pathname> <crlf> <br>
<br>
mkd <sp> <pathname> <crlf> <br>
<br>
pwd <crlf> <br>
<br>
list [<sp> <pathname>] <crlf> <br>
<br>
nlst [<sp> <pathname>] <crlf> <br>
<br>
site <sp> <string> <crlf> <br>
<br>
syst <crlf> <br>
<br>
stat [<sp> <pathname>] <crlf> <br>
<br>
help [<sp> <string>] <crlf> <br>
<br>
noop <crlf> <br>
<br>
5.3.2. ftp命令参数 <br>
<br>
<br>
下面是用bnf范式表示的参数格式: <br>
<br>
<username> ::= <string> <br>
<br>
<password> ::= <string> <br>
<br>
<account-information> ::= <string> <br>
<br>
<string> ::= <char> | <char><string> <br>
<br>
<char> ::= 除<cr>和<lf>外的所有ascii字符 <br>
<br>
<marker> ::= <pr-string> <br>
<br>
<pr-string> ::= <pr-char> | <pr-char><pr-string> <br>
<br>
<pr-char> ::= 可打印ascii字符,从33到126 <br>
<br>
<byte-size> ::= <number> <br>
<br>
<host-port> ::= <host-number>,<port-number> <br>
<br>
<br>
<host-number> ::= <number>,<number>,<number>,<number> <br>
<br>
<port-number> ::= <number>,<number> <br>
<br>
<number> ::= 从1到255的十进制整数 <br>
<br>
<form-code> ::= n | t | c <br>
<br>
<type-code> ::= a [<sp> <form-code>]| e [<sp> <form-code>]| i| l <sp> <br>
<byte-size> <br>
<br>
<structure-code> ::= f | r | p <br>
<br>
<mode-code> ::= s | b | c <br>
<br>
<pathname> ::= <string> <br>
<br>
<decimal-integer> ::= 任何十进制整数 <br>
<br>
5.4. 命令和响应序列 <br>
<br>
服务器和用户之间的通信是对话的过程,用户发送ftp命令,然后等待服务器的一 <br>
个(或多个)响应,根据响应再发送新命令。 <br>
<br>
连接时的响应带有许多信息,通常情况下,服务器会返回220应答,等待输入,用 <br>
户在接收到此响应后才发送新命令,如果服务器不能立即接收输入,会在220后面 <br>
返回120。有些信息如服务器将在15分钟后停止工作是要服务器发向用户的,但是 <br>
服务器却不能直接发向用户,处理的方法是将消息缓冲,在下一个响应中返回给用 <br>
户。下面列出命令的应答,第一个是预备应答,第二个是确定完成,第三个是拒绝 <br>
完成,最后是中间应答。这些应答是构成状态图的基础,状态图会在下节中给出: <br>
<br>
<br>
建立连接 <br>
120 <br>
<br>
220 <br>
<br>
220 <br>
<br>
421 <br>
<br>
登录 <br>
user <br>
230 <br>
230 <br>
<br>
530 <br>
<br>
500, 501, 421 <br>
<br>
331, 332 <br>
<br>
pass <br>
230 <br>
<br>
202 <br>
<br>
530 <br>
<br>
500, 501, 503, 421 <br>
<br>
332 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -