本发明涉及无线通信技术领域,尤其涉及wifi帧的编码方法、发送端、存储介质和一种无线接入设备。
背景技术:
smartconfig是一种技术的统称,它可以让wifi设备未建立任何性质的通信链路的情况下,不断接收空气的wifi帧进行分析,分析出发送端的数据。smartconfig技术广泛应用在智能设备的网络接入中。它可用组播mac和wifi帧长两种方式来承载数据。
其中,利用wifi帧长来编码,wifi广播包始终工作在低速上,保证所有的wifi设备都可用。但该方法受限于wifi帧的长度,可用的编码位数少,数据在传输时,容易因为丢包而带来乱序的问题,会使接收端无法收到正确的数据。
因此,如何解决利用wifi帧长编码承载数据时因丢包带来的乱序问题,这成为了本领域技术人员亟待解决的技术问题。
技术实现要素:
本发明实施例提供了wifi帧的编码方法、发送端、存储介质和一种无线接入设备,能够解决wifi广播中因丢包带来的乱序问题。
第一方面,提供了一种wifi帧的编码方法,包括:
将二进制格式的待传输数据依次编码至各个wifi帧中,在每个wifi帧中,y个指定比特位用于待传输数据的编码,x个指定比特位用于组内序列号的编码;其中,共k个各不相同的组内序列号,k≤2^x,所述组内序列号按照所述待传输数据编码至各个wifi帧的次序依次分配给所述各个wifi帧;所述待传输数据包括数据校验值和有效数据长度;
对所述各个wifi帧根据所承载的待传输数据的次序进行分组,每k个wifi帧作为1个小组,得到各个小组;
按照分组的次序分别为所述各个小组分配具有唯一性的组序列号,在发送时,每个所述组序列号作为一个独立的wifi帧进行发送;
将所述各个小组以及各个小组对应的所述组序列号按照所述分组的次序交给所述发送端进行wifi广播,在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送。
第二方面,提供了一种wifi帧的编码装置,包括:
数据编码模块,用于将二进制格式的待传输数据依次编码至各个wifi帧中,在每个wifi帧中,y个指定比特位用于待传输数据的编码,x个指定比特位用于组内序列号的编码;其中,共k个各不相同的组内序列号,k≤2^x,所述组内序列号按照所述待传输数据编码至各个wifi帧的次序依次分配给所述各个wifi帧;所述待传输数据包括数据校验值和有效数据长度;
帧分组模块,用于对所述各个wifi帧根据所承载的待传输数据的次序进行分组,每k个wifi帧作为1个小组,得到各个小组;
组序列号分配模块,用于按照分组的次序分别为所述各个小组分配具有唯一性的组序列号,在发送时,每个所述组序列号作为一个独立的wifi帧进行发送;
发送模块,用于将所述各个小组以及各个小组对应的所述组序列号按照所述分组的次序交给所述发送端进行wifi广播,在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送。
第三方面,提供了一种无线接入设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的wifi帧的编码方法的步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的wifi帧的编码方法的步骤。
第五方面,提供了一种wifi帧的解码方法,包括:
接收端接收发送端wifi广播的各个wifi帧;其中,所述各个wifi帧包括各个第一wifi帧和各个第二wifi帧;所述各个第一wifi帧用于承载本次wifi广播的待传输数据以及各自的组内序列号,所述各个第二wifi帧用于承载各自所在小组的组序列号;
若接收到所述各个第一wifi帧中任一第一wifi帧,且未接收到与所述任一第一wifi帧相邻的第二wifi帧,则所述接收端根据所述任一第一wifi帧的组内序列号、前一个第一wifi帧的组内序列号、以及前一个第二wifi帧的组序列号确定出所述任一第一wifi帧所在小组的组序列号;所述前一个第一wifi帧是指在接收所述任一第一wifi帧之前所述接收端最近接收到的第一wifi帧,所述前一个第二wifi帧是指在接收所述任一第一wifi帧之前所述接收端最近接收到的第二wifi帧;
所述接收端解析所述各个第一wifi帧和与所述各个第一wifi帧相邻的各个第二wifi帧,得到各个所述第一wifi帧的组内序列号以及所在小组的组序列号;
所述接收端根据各个所述第一wifi帧的组内序列号以及所在小组的组序列号计算各个所述第一wifi帧的全局序列号,所述全局序列号用于表征各个第一wifi帧在本次wifi广播中的全局次序;
所述接收端按照各个所述第一wifi帧的全局序列号解析所述各个第一wifi帧得到所述待传输数据;
所述接收端根据所述待传输数据中的所述数据校验值和有效数据长度对所述待传输数据进行验证;
若验证通过,则所述接收端确定获取到完整的所述待传输数据。
第六方面,提供了一种wifi帧的解码装置,包括:
帧接收模块,用于接收发送端wifi广播的各个wifi帧;其中,所述各个wifi帧包括各个第一wifi帧和各个第二wifi帧;所述各个第一wifi帧用于承载本次wifi广播的待传输数据以及各自的组内序列号,所述各个第二wifi帧用于承载各自所在小组的组序列号;
序列号确定模块,用于若所述帧接收模块接收到所述各个第一wifi帧中任一第一wifi帧,且未接收到与所述任一第一wifi帧相邻的第二wifi帧,则根据所述任一第一wifi帧的组内序列号、前一个第一wifi帧的组内序列号、以及前一个第二wifi帧的组序列号确定出所述任一第一wifi帧所在小组的组序列号;所述前一个第一wifi帧是指在接收所述任一第一wifi帧之前所述帧接收模块最近接收到的第一wifi帧,所述前一个第二wifi帧是指在接收所述任一第一wifi帧之前所述帧接收模块最近接收到的第二wifi帧;
帧解析模块,用于解析所述各个第一wifi帧和与所述各个第一wifi帧相邻的各个第二wifi帧,得到各个所述第一wifi帧的组内序列号以及所在小组的组序列号;
全局序列计算模块,用于根据各个所述第一wifi帧的组内序列号以及所在小组的组序列号计算各个所述第一wifi帧的全局序列号,所述全局序列号用于表征各个第一wifi帧在本次wifi广播中的全局次序;
数据解析模块,用于按照各个所述第一wifi帧的全局序列号解析所述各个第一wifi帧得到所述待传输数据;
数据验证模块,用于根据所述待传输数据中的所述数据校验值和有效数据长度对所述待传输数据进行验证;
接收完成确定模块,用于若所述数据验证模块验证通过,则确定获取到完整的所述待传输数据。
第七方面,提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的wifi帧的解码方法的步骤。
第八方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的wifi帧的解码方法的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,首先,将二进制格式的待传输数据依次编码至各个wifi帧中,在每个wifi帧中,y个指定比特位用于待传输数据的编码,x个指定比特位用于组内序列号的编码;其中,共k个各不相同的组内序列号,k≤2^x,所述组内序列号按照所述待传输数据编码至各个wifi帧的次序依次分配给所述各个wifi帧;所述待传输数据包括数据校验值和有效数据长度;然后,对所述各个wifi帧根据所承载的待传输数据的次序进行分组,每k个wifi帧作为1个小组,得到各个小组;接着,按照分组的次序分别为所述各个小组分配具有唯一性的组序列号,在发送时,每个所述组序列号作为一个独立的wifi帧进行发送;最后,将所述各个小组以及各个小组对应的所述组序列号按照所述分组的次序交给所述发送端进行wifi广播,在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送。这样,在将待传输数据编码至wifi帧的同时也编码了该wifi帧对应的组内序列号,并且,在对得到的各个wifi帧进行分组以后,为各个小组分配对应的组序列号,通过组序列号区分各个小组之间的次序,而在每个小组的内部则通过各个组内序列号区分wifi帧的次序,从而接收端在接收wifi广播的这些wifi帧之后,由于一个wifi帧中既包含待传输数据又包含组内序列号,还可以接收到与小组对应wifi帧相邻的组序列号,从而在数据校验值和有效数据长度的辅助下,即便出现丢包现象,接收端也可以根据组序列号和组内序列号还原这些wifi帧中承载的待传输数据的次序,解决了因丢包带来的乱序问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种wifi帧的编码方法一个实施例流程图;
图2为本发明实施例中一种wifi帧的解码方法一个实施例流程图;
图3为本发明实施例中一种wifi帧的编码装置一个实施例结构图;
图4为本发明一实施例提供的无线接入设备的示意图;
图5为本发明实施例中一种wifi帧的解码装置一个实施例结构图;
图6为本发明一实施例提供的终端设备的示意图。
具体实施方式
本发明实施例提供了wifi帧的编码方法、发送端、存储介质和一种无线接入设备,用于解决wifi广播中因丢包带来的乱序问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中一种wifi帧的编码方法一个实施例包括:
101、将二进制格式的待传输数据依次编码至各个wifi帧中,在每个wifi帧中,y个指定比特位用于待传输数据的编码,x个指定比特位用于组内序列号的编码;其中,共k个各不相同的组内序列号,k≤2^x,所述组内序列号按照所述待传输数据编码至各个wifi帧的次序依次分配给所述各个wifi帧;所述待传输数据包括数据校验值和有效数据长度;
102、对所述各个wifi帧根据所承载的待传输数据的次序进行分组,每k个wifi帧作为1个小组,得到各个小组;
103、按照分组的次序分别为所述各个小组分配具有唯一性的组序列号,在发送时,每个所述组序列号作为一个独立的wifi帧进行发送;
104、将所述各个小组以及各个小组对应的所述组序列号按照所述分组的次序交给所述发送端进行wifi广播,在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送。
本实施例利用wifi帧长进行编码,通过对ascii数据进行特殊的编码,使得1个wifi帧中既包含待传输数据又包含组内序列号,在wifi广播时,还将各个小组对应的组序列号相邻发送,从而接收端可以根据接收到的组序列号和组内序列号计算出各个wifi帧的全局序列号,还原本次wifi广播所承载的待传输数据的次序,解决因丢包而带来的乱序问题。
对于上述步骤101,在编码之前,若待传输的数据并非是二进制格式,可以先对这些待传输的数据进行格式的转换,转换为二进制格式的数据,比如转换为ascii码格式。
在wifi广播中,一个wifi帧的长度是有限的,例如,对于一般的无线接入设备而言,其mtu(maximumtransmissionunit,最大传输单元)一般略大于1024,也即一个wifi帧的帧长为10bit。在将待传输数据编码至wifi帧时,要求x+y的值要小于等于一个wifi帧的可编码的比特位数,而一个wifi帧的可编码的比特位数由无线接入设备(即发送端)wifi广播的mtu决定。因此,在实际使用过程中,可以根据发送端的mtu来分别选取x和y的值,从而调整编码效率和广播的稳定性。
编码时,一个wifi帧中的x个指定比特位可以是高比特位,也可以是低比特位,例如,高3位用作组内序列号的编码,或者低3位用作组内序列号的编码。其中,x的值决定了本次编码中各不相同的组内序列号的个数。假设x=1,则各不相同的组内序列号最多只有2个,“0”或者“1”,即此时k=2;假设x=2,则各不相同的组内序列号最多有4个,“00”、“01”、“10”或者“11”,即此时k=4;等等。在将待传输数据编码至各个wifi帧的时候,由于各不相同的组内序列号的个数有限,因此这些组内序列号将重复使用,并依照待传输数据的编码次序分配给各个wifi帧。例如,假设x=2,待传输数据依次编码至7个wifi帧,则这7个wifi帧依次分配得到的组内序列号分别为:“00”、“01”、“10”、“11”、“00”、“01”、“10”。
而对于一个wifi帧中的y个指定比特位,其也可以是高比特位或者低比特位。当x个指定比特位为高比特位时,则y个指定比特位为低比特位;反之,x个指定比特位为低比特位时,则y个指定比特位为高比特位。需要注意的是,在将待传输数据编码至各个wifi帧的y个指定比特位中时,必须依照待传输数据的顺序进行编码。例如,假设待传输数据的二进制格式为“001101110101”,y=3,则该待传输数据依次编码至4个wifi帧中,第一个wifi帧中的y个指定比特位为“001”,第二个wifi帧中的y个指定比特位为“101”,第三个wifi帧中的y个指定比特位为“110”,第四个wifi帧中的y个指定比特位为“101”。
需要说明的是,该待传输数据还包括了本次编码所需的数据校验值和有效数据长度。其中,数据校验值用于接收端对接收到的数据进行正确性校验;有效数据长度用于接收端以此计算出发送端本次发送数据序列的总长度,从而作为停止接收的判断依据。
对于上述步骤102,由上述关于x个指定比特位的内容可知,由于各不相同的组内序列号的个数有限,为了接收端能够得知本次所发送数据序列的各个wifi帧的全局序列号,需要对所述各个wifi帧进行分组,将相邻的、带有各不相同的组内序列号的wifi帧归为一组,即依照待传输数据的次序将每k个wifi帧作为1个小组,从而得到若干个小组。例如,对于上述依次分配得到“00”、“01”、“10”、“11”、“00”、“01”、“10”这7个组内序列号的7个wifi帧来说,可以将前4个wifi帧归为第一个小组,后3个wifi帧归为第二个小组。需要说明的是,假设后3个wifi帧归为的第二个小组为本次发送数据序列的最后1个小组,由于3个wifi帧不满1个小组,可以为所述第二个小组补上1个wifi帧,从而补齐该第二个小组。其中,可以采用填0的方式进行补齐。
对于上述步骤103,分组后,还需要按照分组的次序分别为各个小组分配具有唯一性的组序列号。比如,对于上述7个wifi帧的举例来说,先为第一个小组分配组序列号“0”,再为第二个小组分配组序列号“1”。本实施例中,在发送端发送各个wifi帧时,这些组序列号是分别作为一个独立的wifi帧进行发送的,即,组序列号“0”为一个独立的wifi帧,组序列号“1”为另一个独立的wifi帧。可以理解的是,为了在wifi广播时,让接收端得知各个组序列号与各个小组之间的对应关系,每个所述组序列号均与其对应的所述小组相邻发送。具体地,可以将各个组序列号和各个小组提交给发送端,发送端在wifi广播时按照各个组序列号与各个小组之间的对应关系,将相互对应的组序列号和小组进行相邻发送;也可以是,在提交给发送端之前,先按照各个组序列号与各个小组之间的对应关系将组序列号与小组两两相邻、交错排列,然后将排列得到的wifi帧队列按队列顺序提交给发送端,这样,发送端在wifi广播之前直接按照提交上来的wifi帧队列进行wifi广播即可。比如,记第一个小组的4个wifi帧分别为“a1”、“a2”、“a3”、“a4”,第二个小组的4个wifi帧分别为“b1”、“b2”、“b3”、“b4”,组序列号排列在对应小组的前面,则得到wifi帧队列为:“0”、“a1”、“a2”、“a3”、“a4”、“1”、“b1”、“b2”、“b3”、“b4”。从而,发送端在wifi广播时,先从“0”这个wifi帧开始广播,接着广播“a1”这个wifi帧……最后广播“b4”这个wifi帧。
由上述内容可知,分组后,对于本次发送的各个wifi帧,通过组序列号区分各个小组之间的次序,而对于每个小组中的多个wifi帧,则通过组内序列号来区分小组内wifi帧之间的次序,从而接收端可以得知发送端本次发送数据序列对应的各个wifi帧的全局次序。
对于上述步骤104,在确定好各个小组以及各个小组对应的组序列号之后,可以按照分组的次序提交给发送端进行wifi广播,在wifi广播时,要求每个所述组序列号均与其对应的所述小组相邻发送。例如,承接上述关于7个wifi帧的举例,第一个小组与组序列号“0”相邻发送,第二个小组与组序列号“1”相邻发送。其中,组序列号可以在对应小组之前发送,例如,wifi广播时,先发送组序列号“0”对应的wifi帧,再依次发送第一个小组中的4个wifi帧,然后发送组序列号“1”对应的wifi帧,再依次发送第二个小组中的4个wifi帧;组序列号也可以在对应小组之后发送,例如,wifi广播时,先依次发送第一个小组中的4个wifi帧,再发送组序列号“0”对应的wifi帧,然后依次发送第二个小组中的4个wifi帧,再发送组序列号“1”对应的wifi帧。
进一步地,为了降低在wifi广播时组序列号的丢失概率,在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送,且每个所述组序列号重复发送两次以上。例如,可以先重复发送4次,也即4帧的组序列号“0”,再依次发送第一个小组中的4个wifi帧。这样,在wifi广播过程中,即便某个承载组序列号“0”的wifi帧丢失了,接收端还可以接收到其它3个承载组序列号“0”的wifi帧,只有在4个承载组序列号“0”的wifi帧均丢失的情况下,接收端才会无法获取到组序列号“0”。
进一步地,为了避免组序列号编码后的wifi帧的值与待传输数据编码后的wifi帧的值存在重合的范围,导致接收端无法区分组序列号与待传输数据的情况,可以将所述各个小组对应的各个组序列号编码至wifi帧中,所述各个组序列号在wifi帧中编码后的值属于预设的第一数值范围;其中,所述待传输数据在wifi帧中编码后的值属于预设的第二数值范围,所述第一数值范围与所述第二数值范围之间不具有重合的范围。例如,在待传输数据编码时,其编码后的值范围控制在[200,∞]内,则接收端在接收到各个wifi帧之后,可以根据wifi帧的值落入的范围来判断得知当前的wifi帧承载的是组序列号还是待传输数据。
优选地,对于不同mtu的无线接入设备,x和y的值决定了其wifi广播时的编码效率和广播稳定性。为此,本实施例针对一个具体的应用场景对上述的wifi帧的编码方法进行详细的描述:
在一个应用场景下,发送端进行wifi广播的每个wifi帧的可编码的比特位数为8,x=3,y=4,且k=8。其中,4个指定比特位为低比特位,用于待传输数据的编码,3个指定比特位为高比特位,用于组内序列号的编码。本应用场景中,待传输数据的编码范围为[200,∞]。
假设待传输的数据为“my”,其有效数据长度为2,计算得到的crc16校验和为0xc376。将有效数据长度2、数据校验值0xc376和数据“my”作为本次传输的待传输数据。其中,从高位到低位排列,有效数据长度2的ascii码为:0和0x02;数据校验值0xc376的ascii码为:0x06和0x76;数据“my”的ascii码分别为:0x4d(对应‘m’)、0x79(对应‘y’)。
由于k=8,即本应用场景中每8个wifi帧为1个小组,小组内8个组内序列号分别为‘000’(记为0<<7)、‘001’(记为1<<7)、‘010’(记为2<<7)、‘011’(记为3<<7)、‘100’(记为4<<7)、‘101’(记为5<<7)、‘110’(记为6<<7)、‘111’(记为7<<7)。对述的待传输数据分组,共得到1个小组,第一个小组包含的待传输数据分别为:0、0x02、0x06、0x76、0x4d(对应‘m’)、0x79(对应‘y’)。
在将待传输数据编码至wifi帧中时,同时按照待传输数据的次序在高3位中加入对应的组内序列号,因此,待发送的wifi帧分别为:(0<<7)|0=0x000、(1<<7)|0x02=0x082、(2<<7)|0x06=0x106、(3<<7)|0x76=0x1f6、(4<<7)|0x4d=0x24d、(5<<7)|0x79=0x2f9。
本应用场景中,组序列号从0开始计数,因此第一个小组的组序列号为0,第二个小组的组序列号为1。每个组序列号单独作为一个wifi帧发送,因此,将组序列号0编码至wifi帧中为:0,将组序列号1编码至wifi帧中为:0x01=0x001。
本应用场景下,每组的组序列号排在其对应的小组前面且相邻的位置上,得到提交给发送端的数据序列如下:
为了提高降低组序列号的丢失概率,本应用场景中,每个组序列号重复发送4次。因此,加上偏移量后,提交给发送端的数据序列如下表格所示:
可知,本应用场景下,传输数据“my”时需要提交给发送端的最终数据序列为{0,0,0,0,223,330,462,702,789,961},则发送端进行wifi广播时,发送的第1个wifi帧的帧长为0,第2个wifi帧的帧长为0,…,最后1个wifi帧的帧长为961。
在本应用场景中,x=3,y=7,且k=8,每个组序列号重复发送4次,因此,其编码效率为(7*8)/(10*12)=46.6%。该编码效率不仅比现有技术的编码效率高,而且由于组序列号重复发送4次,大大降低丢失组序列号的概率,增强了广播的稳定性。若为了追求较高的编码效率,每个组序列号可以只发送1次,则此时其编码效率达到(7*8)/(10*9)=62.2%。
优选地,在另一个应用场景下,发送端进行wifi广播的每个wifi帧的可编码的比特位数为10,x=2,y=8,且k=4,每个组序列号发送1次,同理,其编码效率则达到了(8*4)/(10*5)=64%。经过各个应用场景的比较可知,在一个wifi帧的可编码的比特位数为10时,本应用场景的编码效率最高。
优选地,在另一个应用场景下,发送端进行wifi广播的每个wifi帧的可编码的比特位数为10,x=2,y=8,且k=4,每个组序列号发送3次,同理,其编码效率则达到了(8*4)/(10*7)=45.7%。可见,与上述“x=3,y=7,且k=8,每个组序列号重复发送4次”这个应用场景的编码效率对比,且经过反复验证后可知,当wifi广播的每个wifi帧的可编码的比特位数为10,且每个组序列号需要发送多次时,x=3且y=7的编码效率可以达到最高。
考虑到smartconfig技术主要用于传输ssid和密码,密码全是可见字符,ascii在127以内;而ssid可能包含中文字符,才需要把ascii值大于127的数据压缩到127之内。因此,进一步地,在无线接入设备在传输ssid和密码时,可以对ssid和密码分开编码,这样有利于降低编码的复杂度。
综上所述,本发明利用了分组设计的思想,把组序列号和小组一起发送,通过组序列号区分小组之间的次序,并通过小组内的组内序列号区分组内各个wifi帧之间的次序,解决了数据全局序列号的问题。接收端只需按照wifi帧的编码规则对接收到的数据进行还原,即可得到各个wifi帧各自的全局序列号,并得到还原后待传输的数据。
请参阅图2,本发明实施例中一种wifi帧的解码方法一个实施例包括:
201、接收端接收发送端wifi广播的各个wifi帧;其中,所述各个wifi帧包括各个第一wifi帧和各个第二wifi帧;所述各个第一wifi帧用于承载本次wifi广播的待传输数据以及各自的组内序列号,所述各个第二wifi帧用于承载各自所在小组的组序列号;
202、若接收到所述各个第一wifi帧中任一第一wifi帧,且未接收到与所述任一第一wifi帧相邻的第二wifi帧,则所述接收端根据所述任一第一wifi帧的组内序列号、前一个第一wifi帧的组内序列号、以及前一个第二wifi帧的组序列号确定出所述任一第一wifi帧所在小组的组序列号;所述前一个第一wifi帧是指在接收所述任一第一wifi帧之前所述接收端最近接收到的第一wifi帧,所述前一个第二wifi帧是指在接收所述任一第一wifi帧之前所述接收端最近接收到的第二wifi帧;
203、所述接收端解析所述各个第一wifi帧和与所述各个第一wifi帧相邻的各个第二wifi帧,得到各个所述第一wifi帧的组内序列号以及所在小组的组序列号;
204、所述接收端根据各个所述第一wifi帧的组内序列号以及所在小组的组序列号计算各个所述第一wifi帧的全局序列号,所述全局序列号用于表征各个第一wifi帧在本次wifi广播中的全局次序;
205、所述接收端按照各个所述第一wifi帧的全局序列号解析所述各个第一wifi帧得到所述待传输数据;
206、所述接收端根据所述待传输数据中的所述数据校验值和有效数据长度对所述待传输数据进行验证;
207、若验证不通过,则所述接收端丢弃所述待传输数据,并返回重新执行步骤201;
208、若验证通过,则所述接收端确定获取到完整的所述待传输数据。
对于步骤201,可以理解的是,发送端进行wifi广播时,将各个第一wifi帧和各个第二wifi帧相邻且循环广播。比如,在传输数据“my”的一个应用场景下,发送端先广播4个第二wifi帧“0”,然后依次广播第一wifi帧“223”、“330”、“462”、“702”、“789”和“961”,当第一轮广播第一wifi帧“961”结束后,发送端再进行第二轮广播,重新广播4个第二wifi帧“0”……如此重复广播,直至发送端结束广播为止。因此,接收端可以在发送端wifi广播的过程中,依次接收到各个wifi帧,包括了第一wifi帧和第二wifi帧。
对于步骤202,由于在wifi广播过程中,可能存在丢包的情况,即接收端接收不到部分wifi帧。这种情况下,接收端可能会接收到某个第一wifi帧,但未接收到与该第一wifi帧相邻的第二wifi帧,尤其是在每个第二wifi帧只发送一次(在一轮中不重复发送)的情况下,此时,接收端可以根据该第一wifi帧的组内序列号、前一个第一wifi帧的组内序列号、以及前一个第二wifi帧的组序列号推断出该第一wifi帧所在小组的组序列号,相当于推算出了丢失的那个第二wifi帧承载的组序列号。
对于步骤203和204,接收端根据发送端对各个wifi帧的编码方法进行反向解码,即可解析出各个所述第一wifi帧的组内序列号以及所在小组的组序列号,并由此计算出各个第一wifi帧的全局序列号。
对于步骤205,可以理解的是,当确定出各个第一wifi帧的全局序列号之后,即可根据全局序列号将各个wifi帧承载的待传输数据按顺序重组,得到发送端本次传输的数据。
对于步骤206~208,在得到所述待传输数据之后,接收端可以根据待传输数据中的所述数据校验值和有效数据长度对所述待传输数据进行验证,可知,若验证不通过,则表示接收端解析出来的待传输数据不正确,与发送端本次广播的数据不一致,因此丢弃解析出来的待传输数据,然后返回执行步骤201,重新执行本发明的wifi帧的解码方法。反之,若验证通过,则表示接收端解析出来的待传输数据正确,与发送端本次广播的数据一致,从而可以确定接收端本次接收完成,可以结束接收广播的wifi帧。
为便于理解,下面将承接上述x=3,y=7,且k=8的应用场景对接收端还原数据的过程进行详细说明:
当接收端收到组序列号i时,可知后面数据所在的组序列号也为i。若后面接收到的数据为k,则组内序列号为k>>7(取高3位),该数据的全局序列号为i*8+k>>7;
当接收端没有收到组序列号但有接收到小组对应的wifi帧时,可根据上一次接收的组序列号推断出该小组的组序列号。假如上一次接收到的组序列号为i,组内序列号为k,当前接收到wifi帧的组内序列号为t。如果t>k,可认为当前的wifi帧所在小组的组序列号还是为i;如果t<=k,则可认为当前wifi帧属于下一小组,其所在小组的组序列号为i+1,全局的序列号则为(i+1)*8+t。
只有当某个小组的组序列号和小组对应的wifi帧全部丢弃时,接收端才无法推断数据的全局序列号。另外,本发明还通过增加冗余的组序列号的发送,可降低连续丢包导致接收端无法计算全局序列号的概率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上面主要描述了一种wifi帧的编码方法和一种wifi帧的解码方法,下面将对一种wifi帧的编码装置和一种wifi帧的解码装置进行详细描述。
图3示出了本发明实施例中wifi帧的编码装置一个实施例结构图。
本实施例中,一种wifi帧的编码装置包括:
数据编码模块301,用于将二进制格式的待传输数据依次编码至各个wifi帧中,在每个wifi帧中,y个指定比特位用于待传输数据的编码,x个指定比特位用于组内序列号的编码;其中,共k个各不相同的组内序列号,k≤2^x,所述组内序列号按照所述待传输数据编码至各个wifi帧的次序依次分配给所述各个wifi帧;所述待传输数据包括数据校验值和有效数据长度;
帧分组模块302,用于对所述各个wifi帧根据所承载的待传输数据的次序进行分组,每k个wifi帧作为1个小组,得到各个小组;
组序列号分配模块303,用于按照分组的次序分别为所述各个小组分配具有唯一性的组序列号,在发送时,每个所述组序列号作为一个独立的wifi帧进行发送;
发送模块304,用于将所述各个小组以及各个小组对应的所述组序列号按照所述分组的次序交给所述发送端进行wifi广播,在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送。
进一步地,所述发送模块可以用于:在wifi广播时,每个所述组序列号均与其对应的所述小组相邻发送,且每个所述组序列号重复发送两次以上。
进一步地,若所述发送端进行wifi广播的每个wifi帧的可编码的比特位数为10,则x=3,y=7,且k=8;
或
若所述发送端进行wifi广播的每个wifi帧的可编码的比特位数为10,则x=2,y=8,且k=4。
进一步地,所述wifi帧的编码装置还可以包括:
组序列号编码模块,用于将所述各个小组对应的各个组序列号编码至wifi帧中,所述各个组序列号在wifi帧中编码后的值属于预设的第一数值范围;
其中,所述待传输数据在wifi帧中编码后的值属于预设的第二数值范围,所述第一数值范围与所述第二数值范围之间不具有重合的范围。
图4是本发明一实施例提供的无线接入设备的示意图。如图4所示,该实施例的无线接入设备4包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机程序42,例如wifi帧的编码程序。所述处理器40执行所述计算机程序42时实现上述各个wifi帧的编码方法实施例中的步骤,例如图1所示的步骤101至104。或者,所述处理器40执行所述计算机程序42时实现上述各装置实施例中各模块/单元的功能,例如图2所示模块201至204的功能。
示例性的,所述计算机程序42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序42在所述无线接入设备4中的执行过程。
所述无线接入设备4可以是移动终端、平板电脑、笔记本电脑、无线路由器、无线交换机等计算设备。所述无线接入设备可包括,但不仅限于,处理器40、存储器41。本领域技术人员可以理解,图4仅仅是无线接入设备4的示例,并不构成对无线接入设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述无线接入设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器40可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器41可以是所述无线接入设备4的内部存储单元,例如无线接入设备4的硬盘或内存。所述存储器41也可以是所述无线接入设备4的外部存储设备,例如所述无线接入设备4上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器41还可以既包括所述无线接入设备4的内部存储单元也包括外部存储设备。所述存储器41用于存储所述计算机程序以及所述无线接入设备所需的其他程序和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
图5示出了本发明实施例中一种wifi帧的解码装置一个实施例结构图。
本实施例中,一种wifi帧的解码装置包括:
帧接收模块501,用于接收发送端wifi广播的各个wifi帧;其中,所述各个wifi帧包括各个第一wifi帧和各个第二wifi帧;所述各个第一wifi帧用于承载本次wifi广播的待传输数据以及各自的组内序列号,所述各个第二wifi帧用于承载各自所在小组的组序列号;
序列号确定模块502,用于若所述帧接收模块501接收到所述各个第一wifi帧中任一第一wifi帧,且未接收到与所述任一第一wifi帧相邻的第二wifi帧,则根据所述任一第一wifi帧的组内序列号、前一个第一wifi帧的组内序列号、以及前一个第二wifi帧的组序列号确定出所述任一第一wifi帧所在小组的组序列号;所述前一个第一wifi帧是指在接收所述任一第一wifi帧之前所述帧接收模块501最近接收到的第一wifi帧,所述前一个第二wifi帧是指在接收所述任一第一wifi帧之前所述帧接收模块501最近接收到的第二wifi帧;
帧解析模块503,用于解析所述各个第一wifi帧和与所述各个第一wifi帧相邻的各个第二wifi帧,得到各个所述第一wifi帧的组内序列号以及所在小组的组序列号;
全局序列计算模块504,用于根据各个所述第一wifi帧的组内序列号以及所在小组的组序列号计算各个所述第一wifi帧的全局序列号,所述全局序列号用于表征各个第一wifi帧在本次wifi广播中的全局次序;
数据解析模块505,用于按照各个所述第一wifi帧的全局序列号解析所述各个第一wifi帧得到所述待传输数据;
数据验证模块506,用于根据所述待传输数据中的所述数据校验值和有效数据长度对所述待传输数据进行验证;
接收完成确定模块507,用于若所述数据验证模块506验证通过,则确定获取到完整的所述待传输数据。
进一步地,所述发送端本次wifi广播的待传输数据被依次编码至所述各个第一wifi帧中,并按照所述待传输数据的编码次序将k个各不相同的组内序列号依次分配给所述各个第一wifi帧;所述待传输数据包括数据校验值和有效数据长度;所述各个第一wifi帧根据所承载的待传输数据的次序进行分组,每k个第一wifi帧作为1个小组,得到各个小组,并按照分组的次序分别为所述各个小组分配具有唯一性的组序列号,在发送时,每个所述组序列号作为一个所述第二wifi帧进行发送;所述发送端将所述各个小组以及各个小组对应的所述组序列号按照所述分组的次序进行wifi广播,每个所述组序列号均与其对应的所述小组相邻发送。
进一步地,所述wifi帧的解码装置还可以包括:
保留丢弃模块,用于若所述帧接收模块501相邻接收到两个以上相同的第二wifi帧,则保留所述相同的第二wifi帧中的任意一个,并丢弃所述相同的第二wifi帧中其它第二wifi帧。
图6是本发明一实施例提供的终端设备的示意图。如图6所示,该实施例的终端设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如执行所述wifi帧的解码方法的程序。所述处理器60执行所述计算机程序62时实现上述各个wifi帧的解码方法实施例中的步骤,例如图2所示的步骤201至208。或者,所述处理器60执行所述计算机程序62时实现上述各装置实施例中各模块/单元的功能,例如图5所示模块501至507的功能。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述终端设备6中的执行过程。
所述终端设备6可以是智能电视、智能冰箱、智能音箱、智能空调等设备。所述终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的示例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器60可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。