APP下载

多端口自适应UDP通信协议的设计与实现研究

2019-12-01包盈盈许超峰谢亚林中国船舶重工集团公司第七二二研究所

数码世界 2019年4期
关键词:服务端通信协议监听

包盈盈 许超峰 谢亚林 中国船舶重工集团公司第七二二研究所

引言

在网络技术取得快速发展的过程中,网络行为模式日渐复杂,对网络通信传输的可靠性提出了更高要求。而在新型网络服务中,UDP发展存在通信传输数据丢失问题,无法满足网络通信要求。因此,需要完成多端口自适应UDP通信协议的设计与实现研究,从而使UDP协议取得较好发展。

1 UDP通信协议分析

作为无连接协议的一种,UDP在通信过程中无需在计算机间建立连接,能够同时作为应用的客户或服务器方。建立UDP应用,需要将一个Winsock控制时设置为“监听”状态,其他则需要采用Connect实现初始连接。采用该协议进行数据发送,需要在连接两端完成RemoteHost属性的设置,作为计算机名称,然后将其属性当成是第二个Winsock控制的LocalPort属性值,然后进行Bind方法申请。采用该方法将Winsock控制捆绑到本地端口,能够利用该端口进行“监听”,避免该端口被其他应用使用。在数据传输过程中,需要对计算机LocalPort属性进行设置,服务器计算机需要进行RemoteHost属性的设置,即采用计算机域名或IP地址,然后将其属性当成是客户计算机上的LocalPort属性。通过申请sendData,能够实现信息发送,在DataArrial事件中进行发送信息的获取。从UDP通信协议应用情况来看,采用该协议由于无需进行前源端与终端的连接,所以开销较小。但传输过程中容易出现拥塞,导致数据传输带宽和速度受到限制。一旦数据包传输遭遇线路噪音或被第三方篡改,UDP尽管能够对出错数据进行检测,但是会直接将损坏消息扔掉处理,导致通信可靠性较差。

2 多端口自适应UDP通信协议的设计

2.1 传输格式分析

针对UDP应用问题,设计多端口自适应UDP能够在通信拥塞时采用自适应方式将数据迁移至新端口链路上,确保数据能够得到实时传输,避免数据出现丢失问题。采用该协议进行通信传输,从格式上来看包含包头、块号、长度、数据内容和校验和五个部分,分别占用3、1、2、n、2个字节。其中,包头由head1-3组成,块号范围在0-255之间,0为第一次连接建立的块号,长度用于对整个消息块长进行记录,数据内容最大500个字,校验和可以采用累加和方式进行校验位的计算。在通信过程中,服务端需要先完成N个端口分配,然后利用整型数组LinKStatus进行各端口链路通信状态记录,完成各端口UDP通信初始化,然后进行协议通信。

2.2 协议通信流程

从协议通信流程来看,客户端首先需要利用多个端口进行0块通信包的发送,发出与服务器建立连接的请求。经过等待后,接收到回复的0块通信包,客户端会将LinkStatus[N]置1,说明端口已经建立通信链路。通过N1链路,客户端能够从1块通信包开始协议通信。需要进行数据发送,需要在通信包内进行数据内容的添加。在通信过程中,需要监听其他链路。在接收到回复通信包的块号后,确定块号与发送块号相等,客户端会认为数据包已经成功发送,然后进行下一个块号的发送。在回复的通信包不正确或未得到回复的情况下,客户端会重新进行通信包的发送,直至超过3次后,会将LinkStatus[N]置0,重新进行链路的建立。采用RMP算法,能够使数据通信迁移至新端口链路上,然后按照上述流程进行通信。在其他端口链路Nk监听发现通信包的情况下,说明服务端主动进行了链路迁移,客户端需要被动进行通信迁移,完成链路重建。从服务端通信流程上来看,其多个端口将同时等待进行通信包的接收。在其中一个端口接收到户,会进行通信包的回复,然后将LinkStatus[N]置1。在通信过程中,服务端会先用一个端口通信,并监听其他端口。在接收的块号与上次相同时,可以判定未实现正确通信包的接收。在回复客户端时,需要进行相同通信包的发送。如果未能正常进行块号数据接收,需要重新进行通信包的发送,超出3次需要进行链路迁移。服务端其他端口监听到通信包,说明客户端主动进行了链路迁移,服务端需要被动实现通信迁移。

2.3 通信链路算法

为实现上述流程,需要采用RMP算法。在重建链路时,由于N个链路中存在部分重建链路,遍历所有链路查找Nk将导致通信效率较低。在网络环境不佳的情况下,容易导致实时传输的数据出现丢失问题。采用RMP算法,针对每个链路带有的LinkStatus[N]状态标志,能够实现当前链路状态的标记,如果通信正常标记为1,处于初始化或重建状态标记为0。正常通信过程中,RMP算法能够根据各链路状态进行排序,然后进行结果存储。链路迁移时,可以从存储的队列Quese中进行第一个元素的提取,从而确定Nk。在协议通信过程中,各链路状态随机,为0或1,能够快速排序能够尽快完成标记,通常只需完成一次排序。此外,为避免链路迁移和数据收发过程中出现数据丢失问题,需要进行环形缓冲区的设计,利用其附带读写指针进行数据存储。在初始状态下,指针指向缓冲区起始地址,缓冲区内容为空。在发送数据时,可以移动指针进行数据写入,使得读指针与写指针状态不同。移动读指针,可以进行数据读取。在指针达到最大化状态时,需要进行指针重置,以便实现循环读写。

3 多端口自适应UDP通信协议的实现

3.1 模型建立

在协议实现方面,需要采用Simulink进行建模仿真,完成客户端和服务端模型的搭建,对协议通信状态转换和逻辑处理情况进行分析和判断,确定协议能够保证实时数据传输的完整性。从客户端主动迁移情况来看,模型在迁移到新链路时将进入RMP_State状态。采用RMP算法实现多端口处理,能够将队列中Queue[0]迁移至其他链路中。在模型操作中,需要对快速排序Quick-Sort函数进行调用,实现队列操作。客户端模型可以对链路回复数据进行监听,实现被动迁移,进入Listen_State状态。调用Listen_Link函数,能够监听iPort以外链路,将状态标志iLStatus返回,实现iPort数值更新,实现新链路通信连接。

3.2 仿真分析

采用PC机进行仿真验证,利用Matlab进行仿真,在[0-1000s]时间内两台计算机随机产生400个字符,进行数据周期性发送。通过在UDP发送函数模型中进行脉冲中断信号的添加,定期进行中断信号的发送,能够对链路拥塞进行模拟,导致通信数据发送失败。从通信包在各链路分布情况来看,能够发现采用多端口自适应UDP能够使通信包在各链路连续分布,通过链路迁移实现数据包的传输,并且数据包并未出现数据丢失问题。在中断发生后,协议丢包率依然为0。由此可见,采用设计的多端口自适应UDP协议,能够保证协议通信的可靠性,因此能够在复杂网络中得到应用。

4 结论

通过研究可以发现,在UDP协议通信流量不断增加的情况下,容易发生网络拥塞问题,导致协议在通信过程中出现数据丢失的问题,影响协议的推广应用。针对这一问题,设计多端口自适应UDP协议,能够在通信包无法正常传输时进行链路迁移,重新进行端口选择和链路搭建,保证数据得到可靠传输,因此能够满足复杂网络的通信需求。

猜你喜欢

服务端通信协议监听
英国风真无线监听耳机新贵 Cambridge Audio(剑桥)Melomania Touch
千元监听风格Hi-Fi箱新选择 Summer audio A-401
多人联机对战游戏的设计与实现
车载网络通信协议标准化问题研究
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
电动汽车充电接口及通信协议新国标发布
监听“有”道 ——杰夫(美国)
基于R8C的汽车OBD通用故障诊断仪设计
SIP协议系统模型的形式化研究