术语
FTP(FILE TRANSFER PROTOCOL):文件传输协议。
PI(protocol interpreter):协议解析器。用户和服务器用其来解析协议,它们的具体实现分别称为用户 PI (USER-PI)和服务器PI(SERVER-PI)。
服务器PI(server-PI):服务器 PI 在 L 端口“监听”用户协议解析器的连接请求并建立控制连接。它从用户 PI接收标准的 FTP 命令,发送响应,并管理服务器 DTP。
服务器DTP(server-DTP):数据传输过程,在通常的“主动”状态下是用“监听”的数据端口建立数据连接。它建立传输和存储参数,并在服务器端 PI 的命令下传输数据。服务器端 DTP 也可以用于“被动”模式,而不是主动在数据端口建立连接。
用户PI(user-PI):用户协议解析器用 U 端口建立到服务器 FTP 过程的控制连接,并在文件传输时管理用户 DTP。
用户DTP(user-DTP):数据传输过程在数据端口“监听”服务器 FTP 过程的连接。
控制连接:用户PI 与服务器PI 用来交换命令和响应的信息传输通道。
数据连接:通过控制连接协商的模式和类型进行数据传输。
FTP协议简介
文件传输协议(FTP)使得主机间可以共享文件。 FTP 使用 TCP 生成一个虚拟连接用于控制命令交互,然后再生成一个单独的 TCP 连接用于数据传输。FTP模型如图1-1所示:
图1-1 图1-1 中描述的模型中,控制连接由用户PI 发起。首先由用户PI 产生标准FTP 命令通过控制连接传输到服务器过程。标准响应由服务器端PI 通过控制连接发送到用户PI 作为命令的回应。
FTP 命令指定数据连接参数(端口,传输模式,表示类型,以及结构)和文件系统操作种类(store,retrieve,append,delete 等)。用户DTP 则应在指定的数据端口“监听”,服务器用相应的参数发起数据连接并传送数据。
FTP控制命令
FTP 控制帧即远程交换信息,包含控制命令和选项。大多数 FTP 控制帧是简单的ASCII文本,用户通过用户PI向服务器PI发出FTP命令,服务器PI执行用户PI的FTP命令,并将执行的结果返回给用户。常用的FTP命令如下所示:
命令 | 描述
ABOR:中断数据连接程序
ACCT:系统特权帐号
ALLO:为服务器上的文件存储器分配字节
APPE:添加文件到服务器同名文件
CDUP :改变服务器上的父目录
CWD :改变服务器上的工作目录
DELE:删除服务器上的指定文件
HELP:返回指定命令信息
LIST:如果是文件名列出文件信息,如果是目录则列出文件列表
MODE:传输模式(S=流模式,B=块模式,C=压缩模式)
MKD:在服务器上建立指定目录
NLST:列出指定目录内容
NOOP:无动作,除了来自服务器上的承认
PASS:系统登录密码
PASV:请求服务器等待数据连接
PORT :IP 地址和两字节的端口 ID
PWD:显示当前工作目录
QUIT:从 FTP 服务器上退出登录
REIN:重新初始化登录状态连接
REST:由特定偏移量重启文件传递
RETR:从服务器上找回(复制)文件
RMD:在服务器上删除指定目录
RNFR:对旧路径重命名
RNTO:对新路径重命名
SITE:由服务器提供的站点特殊参数
SMNT:挂载指定文件结构
STAT:在当前程序或目录上返回信息
STOR:储存(复制)文件到服务器上
STOU:储存文件到服务器名称上
STRU:数据结构(F=文件,R=记录,P=页面)
SYST:返回服务器使用的操作系统
TYPE:数据类型(A=ASCII,E=EBCDIC,I=binary)
USER>:系统登录的用户名
FTP命令的响应是为了对数据传输请求和过程进行同步,也是为了让用户了解服务器的状态 。每个命令必须至少有一个响应,如果有多个响应,每个响应要易于区别。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文件名不允许