安全可靠SRUDP协议的设计与实现
2013-08-20范华峰陈桢
范华峰 陈桢
常州机电职业技术学院 江苏 213164
0 引言
随着网络技术的不断发展,网络应用迅猛增长,高效安全可靠的传递信息被越来越多地关注。目前实现 IP 网络进行数据传输的方法主要有TCP传输控制协议和UDP 用户数据报协议。TCP是面向连接的传输协议,TCP在与对方通信前通过三次握手建立连接,保证了数据的可靠传输, 但是处理复杂, 效率不高, 占用资源较多。UDP 协议是面向非连接的传输协议,在进行通信前不必与对方先建立连接,而是直接向接收方发送数据,因此传输速度快、效率高并能支持海量并发连接。正是由于UDP 协议是无状态的, 使得UDP 协议无需连接管理连接,大大提高了 UDP 协议的传输速度,同时也使得 UDP协议存在安全性和可靠性差的缺点。本文针对 UDP 协议安全性和可靠性不足问题进行了深入的研究,用安全确认技术解决了丢包、失序和重包问题,设计出一种基于 UDP 的安全可靠数据传输协议,称为 Security Reliable UDP(SRUDP), 同时也对该对该协议进行了实现。
1 SRUDP体系结构
RUDP协议就是在TCP/IP协议层UDP层与应用层之间加入了安全确认层(Security ACK),如图1所示,安全确认层保证了的数据的安全可靠的传输,从而形成了一个能安全可靠传输的五层体系结构。
图1 SRUDP体系结构
2 协议的原理
SRUDP是一种安全可靠数据传递协议,因此保证数据安全可靠传递的本质就是要使用一种安全确认技术,下面我们将详细介绍在安全确认层对UDP通讯协议的改进。
2.1 SA层数据报文格式
为了实现数据的安全性和可靠性,因此设计了SA层数据报文如图2所示。
图2 SA层数据报文格式
其中:StartFlag和EndFlag是报文开头和结束标记(4字节),ACK为确认包标志(4字节),数据校验值是由包序列号与 Payload合并后通过某种算法得到的加密串,这里采用MD5算法(16字节),消息类型定义了Payload数据的编码格式(4字节),包序列号由应用层产生要发送数据时序列号自动累加,至表示最大值时置0(4字节),Payload是应用层传输的数据。
2.2 数据发送流程
SRUDP发送数据前无需先建立连接,而是直接将应用层数据放入PAYLOAD域中,同时产生包序列号,对要用户数据和包序列号进行 MD5,计算结果放入数据校验值域中,StartFlag和EndFlag为用户自定义数据开始和结尾标识,消息类型为用户对应用层数据编码说明,默认值为0,ACK域为数据确认域,因此发送数据时该域的值为0。数据通过UDP包发送后将SA层数据报文放入以MD5值为Key的发送哈希表中,等待接收端对该报文的确认。若在指定的时间内接收到该报文的确认,则删除发送哈希表中对应的Key,若未收到确认包,则对发送哈希表的数据进行重复发送,直至达到指定的次数为止。数据发送流程如图3所示,重复发送流程如图4所示,确认包接收处理流程如图5所示。
图3 数据发送流程
图4 重复发送流程
图5 确认包处理流程
2.3 数据接收流程
数据到达接收端后,接收端根据SA的数据报文格式填充各域并对数据进行验证,若 StartFlag和 EndFlag合法且Payload数据域加上包序列号进行MD5值计算后与接收到的数据校验值一致,则说明数据是正确的,向发送端发送确认数据包,确认数据包格式报文中消息类型、包序列号和Payload域为空,其它域与接收到的数据一致。
3 协议的实现
SRUDP协议实现采用java6开发语言,定义了数据通信的基础类:接收和发送队列节点的类型类(BufferNode)、发送哈希表节点类(MapNode)、共享数据类(ShareData)、接收数据回调接口(IntCallBack)、UDP工具类(UdpUtil)、发送线程类(SendProc)、接收线程类(ReceiveProc)和重发线程类(TimingProc),共享数据类是定义和管理和控制收发队列和发送哈希表的控制类,定义如下:
4 结束语
UDP在数据通信方面的效率远远优于TCP数据传输协议,本文对UDP协议的不足进行了协议扩展,引入了SA层,形成了较完善的SRUDP数据传输模型,很好的解决了UDP在数据传输安全性和可靠性方面的缺陷。目前,SRUDP 协议已成功应用在我院上网认证系统中并取得了很好的效果,可以预见安全可靠 UDP协议将在网络通信领域有着很大的实用性和推广价值。
[1]Bova T,Krivoruchka T.Reliable UDP Protocol.draft-ietfsigtranreliable-udp-00.txt.Cisco Systems.1999.
[2]王艳芳,戴永,刘东华,孔华威,曾艳艳.基于UDP的数据可靠传输技术研究与应用[J].计算机工程与应用.2010.
[3]王大羽,陈莹.基于 UDP的协议可靠性传输设计与实现.福建电脑[J].2009.
[4]尹然然.基于UDP 协议的可靠性改进协议[J].电脑知识与技术.2010.