CN101621368B - 一种重传数据包的方法、装置及系统 - Google Patents

一种重传数据包的方法、装置及系统 Download PDF

Info

Publication number
CN101621368B
CN101621368B CN200910091232A CN200910091232A CN101621368B CN 101621368 B CN101621368 B CN 101621368B CN 200910091232 A CN200910091232 A CN 200910091232A CN 200910091232 A CN200910091232 A CN 200910091232A CN 101621368 B CN101621368 B CN 101621368B
Authority
CN
China
Prior art keywords
packet
transmitting terminal
name title
reception array
data packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200910091232A
Other languages
English (en)
Other versions
CN101621368A (zh
Inventor
罗银生
张俊辉
唐智斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING WILL CREATE TECHNOLOGY CO., LTD.
Original Assignee
BEIJING BEETECH TECHNOLOGY Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING BEETECH TECHNOLOGY Inc filed Critical BEIJING BEETECH TECHNOLOGY Inc
Priority to CN200910091232A priority Critical patent/CN101621368B/zh
Publication of CN101621368A publication Critical patent/CN101621368A/zh
Application granted granted Critical
Publication of CN101621368B publication Critical patent/CN101621368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种重传数据包的方法。发送端在待发送数据包中设置标识该数据包的名称号并发送数据包;接收端接收所述数据包,判断接收的所述数据包是否正确:如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消息中要求重传的数据包进行缓存;发送端检测通信状态,如果处于空闲状态,发送缓存的要求重传的数据包。本发明还公开了一种重传数据包的装置及系统。应用本发明,不需对接收数据包进行重新排序,并可以使重传的数据包在通信空闲的间隙进行,可以节约系统资源开销并提高无线通信的可靠性。

Description

一种重传数据包的方法、装置及系统
技术领域
本发明涉及数据传输技术,特别涉及一种重传数据包的方法、装置及系统。
背景技术
对于无线通信系统来说,发射端发射的数据包经过空中无线资源的传输被接收端接收,在传输过程中,由于空中传输时延、干扰以及路径衰落的影响,接收端接收到的数据包可能存在丢包的情况,大大影响了数据传输的可靠性,而在很多应用领域,保证数据传输的可靠性是非常重要的。
为了提高无线数据传输的可靠性和传输过程中的抗干扰能力,现有技术中,除了采用编码调制、纠错等方法传输数据包外,还普遍采用缓存重传方法以提高无线通信的可靠性、减少丢包率,发送端设置缓存区,对待发送的数据包设置序列号标志并缓存,接收端接收数据包,如果接收的数据包正确,向发送端发送确认(ACK)消息,通知发送端该数据包已被正确接收,发送端接收确认消息后,从缓存区删除该数据包以缓存后续待发送的数据包;如果接收的数据包不正确,则通过应答要求发送端重传该数据包,直到该数据包被成功接收,或者,发送端判断重传的次数超过预先设定的重传次数,将该数据包丢弃,或者,通过应答要求发送端从该数据包丢失之处开始重传,然后,发送端继续发送缓存区中下一待发送的数据包,最后,接收端根据接收的数据包携带的序列号标志对接收的数据包进行重新排序,以恢复接收的数据包的顺序。
由上可见,现有技术在传输数据包的过程中,当无线通信干扰较强或传输路径恶劣时,使得数据包一次传输的成功率较低,可能需要多次重传该数据包,如果一直持续重传该数据包,不仅造成缓存区缓存了大量待发送的数据包,浪费了系统资源,还可能会造成无线通信链路堵塞,在恢复时将丢失大量缓存的数据包,无线通信的可靠性以及传输效率都较低;进一步地,将重传次数超过预先设定的重传次数的数据包丢弃,存在一定的丢包率,不能保证无线通信的可靠性;而且,根据序列号标志对接收的数据包进行重新排序,排序流程复杂,将耗费接收端大量的资源以及排序计算时间。
发明内容
有鉴于此,本发明的一个主要目的在于提供一种重传数据包的方法,提高无线通信的可靠性、节约系统资源。
本发明的另一个主要目的在于提供一种重传数据包的装置,提高无线通信的可靠性、节约系统资源。
为达到上述目的,本发明提供了一种重传包数据的方法,该方法包括:
发送端在待发送数据包中设置标识该数据包的名称号并发送数据包;
接收端接收所述数据包,判断接收的所述数据包是否正确:
如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;
如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消息中要求重传的数据包进行缓存;
发送端检测通信状态,如果处于空闲状态,发送缓存的要求重传的数据包。
所述名称号包括用于标识发送端身份的发送端识别ID、用于标识数据包所属批次的批次标识、以及用于标识数据包在所属批次中的顺序的标记号;
所述接收数组名称号包括:数据包源端ID、数组名以及元素名;
所述发送端识别ID与所述数据包源端ID相同,所述批次标识匹配所述数组名,所述标记号匹配所述元素名。
所述发送端在待发送数据包中设置标识该数据包的名称号包括:
发送端为待发送数据包设置批次标识,所述待发送数据包的标记号依次递增;
当标记号达到预先设置的最大标记号时,发送端重新设置与已设置的批次标识不同的批次标识,并重新设置该批次标识对应数据包的标记号;
发送端将待发送数据包缓存在第一数据包缓存器中。
所述按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中包括:
判断所述数据包携带的名称号与已设置的接收端的接收数组名称号是否匹配,如果匹配,将所述数据包存储至匹配的接收数组中;如果不匹配,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包。
所述将数据包存储至匹配的接收数组中包括:
如果数据包携带的名称号与当前接收数组名称号相匹配,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;如果数据包携带的名称号与存储模块中的接收数组名称号相匹配,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的元素名中。
所述发送端将消息中要求重传的数据包进行缓存包括:发送端从第一数据包缓存器中提取消息中要求重传的数据包,缓存至第二数据包缓存器。
所述方法进一步包括:
如果发送端处于忙状态,通知第二数据包缓存器停止发送缓存的要求重传的数据包。
所述发送端检测通信状态包括:
检测发送端第一数据包缓存器的缓存状态,如果第一数据包缓存器为空,则确定发送端处于空闲状态;如果第一数据包缓存器不为空,则确定发送端处于忙状态。
一种重传数据包的发送端装置,该发送端装置包括:采集模块、数据包处理模块、存储模块、射频模块以及检测模块,其中,
采集模块,用于按照预先设定的周期及采样率对采样点进行顺序采样,将采集到的数据按照通信协议约定的数据包大小进行打包形成数据包,在数据包帧格式中加入发送端ID、批次标识以及标记号并发送至数据包处理模块;
数据包处理模块,用于按照通信协议规则对采集模块发送的数据包进行编码、纠错后输出至存储模块;接收射频模块携带要求重传的数据包消息,通知存储模块;
存储模块,用于缓存数据包处理模块发送的数据包并输出至射频模块,接收数据包处理模块的通知消息,根据通知消息中包含的重传数据包信息,从缓存的数据包中将该重传数据包再次进行缓存;接收检测模块发送的射频模块空闲消息,将缓存的重传数据包依次输出至射频模块;
射频模块,用于将存储模块输出的数据包进行发送;接收来自接收端射频模块发送携带要求重传的数据包消息,发送至数据包处理模块;
检测模块,用于检测发送端状态,如果确定发送端状态空闲,向存储模块发送射频模块空闲消息。
所述存储模块包括第一数据包缓存器以及第二数据包缓存器,其中,
第一数据包缓存器,用于缓存数据包处理模块发送的数据包;
第二数据包缓存器,用于根据数据包处理模块发送的通知消息中包含的重传数据包信息,从第一数据包缓存器中将该重传数据包读入;接收检测模块发送的射频模块空闲消息,将缓存的数据包依次输出至射频模块。
所述检测模块,根据预先设定的周期检测第一数据包缓存器的缓存状态,如果第一数据包缓存器为空,则向第二数据包缓存器发送射频模块空闲消息;如果第一数据包缓存器不为空,则向第二数据包缓存器发送射频模块忙消息,第二数据包缓存器停止输出缓存的重传数据包。
一种重传数据包的接收端装置,该接收端装置包括:射频模块、主处理模块、以及存储模块,其中,
射频模块,用于接收发送端射频模块发送的数据包,输出至主处理模块,接收主处理模块输出的携带要求重传的数据包消息,发送至接收端;
主处理模块,用于接收射频模块输出的数据包,
如果接收的所述数据包正确,判断所述数据包携带的名称号与已设置的接收端的接收数组名称号是否匹配,如果是,将所述数据包存储至匹配的接收数组中;如果不,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包;
如果确定接收的数据包不正确,向射频模块发送携带要求重传的数据包消息。
所述主处理模块将所述数据包存储至匹配的接收数组中为:
主处理模块判断当数据包携带的名称号与当前设置的接收数组名称号相匹配时,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;当数据包携带的名称号与存储模块中的接收数组名称号相匹配时,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的元素名中;当数据包携带的名称号与当前设置的接收数组名称号、以及存储模块中的接收数组名称号不相匹配时,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包。
一种重传数据包的系统,该系统包括:发送端和接收端,其中,
发送端,用于在待发送数据包中设置唯一标识该数据包的名称号,将该设置名称号的数据包进行发送;接收来自接收端的携带要求重传的数据包消息,将该要求重传的数据包进行缓存,并在该发送端处于空闲状态时,发送该缓存的要求重传的数据包;
接收端,用于接收数据包,如果确定接收的数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果确定接收的数据包不正确,向发送端发送携带要求重传的数据包消息。
由上述的技术方案可见,本发明提供的重传数据包的方法、装置及系统,发送端在待发送数据包中设置唯一标识该数据包的名称号并发送数据包;接收端接收所述数据包,判断接收的所述数据包是否正确:如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中,从而避免了对接收数据包进行重新排序而导致的排序流程复杂、排序计算时间长、资源开销大的缺陷,节约了系统资源;如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消息中要求重传的数据包进行缓存;检测发送端通信状态,如果发送端处于空闲状态,发送缓存的要求重传的数据包,减少了无线通信链路堵塞,提高了无线通信的可靠性。
附图说明
图1为本发明重传数据包的系统结构示意图;
图2为本发明发送端的结构示意图;
图3为本发明数据包结构示意图;
图4为本发明接收端的结构示意图;
图5为本发明重传数据包的无线传感器网络收发系统的结构示意图;
图6为本发明重传数据包的方法流程示意图;
图7为本发明重传数据包的方法第一实施例流程示意图;
图8为本发明重传数据包的方法第二实施例流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明实施例提出的重传数据包的方法、装置及系统,发送端在待发送数据包中设置唯一标识该数据包的名称号并发送数据包,接收端接收数据包后,如果接收的所述数据包正确,将数据包缓存在设置的与数据包携带的名称号相匹配的接收数组中,接收端判断需要重传数据包时,向发送端发送携带要求重传的数据包消息,发送端接收该消息后,将消息中要求重传的数据包进行缓存,当检测到发送端处于空闲时,发送缓存的重传数据包。
以下以无线通信的数据采集、发送和接收为例,对本发明的重传数据包的方法进行详细描述,所应说明的是,本发明也可应用于对数据通信实时性要求不太高的无线数据包收发等领域。
图1为本发明重传数据包的系统结构示意图,参见图1,该系统包括:发射端11和接收端12,其中,
发送端11,用于对需要发送的数据打包形成数据包,设置唯一标识数据包的名称号,将该设置名称号的数据包进行发送;接收来自接收端12的携带要求重传的数据包消息,将该要求重传的数据包进行缓存,并在该发送端处于空闲状态时,发送该缓存的要求重传的数据包;
本实施例中,名称号包括发送端识别(ID)、批次标识以及标记号,其中,
发送端ID,用于标识发送端身份,发送端ID是唯一的,不同的发送端对应不同的发送端ID;
批次标识,用于标识数据包所属的批次;
标记号,用于标识该数据包在所属的批次中的顺序,标记号的最大值可以由发送端与接收端根据自身的能力和资源等情况协商确定。例如,可以设置标记号为接收端最佳的处理长度,例如,标记号可以设置为512(512仅仅为了方便阐述,不同接收端最佳的处理长度可能并不相同)。这样,通过在给数据包设置包括批次标识和标记号的名称号,首先通过批次标识将发送端的数据包进行批次分类,然后为该批次中的数据包按序分配标记号,从而在接收端,首先匹配数据包的批次记录,然后再在该批次的数据包标记号中匹配该数据包标记号,可以减少为数据包一次分配标记号时,在接收端,需要从所有标记号中匹配该数据包标记号时,造成匹配时间较长、提高了数据包匹配的效率。
实际应用中,发送端在发送数据包前,一般还需要缓存该数据包,射频模块读取缓存的数据包进行发送的流程为现有技术,在此不再赘述。以下描述的缓存重传的数据包,是指将该数据包从现有的缓存中提取出来,另行进行存储。
发送端也可以在按照现有设定的重传次数发送数据包后,如果该数据包还未被正确接收,才将该数据包缓存,并在发送端处于空闲时再次发送。
接收端12,用于接收数据包,如果确定接收的数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果确定接收的数据包不正确,向发送端发送携带要求重传的数据包消息。
本实施例中,接收端设置接收数组以接收数据包,接收数组以接收数组名称号进行标识,接收数组名称号包括数据包源端ID、数组名以及元素名,其中,
数据包源端ID,与数据包发送端ID相同;
数组名,与批次标识相对应;
元素名,与标记号相对应。
接收数组包含多个元素,每个元素映射数据地址,对应存储一个数据包。
接收端设置接收数组可以是通过与发送端协商确定,也可以是通过发送端在发送批次标识的第一个数据包时,携带数据包最大标记号信息,接收端根据接收数据包的名称号以及最大标记号信息设置与名称号相匹配的接收数组,还可以是根据接收到的标记号动态地增加接收数组的长度,另外,还可以是随机设置接收数组,当接收数组中存储满数据包时,将数组中的数据包存储到外部的存储介质。
由上述实施例可见,由于发送端在待发送的数据包中设置了能唯一标识该数据包的名称号,并在接收端设置与数据包名称号相匹配的接收数组,因而,在接收到数据包后,根据数据包携带的名称号,将该数据包存储至与数据包名称号相匹配的接收数组的相应元素中,从而避免了对接收数据包进行重新排序而导致的排序流程复杂、排序计算时间长、资源开销大的缺陷,同时,可以在接收数组存储满约定长度的数据包时,将该约定长度的数据包存储到外部的存储介质,这样,利用外部的存储介质存储数据包,节约了接收端的系统资源。进一步地,发送端在获知需要重传数据包时,将要求重传的数据包进行缓存,并在发送端处于空闲状态时,发送缓存的要求重传的数据包,这样,在空闲时重传数据包,而不是从该数据包丢失之处开始重传,减少了发送端一直持续重传该数据包而导致的缓存区缓存大量待发送的数据包以及无线通信链路堵塞,节约了缓存区空间、保证了无线通信的可靠性、提高了无线传输效率,尤其适用于资源有限的低功耗无线传感器网络系统。
下面对本发明涉及的发送端和接收端的结构进行具体的说明。
图2为本发明发送端的结构示意图,参见图2,该发送端包括:采集模块210、数据包处理模块211、存储模块212、射频模块213以及检测模块214,其中,
采集模块210,用于按照预先设定的周期及采样率对采样点进行顺序采样,将采集到的数据按照通信协议约定的数据包大小进行打包形成数据包,在数据包帧格式中加入发送端ID、批次标识以及标记号并发送至数据包处理模块;
实际应用中,由于发送端进行数据采集时,通常需要为每一个采样点设置标记号,因而,本发明中,还可以以采样点的标记号作为标记号。
本实施例中,发送端进行数据采集时,按照现有无线通信协议将采样点数据打包成数据包。举例来说,如果通信协议约定一个数据包大小为32字节(Byte),采集模块210中的模数转换器(A/D)采集的位数为16位(采样率),则采集模块210在设定的采样周期内,将16个顺序采集的采样点数据打包为一个数据包,并在数据包帧格式中加入发送端ID、批次标识以及标记号。
标记号依次增加,当达到约定的数据包最大标记号时,重新开始循环计数,同时,改变批次标识,分配新的批次标识。
下面举一具体例子,对在数据包帧格式中加入发送端ID、批次标识以及标记号进行说明:
对于该发送端发送的数据包,其发送端ID都相同,如果协议约定的数据包总数为512,即标记号从零开始,最大标记号为511,则对于第1个打包形成的数据包(包含16个顺序采集的采样点数据信息),其数据包的批次标识为a,标记号为0;对于第512个打包形成的数据包,其数据包的相应批次标识值为a,标记号为511。此时,由于标记号511为协议约定的最大标记号,因而,对于下一个打包形成的数据包,其数据包的批次标识为b,标记号为0,如此循环。这样,通过在数据包包头中添加发送端ID、批次标识和标记号,就可以唯一标识无线通信网络中的一个数据包,从而接收端可以设置相应的接收数组存储数据包,后续中可以根据接收的重传数据包包含的名称号信息,将该重传数据包存储至相应接收数组的相应元素中,从而保证了接收的数据包的完整性。
实际应用中,不同发送端发送的数据包中包含的批次标识、以及标记号可以相同,也可以不同。
图3为本发明数据包结构示意图,参见图3,该数据包包括:数据包包头和数据包内容,其中,
数据包包头,即数据包名称号,用于标识数据包,包括:发送端ID、批次标识以及标记号;
数据包内容,用于存储采样点数据信息。
这样,在发送端,每个待发送的数据包将具有一个唯一的名称号,例如IDa1。
当然,也可以不使用批次标识,直接使用采样点的标记号作为标记号,如果数据包包含的采样点数量不同,可以将数据包内第一个采样点的标记号作为该数据包初始标记号,同时增加数据长度标识。举例来说,如果发送端将1个采集的采样点数据打包为一个数据包,数据包初始标记号为100,数据长度标识指示为10,则该数据包10个采样点的序号依次为100、101、102、103、104、105、106、107、108、109。接收端依据资源情况,设置容纳采样点容量(采样点个数)的接收数组。当达到采样点容量时,将接收数组中存储的数据包写入到外部的存储介质,再根据下一数据包的数据长度标识设置新的接收数组以存储该数据包。
数据包处理模块211,用于按照通信协议规则对采集模块发送的数据包进行编码、纠错后输出至存储模块212;接收射频模块213携带要求重传的数据包消息,通知存储模块212;
存储模块212,用于缓存数据包处理模块发送的数据包并输出至射频模块213,接收数据包处理模块211的通知消息,根据通知消息中包含的重传数据包信息,从缓存的数据包中将该重传数据包再次进行缓存;接收检测模块214发送的射频模块空闲消息,将缓存的重传数据包依次输出至射频模块213,包括第一数据包缓存器以及第二数据包缓存器,其中,
第一数据包缓存器,用于缓存数据包处理模块212发送的数据包;
第二数据包缓存器,根据数据包处理模块212发送的通知消息中包含的重传数据包信息,从第一数据包缓存器中将该重传数据包读入;接收检测模块214发送的射频模块空闲消息,将缓存的数据包依次输出至射频模块213。
本实施例中,第二数据包缓存器从第一数据包缓存器读取重传的数据包的方式可以是例如剪切的方式,这样,可以提高第一数据包缓存器的资源利用率。进一步地,第二数据包缓存器还可以接收检测模块214发送的射频模块忙消息,停止发送缓存的数据包。
较佳地,为了提高重传数据包处理的效率,将缓存的数据包依次输出至射频模块213的顺序是从后往前依次输出。
存储模块212可以是随机存储器(RAM),也可以是闪存(FLASH)。
射频模块213,用于从存储模块212读取待发送的数据包进行发送;接收来自接收端射频模块发送携带要求重传的数据包消息,发送至数据包处理模块211。
本实施例中,射频模块根据通信协议的发送应答确认(ACK)机制进行通信。这些通信流程依据相应通信协议标准进行,不同的是,本发明对于重传数据包,当检测到发送端处于空闲状态时才发送,或者设置较少的重传次数,这样可以提高通信的流畅性,例如,对于IEEE802.15.4通信标准,可以设置重传三次失败就暂时放弃重传该数据包并将该数据包从待发送的缓存队列中提取出来,再次进行缓存,以在空闲的时候再发送该数据包。
检测模块214,用于检测发送端状态,如果确定发送端状态空闲,向存储模块212发送射频模块空闲消息。
本实施例中,检测发送端状态可以通过检测第一数据包缓存器的缓存状态来实现,检测模块根据预先设定的周期检测第一数据包缓存器的缓存状态,如果第一数据包缓存器不为空,则向第二数据包缓存器发送射频模块忙消息;如果第一数据包缓存器为空,则向第二数据包缓存器发送射频模块空闲消息。
图4为本发明接收端的结构示意图,参见图4,该接收端12包括射频模块120、主处理模块122、以及存储模块121,其中,
射频模块120,用于接收发送端射频模块发送的数据包,输出至主处理模块122,接收主处理模块122输出的携带要求重传的数据包消息,发送至接收端。
主处理模块122,用于接收射频模块120输出的数据包,
如果确定当前接收的数据包正确,判断数据包携带的名称号与已设置的接收端的接收数组名称号是否匹配,如果是,将数据包存储至匹配的接收数组中;如果不,将当前接收数组中存储的数据包存储至存储模块121,并设置与当前接收的数据包名称号相匹配的接收数组并接收数据包;
如果确定接收的数据包不正确,向射频模块120发送携带要求重传的数据包消息。
本实施例中,主处理模块122判断接收的数据包是否正确为现有技术,在此不再赘述。
对于主处理模块122将数据包存储至匹配的接收数组中的流程如下:当数据包携带的名称号与当前设置的接收数组名称号相匹配时,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;当数据包携带的名称号与存储模块中的接收数组名称号相匹配时,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的元素名中;当数据包携带的名称号与当前设置的接收数组名称号、以及存储模块中的接收数组名称号不相匹配时,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包。
主处理模块122可以是与接收端12(网关)连接的上位机,也可以是接收端12内部单独的单片机、数字处理器(DSP)、或现场可编程门阵列(FPGA)等,也可以利用射频模块中进行协议解析的CPU。
主处理模块122按照与发送端的通信协商,设置与当前数据包名称号相匹配的接收数组,例如,当前数据包名称号为IDA0,则设置接收数组为ID(a0,...,ai-1),其中,ID为接收数组中数据包的数据包源端ID,a为接收数组的数组名,i为数组中的元素名,这样,当主处理模块122接收数据包时,首先判断数据包中包含的批次标识是否接收数组的数组名相匹配(例如,预先设定批次标识A匹配接收数组名a),则开始依据标记号i将该数据包写入到接收数组对应的元素i中,当数据包最大标记号达到约定的最大标记号时,将该接收数组中的所有元素写入到存储模块121,当再接收到下一个数据包时,由于数据包中包含的批次标识与当前接收数组的数组名不相匹配,则设置新的接收数组或将当前数组名更新为与批次标识相匹配的数组名,例如,数组(b1,...,bi)以缓存后续的数据包。
接收数组中的元素和存储模块的数据地址可以是按预先约定映射的,通常将接收数组中各元素映射为存储模块中连续的数据地址,举例来说,数组元素a0映射的存储模块中的数据地址是00000000,a511映射的数据地址是000001FF,b0映射的数据地址是00010000,b511映射的数据地址是000100FF,c0映射的数据地址是00020000,c512映射的数据地址是000200FF。这样,数组中元素映射为存储模块中的数据地址,可以保证数据包的高效填入。
由于无线通信中干扰和丢包的存在,主处理模块122中接收数组缓存的数据包与写入到存储模块的数据包可能不是完整的,因而,在发送携带要求重传的数据包消息后,在通信空闲时,接收发送端发送的数据包,如果确定重传的数据包发送端ID、批次标识分别与当前接收数组的数据包源端ID以及数组名相匹配,依据数据包的标记号,将该数据包缓存在接收数组中与标记号相匹配的元素中,如果确定重传的数据包发送端ID、批次标识与当前接收数组不相匹配,依据数据包发送端ID、批次标识和标记号,写入相应映射数据地址的存储模块中。
图5为本发明重传数据包的无线传感器网络收发系统的结构示意图,参见图5,对于无线传感器网络系统,通常组成星型,树型甚至网状网拓扑结构。接收端(网关)可能同时接收众多发送端发送的数据包,同一发送端也可能同时需要向不同的终端设备发送数据包,数据包的无线传输也需要进行多跳传输,该无线传感器网络收发系统包括:N个发送端节点(节点1到节点N)、路由节点501、网关502、以及上位机503。
节点n(1≤n≤N,N为自然数)的数据包通过路由节点501多跳传输到网关502,网关502将接收到的数据包汇集后送给上位机503进行显示、存储。
节点1的采集模块在进行数据打包的时候,在数据包帧结构中加入了节点ID号1,相应地,节点2加入了ID号2,节点N加入了ID号N,所有的ID号用32位长地址来定义,具有全球的唯一性。而网关502在接收到不同ID号的数据包时,相应开设对应的多个接收数组进行处理,具体的处理流程与上述实施例相同,在此不再赘述。
以下对本发明重传数据包的方法流程进行详细说明。
图6为本发明重传数据包的方法流程示意图,参见图6,该流程包括:
步骤601,发送端在待发送数据包中设置唯一标识该数据包的名称号并发送数据包;
本步骤中,发送端将待发送的数据打包,设置唯一标识数据包的名称号,形成数据包并发送。
发送端进行数据采集时,按照现有无线通信协议将采样点数据打包成数据包。
名称号包括发送端ID、批次标识以及标记号,对于数据采集的情况,由于发送端进行数据采集时,通常需要为每一个采样点设置标记号,因而,本发明中,名称号也可以只包括发送端ID、以及采样点的标记号。
对于第一个待发送的数据包,发送端为该数据包设置批次标识,将该标记号设置为零,后续中待发送数据包的标记号依次递增,当标记号达到预先设置的最大标记号时,发送端重新设置与已设置的批次标识不同的批次标识,并重新设置该批次标识对应的标记号。
待发送的数据包按照常规通信协议、比如802.15.4通信标准,规定的编码纠错以及重传机制进行发送。
步骤602,接收端接收数据包,判断接收的数据包是否正确,如果是,执行步骤603,否则,执行步骤604;
接收端可以是网关,也可以是终端设备等。
步骤603,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;
本步骤中,在确定接收的数据包正确后,进一步判断数据包携带的名称号与已设置的接收数组名称号是否匹配,如果是,将该接收的数据包存储至匹配的接收数组中;如果不是,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收;
已设置的接收数组名称号包括当前接收数组名称号以及存储至存储模块的接收数组名称号,当判断数据包携带的名称号与当前接收数组名称号相匹配,根据该接收的标记号将数据包存储至当前接收数组相应的元素中;当判断数据包携带的名称号与存储模块中的接收数组名称号相匹配,根据该接收的数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中相应接收数组的相应元素中。
如果接收的数据包携带的名称号与已设置的接收数组名称号不相匹配,表明该数据包为新的批次标识所属的数据包,需要将当前接收数组存储至存储模块,并设置与当前接收的数据包名称号相匹配的接收数组以接收新数据包,设置的方法可以是将当前接收数组中包含的数据包存储至存储模块后,将当前接收数组名称号更改为与当前接收的数据包名称号相匹配的接收数组名称号,也可以是将当前接收数组进行剪切,存储至存储模块后,重新设置与当前接收的数据包名称号相匹配的接收数组。
步骤604,向发送端发送携带要求重传的数据包消息;
本步骤中,也可以在判断接收的数据包不正确,向发送端发送携带要求重传的数据包消息时,同时存储该数据包。
步骤605,发送端接收携带要求重传的数据包消息,将该要求重传的数据包进行缓存;
本步骤中,现有技术中,发送端在发送数据包时,先缓存数据包,例如,利用第一数据包缓存器进行缓存,由射频模块从缓存的数据包中采用滑窗的方式读取数据包进行发送,如果有数据包需要重传,则重新发送该滑窗内的数据包,直至发送成功,或者达到预先设定的重传次数放弃发送,而在该发送时间内,需要不断增加缓存空间以缓存后续待发送的数据包,本发明中,当数据包发送不成功时,将该数据包从缓存区中提取出来另行存储,例如,缓存至第二数据包缓存器中,使得滑窗可以向前推移,发送其他待发送的数据包,从而有效降低了缓存空间。
当然,实际应用中,也可以是在重传次数超过预先设定的重传次数时,再将该数据包进行缓存。
步骤606,检测发送端通信状态,如果发送端处于空闲状态,发送缓存的要求重传的数据包,返回执行步骤602。
本步骤中,检测发送端通信状态主要是检测发送端缓存区中待发送的数据包是否发送完毕,如果待发送的数据包已发送完毕,即发送端缓存待发送的数据包区域已空,则可以从缓存重传数据包的缓存区中读取缓存的要求重传的数据包,进行发送。当然,也可以通过检测发送端的射频模块在预定的时间内没有发送数据包,则认为发送端处于空闲状态。
此外,在待发送数据包量较大的情况下,为了减少接收端设置接收数组用以接收该待发送数据包而占用的缓存空间,接收端还可以按照设定的批次标识容量将接收的数据包分成小文件存储,即设置较小的接收数组,同一发送端ID和批次标识的数据包分做几次进行存储。例如,当接收到的数据包的包标记号达到规定的批次标识容量时,将接收数组内缓存的数据保存到硬盘或其他存储介质内,再设置同样数据包源端ID和数组名的接收数组进行接收,所不同的是,各接收数组中的元素名不同。
图7为本发明重传数据包的方法第一实施例流程示意图,参见图7,该流程包括:
步骤701,进行数据采集并为每个采样点加入标记号;
步骤702,对采集的数据进行打包;
步骤703,在数据包帧结构中加入唯一的数据包名称号;
步骤704,发送数据包;
步骤705,如果接收端接收到数据包,发送成功,则根据数据名称号放入设置的与数据包名称号相匹配的接收数组的相应位置;
步骤706,如果发送失败,发送失败的数据包被送入发送端的缓存区内;
步骤707,判断发送端通信状态;
步骤708,当发送端通信空闲时,缓存区的数据将重新进行发送,如果发送端通信忙,则其他数据包发送继续进行;
步骤709,发送端统计已经发送的数据包,接收端统计已经接收的数据包并进行核对,如果没有数据包漏发,则通信结束。
图8为本发明重传数据包的方法第二实施例流程示意图,参见图8,本实施例考虑了发送端没有采用ACK机制的数据包重传方法。在将数据打包后发送数据包的同时,采集模块将数据包全部备份在存储模块内部,接收端在收到数据包放入接收数组的时候,对丢包的数据包进行统计并记录在丢包存储区,当通信空闲的时候,接收端依据未接收数据包记录,将未接收到的数据包名称号和重传请求发送给发送端,发送端保存下未接收数据包记录,依据数据包名称号映射的数据地址,从存储模块中提出未接收数据包,执行重传,接收端将重传的数据包放入接收数组中相应位置。
该方法接收端的流程包括:
步骤801,接收数据包;
本步骤中,数据包的名称号包括发送端ID以及采样点标记号。
步骤802,判断当前数据包的标记号是否大于或等于上一标记号,如果大于或等于,执行步骤803,否则,执行步骤808;
步骤803,判断当前数据包的标记号是否等于上一标记号,如果是,表明数据包连续,执行步骤804,否则,表明接收端有丢包,执行步骤806;
步骤804,接收数据包,设置接收端接收数组的元素名为下一个数据包对应的元素名,即接收端接收数组的元素名等于当前标记号与当前采样点数之和;
步骤805,将接收的数据包存储至相匹配的接收数组的相应元素中;
步骤806,接收当前数据包,根据当前标记号以及上一标记号计算丢包的数据标记号,存入丢包存储区;
步骤807,在检测到通信空闲时,将丢包存储区存储的数据标记号以及该标记号所属的数据包标识、发送端ID信息发送至相应的发送端;
步骤808,当前数据包的标记号小于上一标记号,从丢包存储区查找是否存在该数据包,如存在,则为重传数据包,接收当前数据包;如不存在,则为重复发送的数据包,丢弃该数据包。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种重传数据包的方法,其特征在于,该方法包括:
发送端在待发送数据包中设置标识该数据包的名称号并发送数据包;
接收端接收所述数据包,判断接收的所述数据包是否正确:
如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;
如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消息中要求重传的数据包进行缓存;
发送端检测通信状态,如果处于空闲状态,发送缓存的要求重传的数据包;
所述名称号包括用于标识发送端身份的发送端识别ID、用于标识数据包所属批次的批次标识、以及用于标识数据包在所属批次中的顺序的标记号;
所述接收数组以接收数组名称号进行标识,所述接收数组名称号包括:数据包源端ID、数组名以及元素名;
所述发送端识别ID与所述数据包源端ID相同,所述批次标识匹配所述数组名,所述标记号匹配所述元素名。
2.如权利要求1所述的方法,其特征在于,所述发送端在待发送数据包中设置标识该数据包的名称号包括:
发送端为待发送数据包设置批次标识,所述待发送数据包的标记号依次递增;
当标记号达到预先设置的最大标记号时,发送端重新设置与已设置的批次标识不同的批次标识,并重新设置该批次标识对应数据包的标记号;
发送端将待发送数据包缓存在第一数据包缓存器中。
3.如权利要求1或2所述的方法,其特征在于,所述按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中包括:
判断所述数据包携带的名称号与已设置的接收端的接收数组名称号是否匹配,如果匹配,将所述数据包存储至匹配的接收数组中;如果不匹配,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包。
4.如权利要求3所述的方法,其特征在于,所述将数据包存储至匹配的接收数组中包括:
如果数据包携带的名称号与当前接收数组名称号相匹配,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;如果数据包携带的名称号与存储模块中的接收数组名称号相匹配,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的元素名中。
5.如权利要求2所述的方法,其特征在于,所述发送端将消息中要求重传的数据包进行缓存包括:发送端从第一数据包缓存器中提取消息中要求重传的数据包,缓存至第二数据包缓存器。
6.如权利要求5所述的方法,其特征在于,所述方法进一步包括:
如果发送端处于忙状态,通知第二数据包缓存器停止发送缓存的要求重传的数据包。
7.如权利要求6所述的方法,其特征在于,所述发送端检测通信状态包括:
检测发送端第一数据包缓存器的缓存状态,如果第一数据包缓存器为空,则确定发送端处于空闲状态;如果第一数据包缓存器不为空,则确定发送端处于忙状态。
8.一种重传数据包的接收端装置,其特征在于,该接收端装置包括:射频模块、主处理模块、以及存储模块,其中,
射频模块,用于接收发送端射频模块发送的数据包,输出至主处理模块,接收主处理模块输出的携带要求重传的数据包消息,发送至接收端;
主处理模块,用于接收射频模块输出的数据包,
如果接收的所述数据包正确,判断所述数据包携带的名称号与已设置的接收端的接收数组名称号是否匹配,如果是,将所述数据包存储至匹配的接收数组中;如果不,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包;
如果确定接收的数据包不正确,向射频模块发送携带要求重传的数据包消息。
9.如权利要求8所述的接收端装置,其特征在于,所述主处理模块将所述数据包存储至匹配的接收数组中为:
主处理模块判断当数据包携带的名称号与当前设置的接收数组名称号相匹配时,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;当数据包携带的名称号与存储模块中的接收数组名称号相匹配时,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的元素名中;当数据包携带的名称号与当前设置的接收数组名称号、以及存储模块中的接收数组名称号不相匹配时,将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述数据包。
10.一种重传数据包的系统,其特征在于,该系统包括:发送端和接收端,其中,
发送端,用于在待发送数据包中设置唯一标识该数据包的名称号,将该设置名称号的数据包进行发送;接收来自接收端的携带要求重传的数据包消息,将该要求重传的数据包进行缓存,并在该发送端处于空闲状态时,发送该缓存的要求重传的数据包;
接收端,用于接收数据包,如果确定接收的数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果确定接收的数据包不正确,向发送端发送携带要求重传的数据包消息;
所述名称号包括用于标识发送端身份的发送端识别ID、用于标识数据包所属批次的批次标识、以及用于标识数据包在所属批次中的顺序的标记号;
所述接收数组以接收数组名称号进行标识,所述接收数组名称号包括:数据包源端ID、数组名以及元素名;
所述发送端识别ID与所述数据包源端ID相同,所述批次标识匹配所述数组名,所述标记号匹配所述元素名。
CN200910091232A 2009-08-13 2009-08-13 一种重传数据包的方法、装置及系统 Active CN101621368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910091232A CN101621368B (zh) 2009-08-13 2009-08-13 一种重传数据包的方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910091232A CN101621368B (zh) 2009-08-13 2009-08-13 一种重传数据包的方法、装置及系统

Publications (2)

Publication Number Publication Date
CN101621368A CN101621368A (zh) 2010-01-06
CN101621368B true CN101621368B (zh) 2012-10-17

Family

ID=41514437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910091232A Active CN101621368B (zh) 2009-08-13 2009-08-13 一种重传数据包的方法、装置及系统

Country Status (1)

Country Link
CN (1) CN101621368B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102724024B (zh) * 2012-06-29 2015-10-14 深圳市博瑞得科技有限公司 信令采集的数据缓存及重传方法
CN103794006B (zh) * 2012-10-31 2016-12-21 国际商业机器公司 用于处理多个传感器的时序数据的方法和装置
CN103957169A (zh) * 2014-05-14 2014-07-30 上海复兰信息科技有限公司 一种基于反向请求的可靠udp的实现方法
CN103944820A (zh) * 2014-05-15 2014-07-23 东莞市联臣电子科技有限公司 一种数据的通信方法、主机、从机及通信系统
CN104363079A (zh) * 2014-10-21 2015-02-18 苏州合欣美电子科技有限公司 一种研磨机的通信系统
CN104581886A (zh) * 2015-01-16 2015-04-29 深圳市银河风云网络系统股份有限公司 数据传输、终端无线连接无线设备的方法及其系统
CN105515896B (zh) * 2015-11-30 2019-02-15 青岛海信移动通信技术股份有限公司 一种移动终端网络阻塞的判断方法和装置
CN106899380B (zh) * 2015-12-19 2020-03-17 联芯科技有限公司 一种volte视频电话传输方法及其系统
CN106059718B (zh) * 2016-05-05 2019-06-11 浙江宇视科技有限公司 一种数据重传方法及装置
CN106301709B (zh) * 2016-08-02 2019-11-05 芯启源电子科技有限公司 Usb电子装置及数据包重传控制方法和系统
CN108243323B (zh) 2016-12-23 2019-12-20 杭州海康威视数字技术股份有限公司 一种软件升级方法及装置
CN106888428B (zh) * 2017-03-27 2020-02-11 北京大学 基于蓝牙的智能终端与医疗可穿戴设备间的数据传输方法
CN109039552B (zh) * 2018-09-20 2021-11-09 郑州云海信息技术有限公司 一种数据恢复方法及装置
CN111385523B (zh) * 2018-12-27 2022-10-28 北京图森智途科技有限公司 一种数据接收方法、图像处理设备和汽车
CN111385015A (zh) * 2018-12-29 2020-07-07 上海复控华龙微系统技术有限公司 卫星通信的数据传输、接收方法及装置、网关、终端
CN111431672A (zh) * 2019-01-09 2020-07-17 中兴通讯股份有限公司 数据的重传方法、装置、存储介质及电子装置
CN110430025B (zh) * 2019-08-01 2021-12-14 青岛海信宽带多媒体技术有限公司 一种数据发送方法、装置及光模块
CN113194125A (zh) * 2021-04-19 2021-07-30 天津市滨海新区环境创新研究院 基于物联网平台的丢包重传方法及系统
CN114374474A (zh) * 2021-12-29 2022-04-19 苏州摩比信通智能系统有限公司 一种数据传输系统及方法
CN114553622A (zh) * 2022-02-08 2022-05-27 珠海格力电器股份有限公司 语音数据传输方法、装置及语音终端设备
CN115065694B (zh) * 2022-07-29 2024-02-09 苏州浪潮智能科技有限公司 一种云存储数据中转上传系统、方法、设备及介质

Also Published As

Publication number Publication date
CN101621368A (zh) 2010-01-06

Similar Documents

Publication Publication Date Title
CN101621368B (zh) 一种重传数据包的方法、装置及系统
CN1091559C (zh) 无线网络接入系统
CN1613233B (zh) 用于重传的方法和系统
CN106559739B (zh) 适于蓝牙低功耗无线通信系统的轻量级数据传输方法
CN102377650B (zh) 数据发送处理方法、装置和系统
CN104518853B (zh) 一种数据重传的方法、接收端及系统
CN101924620B (zh) 报文重传方法和装置
CN103259632B (zh) 基于续采单传模型的无线传感网络数据可靠汇聚方法
CN101945341B (zh) 一种无线传感器网络点对点传输协议
CN1801687B (zh) 一种基于非应答机制的数据帧重传方法和系统
CN101010913A (zh) 在无线个域网中应答发送的数据流的接收的方法和系统
CN100471101C (zh) 基于错误反馈机制的数据重传方法及相应系统
CN107959555B (zh) 一种基于lwaap的数据传输方法、装置及存储介质
US8599734B1 (en) TCP proxy acknowledgements
CN101304302A (zh) 视频数据的传输方法及其系统
CN101652951A (zh) 重发请求发送方法及接收端装置
CN101652949A (zh) 分组通信方法以及接收端装置
CN104009829A (zh) 一种智能抄表系统无线网络重传算法
CN102137441B (zh) 数据传输方法、设备及系统
CN101662798B (zh) 无线传感器网络低功耗邀请重传方法及其装置
CN102315923B (zh) 一种3g卫星通信系统无线链路控制方法
CN100574274C (zh) 无线链路协议的传输系统及方法
CN102457986A (zh) 终端的上行数据传输方法及终端
CN101238674A (zh) 经由无线网络和无线装置发送和/或接收数据的方法和设备
EP2342857B1 (en) Communication system, dependent station thereof and dependent-station relay transmission method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method, device and system for retransmitting data packet

Effective date of registration: 20140109

Granted publication date: 20121017

Pledgee: Industrial Commercial Bank of China Ltd Zhongguancun Beijing branch

Pledgor: Beijing Beetech Technology Inc.

Registration number: 2014990000023

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
ASS Succession or assignment of patent right

Owner name: BEIJING HINNOTEK CO., LTD.

Effective date: 20150813

Owner name: BEIJING WILL CREATE TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: BEIJING BEETECH TECHNOLOGY INC.

Effective date: 20150813

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150813

Address after: 100085 Beijing city Haidian District on the seven street, Huizhong building room 710

Patentee after: BEIJING WILL CREATE TECHNOLOGY CO., LTD.

Patentee after: Beijing Zhuchuang Technology Co., Ltd.

Address before: 100085 Beijing city Haidian District on the seven street, Huizhong building room 710

Patentee before: Beijing Beetech Technology Inc.

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151124

Address after: 100085 Beijing city Haidian District on the seven street, Huizhong building room 710

Patentee after: BEIJING WILL CREATE TECHNOLOGY CO., LTD.

Address before: 100085 Beijing city Haidian District on the seven street, Huizhong building room 710

Patentee before: BEIJING WILL CREATE TECHNOLOGY CO., LTD.

Patentee before: Beijing Zhuchuang Technology Co., Ltd.

PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20161201

Granted publication date: 20121017

Pledgee: Industrial Commercial Bank of China Ltd Zhongguancun Beijing branch

Pledgor: BEIJING WILL CREATE TECHNOLOGY CO., LTD.

Registration number: 2014990000023

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PM01 Change of the registration of the contract for pledge of patent right

Change date: 20161201

Registration number: 2014990000023

Pledgor after: BEIJING WILL CREATE TECHNOLOGY CO., LTD.

Pledgor before: Beijing Beetech Technology Inc.