一.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文档,这里不做赘述。