基于帧序的UDP数据重组方法技术

技术编号:21438358 阅读:54 留言:0更新日期:2019-06-22 13:54
本发明专利技术提供了一种基于帧序的UDP数据重组方法,基于互联网UDP协议数据帧发送的有序性,以及airkiss配网协议数据发送的重复性,在数据发送端重复发送UDP数据,在数据接收端基于发送帧的序号,将接收的数据匹配到数据发送时的位置,进行数据重组,实现数据完整、连续的接收。本发明专利技术的有益效果是:有效的规避了airkiss的UDP数据包丢失率高的问题,数倍提高了airkiss智能配网的成功率,缩短了airkiss智能配网的时间。

【技术实现步骤摘要】
基于帧序的UDP数据重组方法
本专利技术涉及UDP数据重组方法,尤其涉及一种基于帧序的UDP数据重组方法。
技术介绍
近些年,随着智能家居、物联网的日渐普及,如何让这些不带输入功能的智能设备接入互联网,一直是业内讨论的热点。TI公司最早提出了smartConfig智能配网算法,引入以Length字段进行编码,来传递AP(无线访问接入点)的SSID(服务集标识)和PWD(密码)信息。微信完善了这种智能配网算法,并将其称之为airkiss技术,目前微信airkiss技术逐渐在市场上占据主导地位。微信Airkiss配网基本流程如下:1.wifi智能设备以station混杂模式运行;2.手机微信客户端通过Airkiss发送路由器的ssid和psw密码;3.wifi设备通过抓包获取到ssid和psw密码,然后连接到路由器。airkiss数据流程图如图1所示,智能终端内置的WIFI芯片处于混杂模式,通过抓取数据包,再丢给airkiss程序处理,由于网络环境的复杂性,可能同时存在许多个WIFI路由器或路由设备,导致收到非常多的无效数据。此外,airkiss客户端发送的是无连接的UDP,数据经常会丢失。这些因素叠加,导致收到的airkiss中的丢包率达到了30%-40%,在WIFI环境差的时候,丢包率甚至达到了50%。airkiss的协议规定:1.连续收到4个正确的guidecode,锁定此WIFI频道,等待接收magiccode。2.连续收到4个正确的magiccode,得到总长度和ssid校验和。3.连续收到4个正确的prefixcode,得到密码(psw)长度和psw的校验和。4.多次接收6个正确的psw和ssid和数据(含1个数据字段的index和4个数据字节),接收次数等于总长度/4。从协议规定可以计算出,如果以30%的丢包率,连续收到4个正确字节的概率是0.7*0.7*0.7*0.7=0.24,连续收到6个正确字节的概率是0.7*0.7*0.7*0.7*0.7*0.7=0.11。从统计学上来说,需要连发5次才能收到4个连续正确的字节,需要连发10次才能收到6个连续正确的字节。当丢包率达到50%时,已经很难正确接收psw和ssid的数据了。事实上也正是如此,在未采用基于帧序的UDP数据重组算法之前,收到psw和ssid数据,十几次才会有一次成功。即使成功,也需要很长的配网时间。因此,如果提高airkiss的配网成功率是本领域技术人员所亟待解决的技术问题。
技术实现思路
为了解决现有技术中的问题,本专利技术提供了一种基于帧序的UDP数据重组方法。本专利技术提供了一种基于帧序的UDP数据重组方法,基于互联网UDP协议数据帧发送的有序性,以及airkiss配网协议数据发送的重复性,在数据发送端重复发送UDP(用户数据报协议)数据,在数据接收端基于发送帧的序号,将接收的数据匹配到数据发送时的位置,进行数据重组,实现数据完整、连续的接收。作为本专利技术的进一步改进,通过累积填充数据字节的方式进行数据重组。作为本专利技术的进一步改进,包括以下步骤:(1)airkiss_recv接收客户端发送过来的数据,在接收到guidecode后,调用airkiss_filter过滤数据,只接收和guidecode帧相同mac地址的帧,包括发送端mac地址,发送路由器mac地址,接收端mac地址;(2)对数据有效性进行判断,分多次接收数据,如果第1、2以及3-6中的任一个数据一共3个数据满足协议规定,则是一次有效的数据;(3)第2个字节index代表了seq数据组的序号0-need_seq,将这次收到的数据放置到seq_data[index]中,seq_data[index]共6个字节,第1个字节代表了这一数据组的crc校验和,第2个字节index,第3-6个字节是数据,待4个数据全部收全后进行校验;(4)依次查看其后的4个数据位,先将数据所处的帧序号frame_id和index的frame_id相减,如果范围是1-4之内,就是有效的数据,放置到对应的seq_data[index][id]中;(5)将index所在的数据组,进行crc检验,并判断index数据组是否全部收集,seq_data[index]所有的数据不为0表明数据已全部收集;(6)如果index数据组的数据未全部收集,或者crc校验未通过,继续到第(1)步接收数据;(7)如果index数据组的数据已经全部收集,并且crc校验通过,代表index数据组接收成功;(8)查看是否0-need_seq,一共need_seq的数据是否全部接收成功;(9)如果还有一些数据组没有收全数据,继续到第(1)步接收数据;(10)0-need_seq所有的数据全部OK,存入ssid和psw数组,写入到wpa_supplicant.conf文件,并调用脚本连接网络。本专利技术的有益效果是:有效的规避了airkiss的UDP数据包丢失率高的问题,数倍提高了airkiss智能配网的成功率,缩短了airkiss智能配网的时间。附图说明图1是现有技术中的airkiss数据流程图。图2是本专利技术一种基于帧序的UDP数据重组方法的ssid和psw数据字段定义结构图。图3是本专利技术一种基于帧序的UDP数据重组方法的airkiss协作基本框图。图4是本专利技术一种基于帧序的UDP数据重组方法的airkiss数据处理和状态图。图5是本专利技术一种基于帧序的UDP数据重组方法的流程图。具体实施方式下面结合附图说明及具体实施方式对本专利技术作进一步说明。如图2至图5所示,一种基于帧序的UDP数据重组方法,基于互联网UDP协议数据帧发送的有序性,以及airkiss配网协议数据发送的重复性,在数据发送端重复发送UDP数据,在数据接收端基于发送帧的序号,将接收的数据匹配到数据发送时的位置,进行数据重组,实现数据完整、连续的接收。本专利技术提供的一种基于帧序的UDP数据重组方法,基于互联网UDP协议数据帧发送的有序性,以及airkiss配网协议数据发送的重复性,在数据接收端基于发送帧的序号,将接收的数据匹配到数据发送时的位置进行重组,有效的规避了airkiss的UDP数据包丢失率高的问题,数倍提高了airkiss智能配网的成功率,缩短了airkiss智能配网的时间。因此,本方法对于airkiss智能配网的推广和应用有较大价值。同时,本方法也对无连接的UDP数据发送提供了一种参考:可以通过重复发送UDP数据,在接收端基于帧序进行数据重组来接收数据,可以实现一种虚拟连接的效果。在airkiss程序内,打印出收到的airkiss数据,数据片段如下:451,[08420000ffffffffffffb0e235065998000af5866dd48064]438,[08420000ffffffffffffb0e235065998000af5866dd49064]//丢64a0204,[08420000ffffffffffffb0e235065998000af5866dd4b064]//丢64c0383,[08420000ffffffffffffb0e235065998000af5866dd4d064]//丢64e0387,[08420000ffffffffffff本文档来自技高网
...

【技术保护点】
1.一种基于帧序的UDP数据重组方法,其特征在于:基于互联网UDP协议数据帧发送的有序性,以及airkiss配网协议数据发送的重复性,在数据发送端重复发送UDP数据,在数据接收端基于发送帧的序号,将接收的数据匹配到数据发送时的位置,进行数据重组,实现数据完整、连续的接收。

【技术特征摘要】
1.一种基于帧序的UDP数据重组方法,其特征在于:基于互联网UDP协议数据帧发送的有序性,以及airkiss配网协议数据发送的重复性,在数据发送端重复发送UDP数据,在数据接收端基于发送帧的序号,将接收的数据匹配到数据发送时的位置,进行数据重组,实现数据完整、连续的接收。2.根据权利要求1所述的基于帧序的UDP数据重组方法,其特征在于:通过累积填充数据字节的方式进行数据重组。3.根据权利要求1所述的基于帧序的UDP数据重组方法,其特征在于:包括以下步骤:(1)airkiss_recv接收客户端发送过来的数据,在接收到guidecode后,调用airkiss_filter过滤数据,只接收和guidecode帧相同mac地址的帧,包括发送端mac地址,发送路由器mac地址,接收端mac地址;(2)对数据有效性进行判断,分多次接收数据,如果第1、2以及3-6中的任一个数据一共3个数据满足协议规定,则是一次有效的数据;(3)第2个字节index代表了seq数据组的序号0-need_seq,将这次收到的数据放置到seq_data[index]中,seq_dat...

【专利技术属性】
技术研发人员:曾武军李伟杨新华
申请(专利权)人:智慧海派科技有限公司
类型:发明
国别省市:江西,36

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1