一、FTP 概述
文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。FTP的传输有两种方式:ASCII、二进制。
二、传输方式
ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)。
三、支持模式
FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。
Port模式
FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式
建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
四、FTP 命令
命令 |
描述 |
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 |
显示当前工作目录 |