基于UDP 改进的可靠传输协议研究与实现

2015-06-02 11:57王珏何秋燕王露凯
电脑知识与技术 2015年9期

王珏 何秋燕 王露凯

摘要:在数据传输网络中,与其它协议相比,UDP协议在速度上有一定的优势, 但也存在着传输可靠性差及缺乏拥塞控制机制的问题, 该文在UDP协议的基础上,通过增加简单的三次握手,确认重传机制,滑动窗口机制,设计出了一种基于UDP的可靠传输协议,使其在可靠性和传输效率之间达到一个良好的统一与折衷,并对协议的主要模块的实现做出了具体描述并进行了实际测试。

关键词:可靠UDP;确认重传;滑动窗口

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)09-0071-03

Abstract:In data transmission network, compared with the other protocol, UDP protocol has certain advantages in speed, but there is also the transmission reliability is poor and the problem of lack of congestion control mechanism in this paper, on the basis of the UDP protocol, by adding a simple three-way handshake, confirm the retransmission mechanism, the sliding window mechanism, designed a reliable transport protocol based on UDP, make it between the reliability and efficiency to achieve a good unity and compromise, and implementation of the agreement of the main module has made a detailed description and the actual test.

Key words: reliable UDP; confirm the retransmission; the sliding window

由于传统的数据传输协议所针对的业务不同,在数据传输的速度和可靠性之间不能达到很好的平衡。车险理赔系统中采用的是移动理赔的思想,手持终端机通过移动通信网络和后台中心系统进行数据交互。目前国内的通信事业并不是很发达,信号覆盖率并不全面,移动通信网络的带宽和传输质量会受到地域的影响,为确保理赔现场与后台系统间数据的及时可靠传输,需要基于移动通信的网络环境设计高效可靠的数据传输功能。本章在UDP传输协议基础上,通过应用层封装和可靠性设计的方法,采用数据包的确认重传、流量控制等机制,设计并实现基于UDP协议的可靠数据传输功能。

1 TCP与UDP的对比

TCP和UDP都属于传输层协议,负责承担数据传输的任务[1]。两者之间的主要区别有:

(1) TCP和UDP是传输层的两个协议,它们最大的区别是是否面向连接。TCP,在客户端和服务器端进行通信之前,首先要交换传输层控制信息,为双方的通信做好准备。UDP是一个非连接的协议,传输数据之前双方不建立连接,当传送数据时,简单的抓取来自应用程序的数据,并尽可能快的把数据传送到网络上。

(2) UDP协议的数据传输不需要维护收发状态和连接状态等,与TCP相比,网络有效利用率得到很大的提高。

(3) TCP协议提供数据确认重传、拥塞控制等可靠性保证,UDP协议不提供可靠性保证,也不提供流量控制。

TCP协议由于需要确认的状态和对数据包的操作过多,数据传输的速度不高且网络延迟较大,所以虽然协议可靠但并不适合面向移动通信的数据传输;而UDP协议由于不用建立连接,没有超时重发等可靠机制,网络延迟小且数据传输速度很快。本文设计的理赔系统面向移动通信网络实现理赔现场与后台系统间的数据传输,网络环境不如光纤接入网络稳定可靠,对数据的高效可靠传输有着很高的要求。因此,本章选用UDP协议,并在其基础上,设计了连接确认、数据确认等可靠机制,满足了系统对于高效可靠传输功能的需求。

2基于UDP 改进的可靠传输协议实现

2.1 主要功能模块及任务结构

综合文献【2】的可靠机制描述,可靠UDP数据传输协议的模块结构如图1所示。

从模块结构上看,本模块主要由以下几个任务实现模块功能:

? 通信处理模块

1) 发送方发起数据传输请求,三次握手成功后,发送方进入数据包封装模块。

2) 超时定时器的启动和关闭。

3) 当数据传输结束时,接收方向发送方主动发起传输结束的请求。

? 数据包封装/解析模块

1) 发送方将要发送的的数据按照协商大小分块,排序。

2) 发送方将分块的数据协商的数据报文结构封装成要发送的消息包。

3) 接收方读取数据包后根据协商的数据报文结构拆分数据包,根据数据包的类型读取信息。

? 消息发送/接收模块

1) 发送方判断发送队列和消息队列是否为空后,将要发送的数据包处理后发送。

2) 接收方从接收队列中读取数据包。

? 数据重组模块

1) 由于网络问题,发送方按序发送的数据包不一定会按序到达,所以接收方在经过数据包解析模块读取数据后,根据该消息的字节序号判断是否为乱序的分组。

2) 若是顺序的分组,将分组与以前收到的消息按序排列;若是要求重传的分组,将该分组放入到所应在的位置中。

3) 如果满足重发条件,则向发送方发送重发包请求。

2.2 核心事件处理流程

2.2.1 通信处理进程

通信处理模块中的通信处理进程主要负责三次握手的发起和确认的请求,数据传输结束后结束连接等任务。具体流程见图2。首先,通信的接收方发起握手的请求,即建立一个虚连接,双方必须确保该连接成功建立后才可以进行下一步数据传输的操作。然后,在接收方一端启动定时器,接收方的数据处理进程接收发送方发送的数据,同时接收方根据定时计时器发送反馈消息;或判断接收到的报文数,当达到数据包累积计数器设定的数值时,向发送方发送反馈消息。

2.2.2 发送方发送报文

数据报文的发送,主要是发送方向接收方发送数据报文和消息报文,流程如图3所示,具体的算法为:

if(发送队列非空)

{

从队列中取出消息;

if (消息类型为数据包)

发送数据包;

else 发送确认包;

}

else if (消息队列非空)

{

打包要发送的数据并将数据放入发送队列中;

套接口处当前序号加1;

}

3 实验结果与分析

3.1 开发环境

系统的编程实现是在Windows XP上进行的,使用的编程工具为Visual C++6.0。

3.2 系统测试

3.2.1 测试环境

本测试是是在无线通信网络下进行的,配置了两台计算机用作数据间收发的测试,操作系统为Windows XP。华为E261 3G上网卡两张,用于连接无线网络,测试拓扑结构如图4所示。

3.2.2 测试内容

本测试采用传输不同大小文件的方式来对数据速度进行测试,每次传输重复测试三次,然后取平均值作为参考数据,测试结果见表1和表2。其中,表1是在最大连接速率7.2Mbps环境下的测试结果,表2是在连接速率为2.2Mbps环境下的测试结果。

由表1可见,在移动通信的网络连接环境为7.2Mbps时,当传输1MB的数据时,TCP协议测试耗时9.75s,平均传输速度约为105KB/s;可靠UDP耗时8.25s,平均传输速度约为124KB/s。当传输数据为32MB时,TCP耗时295.89s,平均传输速度约为120KB/s;可靠UDP耗时197.05s平均传输速度约为168KB/s。

由表2可见,在移动通信的网络连接环境为2.2Mbps时,由于连接环境较差,测试文件并不大,当传输0..36s,平均传输速度约为21KB/s;可靠UDP耗时190.81s,平均传输速度约为43KB/s。

由此可得出:

(1) 可靠UDP传输协议的优势随着传输数据量的增大而越来越明显。

(2) 可靠UDP传输协议的优势随着网络环境的变差而越来越明显。

参考文献:

[1] Douglas E.Comer. 用TCP/IP进行网际互联——原理、协议与结构(第五版)[M]. 林瑶, 张娟, 王海,等译. 北京:电子工业出版社,2009.

[2] 王珏, 何秋燕, 王露凯.基于UDP 改进的可靠传输协议设计[J].电子世界,2014(22).

[3] 王继刚, 顾国昌, 徐立峰,等.可靠UDP数据传输协议的研究与设计[J].计算机工程与应用,2006(15):113-116.

[4] 靳海力.一种增强型可靠UDP的设计及应用[D].合肥:中国科学技术大学,2009.

[5] 王艳芳.基于UDP的数据可靠传输技术研究与应用[J].计算机工程与应用,2012(1).