一种基于UDP的文件获取协议的实现*

2012-07-02 01:15史孝波周松斌黄东运程韬波
自动化与信息工程 2012年6期
关键词:数据包许可消息

史孝波周松斌黄东运程韬波

(1.广东工业大学 2.广东省自动化研究所)

一种基于UDP的文件获取协议的实现*

史孝波1,2周松斌2黄东运2程韬波2

(1.广东工业大学 2.广东省自动化研究所)

文件传输协议(file transfer protocol,FTP)是网络传输文件的常用协议,内容较复杂。由于采用了传输控制协议(transport control protocol,TCP)提供的可靠传输服务,使用FTP传输文件时经常出现数据延迟问题。为此提出一种文件获取协议(file obtain protocol,FOP)。FOP底层传输使用用户数据报协议(user datagram protocol,UDP),无需非常复杂的传输模型即可实现在网络上传输包括音视频在内的多类型文件。同时介绍了FOP的工作原理和实现方法,编写了基于FOP协议的客户和服务器软件。

FOP;文件传输;UDP;传输协议

0 引言

21世纪人类社会已经进入了一个以计算机网络为核心的信息化时代[1]。使用Internet提供的服务,人们能够方便地访问大量的信息。FTP是网络文件传输的常用协议,通过两个并发的TCP连接来完成网络通信。FTP内部协议命令数目繁多,实现起来较为复杂。基于TCP的应用程序必须使用TCP所提供的可靠性、顺序交付等服务,应用程序不能要求TCP去关闭某些不需要的功能,无论应用程序是否需要,TCP都要强制使用。在效率高于可靠性的应用中,要求数据尽量在主机之间流动,允许偶尔的数据丢失,但无法容忍由于可靠性带来的延迟。对这些程序,TCP提供的可靠性、顺序交付等不仅毫无价值,而且还会影响程序的正常行为。

基于以上问题,本文提出了一种文件获取协议FOP。该协议具有易于实现、安全稳定的特点,适合于传输多种类型的文件。以Visual Studio 2005为平台,编写基于FOP协议的客户和服务器软件。通过网络通信实例,进一步阐述FOP协议的原理、特点和实现方法。

1 FOP工作原理

1.1 UDP客户/服务器程序模型

与FTP采用TCP连接来完成数据传输的方式不同,FOP在传输层采用UDP协议。UDP为FOP的设计提供了基本的数据报传输机制。

UDP客户/服务器程序模型如图1所示。

图1 UDP客户/服务器程序模型

服务器创建socket之后,调用bind绑定本地地址,接收数据时调用函数recvfrom。recvfrom可以接收到达本地端口的任何数据,并保存数据发送方的地址。服务器把应答数据通过这个地址发送给客户端。客户端与服务器通信之前不需要建立连接,直接调用函数sendto发送数据,函数sendto在参数中已经指明了数据接收地址。

采用UDP模型的应用程序发送数据之前,不需要建立连接。数据发送完成后,也不用终止连接。只要应用程序有数据,就直接发送,没有连接建立、维护、终止所带来的开销。由此给程序的设计带来了灵活性和效率的提升。但是UDP也是不可靠的,对发送的数据,并不保证对方一定会收到,即使收到了也没有确认。FOP的消息传递过程被设计为两个阶段来保证数据的重传及确认,解决可靠性问题。第一阶段,由客户发出“内容发起请求”消息,服务器收到客户消息后,向客户发出“内容发起请求回应”消息;第二阶段,客户向服务器发出“请求进行内容传送”消息,服务器收到客户消息后,发出“进行内容传送”消息。FOP消息传递流程如图2所示。

图2 FOP消息传递流程图

1.2 FOP消息结构定义

FOP消息结构包括:FOP消息头和FOP消息体两部分。消息头包括协议标识、应用标识、命令标识、内容类型等多个字段,固定为4个字节长度;消息体为传输数据的具体内容。每个字段的描述如表1所示(消息体只列举了许可码和数据包数量的定义)。

表1 FOP消息结构定义

FOP使用UDP作为底层传输协议。UDP位于网络通信协议族的第三层,默认使用IP作为下一层的传输协议。网络传输的过程中,FOP消息被封装在IP数据报中,如图3所示。

图3 封装了FOP消息的IP数据报

消息体装载客户请求的数据内容,长度不定。数据内容由各种类型的字段组成,每个字段用来表示不同的内容。例如表1中的许可码和数据包数量。字段标记占用1个字节,每个字段开始必须由对应的1个字段结束。消息体的内容长度分为定长和不定长两种。当消息体的内容是不定长时,还有长度标记,长度标记占2个字节。

1.3 FOP传输数据表示

通过对不同数据类型的编解码,FOP实现了传输数据类型的多种选择。客户从服务器下载文件时,既可使用默认的文本类型,也可选择其它文件类型。FOP支持文本、富文本、图像、动画、音视频这5种文件类型。

目前FOP协议只支持文件式结构,即传输的文件中没有内部结构,文件的数据内容以二进制流的方式传输。FOP支持多包发送,如果客户请求的内容在编码后的长度大于一个数据包所许可的最大长度,将拆分传送。在文件的传输过程中,FOP一次支持传送的数据包大小为1kb,最大数据包数量为65535个。

1.4 FOP的安全策略

FOP的安全策略是通过采用UDP作为底层传输协议,设置客户的操作权限以及增加许可码功能来实现的。

FOP底层的传输协议使用UDP。在开始传输数据之前不需要建立TCP连接,避免了连接模式带来的安全隐患。连接模式的安全隐患体现在:连接一旦被黑客攻击,防火墙将不会有任何动作去处理这个连接。因为连接是由服务器本身向外发出的。

通过软件设计,可以指定用户对FOP服务器文件的操作权限。例如设置用户“只读”权限,即用户只能从服务器下载文件,从而限制非法用户对服务器文件的篡改。

FOP服务器在接收客户的文件获取请求时,要求客户提供许可码。许可码是服务器随机生成的一组16位字符串,内容包括大小写字母和数字,如图4所示。在每次传输数据前,客户通过第三方途径(如手机短信、QQ等)得到服务器的许可码。收到客户的获取文件请求时,FOP服务器验证客户的许可码。对许可码不正确的客户,服务器将认为是非法客户,其请求不做处理。

图4 FOP服务器生成的16个许可码

2 基于FOP的通信实现

依照FOP协议规范,以Visual Studio 2005为平台,编写了基于FOP协议的客户与服务器软件。

2.1 软件设计流程

FOP的软件设计分为客户程序设计和服务器程序设计两个部分,如图5所示。

图5 FOP软件设计流程图

客户程序的主要任务是从服务器下载资源文件。首先客户端初始化,创建socket套接字。初始化成功后,向服务器发送预请求命令“CMD_PRE_CONTENT_REQUEST”。由于FOP使用Winsock编程,如果程序不确定有数据到来就调用recvfrom,则该套接字线程就会进入阻塞状态。解决套接字线程阻塞的办法是调用select,select在监测缓冲区后,会立刻返回,然后给出返回值。这样程序就可以继续其它操作,而不会陷入阻塞状态。当客户收到服务器的响应后,发送数据请求命令“CMD_REQUEST_DELIVERY”,继续进入监测状态,直到有数据到来,将数据保存到指定的位置。

服务器程序的主要任务是为客户提供下载资源,响应客户程序的命令,传输数据。服务器程序也使用Winsock编程,程序流程与客户程序的流程类似。服务器初始化成功后,开始等待客户的命令。当收到客户的预请求命令后,发送命令“CMD_PRE_CONT ENT_REQUEST_ACK”来响应客户的请求,否则调用select函数来继续等待客户发送的命令。当服务器收到客户的数据请求命令后,将数据发送给客户,发送完成后,关闭套接字。

2.2 通信测试实验

通信测试实验在Windows XP Professional操作系统上进行,硬件基本配置:Intel(R) Core(TM)i3 CPU 2.39 GHz,1.92 GB内存。通过从FOP服务器下载一个音视频文件来说明通信测试过程。

在服务器窗口,点击“运行”按钮,“运行”两字变为“服务器已经运行”,表明服务器成功启动。为服务器加载文本、图像、动画等资源文件,FOP服务器加载资源文件后如图6所示。

图6 加载了资源文件的FOP服务器

创建服务器成功后,启动客户端。在客户端IP地址栏输入服务器的地址“192.168.0.100”,端口号选择“9158”,下载的文件类型选择“音视频”。点击“请求资源”按钮,此时会弹出“另存为”的窗口。把文件保存在指定位置,这时音视频文件playgame.flv便成功地从FOP服务器下载到了客户端。

打开从FOP服务器下载的音视频文件,文件内容完整清晰。选择不同的下载文件类型,进行了文本、图像等其它类型文件的通信实验。并调用TRACE函数,跟踪了数据包的传送情况,结果统计如表2所示。

表2 FOP传送各类文件统计表

由于FOP一次支持传送的数据包大小为1kb,最大数据包数量为65535个。观察表2中的数据可以看出,在文件传输过程中,没有出现丢包状况,证明使用FOP协议传输文件是可靠的。

3 结论

与传统的用FTP实现网络文件传输的办法相比,FOP文件获取协议更易理解和掌握。基于FOP协议的应用程序无需建立复杂的传输模型即可实现互相交换消息,而且其底层使用UDP作为数据传输协议,没有连接建立、维护、终止所带来的开销,能够达到较高的通信效率,适合于对效率要求较高的场合,如图像传送和广播消息等。FOP协议同样对开发实时的语音传输、多媒体应用等具有一定的借鉴意义。

[1] 赵强.基于FTP协议的文件传输服务器的研究[D].大连:大连海事大学,2008.

[2] 孙韩林,金跃辉,高雪松,等.FTP协议的测试及分析[J].计算机工程,2008,34(23):133-138.

[3] 张会勇.WinSock网络编程经络[M].北京:电子工业出版社,2012:41-51.

[4] 李祥.基于Web的网络文件管理系统的研究与实现[D].兰州:兰州大学,2010.

A Realization of File Obtain Protocol Based on UDP

Shi Xiaobo1,2Zhou Songbin2Huang Dongyun2Cheng Taobo2
(1.Guangdong University of Technology 2.Institute of Automation, Guangdong)

The File Transfer Protocol is a common protocol for file transfer in network, but the contents of FTP is complicated. FTP has often data transmission delay problem when transferring files, this is due to FTP uses the service provided by Transport Control Protocol. Therefore this paper presents a File Obtain Protocol. FOP uses User Datagram Protocol as the underlying transport protocol, FOP can transfer multiple types of files without complicated transmission model, these files include audio, video and so on. This paper introduces the working principle and realization method of the FOP,and the client software and server software based on FOP.

FOP; File Transfer; UDP; Transfer Protocol

史孝波,男,1986年生,研究生,研究方向:网络化测控。E-mail: shixiaobo987@126.com

周松斌,男,1978年生,副研究员,研究方向:网络化测控。

黄东运,男,1975年生,硕士,研究方向:机器视觉、图像识别。

程韬波,男,1964年生,研究员,研究方向:复杂系统和智能控制。

猜你喜欢
数据包许可消息
版权许可声明
二维隐蔽时间信道构建的研究*
版权许可声明
版权许可声明
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
本期作者介绍
一张图看5G消息
C#串口高效可靠的接收方案设计
消息
消息