20xx年度精品--ftp协议完全详解内容摘要:

, B初始连接和传输进程,命令应答序列如下面所示,请根据位置注意时差: 在任何时间,服务器和用户只要有一方关闭连接,另一方就要赶快读取缓冲中的数据,然后也关闭本方的连接。 . 命令 本节主要讨论命令格式。 命令对大小写不敏感。 命令通常由命令码和相应的参数组成。 中间由一个或几个空格分开。 参数域由 CRLF结束,服务器在未接收到行结束符时不会采取任何动作。 下面描述的格式是以 NVTASCII 以准的,方括号代表可选的参数域,如果未选择可选的参数域则采用默认值。 . FTP 命令 下面是 FTP 命令,其 中 username 代表用户名, password 代表口令, pathname代表路径名, hostport 代表主机端口, accountinformation 代表帐户信息,typecode 代表类型代码, decimalinteger 代表十进制整数, marker 代表标记,string 代表字符串: USER SP username CRLF PASS SP password CRLF ACCT SP accountinformation CRLF CWD SP pathname CRLF CDUP CRLF SMNT SP pathname CRLF QUIT CRLF REIN CRLF PORT SP hostport CRLF PASV CRLF TYPE SP typecode CRLF STRU SP structurecode CRLF MODE SP modecode CRLF RETR SP pathname CRLF STOR SP pathname CRLF STOU CRLF APPE SP pathname CRLF ALLO SP decimalinteger [SP R SP decimalinteger] CRLF REST SP marker CRLF RNFR SP pathname CRLF RNTO SP pathname CRLF ABOR CRLF DELE SP pathname CRLF RMD SP pathname CRLF MKD SP pathname CRLF PWD CRLF LIST [SP pathname] CRLF NLST [SP pathname] CRLF SITE SP string CRLF SYST CRLF STAT [SP pathname] CRLF HELP [SP string] CRLF NOOP CRLF . FTP 命令参数 下面是用 BNF 范式表示的参数格式: username ::= string password ::= string accountinformation ::= string string ::= char | charstring char ::= 除 CR和 LF外的所有 ASCII 字符 marker ::= prstring prstring ::= prchar | prcharprstring prchar ::= 可打印 ASCII 字符,从 33 到 126 bytesize ::= number hostport ::= hostnumber,portnumber hostnumber ::= number,number,number,number portnumber ::= number,number number ::= 从 1 到 255 的十进制整数 formcode ::= N | T | C typecode ::= A [sp formcode]| E [sp formcode]| I| L sp bytesize structurecode ::= F | R | P modecode ::= S | B | C pathname ::= string decimalinteger ::= 任何十进制整数 . 命令和响应序列 服务器和用户之间的通信是对话的过程,用户发送 FTP 命令,然后等待服务器的一个(或多个)响应,根据响应再发送新命令。 连接时的响应带有许多信息,通常情况下,服务器会返回 220 应答,等待输 入,用户在接收到此响应后才发送新命令,如果服务器不能立即接收输入,会在 220后面返回 120。 有些信息如服务器将在 15 分钟后停止工作是要服务器发向用户的,但是服务器却不能直接发向用户,处理的方法是将消息缓冲,在下一个响应中返回给用户。 下面列出命令的应答,第一个是预备应答,第二个是确定完成,第三个是拒绝完成,最后是中间应答。 这些应答是构成状态图的基础,状态图会在下节中给出: 建立连接 120 220 220 421 登录 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 退出登录 REIN 120 220 220 421 500, 502 QUIT 221 500 传输参数 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 文件操作命令 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 获得信息命令 SYST 215 500, 501, 502, 421 STAT 211, 212, 213 450 500, 501, 502, 421, 530 HELP 211, 214 500, 501, 502, 421 其它命令 SITE 200 202 500, 501, 530 NOOP 200 500 421 6. 状态图 下面是一个简单实现的 FTP 的状态图,只用到响应码的首位。 对于所有命令或命令序列有三种可能性:成功( S),失败( F)或错误( E)。 在状态图中 B代表开始, W 代表等待响应。 下面我们给出一个总图,总图可以包括的命令有: ABOR, ALLO, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV,QUIT,SITE, PORT, SYST, STAT, RMD, MKD, PWD, STRU 和 TYPE 而下图可以包括的命令有: APPE, LIST, NLST, REIN, RETR, STOR 和 STOU。 第一幅图和第二幅图差别不大,第一幅图中如果出现了 100 系列响应会是错误,而在第二幅图中不会。 下面是重命名过程: 下面是重新启动命令,其中 cmd 代表 APPE,STOR 或 RETR。 下图代表登录过程: 7. 典型 FTP 过程 假设位于 U 的用户希望从 S 上(下)传文件,通常用户需要使用用户 FTP 进程和服务器通信,下面就是一个例子: 用户发出的本地命令 解释 ftp (host) multicsCR 连接到 S 的端口 L,建立控制连接 220 Service ready CRLF. 用户名 Doe CR need passwordCRLF. USER DoeCRLF 331 用户名正确 口令 CR PASS 口令 CRLF 230 User logged inCRLF. retrieve (local type) ASCIICR (local pathname) test 1 CR (for. pathname) CR UserFTP opens local file in ASCII. RETR CRLF 150 文件状态正常,将打开数据连接CRLF 服务器于端口 U建立数据连接 文件传输中 226 关闭数据连接,文件传输正确CRLF type ImageCR TYPE ICRLF 200 Command OKCRLF store (local type) imageCR (local pathname) file dumpCR () uddfdCR UserFTP opens local file in Image. STOR uddfdCRLF 550 访问拒绝 CRLF 中止 QUIT CRLF 服务器关闭所有连接 FTP 控制连接通过用户进程端口 U和服务器端口 L 建立,这里默认的 L=21。 所有域均以 1 个逻辑字节长度为大小,逻辑字节长度由 TYPE 命令指定。 如果读取版本与和开始版本号一致,文件访问时必须以相同的参数进行。 如果参数相同, FTP 实现要保证取得的文件内容是相同的。 . 建立数据连接 传送数据机制包括建立连接选择数据参数。 用户和服务器 DTP 有默认数据端口。 用户进程默认数据端口和控制连接端口相同。 服务器进程默认数据端口和控制连接端口相邻。 传输字节大小是 8 位字节。 此字节是实际传输字节,但不代表主机内的数据表示。 被动数据传输进程在数据端口接收数据, FTP 请求命令决定数据传输的方向。 服务器在接收到请求以后,将初始化端口的数据连接。 当连接建立后,传输在 DTP 之间传送,服务器 PI 对用户 PI 返回应答。 FTP 实现运行一个默认数据端口,用户 PI 才 能改变默认端口。 通过 PORT 命令可能改变端口,用户可能希望数据在第三方主机上进行其它操作,用户 PI 需要在两个服务器 PI 上建立连接。 一个服务器被告知侦听另一服务器的请求。 用户 PI 通过 PORT 命令通知另一服务器的数据端口。 最后双方发送相应的传送命令。 通常,服务器负责支持数据连接,初始化并关闭它,除非用户DTP 在传输模式下要求关闭连接。 服务器在下面情况下关闭数据连接: 1. 服务器结束发送数据,通过 EOF 要求中止传送; 2. 用户发送 ABORT 命令; 3. 用户改变端口; 4. 控制连接关闭; 5. 发生不可恢 复错误。 . 数据连接管理 默认数据连接端口:所有 FTP 必须支持默认数据连接,只有用户 PI 能够初始化非默。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。