浅析FTP文件传输协议
关于FTP减少或消除在不同操作系统下处理文件的不兼容性的功能分析
何冰倩 3160602009 计算机学院计算机技术专业
摘要:FTP协议是应用层的协议,是因特网商使用的最广泛的文件传输协议,并且该协议提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。本文将描述FTP的工作原理并就FTP减少或消除在不同操作系统下处理文件的不兼容性的这一主要功能进行任务难度分析和过程解释。 关 键 词:FTP;应用层;协议;文件传输
1 引言
FTP是另一个常见的应用程序。它是用于文件传输的I n t e r n e t标准。我们必须分清文件传送(file transfer)和文件存取(file access)之间的区别,前者是F T P提供的,后者是如N F S等应用系统提供的。由F T P提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。要使用F T P,就需要有登录服务器的注册帐号,或者通过允许匿名F T P的服务器来使用。与Te l n e t类似,F T P最早的设计是用于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同字符集。但不同的是,Te l n e t获得异构性是强制两端都采用同一个标准:使用7比特A S C I I码的N V T。而F T P是采用另一种方法来处理不同系统间的差异。FTP支持有限数量的文件类型(A S C I I,二进制,等等)和文件结构(面向字节流或记录)。
2 FTP协议简介以及文件传输的复杂性分析
2.1 FTP工作原理
FTP协议基于 TCP 协议,它通过两个 TCP 连接来传输一个文件,一个是控制连接,另一个是数据连接。相应的,在进行文件传输时,FTP 需要两个端口,分别用于控制连接端口 (用于给服务器发送指令以及等待服务器响应)和数据传输端口 (在客户机和服务器之间发送 一个文件或目录列表)。 (如图2.1)
图2.1 文件传输的处理过程
两种连接的建立都要经过一个 “三次握手”的过程,同样,连接释放也要采用 “四次握手”方法。控制连
接在整个回话期间一直保持打开状态。数据连接是临时建立的,在文件传送结束后被关闭。
FTP 的连接模式有两种,PORT 和 PASV。PORT 模式是一个主动模式,PASV 是被动模式,这里都是相对于服务器而言的。
当 FTP 客户以 PORT 模式连接服务器时,它首先动态地选择一个端口号连接服务器的 21 端口,注意这个端口号一定是 1024 以上的,因为 1024 以前的端口都已经预先被定义好,被一些典型的服务使用或保留给以后会用到这些端口的资源服务。经过 TCP 的三次握手后,控制连接被建立。这时客户就可以利用这个连接向服务器发送指令和等待服务器响应了。当需要从 (或向)服务器传送数据时,客户会发出 PORT 指令告诉服务器用自己的那个端口来建立一条数据连接 (这个命令由控制连接发送给服务器),当服务器接到这一指令时,会使用 20 端口连接客户指定的端口号,用以数据传送。
当FTP 客户以 PASV 模式连接服务器时,控制连接的建立过程与 PORT 模式相同,不同的是,在数据传送时, 客户不向服务器发送 PORT 指令而是发送 PASV 指令, 服务器收到 PASV命令后选择一个端口号发送给客户,客户选择一个本地端口号与服务器发送过来的端口建立一条数据连接。
2.2 文件传送的复杂性
网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。初看起来,在两个主机之间传送文件是很简单的事情。其实这往往非常困难,原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。因此,网络环境下复制文件的复杂性主要有如下几点:
1. 2. 3. 4.
计算机存储数据的格式不同;
文件的目录结构和文件命名的规定不同;
对于相同的文件存取功能,操作系统使用的命令不同; 访问控制方法不同。
而在不同操作系统下处理文件除了以上的几点复杂性以外,还由于操作系统本身内核以及编码的不同,也使得在两台主机之间传送文件变得非常困难。
3 FTP协议以及数据包浅析
3.1 FTP协议的数据表示
FTP协议规范提供了控制文件传送与存储的多种选择。在以下四个方面中每一个方面都必须做出一个选择。 1.
文件类型
(a) ASCII码文件类型(默认选择)文本文件以NVT ASCII码形式在数据连接中传输。这要求发方将本地文本文件转换成NVT ASCII码形式,而收方则将NVT ASCII码再还原成本地文本文件。其中,用NVT ASCII码传输的每行都带有一个回车,而后是一个换行。这意味着收方必须扫描每个字节,查找C R、L F对。
(b) EBCDIC文件类型该文本文件传输方式要求两端都是EBCDIC系统。
(c) 图像文件类型(也称为二进制文件类型) 数据发送呈现为一个连续的比特流。通常用于传输二进制文件。
(d) 本地文件类型 该方式在具有不同字节大小的主机间传输二进制文件。每一字节的比特数由发方规定。对使用8 bit字节的系统来说,本地文件以8 bit字节传输就等同于图像文件传输。 2.
格式控制
该选项只对ASCII和EBCDIC文件类型有效。 (a) 非打印(默认选择)文件中不含有垂直格式信息。
(b) 远程登录格式控制文件含有向打印机解释的远程登录垂直格式控制。 (c) Fortran 回车控制每行首字符是Fortran格式控制符。 3.
结构
(a)文件结构(默认选择)文件被认为是一个连续的字节流。不存在内部的文件结构。
(b)记录结构该结构只用于文本文件(ASCII或EBCDIC)。
(c)页结构 每页都带有页号发送,以便收方能随机地存储各页。该结构由TOPS-20操作系统提供(主机需求R F C不提倡采用该结构)。 4.
传输方式
它规定文件在数据连接中如何传输。
(a)流方式 (默认选择)文件以字节流的形式传输。对于文件结构,发方在文件尾提示关闭数据连接。对于记录结构,有专用的两字节序列码标志记录结束和文件结束。 (b)块方式文件以一系列块来传输,每块前面都带有一个或多个首部字节。
(c)压缩方式 一个简单的全长编码压缩方法,压缩连续出现的相同字节。在文本文件中常用来压缩空白串,在二进制文件中常用来压缩0字节(这种方式很少使用,也不受支持。现在有一些更好的文件压缩方法来支持FTP)。
通常由Unix实现的FTP 客户和服务器把我们的选择如下: • 类型:ASCII或图像。 • 格式控制:只允许非打印。 • 结构:只允许文件结构。 • 传输方式:只允许流方式。
这就我们只能取一、两种方式:ASCII或图像(二进制)。该实现满足主机需求RFC的最小需求(该RFC也要求能支持记录结构,但只有操作系统支持它才行,而Unix不行)。很多非Unix的实现提供了处理它们自己文件格式的FTP功能。主机需求RFC指出“FTP协议有很多特征,虽然其中一些通常不实现,但对FTP中的每一个特征来说,都存在着至少一种实现”。
3.2 FTP协议的传输模式
FTP协议的主要任务就是实现两台不同计算机之间的文件传输,该协议与这两台计算机所处的位置、联机的方式、所使用的操作系统这些差异性是无关的。虽然用FTP命令来传输文件在不同操作系统上使用有一些细微的差别,但是每种协议基本的命令结构是一样的。FTP的传输方式一共有两种:一种是ASCII传输模式,一种是二进制数据传输模式。
1. ASCII 传输模式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的是不同的操作系统,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。 2. 二进制数据传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的
4 总结
FTP提供交互式的访问,允许客户知名文件的类型与格式,并允许文件具有访问权限。FTP 屏蔽了各计算
机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。它实际上用到了传输层的TCP协议,网络层的IP协议,在IP层封装成IP数据包的形式经过链路层进行传输,具体怎么传输则是通过物理层,数据最后都是在物理层上转换成具体的信号才能传送到指定的地方。本文仅就FTP的一个小方面进行了浅层次的分析和描述,大家如果对FTP协议具体的相关内容感兴趣,可以查阅相关资料进行深度的探索和学习。
参考文献
[1] [2]
Computer networks : a top-down approach , Behrouz A. Forouzan, Firouz Mosharraf, 2013. 计算机网络原理与Internet技术 , 北京:北京理工大学出版社,2015