【概述】
文本传输协议(File Transfer Protocol,FTP)是因特网上使用的最广泛的文件传送协议,其提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
同时,FTP 屏蔽了计算机系统的细节,适合在异构网络中任意计算机间传送文件
FTP 主要提供以下功能:
- 提供不同种类主机系统间的文件传输
- 以用户权限管理的方式提供用户对远程 FTP 服务器上的文件管理能力
- 以匿名 FTP 的方式提供公用文件共享的能力
【工作方式】
FTP 基于 C/S 模型,使用 TCP 可靠传输服务,一个 FTP 服务器进程可同时为多个客户进程提供服务
FTP 的服务器进程由两部分组成:
- 主进程:一个,负责接收新的请求
- 从属进程:多个,负责处理单个请求
FTP 服务器的工作步骤如下:
- 打开熟知端口 $21$,使客户进程能够连接上服务器
- 等待客户进程发送连接请求
- 启动从属进程来处理客户进程发来的请求,此时主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
- 回归等待状态,继续接受其他客户进程的请求
FTP 服务器必须在整个会话期间保留用户的状态信息,尤其是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置
同时,在使用 FTP 时,若要修改服务器上的文件,需要先将该文件传送到本地主机,再将修改后的文件副本传送到原服务器
【控制连接与数据连接】
FTP 在工作时使用两个并行 TCP 连接,一个是端口号为 $21$ 的控制连接,一个是端口号为 $20$ 的数据连接
需要注意的是,是否使用 $20$ 端口建立数据连接,是与传输模式有关的,主动方式使用 $20$ 端口,被动方式由服务器与客户端自行协商决定
控制连接用来传输 FTP 客户端发送的连接请求、传送请求等控制信息( $7$ 位 ASCII 码格式),FTP 服务器会一直监听 $21$ 号端口,等待客户连接,对于 FTP 客户发送的传送请求,会通过控制连接发送给 FTP 服务器的控制进程,同时,在整个会话期间,控制连接会一直保持打开状态
FTP 服务器的控制进程在接收到 FTP 客户发来的文件传输请求后,就创建数据传送进程和数据连接,数据连接用来连接客户端和服务器的数据传送进程,数据传送进程用来实际完成文件的传送,在传送完毕后,会关闭数据传送连接并结束数据传送进程
由于 FTP 使用分离控制连接和数据连接的方式,因此也称 FTP 的控制信息是带外传送的