文件传输协议(File Transfer Protocol,FTP)
目录 |
文件传输协议(FTP)是为进行文件共享而设计的因特网标准协议。也是Internet最早的应用层协议之一。这个协议用于主机间传送文件,主机类型可以相同,也可以不同,还可以传送不同类型的文件,如二进制文件、文本文件等[1]。
FTP具有以下特点:
(1)文件传送协议只提供文件传送的一些基本的服务,它是面向连接的服务,使用TCP作为传输协议,以提供可靠的运输服务。
(2)FTP的主要作用是在不同计算机系统间传送文件,它与这两台计算机所处的位置、连接的方式以及使用的操作系统无关。
(3)FTP使用客户/服务器方式。
文件传送协议FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下:
(1)打开熟知端口(端口号为21),使客户进程能够连接上。
(2)等待客户进程发出连接请求。
(3)启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
FTP的工作情况如图所示。在进行文件传输时,FTP的客户和服务器之间要建立两个连接:“控制连接”和“数据连接”。
客户端发起控制连接,服务器端发起数据连接。当客户进程向服务器进程发出建立连接请求时,首先要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接,连接建立时,控制进程和控制连接随之创建。控制进程在接受到FTP客户发送过来的请求后就创建传送进程和数据连接。服务器进程用传送数据的熟知端口(20)与客户进程所提供的端口号建立数据传送连接。由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
大多数FTP服务都是匿名服务。匿名FTP服务的实质是:提供服务的机构在它的FTP服务器上建立一个公开账户(一般为anonymous),并赋予该账户访问公共目录的权限,以便提供免费服务。如果用户要访问这些提供匿名服务的FTP服务器,一般不需要输入用户名与用户密码。为了保证FTP服务器的安全,几乎所有的匿名FTP服务器都只允许用户下载文件,而不允许用户上载文件。在Internet中,许多公司、大学的主机上含有数量众多的各种程序与文件,这是Internet的巨大与宝贵的信息资源。通过使用FTP服务,用户就可以方便地访问这些信息资源。
如今FTP在网络上的应用是十分广泛的。FTP是一个文件传输协议,起初,FTP并不是应用于IP网络上的协议,而是ARPANET网络中计算机间的文件传输协议。
ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时,FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。
FTP既是一个文件传输协议,又是一个程序。FTP程序自身已经成为任何一个TCP/IP协议实施的重要部分,它是TCP/IP协议的一种具体应用。FTP工作在OSI模型的第七层,TCP模型的第四层上,即应用层,FTP使用的传输方式为TCP传输而不是UDP传输。因为UDP是数据报传输协议,是面向非连接、不可靠的传输方式,虽然它简单易于使用,但容易丢失数据包;而传输控制协议TCP,在FTP客户和服务器建立连接之前首先要经过一个被广为熟知的“握手”过程,它使得客户与服务器之间的连接是可靠的,是一种面向连接、可靠的传输方式,为数据的正确传输提供了保证。FTP程序使用FTP协议来提供文件在网络上机器间的来回传输。这些协议适用范围很广,并不局限于Unix工作站还是WINDOWS工作站,它们可以是大型机、小型机或微型个人计算机,所运行的操作系统可以是VMS、Macintosh、DOS或者是WINDOWS。FTP的优点之一就是它提供了到不同文件存储方式和目录结构的一个公共接口。FTP(同许多Interact协议一样)可以运行在许多不同种类的连接之上,它可以在串行(拨入)线、以太网、令牌环网和其它连接上工作。使用FTP程序可以连接到一个FTP服务器,在可用的目录间游历,并且传输文件。一个FTP站点可以是公用的,私有的,或者两者兼有。使用一个私有的账号,你可以拥有访问整个网络的目录结构,或者只是特定的区域的权限,而这些权限包括读写权限、运行权限、删除权限、建立目录权限等;英特网就是一个允许任何人连接和传输文件的FTP服务器的中心,不管它们有没有主机上的账号,都可登录到FTP服务器的中心,这叫做匿名FTP。匿名FTP经常用于发布大量的共享软件或其它资源于FTP服务器上,供FTP客户在服务器上浏览、下载,共享这些资源。
如果我们将这样一个成熟、应用广泛的网络协议应用于实际工作中,不但能发挥网络数据传输量大、传输速率快、传输安全可靠和隐蔽性好的优点,而且也不需要与网络驱动器始终保持连接,只是在需要进行文件传输时由应用软件自动和远程计算机建立数据连接,当文件传输结束后便可以和远程机断开连接。
FTP的工作模式有两种:一种是主动模式(PORT),另一种是被动模式(PASV),通过这两种方式使服务器端和客户端建立连接。
当FTP客户以主动模式(PORT)连接服务器时,它动态的选择一个端口号连接服务器的21端口,注意客户端的这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的连接后,控制信道被建立。21端口是FTP协议进行文件传输需要的两个端口之一,它作为服务器控制连接的端口,用于服务器接收客户的指令以及对客户的响应;而另一个端口是20端口,它是用于建立数据传输通道的端口,它主要有3个作用:客户向服务器传送文件:服务器向客户发送文件;服务器向客户发送文件和目录列表。通过控制信道客户端发送PORT指令,告诉服务器用自己的某个端口号建立一个数据通道,服务器接到这一指令后会用20端口连接客户所发出的PORT命令中指定的端口,建立此数据通道,进行数据传送。在FTP客户与服务器连接的整个过程中,控制信道一直保持连接,而数据通道则是临时建立的。
FTP连接的另一种模式——被动模式,当客户端发出PASV命令,服务器在请求队列允许的情况下,给客户发回应,告诉客户可以用PASV中所带的端口号与其建立连接,是由客户主动与服务器建立连接,而PORT模式则是由服务器端主动与客户端建立连接。
微软的FTP客户端程序不支持PASV模式,只支持PORT模式,而要用PASV模式必须要安装第三方客户软件,如CUTEFTP等我们在英特网上上传文件所用的应用软件。
文件传输协议要求文件类型只能为ASCII或者BIN,也就是说,它可以拷贝具有内部结构如电子表格、格式化文档和可执行程序的任何文件,二进制文件是作为“映像”(image)来被传输的,这种映像就是指一组没有任何修改和任何方式解释的数据流;传输结构只允许为文件结构(即文件和目录);传输方式只能为流方式。