FTP协议分析

来源:互联网 发布:javaweb项目 知乎 编辑:程序博客网 时间:2024/06/08 01:06

转自http://blog.csdn.net/ouyang_peng/article/details/9633781

FTP(File Transfer Protocol)就是文件传输协议。通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将本地计算机上的文件复制到远程FTP服务器上称为上传,上传和下载是FTP最常用的两个功能。FTP使用传输层的TCP协议进行传输,因此客户端与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。FTP的目标有以下目标: 

  1.  提高文件的共享性
  2. 提供非直接地远程操纵计算机 
  3. 避免用户因主机之间的文件存储系统的差异而导致的变化
  4. 为数据的传送提供可靠性和高效性

FTP协议模型如下图所示


FTP使用TCP的服务,它需要两条连接。一条是数据连接用于数据传送,一般使用端口21,而另一条是控制连接用于传送控制信息(命令和响应),一般使用端口20。控制连接需要传送的只是控制信息,如一行命令或一行应答码,而数据连接需要传送的数据类型繁杂,如文本文件、图形文件、应用程序等等。

FTP协议模型中使用到的交互元素包括用户接口、USERPIUPTPSPISDTP的说明如下图所示



FTP传输有两种方式:文本传输模式和二进制数据传输模式。其中文本模式又叫ASCII模式,二进制模式又叫Binary模式。

FTP服务分为普通FTP与匿名FTP服务两种类型。


常用FTP的命令有:

1) 接入命令

 USER: 指明用户名

 PASS: 指明与用户名对应的密码

 ABOR:  异常中断数据连接程序

 QUIT: 从系统注销

 REIN: 重新初始化

2) 文件管理命令

 CWD:   改变服务器上的工作目录到指定目录

 CDUP:  改变服务器上的工作目录到父目录

 DELE: 请求删除服务器上的文件。

 LIST: 列出子目录或文件

 MKD: 请求在服务器上新建一个目录

 PWD:  显示当前工作目录

 RMD:  从服务器上删除指定目录

3) 数据格式化命令

 TYPE:  定义文件类型,共有四种类型,所带参数也有四种:A、E 、I 、L分别对应ASCIIEBCDICIMAGBLOCAL类型。

 STRU: 定义数据的组织

 MODE: 定义传输方式

4) 端口定义命令

 PASV:服务器选择端口,客户端使用这个端口发送主动打开

 PORT: 客户端选择端口,服务器使用这个端口创建主动打开

5) 文件传送命令

 RETR: 读取文件,文件从服务器端传送到客户端

 STOR: 存放文件,文件从客户端传送到服务器端

 STAT: 返回文件的状态

 ALLOO: 在服务器为文件分配存储空间

6) 杂项命令

 HELP: 询问服务器的信息

 NOOP: 检查服务器是否工作

 SITE: 指定特定场所的命令

 SYST: 询问服务器使用的操作系统


客户端发送 FTP 命令后,服务器返回响应码。响应码用三位数字编码表示:

第一个数字定义命令的状态。
1 表示服务器正确接收信息,还未处理。
表示服务器已经正确处理信息。
表示服务器正确接收信息,正在处理。
表示信息暂时错误。
表示信息永久错误。
 
第二个数字是响应类型的分类。
表示语法。
表示系统状态和信息。
表示连接状态。
表示与用户认证有关的信息。
表示未指明。
表示与文件系统有关的信息。

第三个数字提供了更加附加信息。 

编辑本段协议结构

命令
描述
ABOR
中断数据连接程序
ACCT <account>
系统特权帐号
ALLO <bytes>
为服务器上的文件存储器分配字节
APPE <filename>
添加文件到服务器同名文件
CDUP <dir path>
改变服务器上的父目录
CWD <dir path>
改变服务器上的工作目录
DELE <filename>
删除服务器上的指定文件
HELP <command>
返回指定命令信息
LIST <name>
如果是文件名列出文件信息,如果是目录则列出文件列表
MODE <mode>
传输模式(S=流模式,B=块模式,C=压缩模式)
MKD <directory>
在服务器上建立指定目录
NLST <directory>
列出指定目录内容
NOOP
无动作,除了来自服务器上的承认
PASS <password>
系统登录密码
PASV
请求服务器等待数据连接
PORT <address>
IP 地址和两字节的端口 ID
PWD
显示当前工作目录
QUIT
从 FTP 服务器上退出登录
REIN
重新初始化登录状态连接
REST <offset>
由特定偏移量重启文件传递
RETR <filename>
从服务器上找回(复制)文件
RMD <directory>
在服务器上删除指定目录
RNFR <old path>
对旧路径重命名
RNTO <new path>
对新路径重命名
SITE <params>
由服务器提供的站点特殊参数
SMNT <pathname>
挂载指定文件结构
STAT <directory>
在当前程序或目录上返回信息
STOR <filename>
储存(复制)文件到服务器上
STOU <filename>
储存文件到服务器名称上
STRU <type>
数据结构(F=文件,R=记录,P=页面)
SYST
返回服务器使用的操作系统
TYPE <data type>
数据类型(A=ASCII,E=EBCDIC,I=binary)
USER <username>>
系统登录的用户名
标准 FTP 信息如下
响应代码
解释说明
110
新文件指示器上的重启标记
120
服务器准备就绪的时间(分钟数)
125
打开数据连接,开始传输
150
打开连接
200
成功
202
命令没有执行
211
系统状态回复
212
目录状态回复
213
文件状态回复
214
帮助信息回复
215
系统类型回复
220
服务就绪
221
退出网络
225
打开数据连接
226
结束数据连接
227
进入被动模式(IP 地址、ID 端口)
230
登录因特网
250
文件行为完成
257
路径名建立
331
要求密码
332
要求帐号
350
文件行为暂停
421
服务关闭
425
无法打开数据连接
426
结束连接
450
文件不可用
451
遇到本地错误
452
磁盘空间不足
500
无效命令
501
错误参数
502
命令没有执行
503
错误指令序列
504
无效命令参数
530
未登录网络
532
存储文件需要帐号
550
文件不可用
551
不知道的页类型
552
超过存储分配
553
文件名不允许




原创粉丝点击