首页> 中国专利> 使用UDP协议进行数据传输的方法

使用UDP协议进行数据传输的方法

摘要

本发明涉及一种可使用UDP协议进行可靠数据传输的方法。使用UDP协议进行可自动链路恢复的数据传输方法,包括如下过程:(1)发送端和接收端之间进行连接握手过程;(2)发送端向接收端发送zpc_data命令数据报文;(3)接收端收到zpc_data命令数据报文后,定时向发送端发送zpc_ack确认数据报文;(4)数据包发送端和接收端之间关闭连接;过程(1)中的连接握手过程采用如下步骤,第一,发送端发送zpc_conn数据报文到接收端的预定UDP端口;第二,接收端收到来自发送端的zpc_conn数据报文后,同样发送zpc_conn数据报文到发送端。发送端和接收端的连接更加快速、简单,并无需上层应用程序的参与。

著录项

  • 公开/公告号CN101699797A

    专利类型发明专利

  • 公开/公告日2010-04-28

    原文格式PDF

  • 申请/专利权人 珠海网博信息科技有限公司;

    申请/专利号CN200910193881.2

  • 发明设计人 周华雄;汪明珠;陈陵;徐洪;

    申请日2009-11-13

  • 分类号H04L12/56(20060101);H04L29/06(20060101);

  • 代理机构44100 广州新诺专利商标事务所有限公司;

  • 代理人黄玉珏

  • 地址 519020 广东省珠海市珠海吉大白莲路184号立体科技大厦5楼

  • 入库时间 2023-12-17 23:44:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-12-28

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/56 变更前: 变更后: 申请日:20091113

    专利权人的姓名或者名称、地址的变更

  • 2012-07-11

    授权

    授权

  • 2010-06-23

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20091113

    实质审查的生效

  • 2010-04-28

    公开

    公开

说明书

技术领域

本发明涉及一种在计算机软件和互联网中进行数据传输的方法,尤其涉及一种可使用UDP协议进行可靠数据传输的方法。

背景技术

随着互联网接入技术的变化和各种新型的互联网应用不断涌现,传统的互联网数据传输协议(TCP协议和UDP协议)已经不能完全满足新型互联网应用对数据传输的要求。传统的TCP协议和UDP协议互有优缺点。UDP协议的优点是,建立连接方便,无需知道对方的物理地址,不受互联网防火墙和NAT网关的影响;缺点是不够可靠,容易出现数据报的丢失。而TCP协议的优缺点则与UDP协议正相反。对此的描述已经在申请号为200710094232.2的中国专利申请文件(下称文件A)的背景技术部分记载,此处就不再详细描述。为解决基于UDP协议的数据传输的不可靠问题,文件A给出了具体的解决方案,即使用UDP协议进行可靠数据传输的方法。但是,文件A中所述的使用UDP协议进行可靠数据传输的方法仍具有如下缺点:

第一,该技术方案完全模拟了TCP协议的三步握手,在网络情况较差的情况下,出现连接失败时,需要上层应用程序重复尝试,增加了上层应用程序的干预工作量。而且握手过程的三步(即“发送端发送TPCMD_CONNECT命令数据包到接收端”、“接收端发送TPCMD_CONNECT_ACK命令数据包到发送端”、“发送端发送TPCMD_CONNECT_EST命令数据包到接收端”)只要有一步失败,则本次握手过程失败,需要应用层参与重现尝试。所以,要建立连接比较复杂。

第二,文件A中所述的使用UDP协议进行可靠数据传输的方法不具有对端异常自动链路恢复功能。链路中断主要有两种情形,其一是网络中断,此类中断可以看做是网络延时,文件A中所述的使用UDP协议进行可靠数据传输的方法可以实现此类中断的自动链路恢复;其二是进行数据传输的两端中有一端异常(如程序异常恢复、程序重启、程序通讯模块初始化等),这类中断需要数据传输的两端重新连接,文件A中所述的使用UDP协议进行可靠数据传输的方法无法实现这类中断的自动链路恢复。

发明内容

本发明克服了现有技术中的不足,本发明的目的是提供一种,该数据传输方法中,发送端和接收端的连接更加快速、简单,并无需上层应用程序的参与。

使用UDP协议进行可自动链路恢复的数据传输方法,包括如下过程:

(1)发送端和接收端之间进行连接握手过程;

(2)发送端向接收端发送zpc_data命令数据报文,此过程中,将发送端发出的zpc_data命令数据报文保存到发送队列中,并在接收端回应后再将已发送的zpc_data命令数据报文从发送数据队列中删除;

(3)接收端收到zpc_data命令数据报文后,定时向发送端发送zpc_ack确认数据报文,此过程中,接收端接收到发送端发来的zpc_data命令数据报文后,按照所述zpc_data命令数据报文的序列号将有效数据放入接收数据序列中,接收队列中的最小序号和期望序号相等,则链路的状态设置为可读,应用层通过状态查询,根据可读状态信息而读取接收队列数据,底层同时更新期望序号,并删除已读数据;过程(2)和过程(3)重复执行;

(4)数据包发送端和接收端之间关闭连接;

其中,

所述过程(1)中的连接握手过程采用如下步骤,

第一,发送端发送zpc_conn数据报文到接收端的预定UDP端口;

第二,接收端收到来自发送端的zpc_conn数据报文后,同样发送zpc_conn数据报文到发送端;发送端收到来自接收端的zpc_conn数据报文后,连接握手过程完成。

进一步的技术方案是,

发送端如果在预定时间内没有收到zpc_ack确认数据报文,发送端将未确认的zpc_data命令数据报文重新发送。

上述数据传输方法中,发送端和接收端的握手过程采用两步握手,取消了文件A所述的发送端发送TPCMD_CONNECT_EST数据包的步骤,也就是,只要发送端和接收端均相对方发送一次数据即可,无需发送端在发送确认数据。发送端和接收端可以相互发送数据即表明两者相互之间是“透明”的。发送端和接收端的连接更加快速、简单。上述连接方法采用了相互发现方式,在上层应用层只需要设置发现尝试次数,通讯层就会按照一定的周期尝试发现对方,提高发现成功率和降低上层干预。

本发明的另一目的是提供一种使用UDP协议进行数据传输方法,该方法可以实现发送端或者接收端异常时的自动链路恢复。

为了实现上述另一目的,本发明在前述实现第一目的的技术方案基础上增加如下技术特征:

在执行过程(2)或者过程(3)期间,如果发送端发生异常,则重新执行过程(1),此后进入过程(2)、(3)继续进行剩余数据的传输;如果接收端发生异常,接收端将从收到发送端发送的最近一次的zpc_data命令数据报文丢弃,并向发送端发送zpc_recon通讯重连通讯重连数据报文,发送端收到zpc_recon数据报文后,重新对积压未发送的数据排序待发,接收的数据排序提交应用层处理并初始化接受数据队列,再重新执行过程(1),此后进入过程(2)、(3)继续进行剩余数据的传输。

在接收端出现异常时,接收端与发送端不再“透明”,对于接收端来说,发送端发送的zpc_data命令数据报文是从身份不确定的发送端发送的,因此,接收端丢弃该zpc_data命令数据报文,同时要求发送端重新建立连接,等待连接过程完成后,被丢弃的zpc_data命令数据报文会重新发送,继续进行数据传输过程。实现接收端和发送端异常时的自动链路恢复。

进一步的技术方案是,

发送端和接收端的每个数据报文均封装协议头,并且对封装协议头的整个新数据报文进行加密,然后发送,对zpc_data命令数据报文非加密存入发送队列,重复发送时再加密发送;

接收端收到数据报文后,先对数据报文解密,然后根据所述协议头的信息处理信息报文。

附图说明

图1是本发明数据传输方法中发送端和接收端正常通讯过程的示意图;

图2是本发明数据传输方法中出现网络异常恢复通讯过程的示意图;

图3是本发明数据传输方法中出现对端异常自动恢复通讯过程的示意图;

具体实施方式

参见图1,使用UDP协议进行可自动链路恢复的数据传输方法,包括如下过程:

(1)发送端和接收端之间进行连接握手过程,及过程S1,该链接握手过程采用如下步骤,

第一,发送端发送zpc_conn数据报文到接收端的预定UDP端口;

第二,接收端收到来自发送端的zpc_conn数据报文后,同样发送zpc_conn数据报文到发送端;发送端收到来自接收端的zpc_conn数据报文后,链接握手过程完成。

(2)发送端向接收端发送zpc_data命令数据报文,此过程中,将发送端发出的zpc_data命令数据报文保存到发送队列中,并在接收端回应后再将已发送的zpc_data命令数据报文从发送数据队列中删除;

(3)接收端收到zpc_data命令数据报文后,定时向发送端发送zpc_ack确认数据报文,此过程中,接收端接收到发送端发来的zpc_data命令数据报文后,按照所述zpc_data命令数据报文的序列号将有效数据放入接收数据序列中,接收队列中的最小序号和期望序号相等,则链路的状态设置为可读,应用层通过状态查询,根据可读状态信息而读取接收队列数据,底层同时更新期望序号,并删除已读数据;过程(2)和过程(3)重复执行;过程(2)和过程(3)即为图中的过程S2。期望序号实际上表明应用层需要接收的数据包的序号,该期望序号从1开始。一个待发送的数据可能需要分成n个数据包进行发送,n值在协议头中标明。因此,对于一个待发送数据来说,期望序号是从1到n,这样可以保证应用层接收数据的有序性。

(4)数据包发送端和接收端之间关闭连接,即过程S3。

在过程S2中,发送端如果在预定时间内没有收到zpc_ack确认数据报文,发送端将未确认的zpc_data命令数据报文重新发送,这里所说的预定时间可以由编程人员自行设定。

参见图2,网络出现异常时,发送端发送的zpc_dada命令数据报文被丢失,或者接收端对zpc_data的数据报文的zpc_ack确认数据报文丢失,发送端将未确认的数据报文定时重发,并根据确认的丢失比例进行发送速度调整,降低网络的拥堵,接收端根据zpc_data数据报文序号进行重组排序,保证数据报文的正确可靠。网络恢复后,发送速度根据发送确认的丢失比例降低逐步恢复,最终将积压数据发送至对端。通讯链路自动回复正常。网络异常的恢复过程中,分布式计算两端(发送端和接收端)是透明的,即两者无需重新建立连接。

在执行过程(2)或者过程(3)期间,如果发送端发生异常,则重新执行过程(1),此后进入过程(2)、(3)继续进行剩余数据的传输;如果接收端发生异常,参见图3,接收端将从收到发送端发送的最近一次的zpc_data命令数据报文丢弃,并向发送端发送zpc_recon通讯重连数据报文,发送端收到zpc_recon通讯重连数据报文后,重新对积压未发送的数据排序待发,接收的数据排序提交应用层处理并初始化接受数据队列,再重新执行过程(1),此后进入过程(2)、(3)继续进行剩余数据的传输。

发送端和接收端的每个数据报文均封装协议头,并且对封装协议头的整个新数据报文进行加密,然后发送,对zpc_data命令数据报文非加密存入发送队列,重复发送时再加密发送;

接收端收到数据报文后,先对数据报文解密,然后根据所述协议头的信息处理信息报文。

所述协议头一般包括随机值、协议标识、协议版本、序列号、报文类型接收窗口大小和数据长度信息。

接收端收到数据报文并解密后,检验所述协议识别,对识别不通过的数据丢弃处理。

当发送端收到接收端的zpc_reconne通讯重连数据报文或者zpc_conn数据报文时,对发送队列积压数据重新从1开始按序编号,等待链路自动恢复后发送;

接收端接收到的每一个数据按序写入接收队列的排序位置,对序号位移超过接收窗口的数据报文丢弃,并对需要确认的报文序号记录,根据当前需要对zpc_data命令数据报文排序后检查期望序号和队列最小序号是否相等,如果相等则设置链路状态标志为可读状态,应用层通过查询此状态,读取数据,数据返回应用层后,从接收队列中删除,并且将期望序号+1;

当收到zpc_conn数据报文时,对积压在接收队列的数据报文按序排列提交应用层,并初始化接收队列控制信息,将期望序号初始化为1。

以上实施例描述仅用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号