文件传输协议:FTP
如下图所示:用户通过一个FTP用户代理与FTP交互。该用户首先提供远程主机的主机名,使本地主机的FTP客户机进程建立一个到远程主机FTP服务器进程的TCP连接。然后,该用户提供用户标识和口令,作为FTP命令的一部分在该TCP连接上传送。一旦该服务器向该用户授权,用户就可以向远程文件系统拷贝存放在本地文件系统中的一个或多个文件(反之亦然)。
HTTP和FTP都是文件传输协议,并且有很多共同点。例如,他们都运行在TCP上。然而它们也有一些重要区别,其中最显著的一点就是:
FTP使用两个并行的TCP连接来传输文件,一个是控制连接(用于在两主机之间传递控制信息),一个是数据连接(用于实际传输一个文件)。因为FTP协议使用一个分离的控制连接,所以我们也称FTP的控制信息是带外传送的。
而HTTP协议是在传输文件的TCP连接中发送请求和响应首部行的。因此HTTP是带内传送控制信息的。
FTP协议的控制连接和数据连接如下图所示:
·FTP客户机联系FTP服务器的21号端口,指定TCP为运输协议
·客户机通过控制连接获得授权
·客户机经控制连接通过发送命令浏览远程目录
·当服务器接收到一个文件传输命令时,该服务器打开到客户机的一个数据连接
·在传输一个文件后,服务器关闭数据连接
·服务器打开第二个TCP数据连接,以传输另一个文件
总结:对FTP传输而言,控制连接贯穿了整个用户会话期间,但是针对会话中的每一次文件传输都需要建立起一个新的数据连接(即数据连接是非持久的)。
注:FTP服务器必须在整个会话期间保留用户的状态信息。而HTTP是无状态的,即它不需要对任何用户状态进行追踪。
FTP命令和回答
下面是一些常用命令,它们经控制信道以ASCII 文本发送:
USER username:用于向服务器传送用户标识。
PASS password:用于向服务器传送用户口令。
LIST:返回当前目录中的文件列表,文件列表是在(新建的非持久连接)数据连接上传送的。
RETR filename:获取(get) 文件,该命令触发远程主机发起一个数据连接,并在该数据连接上发送所请求文件。
STOR filename:存储 (put)文件到远程主机。
下面是一些常见的状态码及相应短语(如在HTTP中的那样):
331 Username OK, password required
125 data connection already open; transfer starting
425 Can’t open data connection
452 Error writing file