应用层协议之文件传输协议:FTP
在一个典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机传输(或者接受来自远程主机的)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。用户首先提供远程主机的主机名,使本地主机的FTP客户进程建立一个到远程主机FTP服务器进程的TCP连接。该用户接着提供用户标识和口令,作为FTP命令的一部分在该TCP连接上传输。一旦该服务器向该用户授权,该用户可以将存放在本地的文件系统中的一个或者多个文件复制到远程的文件系统中。
FTP文件传输协议也是运行在TCP上的。最显著的特点是FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(21号端口),一个是数据连接(可能是20号端口)。控制连接用于两主机之间传输控制信息。如用户标识、口令、改变远程目录的命令以及“存放(PUT)”和“获取(GET)”文件的命令,数据连接用于发送一个实际文件。因为FTP协议使用了一个独立的控制连接,所以我们称FTP的控制信息是带外传输的,像HTTP协议是在传输文件的同一个TCP连接中发送请求和响应首部行的,因此HTTP也可以说那是带内发送控制信息的。
当用户主机与远程主机开始一个FTP会话时,FTP的用户端首先在服务器21号端口与服务器(远程主机)端发起一个用于控制的TCP连接。当FTP的服务器从该连接上接收到传输文件的命令后,就会发起一个到客户端的TCP数据连接,FTP在该数据连接上准确地传输一个文件,然后关闭该连接。因此对FTP传输而言,控制拦截贯穿了整个用户的会话期间,但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接是非持续连接的)。值得注意的是FTP是有状态的,随着用户在远程目录树上的徘徊,服务器必须追踪偶那个胡在远程目录树上的当前位置。对每个进行中的用户会话的状态信息进行追踪,也大大限制FTP同时维持的会话数。