3.4.2 文件传输协议(FTP)
网络文件共享有两种不同形式:联机访问和文件传输。联机访问是由操作系统提供的远程共享文件访问服务,允许多个程序同时对一个文件进行存取,使本地计算机共享远程的资源,就像这些资源在本地一样。
但是联机访问的方式存在一些缺陷。例如,当网络或远程机器出现故障,或者网络拥塞、远程机器超负载时,应用程序将无法正常工作。此外,由于计算机系统是异构的,每个计算机中文件的表示方式、存储格式、访问机制都有所不同。例如,有些计算机系统中联合图像专家组(JPEG,Joint Photographic Experts Group)格式的图像的扩展名为.jpg,而在另一些计算机系统中则可能是.jpeg;一些系统使用斜杠(/)作为文件名的分隔符,其他的一些系统则用反斜杠(\);不同计算机之间的账户信息也不同,一台主机上的账户admin并不等同于另一主机上的账户admin。因此要实现一体化、透明的文件访问是比较困难的。
文件传输协议(FTP)则可以解决上述问题,将一个文件副本从一台主机复制到另一台主机。下面将对FTP的概念和工作原理进行介绍。
1.FTP
实际上,在TCP/IP出现之前,ARPANET中就已出现了标准文件传输协议。现在Internet上使用最广泛的文件传输标准——FTP就是由这些早期的文件传输软件版本发展而成的。
FTP是一种能够提供在异构环境中进行透明的文件传输服务的应用层协议,它使用了TCP作为下层协议以实现可靠的传输。通过FTP,用户可以在本地和远程主机之间进行目录操作并传送多种类型和格式的文件。
2.FTP基本工作过程
在典型的FTP工作过程中,用户坐在本地主机前,向一台远程主机上传文件或从远程主机下载文件。为访问远程主机,用户必须提供一个用户标识和口令。此后,用户就能在本地文件系统与远程主机文件系统之间传送文件。
FTP使用客户/服务器模式。交互的方式比较简单:客户向FTP服务器建立TCP连接,并发送一系列请求,然后服务器做出响应。大多数FTP服务器允许多个客户的并发访问。FTP的服务器中一个主进程负责接收新的请求,并为每个连接建立从属进程处理各个请求。
FTP采用的特色技术之一是将数据与控制信令分离,在主机之间使用了两条连接:数据连接和控制连接,以便处理异构性问题,如图3-24所示。一条数据连接用于数据传送,而另一条控制连接则用于传送控制信息(命令和响应)。在文件传输时,服务器由控制进程接收和处理通过控制连接发出的客户传送请求。当控制进程接收到客户发送的文件传输请求后,创建“数据传送进程”和“数据连接”完成文件的传送。
图3-24 FTP使用了两条TCP连接
在整个交互的FTP会话中,控制连接始终是处于连接状态。每当涉及传送文件的命令时,数据连接就被打开,而当文件传送完毕时数据连接就关闭。若传送多个文件,则数据连接可以打开和关闭多次。
对于控制连接,FTP使用了和TELNET相同的方法:NVT ASCII字符集,实现异构兼容性。对于数据连接,FTP在传送数据之前在控制连接上以命令的形式定义了文件类型、数据格式以及传输方式来解决异构问题。
为了避免在控制连接与数据连接之间发生冲突,FTP对于两者使用不同的协议端口号。熟知端口号21用于建立控制连接,熟知端口号20用于建立数据连接。
3.FTP常用命令和回答
从客户机到服务器的命令以及从服务器到客户机的回答都是在控制连接上传送的。客户机发出的命令形式是ASCII大写字符,因此可读性较高。为了区分连续的命令,每个命令后跟回车换行符。每个命令由4个大写字母组成,有些还具有可选参数。表3-5列出了一些常见的命令。
表3-5 FTP的一些常见命令
每一个FTP命令产生至少一个响应。一个响应包含两部分:一个3位数字,后跟一个可选信息,用于定义所需的参数或额外的解释。表3-6列出了一些典型的响应。
表3-6 FTP的一些典型响应
通常建立控制连接后,用户必须登录服务器,FTP服务器要求用户提供用户名和密码。用户提交之后,服务器会在控制连接上回送一个响应,通知用户登录是否成功。用户只有在成功登录后才能发送其他命令。尽管这种登录名和口令的使用可以防止文件受到未经授权的访问,但却给公共文件的访问带来不便。为了允许任何用户都可以访问公共文件,许多站点都建立了一个特殊的计算机账户。该账户的登录名为anonymous,早期的系统用口令guest,允许任意用户以最小权限匿名地访问文件。匿名FTP(anonymous FTP)被用来描述用anonymous登录名获取访问的过程。