《网络实用技术基础》第四章 4.2 文件传输服务FTP
4.2 文件传输服务FTP
一、FTP的应用
如何提供公共资源的下载服务,大部分共享资源都是以文件的形式存储在主机中,许多用户可能都会通过Internet来访问这些资源,利用文件传输服务可以实现资源的共享。
文件传输服务依赖于文件传输协议FTP(File Transfer Protocol),FTP是Internet上使用最广泛的文件传输协议,它提供了交互式的访问,允许客户指定文件的类型与格式,并允许设置文件的存取权限。FTP屏蔽了计算机系统的细节,适用于在异构网络中的计算机之间传输文件。
文件传输服务的具体实现是由FTP应用程序提供的,而FTP应用程序遵循的是TCP/IP协议簇中的文件传送协议FTP,它允许用户将文件从一台计算机传输到另一台计算机,并且能保证传输的可靠性。
FTP协议是TCP/IP协议簇中的一项针对文件传输的协议。因此,无论Internet上的两台计算机在物理位置上相距多远,只要它们都支持FTP协议,就可以相互传输文件。
许多公司和高校的主机上都存储有数量众多的各种程序与文件,这是Internet上宝贵的信息资源。通过使用FTP服务,用户可以方便地访问这些资源。采用FTP传输文件时,不需要对文件进行复杂的转换,FTP服务的工作效率较高。在部署FTP服务后,每个联网的计算机都将拥有一个容量巨大的文件库,这是单个计算机无法比拟的。
根据服务对象的不同,FTP服务器可以分为系统FTP服务器和匿名FTP服务器,前者只允许系统上的合法用户使用,后者允许任何人登录到服务器上获取文件。
FTP包含两项重要的功能:文件上传和文件下载。
1.文件的上传是指客户端可以将任意类型的文件上传到指定的FTP服务器上。当然,客户端需要拥有该FTP服务器的文件上传权限,否则将无法执行上传操作。
2.文件的下载就是将远程服务器上提供的文件下载到本地计算机上,与HTTP相比,使用FTP实现的文件下载,具有使用简便、支持断点续传和传输速度快的优点。在进行文件下载时,同样要求客户端即本地计算机用户拥有对服务器相应文件的下载权限。
二、FTP的工作原理
1.FTP服务过程
FTP应用程序在运行时可分为两个部分,即主进程和从属进程。主进程用来打开熟知端口,使客户进程能够连接到服务器,客户进程发送连接请求后,主进程启动从属进程来处理客户进程发来的请求,处理完毕后,主进程回到等待状态。从属进程包括控制进程和数据传输进程,控制进程用来验证各参数,并开启数据传输进程;数据传输进程就是传输文件的进程。
如图4-1所示,在FTP的工作流程中,首先由FTP客户端向FTP服务器发起连接请求,FTP服务器接受连接请求后,客户端即可发起文件请求,此后就可以开始文件的上传或下载,直至传输完成,关闭连接。FTP的具体工作流程包括下面几个步骤。
1)FTP服务器运行FTPd守护进程,等待用户的FTP请求。
2)用户运行FTP命令,请求FTP服务器为其服务。
3)FTPd守护进程收到用户的FTP请求后,派生出子进程与用户进程交互,并使用TCP端口21建立文件传输控制连接。
4)用户运行FTP子命令,服务器接收到子命令后,若命令正确,则双方各派生一个数据传输进程FTP-DATA,建立数据连接,并使用TCP端口20进行数据传输。
5)当前子命令要求的数据传输完成后,解除数据连接,结束FTP-DATA进程。
6)用户继续输入FTP子命令,重复第(4)、第(5)步的过程,直至用户输入quit命令,双方释放控制连接,停止文件传输,结束FTP进程。
图4-1 FTP的工作流程
2.FTP访问方式
FTP支持主动和被动两种访问方式。
1)主动模式
FTP 客户端首先要和FTP服务器的TCP 21端口建立连接,并通过这个端口发送命令。当客户端需要接收数据时,则向这个端口发送PORT命令,该命令包含客户端接收数据的端口号。在传输数据时,服务器端通过自己的TCP 20端口连接至客户端的指定端口,发送数据。
2)被动模式
使用该模式时,建立控制通道的方式和主动模式类似。建立连接后,FTP 客户端发送的不是PORT命令,而是PASV命令。FTP服务器接收到PASV命令后,随机打开一个端口号大于1024的端口,并通知客户端在这个端口上发送数据请求。客户端连接到FTP服务器的这一端口,并发送数据请求后,FTP服务器开始进行数据传输。
大部分防火墙的设置都不接受由外部发起的连接,位于内网的FTP服务器不支持被动模式,因为客户端无法穿过防火墙连接到FTP服务器的端口;而内网的客户端不能用主动模式登陆外部的FTP服务器,因为无法建立与服务器TCP 20端口的连接。
3.FTP服务类型
FTP服务分为普通FTP与匿名FTP服务两种类型。
1)普通FTP服务
普通FTP服务要求用户在登录时提供正确的用户名和密码。
2)匿名FTP服务
互联网中有一部分 FTP 服务器被称为“匿名”(anonymous)FTP 服务器。设立这类服务器的目的是向公众提供文件拷贝服务,用户不用事先在该服务器进行登记注册,也不用取得FTP服务器的授权。匿名FTP服务实质上是提供服务的机构在其FTP服务器上建立了一个公开账号,一般为anonymous,并赋予该账号访问公共目录的权限。部分系统要求用户将电子邮件地址作为口令,以便更好地对访问进行跟踪。
匿名FTP一直是Internet上获取信息资源最主要的方式,在Internet上的大量匿名FTP服务器中存储着海量文件,这些文件包含各种各样的数据和软件。用户只要知道包含特定信息资源的FTP服务器地址,就可以通过匿名FTP服务获取所需的信息资料。