FTP协议分析

  • Post author:
  • Post category:其他


转自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

协议模型

中使用到的交互元素包括用户接口、USERPI




UPTP





SPI





SDTP

的说明如下图所示















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分别对应


ASCII





EBCDIC





IMAGB





LOCAL


类型。


STRU: 定义数据的组织


MODE: 定义传输方式


4) 端口定义命令


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


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


5) 文件传送命令


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


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


STAT: 返回文件的状态


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


6) 杂项命令


HELP: 询问服务器的信息


NOOP: 检查服务器是否工作


SITE: 指定特定场所的命令


SYST: 询问服务器使用的


操作系统


































































客户端发送


FTP


命令后,服务器返回响应码。响应码用三位数字编码表示:








第一个数字定义命令的状态。



1 表示服务器正确接收信息,还未处理。



2


表示服务器已经正确处理信息。



3


表示服务器正确接收信息,正在处理。



4


表示信息暂时错误。



5


表示信息永久错误。






第二个数字是响应类型的分类。



0


表示语法。



1


表示系统状态和信息。



2


表示连接状态。



3


表示与用户认证有关的信息。



4


表示未指明。



5


表示与文件系统有关的信息。







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




编辑本段


协议结构




命令



描述


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

文件名不允许