FTP协议

FTP协议,文件传输协议,file transfer protocol,是网络文件传输协议,用于在网络中传输文件。

连接建立

FTP协议与别的协议有所差异,FTP协议工作需要两个端口工作,也就是需要在客户端和服务器端建立两个连接,这两个连接分别是:控制连接、数据连接。

控制连接一般使用21端口不变,而数据连接使用的端口是会随着FTP服务器工作模式的不同而改变的。

在客户端和FTP服务器工作时,通常控制连接只会建立一次,在开始时建立连接,在客户端发送QUIT指令后断开连接。但是数据连接有可能会建立多次,通常与FTP建立连接时,并不会默认将数据连接也建立,只有当有文件传输的任务时,才会建立数据连接,当文件传输完毕,数据连接又会断开,知道下一个传输任务开始时,再建立数据连接。

工作模式

FTP协议有两种工作模式:主动模式和被动模式。这两种模式是讲服务器的主动和被动。

主动模式

在主动模式下,客户端通过控制连接发送PORT命令告知服务器自己的IP和打开的端口,之后服务器主动连接客户端,这时服务器使用的就是默认的20端口去建立数据连接。

而客户端使用的PORT命令并不是直接告知服务器自己的IP:PORT,而是这样的模式PORT 123,57,54,43,8,这个命令指定的IP便是123.57.54.43,而端口是2060,这是需要计算的,公式为2060=8*256+12

主动模式的缺点就是服务器发起的数据连接请求有可能会被客户端的防火墙进行拦截。

被动模式

在被动模式下,客户端通过控制连接发送PASV命令告知服务器处于被动模式。服务器收到命令后,会在本地随机开启一个端口,处于监听状态,并通过控制连接告知客户端。客户端便可以通过这个端口与服务器建立数据连接。

所以当FTP服务器处于被动模式的情况下,数据连接的端口便不再是20端口,而是一个随机的端口。

因为连接是通过客户端主机主动发起的,所以数据连接不会被客户端的防火墙拦截。

命令

常见的FTP命令:

  • USER: 用户名
  • PASS: 密码
  • LIST: 列出目录
  • CWD: 切换目录
  • CDUP: 返回上一级目录
  • RETR: 下载文件
  • STOR: 上传文件
  • DELE: 删除文件
  • MKD: 创建目录
  • RMD: 删除目录
  • QUIT: 退出