⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 198.htm

📁 unix高级编程原吗
💻 HTM
📖 第 1 页 / 共 4 页
字号:
样用户进程才有可能进行下面的命令。如果要求的不是可选实现的命令,而这个命 <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 + -