传输确认方法、装置、设备及存储介质
文献发布时间:2023-06-19 09:44:49
技术领域
本发明实施例涉及无线通信技术领域,尤其涉及一种传输确认方法、装置、设备及存储介质。
背景技术
目前,当发送端与接收端传输数据时,通常采用停等的方式进行,即发送端在向接收端发送一个数据包后,会暂停数据包的发送,以等待接收端反馈与该数据包对应的确认接收响应,在接收到确认接收响应后,才会继续发送下一个数据包。这种数据传输方式虽然能保证每个数据包都被接收端成功接收,但是发送端等待确认接收响应的时间较长,导致数据传输效率较低。
发明内容
本发明提供一种传输确认方法、装置、设备及存储介质,利用滑窗实现数据的批量发送,减少发送端等待确认接收响应的时间,提高数据传输效率。
第一方面,本发明实施例提供了一种传输确认方法,应用于发送端,包括:
如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;
发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;
如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;
根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据。
可选的,发送窗的当前长度等于发送窗对应的结束序列号与开始序列号的差值;
如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,包括:
如果检测到发送窗的当前长度小于长度上限,则检测是否存在待重传的数据,如果存在待重传数据,则选择序列号最小的待重传数据作为目标数据;
如果不存在待重传数据,则检测是否存在待发送新数据,如果存在待发送新数据,则选择一个待发送新数据作为目标数据。
可选的,发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度,包括:
如果目标数据为待发送新数据,则在发送目标数据至接收端之后,将发送窗对应的结束序列号更新为目标序列号,保持发送窗对应的开始序列号不变,并将目标数据存储至待确认缓存区中;
如果目标数据为待重传数据,则在发送目标数据至接收端之后,保持发送窗对应的开始序列号和结束序列号都不变,并将目标数据存储至待确认缓存区中。
可选的,如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息,包括:
如果接收到接收端反馈的确认接收消息,则解析确认接收消息,获取确认接收消息中与连续接收字段匹配的字段内容,并将字段内容作为与发送窗对应的连续接收信息;
获取确认接收消息中与间断接收字段匹配的字段内容,并将字段内容作为与发送窗对应的间断接收信息。
可选的,连续接收信息包括:接收端连续成功接收的最后一个数据对应的第一序列号;间断接收信息包括位图,位图表示待确认缓存区中序列号大于第一序列号的各待确认数据的接收情况;
根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据,包括:
将发送窗对应的开始序列号更新为第一序列号与1的和值,保持发送窗的结束序列号不变,并删除待确认缓存区内的序列号小于等于第一序列号的待确认数据;
根据位图中的各比特位与待确认缓存区内各待确认数据的序列号的映射关系,确定与位图中的各比特1分别对应的已接收序列号,以及与各比特0分别对应的未接收序列号;
删除待确认缓存区内与各已接收序列号对应的已确认数据,并将待确认缓存区内与各未接收序列号对应的待重传数据转存至待重传缓存区。
可选的,将待确认缓存区内与各未接收序列号对应的待重传数据转存至待重传缓存区,包括:
针对与各未接收序列号对应的待重传数据,获取待重传数据对应的已重传次数;
如果已重传次数小于重传上限,则将待重传数据转存至待重传缓存区;
如果已重传次数等于重传上限,则删除待重传数据,并且如果待重传数据对应的序列号等于发送窗对应的开始序列号,则将发送窗对应的开始序列号加1。
第二方面,本发明实施例还提供了一种传输确认方法,应用于接收端,包括:
如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;
响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;
发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据。
可选的,接收信息包括:连续成功接收的最后一个数据对应的第一序列号,以及接收到的最后一个数据对应的第二序列号;
根据目标数据中携带的目标序列号更新接收信息,包括:
将第一序列号与1的和值作为对比序列号,如果目标序列号等于对比序列号,则判断第一序列号与第二序列号是否相等;
如果相等,则将第一序列号和第二序列号同时更新为目标序列号,如果不相等,则记录目标序列号;
如果目标序列号大于对比序列号,则判断第一序列号与第二序列号是否相等;
如果相等,则记录目标序列号,并将第二序列号更新为目标序列号;
如果不相等,则当目标序列号大于第二序列号时,记录目标序列号,并将第二序列号更新为目标序列号;当目标序列号大于第一序列号与发送窗的长度上限的和值时,将第一序列号更新为目标序列号与发送窗的长度上限的差值;当目标序列号小于第二序列号时,记录目标序列号。
可选的,根据接收信息生成与发送端对应的确认接收消息,包括:
确定位图中的各比特位与序列号集合中的各序列号之间的映射关系,序列号集合中包括大于第一序列号并且小于等于第二序列号的所有序列号;
根据映射关系,将位图中与各记录的序列号对应的比特位设为1,将其余比特位设为0;
将第一序列号添加至确认接收消息数据格式中的连续接收字段位置,并将位图添加至间断接收字段位置,生成确认接收消息。
第三方面,本发明实施例还提供了一种传输确认装置,应用于发送端,包括:
数据获取模块,用于如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;
数据发送模块,用于发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;
消息接收模块,用于如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;
传输确定模块,用于根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据。
第四方面,本发明实施例还提供了一种传输确认装置,应用于接收端,包括:
数据接收模块,用于如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;
消息生成模块,用于响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;
消息发送模块,用于发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据。
第五方面,本发明实施例还提供了一种电子设备,设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例提供的传输确认方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例提供的传输确认方法。
本发明实施例的技术方案,发送端如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据,解决了现有技术中发送端等待确认接收响应的时间较长,数据传输效率较低的问题,利用滑窗实现数据的批量发送,减少发送端等待确认接收响应的时间,提高数据传输效率。
附图说明
图1a是本发明实施例一中的一种传输确认方法的流程图;
图1b是本发明实施例一中的一种数据发送的流程图;
图1c是本发明实施例一中的一种发送窗的更新示意图;
图2a是本发明实施例二中的一种传输确认方法的流程图;
图2b是本发明实施例二中的一种位图的构造示意图;
图3是本发明实施例三中的一种传输确认装置的结构示意图;
图4是本发明实施例四中的一种传输确认装置的结构示意图;
图5是本发明实施例五中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1a是本发明实施例一中的一种传输确认方法的流程图,本实施例可适用于发送端批量传输数据,并确认数据接收情况的情况,该方法可以由传输确认装置来执行,该装置可以由硬件和/或软件来实现,并一般可以集成在电子设备中,例如作为发送端的电子设备中。如图1a所示,该方法应用于发送端,包括:
步骤110、如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据。
其中,目标数据中携带目标序列号。
本实施例中,发送端是指发送数据的一端,与接收数据的接收端相对应。为了能够实现数据批量发送,发送端采用滑动窗口的方式控制数据传输,只要发送窗的长度没有达到设置的窗口的长度上限,发送端就可以继续发送数据。其中,发送窗的当前长度表示从第一个已发送但未被确认接收的数据开始,到最新发送的数据为止,所包括的数据总量,发送窗的长度上限表示在未获得确认接收消息之前,发送端最多可以发送的数据量,长度上限可以是8的整数倍。
本实施例中,为了便于后续确认各发送数据是否被成功接收,发送端在每个待发送的目标数据中都携带一个唯一标识该目标数据的目标序列号T_SN,并且,按照发送的先后顺序,每发送一个数据,序列号加1。例如,第一个发送数据的序列号为0,第二个发送数据的序列号为1,依次类推。
可选的,发送窗的当前长度等于发送窗对应的结束序列号与开始序列号的差值。
本实施例中,由于按照数据发送顺序,最先发送的数据如果确认被接收端收到,则发送窗就会后移一个位置,因此,发送窗的当前长度可以根据公式Window=(T_SN
可选的,如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,可以包括:如果检测到发送窗的当前长度小于长度上限,则检测是否存在待重传的数据,如果存在待重传数据,则选择序列号最小的待重传数据作为目标数据;如果不存在待重传数据,则检测是否存在待发送新数据,如果存在待发送新数据,则选择一个待发送新数据作为目标数据。
本实施例中,发送端有待发送缓存区、待重传缓冲区以及待确认缓存区三个缓存区,待发送缓存区用于存储应用层下发的数据,即尚未发送过的新数据,待确认缓存区用于存储已发送但未被确认的数据,待重传缓存区用于缓存需要重传的数据。当有数据存入待处理缓存区或待重传缓存区时,会触发发送端的数据发送行为,如图1b所示,此时会检测发送窗的当前长度,如果当前长度Window小于长度上限M,则说明可以发送数据,需要从待发送缓存区或者待重传缓存区中选择待发送的目标数据。
本实施例中,考虑到只有在前发送过的待重传数据被接收端成功接收,发送窗才可以进行位置后移,使得更多新的数据可以被发送,因此,当选择待发送的目标数据时,会优先查看待重传缓存区中是否存在等待重传的数据,如图1b所示,如果有,则从中选择序列号最小的待重传数据,即最先发送过的待重传数据,也即序列号等于发送窗的开始序列号的数据作为目标数据,如果待重传缓存区中不存在待重传数据,则查看待发送缓存区中是否存在待发送新数据,如果有,则从中随机选择一个待发送新数据,或者按照存储顺序选择一个待发送新数据作为目标数据,并在该目标数据中添加相应的目标序列号。
需要说明的是,当触发发送端的数据发送行为时,如果发送窗的当前长度Window等于长度上限M,则不作任何处理,只需等待接收确认接收消息。
步骤120、发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度。
本实施例中,在确定目标数据之后,可以将携带目标序列号的目标数据发送至接收端,并根据目标数据的类型,判断是否需要根据目标序列号更新发送窗的当前长度。
可选的,发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度,可以包括:如果目标数据为待发送新数据,则在发送目标数据至接收端之后,将发送窗对应的结束序列号更新为目标序列号,保持发送窗对应的开始序列号不变,并将目标数据存储至待确认缓存区中;如果目标数据为待重传数据,则在发送目标数据至接收端之后,保持发送窗对应的开始序列号和结束序列号都不变,并将目标数据存储至待确认缓存区中。
本实施例中,如果目标数据为待发送缓存区中的新数据,即其对应的目标序列号尚未在发送窗内,则在发送目标数据至接收端之后,需要在保持发送窗对应的开始序列号不变的同时,将发送窗对应的结束序列号更新为目标序列号,以表示目标数据为发送窗最新发送的数据,并将目标数据存储至待确认缓存区中,等待接收端反馈对目标数据的接收情况;如果目标数据为待重传数据,即其对应的目标序列号已经在发送窗内,则在发送目标数据至接收端之后,不需要对发送窗对应的开始序列号和结束序列号进行更新,只需将目标数据存储至待确认缓存区中,等待接收端反馈对目标数据的接收情况。
步骤130、如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息。
本实施例中,为了使得确认接收消息能够在反馈多个发送数据的接收情况的同时,使用最少的内存,发送端与接收端预先定义了与发送窗对应的确认接收消息的数据格式。针对接收端可以连续成功接收数据以及间断成功接收数据这两种情况,分别在确认接收消息的数据格式中设置了对应的字段,以用于指示接收端连续成功接收的数据以及间断成功接收的数据。
可选的,如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息,可以包括:如果接收到接收端反馈的确认接收消息,则解析确认接收消息,获取确认接收消息中与连续接收字段匹配的字段内容,并将字段内容作为与发送窗对应的连续接收信息;获取确认接收消息中与间断接收字段匹配的字段内容,并将字段内容作为与发送窗对应的间断接收信息。
本实施例中,如果接收到接收端反馈的确认接收消息,则根据预先定义的数据格式解析确认接收消息,可以在确认接收消息中找到连续接收字段和间断接收字段,将与连续接收字段匹配的字段内容作为与发送窗对应的连续接收信息,将与间断接收字段匹配的字段内容作为间断接收信息。
步骤140、根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据。
可选的,连续接收信息包括:接收端连续成功接收的最后一个数据对应的第一序列号;间断接收信息包括位图,位图表示待确认缓存区中序列号大于第一序列号的各待确认数据的接收情况;
本实施例中,连续接收信息用于指示接收端连续成功接收数据的情况,可以是接收端连续成功接收的最后一个数据对应的第一序列号R_SN
可选的,根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据,可以包括:将发送窗对应的开始序列号更新为第一序列号与1的和值,保持发送窗的结束序列号不变,并删除待确认缓存区内的序列号小于等于第一序列号的待确认数据;根据位图中的各比特位与待确认缓存区内各待确认数据的序列号的映射关系,确定与位图中的各比特1分别对应的已接收序列号,以及与各比特0分别对应的未接收序列号;删除待确认缓存区内与各已接收序列号对应的已确认数据,并将待确认缓存区内与各未接收序列号对应的待重传数据转存至待重传缓存区。
本实施例中,由于发送窗的开始序列号T_SN
本实施例中,位图对应序列号从T_SN
可选的,将待确认缓存区内与各未接收序列号对应的待重传数据转存至待重传缓存区,可以包括:针对与各未接收序列号对应的待重传数据,获取待重传数据对应的已重传次数;如果已重传次数小于重传上限,则将待重传数据转存至待重传缓存区;如果已重传次数等于重传上限,则删除待重传数据,并且如果待重传数据对应的序列号等于发送窗对应的开始序列号,则将发送窗对应的开始序列号加1。
本实施例中,针对经过多次发送之后还没有被接收端成功接收的数据,如果允许其继续重传,直至重传成功为止,则会导致发送窗一直无法后移,从而导致其他待发送的数据一直无法被传输,进而导致数据传输效率低下,为了解决该问题,可以为每个存入待确认缓存区的数据都设置一个生存期,当生存期内还没有收到该数据的确认接收消息,则删除该数据。例如,可以设置每个数据最多重传3次,如果经过3次重传还没有被成功接收,则删除该数据。如果该数据的序列号等于T_SN
本实施例通过在每个发送数据中携带一个对应的序列号,使得使用滑窗进行批量数据发送时,也可以准确得知各发送数据是否被接收端成功接收,即确定已发送数据中的待重传数据。
本发明实施例的技术方案,发送端如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据,解决了现有技术中发送端等待确认接收响应的时间较长,数据传输效率较低的问题,利用滑窗实现数据的批量发送,减少发送端等待确认接收响应的时间,提高数据传输效率。
实施例二
图2a是本发明实施例二中的一种传输确认方法的流程图,本实施例可适用于接收端生成与发送端发送的批量数据对应的确认接收消息,并反馈给发送端的情况,该方法可以由传输确认装置来执行,该装置可以由硬件和/或软件来实现,并一般可以集成在电子设备中,例如作为接收端的电子设备中。如图2a所示,该方法应用于接收端,包括:
步骤210、如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息。
本实施例中,接收端是指接收数据的一端,与发送数据的发送端相对应。目标序列号可以是在目标数据中携带的可以唯一标识该目标数据的序列号T_SN。由于发送端按照发送的先后顺序,每发送一个新数据,对应的序列号加1,例如,发送的第一个新数据的序列号为0,第二个新数据的序列号为1,依次类推,因此,接收端可以根据接收的目标数据中携带的目标序列号,确定是否成功接收到全部的发送数据,并相应地更新接收信息。
可选的,接收信息包括:连续成功接收的最后一个数据对应的第一序列号,以及接收到的最后一个数据对应的第二序列号。
本实施例中,接收信息用于指示接收端对发送端当前发送的批量数据的接收情况,可以包括:接收端连续成功接收的最后一个数据对应的第一序列号R_SN
可选的,根据目标数据中携带的目标序列号更新接收信息,可以包括:将第一序列号与1的和值作为对比序列号,如果目标序列号等于对比序列号,则判断第一序列号与第二序列号是否相等;如果相等,则将第一序列号和第二序列号同时更新为目标序列号,如果不相等,则记录目标序列号;
如果目标序列号大于对比序列号,则判断第一序列号与第二序列号是否相等;如果相等,则记录目标序列号,并将第二序列号更新为目标序列号;如果不相等,则当目标序列号大于第二序列号时,记录目标序列号,并将第二序列号更新为目标序列号;当目标序列号大于第一序列号与发送窗的长度上限的和值时,将第一序列号更新为目标序列号与发送窗的长度上限的差值;当目标序列号小于第二序列号时,记录目标序列号。
本实施例中,当接收端根据目标序列号更新接收信息时,由于序列号小于等于R_SN
本实施例中,当R_SN
其中,当接收端开启接收等待定时器时,需要判断定时器的当前状态,如果此时定时器处于关闭状态,则表示没有确认接收消息等待传输,此时,需要开启定时器,表示有新的确认接收消息等待传输;如果处于定时器已经处于开启状态,则不做其他处理。
本实施例中,如果T_SN>R_SN
第一种情况:T_SN大于R_SN
第二种情况:T_SN大于R_SN
第三种情况:T_SN小于R_SN
步骤220、响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息。
其中,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息。
本实施例中,当接收端有数据需要发送到发送端,或者接收等待定时器超时,会触发确认接收消息发送行为,根据接收信息生成与发送端对应的确认接收消息,包括与发送窗对应的连续接收信息以及间断接收信息,其中,确认接收消息可以单独进行发送,也可以携带在接收端发送的数据包中进行发送。
可选的,根据接收信息生成与发送端对应的确认接收消息,可以包括:确定位图中的各比特位与序列号集合中的各序列号之间的映射关系,序列号集合中包括大于第一序列号并且小于等于第二序列号的所有序列号;根据映射关系,将位图中与各记录的序列号对应的比特位设为1,将其余比特位设为0;将第一序列号添加至确认接收消息数据格式中的连续接收字段位置,并将位图添加至间断接收字段位置,生成确认接收消息。
本实施例中,确认接收消息的数据格式由三部分组成,目的节点地址、R_SN
示例性的,如图2b所示,R_SN
步骤230、发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据。
本实施例中,将生成的确认接收消息发送至发送端,以使发送端根据确认接收消息中的第一序列号R_SN
本发明实施例的技术方案,接收端如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据,解决了现有技术中发送端等待确认接收响应的时间较长,数据传输效率较低的问题,利用滑窗实现数据的批量发送,减少发送端等待确认接收响应的时间,提高数据传输效率。
实施例三
图3是本发明实施例三中的一种传输确认装置的结构示意图,本实施例可适用于发送端批量传输数据,并确认数据接收情况的情况,该装置可以由硬件和/或软件来实现,并一般可以集成在电子设备中,例如作为发送端的电子设备中。如图3所示,该装置应用于发送端,包括:
数据获取模块310,用于如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;
数据发送模块320,用于发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;
消息接收模块330,用于如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;
传输确定模块340,用于根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据。
本发明实施例的技术方案,发送端如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据,解决了现有技术中发送端等待确认接收响应的时间较长,数据传输效率较低的问题,利用滑窗实现数据的批量发送,减少发送端等待确认接收响应的时间,提高数据传输效率。
可选的,发送窗的当前长度等于发送窗对应的结束序列号与开始序列号的差值;
数据获取模块310,用于:
如果检测到发送窗的当前长度小于长度上限,则检测是否存在待重传的数据,如果存在待重传数据,则选择序列号最小的待重传数据作为目标数据;
如果不存在待重传数据,则检测是否存在待发送新数据,如果存在待发送新数据,则选择一个待发送新数据作为目标数据。
可选的,数据发送模块320,用于:
如果目标数据为待发送新数据,则在发送目标数据至接收端之后,将发送窗对应的结束序列号更新为目标序列号,保持发送窗对应的开始序列号不变,并将目标数据存储至待确认缓存区中;
如果目标数据为待重传数据,则在发送目标数据至接收端之后,保持发送窗对应的开始序列号和结束序列号都不变,并将目标数据存储至待确认缓存区中。
可选的,消息接收模块330,用于:
如果接收到接收端反馈的确认接收消息,则解析确认接收消息,获取确认接收消息中与连续接收字段匹配的字段内容,并将字段内容作为与发送窗对应的连续接收信息;
获取确认接收消息中与间断接收字段匹配的字段内容,并将字段内容作为与发送窗对应的间断接收信息。
可选的,连续接收信息包括:接收端连续成功接收的最后一个数据对应的第一序列号;间断接收信息包括位图,位图表示待确认缓存区中序列号大于第一序列号的各待确认数据的接收情况;
传输确定模块340,用于:
将发送窗对应的开始序列号更新为第一序列号与1的和值,保持发送窗的结束序列号不变,并删除待确认缓存区内的序列号小于等于第一序列号的待确认数据;
根据位图中的各比特位与待确认缓存区内各待确认数据的序列号的映射关系,确定与位图中的各比特1分别对应的已接收序列号,以及与各比特0分别对应的未接收序列号;
删除待确认缓存区内与各已接收序列号对应的已确认数据,并将待确认缓存区内与各未接收序列号对应的待重传数据转存至待重传缓存区。
可选的,传输确定模块340,用于:
针对与各未接收序列号对应的待重传数据,获取待重传数据对应的已重传次数;
如果已重传次数小于重传上限,则将待重传数据转存至待重传缓存区;
如果已重传次数等于重传上限,则删除待重传数据,并且如果待重传数据对应的序列号等于发送窗对应的开始序列号,则将发送窗对应的开始序列号加1。
本发明实施例所提供的传输确认装置,可执行本发明任意实施例所提供的应用于发送端的传输确认方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4是本发明实施例四中的一种传输确认装置的结构示意图,本实施例可适用于接收端生成与发送端发送的批量数据对应的确认接收消息,并反馈给发送端的情况,该装置可以由硬件和/或软件来实现,并一般可以集成在电子设备中,例如作为接收端的电子设备中。如图4所示,该装置应用于接收端,包括:
数据接收模块410,用于如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;
消息生成模块420,用于响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;
消息发送模块430,用于发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据。
本发明实施例的技术方案,接收端如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据,解决了现有技术中发送端等待确认接收响应的时间较长,数据传输效率较低的问题,利用滑窗实现数据的批量发送,减少发送端等待确认接收响应的时间,提高数据传输效率。
可选的,接收信息包括:连续成功接收的最后一个数据对应的第一序列号,以及接收到的最后一个数据对应的第二序列号;
数据接收模块410,用于:
将第一序列号与1的和值作为对比序列号,如果目标序列号等于对比序列号,则判断第一序列号与第二序列号是否相等;
如果相等,则将第一序列号和第二序列号同时更新为目标序列号,如果不相等,则记录目标序列号;
如果目标序列号大于对比序列号,则判断第一序列号与第二序列号是否相等;
如果相等,则记录目标序列号,并将第二序列号更新为目标序列号;
如果不相等,则当目标序列号大于第二序列号时,记录目标序列号,并将第二序列号更新为目标序列号;当目标序列号大于第一序列号与发送窗的长度上限的和值时,将第一序列号更新为目标序列号与发送窗的长度上限的差值;当目标序列号小于第二序列号时,记录目标序列号。
可选的,消息生成模块420,用于:
确定位图中的各比特位与序列号集合中的各序列号之间的映射关系,序列号集合中包括大于第一序列号并且小于等于第二序列号的所有序列号;
根据映射关系,将位图中与各记录的序列号对应的比特位设为1,将其余比特位设为0;
将第一序列号添加至确认接收消息数据格式中的连续接收字段位置,并将位图添加至间断接收字段位置,生成确认接收消息。
本发明实施例所提供的传输确认装置,可执行本发明任意实施例所提供的应用于接收端的传输确认方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五公开的一种电子设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性设备12的框图。图5显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,设备12以通用计算设备的形式表现,可以是发送数据的发送端设备,或者是向发送端反馈确认接收消息的接收端设备。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的传输确认方法。
也即:实现一种传输确认方法,应用于发送端,包括:如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据。
或者,实现一种传输确认方法,应用于接收端,包括:如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据。
实施例六
本发明实施例六还提供一种计算机可读存储介质,其上存储有计算机程序,程序在被计算机处理器执行时用于执行一种传输确认方法。
也即:实现一种传输确认方法,应用于发送端,包括:如果检测到发送窗的当前长度小于长度上限,则获取待发送的目标数据,目标数据中携带目标序列号;发送目标数据至接收端,并根据目标序列号更新发送窗的当前长度;如果接收到接收端反馈的确认接收消息,则从确认接收消息中提取与发送窗对应的连续接收信息以及间断接收信息;根据连续接收信息更新发送窗的当前长度,根据间断接收信息确定发送窗对应的已发送数据中的待重传数据。
或者,实现一种传输确认方法,应用于接收端,包括:如果接收到发送端发送的目标数据,则根据目标数据中携带的目标序列号更新接收信息;响应于对发送确认接收消息的行为的触发操作,根据接收信息生成与发送端对应的确认接收消息,确认接收消息包括与发送窗对应的连续接收信息以及间断接收信息;发送确认接收消息至发送端,以使发送端根据确认接收消息,更新发送窗的当前长度以及确定待重传数据。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
- 传输确认方法、装置、设备及存储介质
- 一种声纹确认方法、装置、设备及可读存储介质