文件传输协议:FTP

  在一个典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机传输(或接收来自远程主机的)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。在提供了这种授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件,反之亦然。
  HTTP和FTP都是文件传输协议,并且有很多共同的特点,例如,他们都运行在TCP上。然而,这两个应用层协议也有一些重要的区别,其中最显著的就是FTP使用了两个并行的TCP来传输文件,一个时控制连接,一个是数据连接。
  控制连接用于在两主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及"存放(put)"和"获取(get)"文件的命令。数据连接用于实际发送一个文件的。因为FTP协议使用一个独立的控制连接,所以我们也称FTP的控制信息是带外传送的。HTTP协议是在传输文件的同一个TCP连接中发送请求和相应首部行的。因此,HTTP也可以说是带内发送控制信息的。
  当用户主机与远程主机开始一个FTP会话时,FTP的客户(用户)端会首先在服务器21号端口与服务器(远程主机)端发起一个用于控制的TCP连接。FTP的客户端也通过该控制连接发送用户的标识和口令,发送改变远程目录的命令。当FTP的服务器端从该连接上收到一个文件传输的命令后(无论是向还是来自远程主机),就发起一个到客户端的TCP数据连接。FTP在该数据连接上准确的传送一个文件,然后关闭连接。在同一个会话期间,如果用户还需要传输另一个文件,FTP则打开另一个数据连接。因为对FTP传输而言,控制连接关贯穿了整个用户会话期间,但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接是非持续的)。
  FTP服务器必须在整个会话期间保留用户的状态。特别是,服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上徘徊,服务器必须追踪用户在远程目录树上的当前位置。对每个进行中的用户会话的状态信息进行追踪,大大限制了FTP同时维持的会话总数。而另一方,HTTP是无状态的,即它不必对任何用户状态进行追踪。
  从客户到服务器的命令和从服务器到客户的回答,都是以7比特ASCII格式在控制连接上传送的。因此,与HTTP协议的命令类似,FTP协议的命令也是人可读的。为了区分连续的命令,每个命令后跟回车换行符。每个命令由4个大写字母ASCII字符组成,有些还具有可选参数。一些较为常见的命令如下:
  USER username:用于向服务器传送用户标识。
  PASS password:用于向服务器发送用户口令。
  LIST: 用于请求服务器回送当前远程目录中的所有文件列表。该文件列表是经一个(新建且非持续连接)数据连接传送的。
  RETR filename:用于从远程主机当前目录检索(即get)文件。该命令引起 远程主机发起一个数据连接,并经该数据连接发送所请求的文件。
贯穿控制连接,在用户发出的命令和FTP发送的命令之间通常有一一对应关系。每个命令都对应这一个从服务器发向客户的回答。回答是一个3位数字,后跟一个可选信息。这与HTTP响应报文状态的状态码和状态信息的结构相同。一些典型的报文如下:
331 Username OK, Password required(用户名OK,需要口令)。
125 Data connnection already open;transfer starting(数据连接已经打开,开始传送)
425 can’t open data connection(无法打开数据连接)
452 Error writing file(写文件差错)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值