配色: 字号:
2.3文件传输协议:FTP
2014-06-21 | 阅:  转:  |  分享 
  
第二章应用层



2.3文件传输协议:FTP



HTTP和FTP都是文件传输协议,并且有很多共同点。例如,它们都运行在TCP上。它们的区别是。最显著的是FTP使用两个并行的TCP连接来传送文件,一个是控制连接(controlconnection),一个是数据连接(dataconnection)。控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及‘put’和‘get’文件的命令。数据连接用于实际传输一个文件。



因为FTP协议使用一个分离的控制连接,所以我们也称FTP的控制信息是带外(out-of-band)传送的。HTTP协议是在传输文件的TCP连接中发送请求和响应首部行的。因此,HTTP也可以说是带内(in-band)发送控制信息的。



当用户主机与远程主机开始一个FTP会话前,FTP的客户机首先在21号端口上发起一个用于控制的与服务器的TCP连接。FTP的客户机通过该控制连接发送用户的标识和口令,也发送改变远程目录的命令。当FTP的服务器端从该连接上收到一个文件传输的命令后,就发起一个到客户机的数据连接。FTP在该数据连接上准确地发送一个文件并关闭该连接。如果在同一个会话期间,用户还需要传输另一个文件,FTP则打开另一个数据连接。因而对FTP传输而言,控制连接贯穿了整个用户会话期间,但是针对会话中的每一次文件传输都需要建立一个新的数据连接。



FTP服务器必须在整个会话期间保留用户的状态信息。特别是,服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上移动,服务器必须追踪用户在远程目录树上的当前位置。对每个活动着的用户会话的状态进行追踪,可以对FTP会话总数进行限制。而HTTP是无状态的,即不对任何用户状态进行追踪。



几个常见的FTP命令和回答:



USERusername:用于向服务器传送用户标识。



PASSpassword:用于向服务器传送用户口令。



LIST:用于请求服务器返回远程主机当前目录的所有文件列表。文件列表是在数据连接上传送的,而不是在控制TCP连接上传送。



RETRfilename:用于从远程主机的当前目录检索(即get)文件。该命令触发远程主机发起一个数据连接,并在该数据连接上发送所请求的文件。



STOPfilename:用于向远程主机的当前目录存放(即put)文件。



在用户发出的命令和FTP协议在控制连接上发送的命令之间,一般有一一对应关系。每个命令都对应着一个从服务器返回到客户机的回答。回答是一个3位数字,后跟一个可选信息。这与HTTP响应报文状态行的状态码和状态信息的结构相同。一些典型的回答以及它们可能的报文如下:



331UsernameOK,Passwordrequired

125Dataconnectionalreadyopen;transferstarting

425Can’topendataconnection

452Errorwritingfile



献花(0)
+1
(本文系miracle859首藏)