首页 理论教育 图形化界面的FTP程序,数据传输与表示

图形化界面的FTP程序,数据传输与表示

时间:2023-11-05 理论教育 版权反馈
【摘要】:图形用户界面FTP程序将部分信息图表化,提供给用户更加清晰的界面及信息表示。数据的正确表示对于在异构计算机之间传输数据是很重要的,FTP允许客户端程序指定数据的类型及格式。图8-1为FTP模型,其中,协议解释器用于控制连接,数据传输进程负责建立并管理数据连接,连接可为主动或被动。服务器PI收到FTP命令后,通过控制连接把标准应答信息返回给用户PI。FTP的数据表示FTP协议中将数据表示分为数据类型和文件结构两个方面。

图形化界面的FTP程序,数据传输与表示

FTP(File Transfer Protocol)是用于实现文件传输服务的主要规范,是互联网上传递文件的最主要方式。FTP使用户能在两个联网的计算机之间传输文件,并提供关联传输的多项功能。

人机交互。无论是基于字符界面的命令行FTP工具,还是广泛使用的图形用户界面的FTP程序,都提供良好的人机交互方式,用户下达操作命令,计算机执行后返回执行结果及附加的信息。命令行FTP工具提供help命令让用户了解各种FTP命令使用,命令执行后有各种信息提示。图形用户界面FTP程序将部分信息图表化,提供给用户更加清晰的界面及信息表示。

数据表示。数据的正确表示对于在异构计算机之间传输数据是很重要的,FTP允许客户端程序指定数据的类型及格式。如可以指定文件是以文本格式还是二进制格式传输,或指定文本文件是采用何种字符集(如ASCII、EBCDIC等)。

安全机制。用户要访问某一FTP服务器,进行文件传输,需要提供经授权的用户名与密码,如不能提供正确的用户名与密码,服务器将拒绝用户的登录与访问,以保证数据的安全性。但采用匿名FTP访问,则取消这种限制,用户可从FTP上免费获取所需的网络资源。

1.FTP工作原理

FTP使用客户端—服务器模式,用户执行FTP程序,客户端程序先与远程服务器建立连接,用户登录到远程服务器后,向远程服务器发出传输命令,服务器在收到命令后给予响应,并执行正确命令。

FTP需建立两类连接:控制连接与数据连接。控制连接传送客户端发出的命令和服务器返回的响应信息,数据连接则负责传输文件的内容。图8-1为FTP模型,其中,协议解释器(Protocol Interpreter,PI)用于控制连接,数据传输进程(Data Transfer Process,DTP)负责建立并管理数据连接,连接可为主动或被动。控制连接是建立在用户PI与服务器PI之间用于交换命令与应答的通信链路,用户PI发送FTP命令,服务器PI则返回FTP响应。数据连接只用于传输数据,传输数据可发生在服务器DTP和用户DTP之间,也可以发生在两个服务器DTP之间。

978-7-111-43162-6-Chapter08-1.jpg

图8-1 FTP模型示意

FTP连接建立过程如下:用户PI初始化控制连接(采用Telnet协议定义的方式传送数据),在开始阶段,用户PI将用户下达的命令转化为标准的FTP命令,并通过控制连接发送至服务器进程。服务器PI收到FTP命令后,通过控制连接把标准应答信息返回给用户PI。FTP命令指定了数据连接的参数(数据端口、传输模式、数据表示类型、文件结构等),以及对文件系统的操作(检索、存储、追加、删除等)。用户DTP在特定的数据端口“侦听”,服务器初始化数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP命令的计算机上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听。数据连接是全双工连接,而且可以根据需要动态创建,当要传输数据的时候才建一条数据连接,数据传输完成则关闭数据连接。控制连接则一直存在,断开控制连接意味着FTP会话的结束,新建FTP会话需要重新登录到FTP服务器。从图中看出,交互式用户不必理会控制连接中转换的命令和应答,这些细节均由两个协议解释器来完成。“用户界面”方框的功能是按用户所需提供各种交互界面,如字符界面命令行方式、图形界面的窗口操作等,并把用户的请求转换成在控制连接上发送的标准FTP命令。同理,把从控制连接上传回的服务器应答也转换成用户所需的格式。

2.FTP的数据表示与传输模式

FTP协议规范提供了控制文件传输与存储的数据表示,这是计算机间传输文件时必须解决的重要问题。如果忽略了文件传输的数据表示,可能会导致传输到网络另一端计算机上的文件发生损坏,或无法正确识别其内容。

(1)FTP的数据表示

FTP协议中将数据表示分为数据类型和文件结构两个方面。

1)数据类型有如下4种。

●ASCII类型:默认的数据类型,用于传输文本文件。发送方将本地的文本文件转换为标准的8位NVT ASCII码形式(遵循Telnet协议的定义),然后在数据连接中传输,接收方则将NVT ASCII码还原成本地适用的文本文件格式。NVT标准中使用<CR-LF>序列作为行结束符,因此ASCII类型的文本文件,每行末尾都带有一个回车符,而后是一个换行,这意味着如果接收方采用不同行结束符定义,则必须扫描每个字节。

●EBCDIC类型:EBCDIC(扩充的二进制编码的十进制交换码)是一种类似于ASCII的规范,主要在IBM计算机上使用,EBCDIC类型也用于传输文本文件,只有参与文件传输的客户端与服务器都使用EBCDIC系统时,才能使用EBCDIC类型传输文件。

●IMAGE类型:即通常所说的二进制文件类型,数据打包为8位的传输字节,以连续比特流的方式发送,通常用于传输二进制文件。以二进制格式传输文件可直接传输,不用在发送方或接收方进行格式转换,因此二进制格式传输方式比文本格式传输方式速度快。

●LOCAL类型:指本地文件类型,该方式用于在具有不同字节大小的主机间传输二进制文件,每一字节比特数由发送方规定。对使用8bit字节的系统来说,本地文件以8bit字节传输就等同于IMAGE类型。

以上4种数据类型中,用于传输文本文件的ASCII类型和用于传输二进制文件的IMAGE类型最常用,绝大多数FTP程序都支持这两种数据类型。此外,为了控制客户端上文本文件的显示,FTP协议中定义了3种格式控制(只对ASCII类型和EBCDIC类型有效)。

●非打印:默认选择。打印或显示时将忽略文本文件中的回车和换行。

●Telnet格式控制:Telnet协议提供了回车和换行的选项,使文本文件的内容能逐行打印或显示。

●FORTRAN回车控制:每行首字符是FORTRAN格式控制符,这个字符告诉打印机或显示设备后面的字符要在新的一行中打印或者显示。

2)数据结构有如下3种。

●文件结构:认为文件由连续的字节流组成,不存在内部结构,这是默认选择的结构。

●记录结构:认为文件由一系列记录组成,该结构只适用于文本文件(ASCII或EBCDIC),文本文件的每一行都是一条记录。

●页结构:认为文件是由一组独立的带编号的页组成,页结构发送时每页都带有页号,以便接收方能随机地存储各页。

(2)FTP的传输模式

FTP协议规范除了提供传输文件所需要的数据表示以外,还规定了文件在数据连接中如何传输,即传输模式,有如下3种传输模式。

●流(STREAM)模式。文件传输默认模式,文件以字节流的形式传输。不同数据结构的文件采用不同方式标志文件结束:对于文件结构,发送方用EOF(文件结束符)指示关闭数据连接;对于记录结构,使用专门的控制代码指示记录结束或文件结束,控制代码第一个字节是全l的转义字符,第二个字节是EOR或EOF。

●块(BLOCK)模式。文件以一系列数据块方式传输,每块都带有一个或多个“报头”,报头包括1B的描述符与2B的计数字段,计数字段指示了以字节为单位的数据块总长度,描述符采用位标志,有4种含义的代码:EOR、EOF、Suspected Errors(可疑错误)、RestartMarker(重启标记)。

●压缩(COMPRESSED)模式。采用一种简单的全长编码压缩算法,压缩连续出现的字节,在文本文件中常用来压缩空白串,在二进制文件中常用来压缩值为0的字节,目前有一些更好的文件压缩方法支持FTP。

在FTP传送文件之前,用户应指定文件数据表示与传输模式,以确保能正确传输文件。目前大多数FTP应用软件都能自动识别文件格式,而无需用户指定传输格式,使用很方便。

3.FTP命令

FTP协议规范定义了多个FTP命令,这些命令用于登录FTP服务器、设置传输参数、浏览服务器上的文件与目录列表、获取服务器上的文件及存储文件到服务器上,并管理服务器与客户端之间文件的传输过程。

通常FTP命令指的是FTP协议中定义的标准FTP命令,不能与FTP程序所提供给用户使用的命令混为一谈。

这些命令提供给用户使用,用户可在命令行方式下输入所列命令,FTP客户端程序识别用户键入的命令,并将其转换成标准FTP命令,然后通过控制连接发送至服务器。不同的FTP客户端程序可提供数目不同的操作命令,操作命令的名称不一定都相同,只要FTP客户端程序能识别即可,因此设计FTP客户端程序时就有很大的灵活性。一般FTP程序无需实现FTP协议提供的全部功能,若要求FTP程序小巧,可只提供最常用功能给用户。目前很多FTP程序都基于图形用户界面设计,用户不再需要输入字符命令。除了FTP站点名称、登录用户名与密码需要输入,大部分操作仅用鼠标即可完成。无论是基于命令行的,或基于图形界面的FTP程序,传输时使用FTP协议中的标准FTP命令,使得客户端与服务器都能正确识别。

标准FTP命令分为3类:存取控制命令、传输参数命令和FTP服务命令。

(1)存取控制命令

存取控制命令(表8-1)主要提供用户身份验证功能和目录切换功能,如用户登录到服务器时,必须连续使用USER命令和PASS命令,正常退出必须使用QUIT命令等。(www.xing528.com)

表8-1 常用FTP命令—存取控制命令

978-7-111-43162-6-Chapter08-2.jpg

(2)传输参数命令

传输参数命令(表8-2)数目不多,但对于数据的正确传输却相当重要,尽管所有数据传输参数都有默认值,但使用默认值并不能适应所有情况,应根据需要设置传输参数。传输参数设置后一直有效,除非用新的命令改变传输参数,或者新建立了数据连接。

表8-2 常用FTP命令—传输参数命令

978-7-111-43162-6-Chapter08-3.jpg

要使用主动模式传输数据,需要使用PORT命令,PORT命令的参数host-port指定了客户端的IP地址及数据端口,传输行为由服务器端发起,客户端须在指定数据端口“侦听”。

使用PASV命令可进入被动模式,服务器端返回服务器的IP地址和一个数据端口,传输行为由客户端发起。

(3)FTP服务命令

FTP服务命令(表8-3)定义一系列文件传输及文件系统操作相关的命令,这些命令的参数通常是路径名(pathname),路径名书写必须符合服务器端规范。多数FTP服务命令的出现顺序都是任意的,但文件重命名时,必须连续使用两条命令:先用RNFR命令指定旧的文件名,接着用RNTO命令指定新的文件名。FTP服务命令中还包括一些其他命令,如显示帮助信息HELP、中断数据传输的ABOR命令等。

表8-3 常用FTP命令—FTP服务命令

978-7-111-43162-6-Chapter08-4.jpg

FTP协议没有重新定义在控制连接上通信时数据的格式,而使用了Telnet协议中的定义,在控制连接上使用NVT格式的ASCII字符来传送数据,并使用双字节的字符序列CR-LF(回车-换行)作为行结束符,除此以外不使用Telnet协议中的其他内容。由于早期的FTP协议并没有涉及安全问题,PASS命令中的密码同样是以NVT格式明文发送,因此存在着安全漏洞,目前通过一些FTP协议的扩展来解决FTP的安全问题。

4.FTP应答

客户端将用户下达的命令转换为标准FTP命令,然后通过控制连接发送给服务器,服务器接收命令并处理之后,返回给客户端相应的命令响应信息,返回响应方式称FTP应答。FTP应答保证了文件传输过程中请求与行为的同步,并使得用户进程总是能了解服务器状态。每条FTP命令可产生一条或多条响应,但多数情况下,每条命令只返回一条响应。其次,对于一些总是成组执行的命令序列,如USER命令和PASS命令,RNFR命令和RNTO命令等,若之前命令都已成功执行,响应信息则会指示当前状态,若命令序列在执行过程中失败,则必须从头开始执行命令序列。

FTP响应与FTP命令一样,都是在客户端与服务器之间的控制连接上以NVT ASCII码的形式传送,并在每行末尾以CR-LF标志行结束。FTP响应由一个3位的数字代码(FTP应答码),一个字符串形式的表示命令执行成功与否的文本,以及命令执行成功后的输出组成。

软件程序根据FTP应答码来决定将要进入的状态,而文本则提供给用户阅读。FTP应答码包括用户进程需要知道的所有信息,用户进程可完全不理会文本内容,只需简单地将其显示给用户查看即可,因此,服务器端可自定义FTP响应文本的内容。如加上FTP站点信息或改为更友好的提示等等。

FTP响应的具体格式如下:<3-digit code><SP><one line of text><CR-LF>

其中,<3-digit code>为3位数字应答码,<SP>表示空格,<one line of text>是只占一行的提供用户阅读的文本信息(多行信息另外格式定义),<CR-LF>是行结束符。

表8-4列出3位应答码中第1、2位含义(x,y,z可是使应答码有意义的任意数字)。

表8-4 FTP应答码中第1位和第2位的含义

978-7-111-43162-6-Chapter08-5.jpg

FTP应答码笫3位给出报文的附加含义,表8-5为典型应答的FTP应答码。

表8-5 常见FTP应答码

978-7-111-43162-6-Chapter08-6.jpg

5.FTP连接管理

FTP使用TCP连接与TCP端口。进行通信时,FTP需建立两个TCP连接,一个为控制连接(端口号默认值21),用于发送指令给服务器及接收服务器响应,另一个为数据连接(端口号默认值20,仅PORT模式),是数据传输的通道,主要有3种用途:从客户端向服务器发送一个文件;从服务器向客户端发送一个文件;从服务器向客户端发送文件或目录列表。

FTP服务器把文件列表从数据连接上发回,而不是作为控制连接上的多行应答,这避免了行的有限性对目录大小的限制,并使客户端更容易将目录列表以文件形式保存,而不只是把列表显示在终端上。在FTP客户端连接服务器的整个过程中,控制连接一直保持连接,而数据连接则是临时建立的,可根据需要建立或撤销。

FTP规定了两种连接模式(相对于服务器):PORT和PASV,对不同的连接模式,FTP使用不同的TCP端口号。

PORT模式。又称为主动模式(Active Mode),该模式下数据连接由服务器初始化完成。当FTP客户端以PORT模式连接服务器时,会动态选择一个端口连接服务器的21端口。这个端口号一定是大于1024的,因0~1023之间的TCP端口大多数都已预先被定义,提供给在TCP上运行的标准服务(如HTTP、Telnet、SMTP等)使用,余下的则保留给以后会用到这些端口的资源服务。经过TCP三次握手后,控制连接成功建立,客户端可向服务器发送命令了。

假设用户想获取服务器上的文件和目录的列表,可使用Is命令或dir命令,因为文件和目录的列表是通过数据连接传送的,所以需建立一条数据连接。此时客户端会送出PORT命令告诉服务器连接到自己的某一端口(Ephemeral Port,暂态端口)来建立数据连接,同时在该端口上侦听数据,当服务器收到PORT命令时,使用20端口连接客户端在PORT命令中指定的端口号,用以发送文件和目录列表。

在完成这一操作时,用户可能会使用get命令下载一个文件,这时客户端会再次发送PORT指令,告诉服务器连接到一个新的端口(之前用于传送文件和目录列表的数据连接已关闭),在微软的FTP系统中,客户端通常使用连接端口。数据连接再次建立后,服务器把文件传输到客户端。图8-2为使用PORT模式的FTP连接示意。

978-7-111-43162-6-Chapter08-7.jpg

图8-2 使用PORT模式的FTP连接示意图

PASV模式。又称被动模式(Passive Mode),该模式由客户端初始化数据连接(图8-3所示)。FTP客户端连接服务器时,控制连接的建立过程与PORT模式相同,使用大于1024的端口连接服务器的21端口。不同的是,当FTP用户执行Is、dir、get等命令要求返回数据的时候,客户端向服务器发送PASV命令而非PORT命令。在PASV命令中,客户端通知服务器希望连接到服务器的某一端口,如果服务器该端口空闲可用,那么服务器返回ACK作为确认信息,然后数据连接被建立,服务器返回用户所需的信息;如果服务器该端口已使用,服务器返回UNACK信息,这时FTP客户端会再次发送PASV命令,这就是所谓数据连接建立时的协商过程。

978-7-111-43162-6-Chapter08-8.jpg

图8-3 使用PASV模式的FTP连接示意

PORT模式,数据连接建立由FTP服务器发起,使用20端口连接客户端的某个大于1024的端口;PASV模式,数据连接建立由客户端发起,使用某个大于1024的端口,连接服务器上使用1024以上的某一端口。使用PASV模式连接,其安全性要好于使用PORT端口方式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈