上文中我们主要介绍了http协议,在这篇文章里,我们介绍一个同样有名的网络协议ftp(文件传送协议)。

  ftp文件传送协议(file transfer protocol,简称ftp),是一个用于从一台主机到另送文件的协议。该协议的历史可追溯到1971年(当时因特网尚处于实验之中),不过至今仍然极为流行。ftp在rfc 959中具体说明。下图是它提供的服务的概貌。


图1 ftp在本地和远程文件系统之间传输文件

  在一个典型的ftp会话中,用户坐在本地主机前,想把文件传送到一台远程主机或把它们从一台远程主机传送来。该用户必须提供一个用户名―口令对才能访问远程账号。给出这些身份认证信息后,它就可以在本地文件系统和远程文件系统之间传送文件了。如图中所示,用户通过一个ftp用户代理与ftp交互。他首先提供一个远程主机的主机名,这使得本地主机中的ftp客户进程建立一个与远程主机中的ftp服务器进程之间的连接。用户接着提供用户名和口令,这些信息将作为ftp命令参数经由tcp连接传送到服务器。服务器批准之后,该用户就在本地文件系统和远程文件系统之间拷贝文件。

  http和ftp都是文件传送协议,它们有许多共同的特征,譬如说都运行在tcp之上。不过这两个应用层协议之间存在重要的差别。最重要的差别是ftp使用两个并行的tcp连接来传送文下一节件,一个是控制连接,一个是数据连接。控制连接用于在客户主机和服务器主机之间发送控制信息,例如用户名和口令、改变远程目录的命令、取来或放回文件的命令。数据连接用于真正发送文件。既然tcp使用一个独立的控制连接,我们说ftp在带外(out-of-band)发送控制信息的。另外,用于控制音频和视频等持续媒体数据之传送的rtsp协议也是在带外发送控制信息的。http中,同一个tcp连接既用于承载请求和响应头部,也用于承裁所传送的文件,因此我们说http在带内(in-band)发送控制信息。下一篇文章将讨论的用于电子邮件的主要协议smtp也在带内发送控制信息。图2展示了ftp的控制连接和数据连接。


图2

  当用户启动与远程主机间的一个ftp会话时,ftp客户首先发起建立一个与ftp服务器端口号21之间的控制tcp连接,然后经由该控制连接把用户名和口令发送给服务器。客户还经由该控制连接把本地临时分配的数据端口告知服务器,以便服务器发起建立一个从服务器端口号20到客户指定端口之间的数据tcp连接;为便于绕过防火墙,较新的ftp版本允许客户告知服务器改由客户来发起建立到服务器端口号20的数据tcp连接。用户执行的一些命令也由客户经由控制连接发送给服务器,例如改变远程目录的命令。当用户每次请求传送文件时(不论哪个方向),ftp将在服务器端口号20上打开一个数据tcp连接(其发起端既可能是服务器,也可能是客户)。在数据连接上传送完本次请求需传送的文件之后,有可能关闭数据连接,到再有文件传送请求时重新打开。因此在ftp中,控制连接在整个用户会话期间一直打开着,而数据连接则有可能为每次文件传送请求重新打开一次(即数据连接是非持久的)。

  在整个会话期间,ftp服务器必须维护关于用户的状态。具体地说,服务器必须把控制连接与特定的用户关联起来,必须随用户在远程目录树中的游动跟踪其当前目录。为每个活跃的用户会话保持这些状态信息极大地限制了ftp能够同时维护的会话数。无状态的http却不必维护任何用户状态信息。

posted on 2010-01-05 00:52  康的瑞  阅读(354)  评论(0编辑  收藏  举报