基于混合自动重传请求的数据传输方法及系统与流程

文档序号:11517608阅读:312来源:国知局
基于混合自动重传请求的数据传输方法及系统与流程
本发明涉及网络通信
技术领域
,具体涉及基于混合自动重传请求的数据传输方法及系统。
背景技术
:现有技术一般在实时直播时采用rtmp(realtimemessagingprotocol)传输协议,但是由于rtmp协议是基于tcp(transmissioncontrolprotocol,传输控制协议)协议而开发的,而tcp协议为了做到可靠性,从而丢弃了一些实时性,例如tcp的慢门限阈值以及tcp的握手协议等等。所以我们在看使用rtmp协议作为通信协议的直播产品中一般都存在2-5秒的数据延迟现象。tcp协议还具有累积延迟的现象,当网络状态差时,tcp协议会将数据包缓存起来,从而导致更多的累积延迟。由于rtmp协议存在上述问题,所以在实时性要求比较高的产品或者行业中rtmp无法达到产品需求,例如直播行业,远程控制行业等等。技术实现要素:针对现有技术中的缺陷,本发明提供的基于混合自动重传请求的数据传输方法及系统,通过采用精准重传机制在保证数据传输的实时性的同时又兼顾了可靠性。第一方面,本发明提供的一种基于混合自动重传请求的数据传输方法,包括:步骤s1,发送端将待发送的数据拆分为多个数据包,为每个数据包附上唯一的标识,将所述数据包发送给接收端,并将所述数据包存入待确认存储区中;步骤s2,所述接收端对接收到的所述数据包进行校验,将校验不成功的数据包对应的标识发送给所述接收端;步骤s3,所述发送端根据接收到的标识从所述待确认存储区中提取需要重发的数据包,并发送给所述接收端。本实施例提供的基于混合自动重传请求的数据传输方法,将待发送数据拆分为多个数据包后进行发送,接收端根据接收到的数据包情况,确定需要重传的数据包反馈给发送端,这样发送端就只需重传丢包的数据包,而无需重传整个数据包,减少了重发数据包的数量,降低了带宽的压力,提高了数据传输效率,在保证数据传输的实时性的同时又兼顾了可靠性。优选地,所述步骤s1中还包括:根据所述数据包生成冗余数据包,并发送给所述接收端;所述步骤s2具体包括:所述接收端对接收到的所述数据包进行校验;若校验不成功的数据包数量不大于冗余数据包的数量,则根据所述冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识发送给所述发送端。优选地,所述步骤s1中,所述根据所述数据包生成冗余数据包,包括:对所述数据包进行fec编码,生成冗余数据包;所述步骤s2中,所述根据冗余数据包恢复校验不成功的数据包,包括:对所述冗余数据包进行fec解码处理,恢复校验不成功的数据包。优选地,所述步骤s1具体包括:发送端将待发送的数据拆分给多个数据包;将所述数据包分组发送给所述接收端,并将分组后的数据包存入待确认存储区中,其中,每个组附有分组编号,每个组中的数据包附有为唯一的标识;生成每组数据包对应的冗余数据包,并发送给所述接收端;所述步骤s2具体包括:所述接收端对接收到的每组数据包分别进行以下处理:对数据包进行校验;若校验不成功的数据包数量不大于冗余数据包的数量,则根据所述冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识以及分组编号发送给所述接收端;所述步骤s3具体包括:所述接收端根据接收到的标识和组别编号,从所述待确认存储区中提取需要重发的数据包,并发送给所述接收端。优选地,每组数据包的数量不超过32个。优选地,所述步骤s2中,将校验不成功的数据包对应的标识发送给所述接收端,包括:将校验不成功的数据包对应的标识按照ack协议发送给所述接收端。优选地,所述步骤s1中,发送端将待发送的数据拆分为多个数据包,包括:发送端将待发送数据拆分为多个数据包,每个数据包的大小不超过548个字节。优选地,还包括:在数据包传输过程中,所述发送端自动测量带宽,根据测量结果动态调整发送速率。第二方面,本发明提供的一种基于混合自动重传请求的数据传输系统,包括:发送端,用于将待发送的数据拆分为多个数据包,为每个数据包附上唯一的标识,将所述数据包发送给接收端,并将所述数据包存入待确认存储区中,根据接收到的标识从所述待确认存储区中提取需要重发的数据包,并发送给所述接收端;接收端,用于对接收到的所述数据包进行校验,将校验不成功的数据包对应的标识发送给所述接收端。本实施例提供的基于混合自动重传请求的数据传输系统,将待发送数据拆分为多个数据包后进行发送,接收端根据接收到的数据包情况,确定需要重传的数据包反馈给发送端,这样发送端就只需重传丢包的数据包,而无需重传整个数据包,减少了重发数据包的数量,降低了带宽的压力,提高了数据传输效率,在保证数据传输的实时性的同时又兼顾了可靠性。优选地,所述发送端还用于:根据所述数据包生成冗余数据包,并发送给所述接收端;所述接收端具体用于:接收端对接收到的所述数据包进行校验;若校验不成功的数据包数量不大于冗余数据包的数量,则根据所述冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识发送给所述发送端。附图说明图1为本发明实施例所提供的一种基于混合自动重传请求的数据传输方法的流程图;图2为一个分组中存在丢包数量小于等于冗余包数量的情况;图3为一个分组中存在丢包数量大于冗余包数量的情况。具体实施方式下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。如图1所示,本实施例提供了一种基于混合自动重传请求的数据传输方法,包括:步骤s1,发送端将待发送的数据拆分为多个数据包,为每个数据包附上唯一的标识,将数据包发送给接收端,并将数据包存入待确认存储区中。步骤s2,接收端对接收到的数据包进行校验,将校验不成功的数据包对应的标识发送给接收端。步骤s3,发送端根据接收到的标识从待确认存储区中提取需要重发的数据包,并发送给接收端。本实施例提供的基于混合自动重传请求的数据传输方法,将待发送数据拆分为多个数据包后进行发送,接收端根据接收到的数据包情况,确定需要重传的数据包反馈给发送端,这样发送端就只需重传丢包的数据包,而无需重传整个数据包,减少了重发数据包的数量,降低了带宽的压力,提高了数据传输效率,在保证数据传输的实时性的同时又兼顾了可靠性。其中,步骤s2中,将校验不成功的数据包对应的标识发送给接收端,包括:将校验不成功的数据包对应的标识按照ack(acknowledgement,确认字符)协议发送给接收端。其中,拆分的每个数据包的大小不超过548个字节,这样可以保证数据的传输效率并尽可能的降低丢包率。基于上述方法实施例,为了进一步降低数据传输效率,本实施例还提供了另一种基于混合自动重传请求的数据传输方法,包括:步骤s101,发送端将待发送的数据拆分为多个数据包,为每个数据包附上唯一的标识,将数据包发送给接收端,并将数据包存入待确认存储区中,根据数据包生成冗余数据包,并发送给接收端。其中,使用了向前纠错(fec,forwarderrorcorrection)技术生成冗余数据包,具体包括:对数据包进行fec编码,生成冗余数据包。利用fec技术,达到改善误码率、提高通信可靠性的目的。其中,拆分的每个数据包的大小不超过548个字节,这样可以保证数据的传输效率并尽可能的降低丢包率。步骤s102,接收端对接收到的数据包进行校验,若校验不成功的数据包数量不大于冗余数据包的数量,则根据冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识发送给发送端。其中,根据冗余数据包恢复校验不成功的数据包,包括:对冗余数据包进行fec解码处理,恢复校验不成功的数据包。假设一个组的数据包总数10,冗余数据包的数量为2。如图2所示,分组中5号和8号数据包丢包(即校验不成功的数据包),由于冗余数据包数量大于等于丢包数量,因此被丢的数据包可以通过ldpc算法直接计算恢复,所以数据包5号和8号不需要进行重传请求。如图3所示,分组中3号、5号、8号、9号数据包丢包,由于丢包数量大于冗余包数量,因此这4个数据包需要发送方重新进行发送,重传方式采取精准重传的方式进行。精准重传方法按照ack协议将校验不成功的数据包对应的标识发送给接收端,如图3所示,具体为:将分组中获取到的数据包标记为1,丢包的数据包标记为0,则可以求出分组返回的接收状态信息为1101011001=857,当分组中最后一次接收到数据包的时间已经大于2倍的rto(retransmissiontimeout,超时重传机制)时长时,则向发送端发送重传请求,重传请求中包括分组编号以及分组数据包传输情况信息(即数字857),这样当发送端接收到重传请求后,可以针对丢包情况进行重传(重传数据包3,数据包5,数据包8和数据包9)。步骤s103,发送端根据接收到的标识从待确认存储区中提取需要重发的数据包,并发送给接收端。在传输过程中使用了冗余数据,在数据包未丢失的情况下,冗余数据包不发挥作用,但是当分组中有数据包丢失的时候,使用fec技术从冗余数据包中对于丢失数据包进行重新计算恢复。由于采用了ldpc(lowdensityparitycheckcode,即低密度奇偶校验码)算法,因此计算速度非常高效。基于上述方法实施例,由于待发送的数据的大小无法确定,为了使本实施例的方法适应不同体量的传输数据,本实施例还提供了另一种基于混合自动重传请求的数据传输方法,包括:步骤s201,发送端将待发送的数据拆分给多个数据包;将数据包分组发送给接收端,并将分组后的数据包存入待确认存储区中,其中,每个组附有分组编号,每个组中的数据包附有为唯一的标识;生成每组数据包对应的冗余数据包,并发送给接收端。其中,使用了向前纠错(fec,forwarderrorcorrection)技术生成冗余数据包,具体包括:对数据包进行fec编码,生成冗余数据包。利用fec技术,达到改善误码率、提高通信可靠性的目的。其中,拆分的每个数据包的大小不超过548个字节,这样可以保证数据的传输效率并尽可能的降低丢包率。其中,每组包含的数据包数量和生成的冗余数据包数据量是预先设置好的。步骤s202,接收端对接收到的每组数据包分别进行以下处理:对数据包进行校验;若校验不成功的数据包数量不大于冗余数据包的数量,则根据冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识以及分组编号发送给接收端。其中,根据冗余数据包恢复校验不成功的数据包,包括:对冗余数据包进行fec解码处理,恢复校验不成功的数据包。其中,步骤s202中,将校验不成功的数据包对应的标识发送给接收端,包括:将校验不成功的数据包对应的标识按照ack协议发送给接收端。由于采用ack协议传输的数据为32位,因此,每组数据包的数量不超过32个。步骤s203,接收端根据接收到的标识和组别编号,从待确认存储区中提取需要重发的数据包,并发送给接收端。通过对拆分的数据包进行分组传输,保证了本实施例的方法能够适应不同大小的数据。本实施例提供的基于混合自动重传请求的数据传输方法适用于任何数据传输系统,尤其是对于实时性要求非常高的通信系统,比如远程控制行业、视频直播行业。以传输视频为例,说明本实施例方法的应用。首先对发送端和接收端进行部署。发送端部署步骤:初始化过程,设置相应的回调函数,相关参数等(其中包括分组中数据包的数量,分组中冗余包的数量,跳帧的时间间隔等);启动连接接收方接收端部署步骤:初始化过程,设置相关回调以及参数(参数信息同发送端相同);启动连接监听。部署好发送端和接收端后,即可进行数据传输,具体过程包括:步骤s301,发送端将待发送的一帧数据拆分给多个数据包;将数据包分组发送给接收端,并将分组后的数据包存入待确认存储区中,其中,每个组附有分组编号,每个组中的数据包附有为唯一的标识;生成每组数据包对应的冗余数据包,并发送给接收端。其中,使用了向前纠错(fec,forwarderrorcorrection)技术生成冗余数据包,具体包括:对数据包进行fec编码,生成冗余数据包。利用fec技术,达到改善误码率、提高通信可靠性的目的。其中,拆分的每个数据包的大小不超过548个字节,这样可以保证数据的传输效率并尽可能的降低丢包率。其中,每组包含的数据包数量和生成的冗余数据包数据量是预先设置好的。步骤s302,接收端对接收到的每组数据包分别进行以下处理:对数据包进行校验;若校验不成功的数据包数量不大于冗余数据包的数量,则根据冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识以及分组编号发送给接收端;将检验成功的数据包插入到帧管理区中。其中,根据冗余数据包恢复校验不成功的数据包,包括:对冗余数据包进行fec解码处理,恢复校验不成功的数据包。步骤s303,接收端根据接收到的标识和组别编号,从待确认存储区中提取需要重发的数据包,并发送给接收端。步骤s304,当帧管理区中的数据包完整的组成一帧数据后传递给上层进行下一步处理。根据实际测试发现使用rtmp协议数据传输的延迟时间为2-5秒,而采用本实施例的方法后,数据传输的延迟可以控制在200毫秒以内,在网络好的情况下延迟可以控制在100毫秒左右。基于上述任一方法实施例,本实施例还包括:在数据包传输过程中,发送端自动测量带宽,根据测量结果动态调整发送速率。具体为:记录数据包的发送次数,若数据包的发送次数为1,则提高发送速率,若数据包的发送次数大于1,则降低发送速率。上述调整发送速率的方法简单、高效,不会占用过多网络资源,保证使用过程中不造成网络的过大压力。为了提高测量的精度,测量带宽还可以通过以下方式实现:发送端以一定的速率v发送k个等长的探测包,在接收端计算接收到的探测包的单向延迟,如果探测包的单向延迟呈现增加的趋势,那么发送速率v大于可用带宽a,相应的,当探测包的单向延迟呈现非增加的趋势时,v小于a。探测包单向延迟趋势是通过srdeg和srdet来判定的,接收端通过计算这两个参数,来判断探测流的单向延迟的变化和网络性能的变化,根据得出的结果自适应调整发送端的发送速率,使之逼近可用带宽,从而快速检测到网络的可用带宽值。参数srdeg=(sravg-srmin)/(srmax-srmin),srdet=(sravg/srmax)-(srmin/sravg),其中sravg、srmin、srmax分别是k个数据包的平均传输延迟、最小传输延迟和最大传输延迟。使用的参数srdeg和srdet,有助于提高了算法的收敛速度。在测量带宽开始时,如果已知瓶颈链路的带宽,则以瓶颈链路带宽发送,否则发送背靠背的报文,得到一个对瓶颈链路带宽的大致估计。在测量过程中,接收端对输出速率进行调整,调整后的速率作为发送端下一次的发送速率。发送端以调整后的速率而不直接以输出端的输出速率发送数据包串,是因为背景流具有突发性,所以即使在探测包速率小于可用带宽的情况下,也可能发生阻塞,使探测结果发生偏差,所以如果直接以输出速率作为下一次的发送速率会造成可用带宽的测量值偏小。在这种情况下,应该对输出速率进行调整。设发送速率为rs,输出速率为rt,则调整关系式为rs=rt/adjusted_val。adjusted_val是大于0小于1的参数,取值随着背景流的变化而变化。通过这样的调整,减小了算法的复杂度,提高了算法的精确度。当数据传输网络中存在多个接收端时,为了提高重传的效率,发送端在接收到多个接收端返回的重传请求后,根据重传请求中的接收状态信息,提取需要重传的数据包,对数据包进行编码后得到一个组合数据发送给各个请求重传的接收端;各个接收端可以根据解码规则得到自己需要的丢失数据包。如表1所示,给出了接收端r1和r2的接收状态信息,发送端将数据包a1和a2异或运算后得到组合数据包a1+a2,并将其发送给接收端r1和r2;r1接收到a1+a2后将其与a2进行异或运算得到a1。同理,r2将a1+a2与a1进行异或运算得到a2。这样,发送端只需一次重传,r1和r2就可以恢复丢失的数据包,提高了重传的效率。表1ra1a2a3a4a5a6a7…r10101100…r21001111…基于与上述基于混合自动重传请求的数据传输方法相同的发明构思,本实施例还提供了一种基于混合自动重传请求的数据传输系统,包括:发送端,用于将待发送的数据拆分为多个数据包,为每个数据包附上唯一的标识,将数据包发送给接收端,并将数据包存入待确认存储区中,根据接收到的标识从待确认存储区中提取需要重发的数据包,并发送给接收端;接收端,用于对接收到的数据包进行校验,将校验不成功的数据包对应的标识发送给接收端。本实施例提供的基于混合自动重传请求的数据传输系统,将待发送数据拆分为多个数据包后进行发送,接收端根据接收到的数据包情况,确定需要重传的数据包反馈给发送端,这样发送端就只需重传丢包的数据包,而无需重传整个数据包,减少了重发数据包的数量,降低了带宽的压力,提高了数据传输效率,在保证数据传输的实时性的同时又兼顾了可靠性。其中,发送端还用于:根据数据包生成冗余数据包,并发送给接收端;其中,接收端具体用于:接收端对接收到的数据包进行校验;若校验不成功的数据包数量不大于冗余数据包的数量,则根据冗余数据包恢复校验不成功的数据包;若校验不成功的数据包数量大于冗余数据包的数量,则将校验不成功的数据包对应的标识发送给发送端。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1