apache ftpServer源码解读与收获(一)

一.FTP相关知识

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动(积极)式和被动(消极)式。 

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求, 服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT 命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的 XXXX端口发送连接请求,建立一条数据链路来传送数据。 

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV 命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。 

从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。主动跟被动,关键在于是不是服务器建立了数据链路。如果是即主动(积极)模式,反之,则为被动(消极)模式。

 

FTP命令

命令划分

命令码

命令名称

备注

访问控制命令

USER

用户名

 
 

PASS

口令

此命令紧跟USER命令,在某些站点它是完成访问控制不可缺少的一步

 

ACCT

ACCOUNT 

 
 

CWD

改变工作目录

 
 

CDUP

回到上一层目录

 
 

SMNT

结构加载

此命令使用户在不改变登录或帐户信息的情况下加载另一个文件系统数据结构。传输参数也不变。参数是文件目录或与系统相关的文件集合

 

REIN

重新初始化

 
 

QUIT

退出登录

 

传输参数命令

PORT

数据端口

参数是要使用的数据连接端口

 

PASV

被动

此命令要求服务器DTP在指定的数据端口侦听,进入被动接收请求的状态,参数是主机和端口地址。

 

 

TYPE

表示类型

 
 

STRU

文件结构

F - 文件(非记录结构),它是默认值

R - 记录结构

P - 页结构

 

MODE

传输模式

S - 流(默认值)

B - 

C - 压缩

 

FTP服务命令

RETR

获得文件

使服务器DTP传送指定路径内的文件复本到服务器或用户DTP

 

STOR

保存

 
 

STOU

唯一保存

此命令和STOR差不多,此命令要求在此目录下的文件名是唯一的

 

APPE

附加

 
 

ALLO

分配

 
 

REST

重新开始

 
 

RNFR

重命名

 
 

RNTO

重命名为

此命令和上面的命令共同完成对文件的重命名。

 

 

ABOR

放弃

 
 

DELE

删除

 
 

RMD

删除目录

 
 

MKD

创建目录

 
 

PWD

打印工作目录

 
 

LIST

列表

如果路径指定一个目录或许多文件,返回指定路径下的文件列表。如果路径名指定一个文件,服务器返回文件的当前信息,参数为空表示用户当前的工作目录或默认目录

 

NLST

   
 

SITE

站点参数

服务器用来提供服务器系统信息

 

SYST

系统

确定服务器上运行的操作系统。

 

STAT

状态

返回控制连接状态

 

HELP

帮助

 
 

NOOP

等待

此命令不产生什么实际动作,它仅使服务器返回OK

 

有关FTP协议的详细,请阅读相关的RFC文档,这里不做赘述。

你可能感兴趣的:(apache ftpServer源码解读与收获(一))