发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种智能设备接入网络的方法及***,旨在解决现有的智能设备接入网络的配置时间长、网络连接速度慢的问题。
本发明的技术方案如下:
一种智能设备接入网络的方法,其中,包括步骤:
A、智能设备开启混杂模式,对多个信道进行轮流监听,当监听到智能终端时,锁定智能终端所在信道;
B、所述智能终端将目标AP的配置信息组成数据包,并将所述数据包分割成多个单元,通过UDP组播方式分批次发送出去;
C、所述智能设备通过智能终端所在信道接收到所述数据包后,对所述数据包进行解析,根据解析结果进行WIFI连接。
较佳地,所述的智能设备接入网络的方法,其中,所述步骤A之前,所述智能设备接入网络还包括:
A0、所述智能终端将所述数据包的包头压缩到一个UDP组播帧里,并以预定时长持续发送所述UDP组播帧。
较佳地,所述的智能设备接入网络的方法,其中,所述步骤A具体包括:
A1、所述智能设备开启混杂模式,对多个信道进行轮流监听;
A2、当所述智能设备接收到所述UDP组播帧时,对所述UDP组播帧进行包头判断,当判定为包头时,则锁定所述智能终端所在信道。
较佳地,所述的智能设备接入网络的方法,其中,所述步骤B具体包括:
B1、所述智能终端将目标AP的配置信息组成数据包,并将所述数据包以23bits为单位分割成多个带有不同编号的单元;
B2、通过UDP组播方式将所述单元分批次发送出去。
较佳地,所述的智能设备接入网络的方法,其中,所述步骤C具体包括:
C1、所述智能设备对数据包中的所有单元按编号进行分轮次接收,并将当前轮次与前面各轮次接收到的同编号单元进行内容比较,若每个同编号单元的内容均相同则结束接收并进入步骤C2;若不同,则继续下一轮次的接收,并将下一轮次与前面各轮次接收到的同编号单元进行内容比较,直至各编号单元的内容在其中两个轮次相同;
C2、对组成数据包的所有单元进行完整性校验;
C3、校验通过后,对所述数据包进行解析获取目标AP的SSID、密码--以及加密方式,根据所述目标AP的SSID、密码以及加密方式进行WIFI连接。
较佳地,所述的智能设备接入网络的方法,其特征在于,所述步骤C1还包括:
C11、查询接收到的每一个单元的发送方MAC地址与所述智能终端的MAC地址是否匹配,若匹配,则保留所述单元,若不匹配,则丢弃所述单元;
C12、查询接收到的每一个单元的发送方MAC地址与所述目标AP的MAC地址是否匹配,若匹配,则保留所述单元,若不匹配,则丢弃所述单元。
一种智能设备接入网络的***,其中,包括:智能设备及智能终端;
所述智能设备用于开启混杂模式,对多个信道进行轮流监听,当监听到智能终端时,锁定智能终端所在信道;
所述智能终端用于将目标AP的配置信息组成数据包,并将所述数据包分割成多个单元,通过UDP组播方式分批次发送出去;
所述智能设备还用于通过智能终端所在信道接收到所述数据包后,对所述数据包进行解析,根据解析结果进行WIFI连接。
较佳地,所述智能设备还包括:
开启混杂模式,对多个信道进行轮流监听;
当所述智能设备接收到所述UDP组播帧时,对所述UDP组播帧进行包头判断,当判定为包头时,则锁定智能终端所在信道。
较佳地,所述智能终端具体用于:
将目标AP的配置信息组成数据包,并将所述数据包以23bits为单位分割成多个带有不同编号的单元;
通过UDP组播方式将所述单元分批次发送出去。
较佳地,所述智能设备还用于:
对所述智能设备对数据包中的所有单元按编号进行分轮次接收,并将当前轮次与前面各轮次接收到的同编号单元进行内容比较,若每个同编号单元的内容均相同则结束接收并进入步骤C2;若不同,则继续下一轮次的接收,并将下一轮次与前面各轮次接收到的同编号单元进行内容比较,直至各编号单元的内容在其中两个轮次相同;
对组成数据包的所有单元进行完整性校验;
校验通过后,对所述数据包进行解析获取目标AP的SSID、密码以及加密方式,根据所述目标AP的SSID、密码以及加密方式进行WIFI连接。
本发明各实施例所提供的智能设备接入网络的方法及***,所述智能设备通过开启混杂模式对多个信道进行轮流监听以锁定智能终端所在信道,智能终端以UDP组播方式分批次发出由目标AP的配置信息组成的数据包,所述智能设备通过包头压缩、冗余接收、发送方验证以及双向捕捉的方式快速且稳定的接收所述数据包,并对所述接收的数据包进行解析,最后根据解析结果实现设备快速、稳定地接入网络。
具体实施方式
本发明提供一种智能设备接入网络的方法及***,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在连接目标AP之前,智能设备虽然可以通过混杂模式对空气中的无线信号进行抓包,但抓到的来往于智能终端和AP之间的数据包都是MAC层加密的,如图1所示,此时智能设备是一个信息孤岛,虽然可以“听”得到周围的“声音”,但不明白其中的含义。
为此,本发明提出一种利用UDP组播IP地址到MAC地址的固定映射关系来传递信息,即IPv4组播地址和MAC地址的后23位相同,例如组播地址239.1.2.3对应的MAC地址固定为01:00:5E:01:02:03,图2为802.11的MAC层帧格式,加密仅限于MAC有效载荷(FrameBody),帧头及校验都是非加密的。基于这个原理,本发明利用UDP组播IP地址到MAC地址的固定映射关系来传递信息,每次可以传递23bits数据,而802.11帧长只有60bytes左右,效率上比UDP广播的方式提高了很多。
请参阅图3,图3为本发明一种智能设备接入网络的方法较佳实施例流程图,如图所示,其包括步骤:
S100、智能设备开启混杂模式,对多个信道进行轮流监听,当监听到智能终端时,锁定智能终端所在信道;
S200、所述智能终端将目标AP的配置信息组成数据包,并将所述数据包分割成多个单元,通过UDP组播方式分批次发送出去;
S300、所述智能设备通过智能终端所在信道接收到所述数据包后,对所述数据包进行解析,根据解析结果进行WIFI连接。
在本发明中,所述智能终端是指带有屏幕和输入装置的能够自动联网的设备,如智能手机、智能平板等;所述智能设备是指一些没有屏幕和键盘,无法选择WIFI接入点和输入对应的密码,因而无法直接接入无线网络的设备,如智能冰箱、智能微波炉等设备。
为了实现智能设备能够快速稳定地连接网络,在本发明中,首先,智能设备开启混杂模式,对多个信道进行轮流监听,当监听到智能终端时,锁定智能终端所在信道,之后智能终端将目标AP的SSID、密码、加密方式等信息按照一定格式组成一个数据包,根据需要进行加密及完整性校验;
进一步,智能终端将准备好的配置信息数据包按照最多23bits为单元进行分割,通过UDP组播方式分批次发送出去;智能设备完成数据包接收后对其进行解密及完整性校验,校验通过后解析出目标AP的SSID、密码及加密方式,并根据所述目标AP的SSID、密码及加密方式等信息连接网络。
进一步,在本实施例中,所述步骤S100具体包括:
S101、所述智能终端将所述数据包的包头压缩到一个UDP组播帧里,并以预定时长持续发送所述UDP组播帧;
具体来说,本发明通过包头压缩的方式来实现更快的信道锁定,所述包头是相对于配置信息数据包而言的,包头的大小不超过23bits,其可以通过一个UDP组播帧发出,所述包头包括包头标识符、配置信息协议版本号、配置方式、配置信息包大小以及校验等信息,如表1所示:
表1为一个32bits四字节的IPv4组播地址:
如表1所示,低23bits将出现在802.11 MAC帧的Address1或Address3中,第一个字节值为239,因为239.0.0.0~239.255.255.255是本地管理组播地址;第二个字节值为116,即字符’t’的ASCII码,用作包头标识符;第三个字节是包头的主体,其BIT[7:6]表示配置信息协议版本号,BIT5表示配置方式,值为0则为批量配置模式,值为1则为单点配置模式(一般用于同时有多个AP多个智能终端进行WiFi配置的测试环境下),BIT[2:0]用于表示配置信息包大小,单位是block,每个block包含16字节(AES加密块大小为128bits),最多8*16=128bytes,对于配置信息足够了,因为SSID最长32个字符,密码长度范围是8~63个字符;第四个字节用于包头的校验。
进一步,所谓包头压缩就是将尽量少而又重要的信息塞进23bits里,这样只需一个UDP组播帧就可以承载;若包头超过23bits则需要接收多个UDP组播帧,容易因丢包造成整个包头接收无效。
S102、所述智能设备开启混杂模式,对多个信道进行轮流监听;
具体来说,802.11在2.4GHz频段有13个信道,智能设备混杂模式下同一时间只能监听一个信道,想要接收配置信息首先需要确定目标AP(或智能终端)所在信道,所以需要在13个信道轮流监听,也可以通过扫描提前排除一些没有AP的无效信道以提高监听效率。
S103、当所述智能设备接收到所述UDP组播帧时,对所述UDP组播帧进行包头判断,当判定为包头时,则锁定所述智能终端所在信道。
具体来说,如前面所述,包头除了包含后面的配置信息包的重要特性,还用于信道锁定,把包头压缩到一个UDP组播帧里可以减少被其它WiFi通信干扰的概率,也简化了智能终端的发送以及智能设备端的接收操作,发送端只需不断发送相同的一个UDP组播帧并持续一段时间,比如2秒,接收端周期性(如100ms)轮流监听各信道,每接收一帧即可进行包头判断,若是包头即可进行信道锁定,不再监听其它信道;
优选地,为了保险起见,接收端可以将信道锁定的条件设为多次接收到相同的包头,比如当持续3次接收到相同的包头时,则锁定所述包头所在的信道为智能终端所在的信道,通过此信道对之后的配置信息包进行接收。
进一步,本发明通过包头压缩的方式有效提高了配置速度和可靠性,相对于普通“配置信息包”的包头需要多次802.11发送,本发明将包头压缩到一次发送降低了出错的几率,提高稳定性,也提高了信道锁定速度。
进一步,所述步骤S200具体包括:
S201、所述智能终端将目标AP的配置信息组成数据包,并将所述数据包以23bits为单位分割成多个带有不同编号的单元;
S202、通过UDP组播方式将所述单元分批次发送出去。
具体来说,由于每个UDP组播帧一次最多可传递23bits数据,因此本发明智能终端通过将目标AP配置信息组成的数据包以23bits为单位进行单元分割,并通过UDP组播方式将所述数据包单元分批次发送出去,通过上述方式可实现将数据包快速发送出去,并防止丢包现象发生。
进一步,在本实施例中,所述步骤S300具体包括:
S301、所述智能设备对数据包中的所有单元按编号进行分轮次接收,并将当前轮次与前面各轮次接收到的同编号单元进行内容比较,若每个同编号单元的内容均相同则结束接收并进入步骤C2;若不同,则继续下一轮次的接收,并将下一轮次与前面各轮次接收到的同编号单元进行内容比较,直至各编号单元的内容在其中两个轮次相同;
具体来说,所述数据包包括配置信息包和包头,本发明通过冗余接收的方式确定接收到的数据包是完整的、稳定的。由于局域网内可能存在其它的UDP组播传输,这对配置信息包及包头的接收都可能产生干扰而造成配置失败。
配置信息包和包头不一样,一般由多个UDP组播帧组成。表2为一个UDP组播帧数据:
字节 |
B1 |
B2 |
B3 |
B4 |
值 |
239 |
7+n |
XX |
XX |
描述 |
组播 |
包序列号 |
Byte(2n) |
Byte(2n+1) |
如表2所示,每个UDP组播帧可传递23bits数据,将其中的高7bits定为包序列号,因为只有7bits,所以表示范围是0~127,因为239.0.xx.xx及239.1.xx.xx一般较容易被用于自定义的局域网组播传输,可以避开前面的组播地址端,本实施例从7开始,另外还需要避开用于表示包头的116(字符‘t’),这样每帧UDP组播还可以传输16bits数据,即两个字节,如前所述,因为SSID最长32个字符,密码长度范围是8~63个字符,包序列号范围7~127(排除116)足够用了。
具体地,比如整个配置信息(数据包)需要分为20次发送,理论上智能设备只需接收到这20个单元就行了,但因为有可能存在干扰,其中某一单元可能是错误的,导致后面的完整性校验失败,且因为不能确定是20个单元中的哪一单元错了,这样只能从头进行多轮次接收全部单元,直至各编号单元的内容在其中两个轮次相同,则结束接收。本发明通过冗余接收的方式对每个单元接收两次(或更多次),对比接收到两次的单元是否相同,若相同则认为所述单元接收正确,若不同则丢掉所述单元并重新多次接收所述单元,通过冗余接收的方式有效减少数据包传输时被干扰的概率。
S302、对组成数据包的所有单元进行完整性校验;
S302、校验通过后,对所述数据包进行解析获取目标AP的SSID、密码以及加密方式,根据所述目标AP的SSID、密码以及加密方式进行WIFI连接。
对数据包进行完整性校验以及解析均属于现有技术,在此不做过多解释说明。
进一步,所属步骤S301具体还包括:
S31、查询接收到的每一个单元的发送方MAC地址与所述智能终端的MAC地址是否匹配,若匹配,则保留所述单元,若不匹配,则丢弃所述单元;
具体地,由于配置信息包由多个单元(UDP组播帧)组成,虽然通过冗余接收减小了数据包传输被干扰的概率,但是,当存在多人或多个智能终端同时配置一个WIFI设备、或多人同时配置多个WIFI设备以及某些恶意的干扰情况时,仍不能保证某一序号的组播帧和其它序号的组播帧是来自同一个智能终端。
为解决上述问题,在本实施例中,当智能设备在接收到数据包时,需要对UDP组播包的发送方MAC地址进行验证,若和之前锁定信道时的发送方即所述智能终端的MAC地址不匹配,则丢弃该单元,从而避免被干扰;若匹配,则保留所述单元。
S32、查询接收到的每一个单元的发送方MAC地址与所述目标AP的MAC地址是否匹配,若匹配,则保留所述单元,若不匹配,则丢弃所述单元。
具体来说,当所述智能设备锁定所述智能终端所在信道后,所述智能终端在混杂模式下继续数据包的接收,大多数情况下,智能设备接收到的是智能终端发送给AP的组播帧,但由于智能设备的参数性能不同,有的智能设备接收到的是AP转发给局域网内其它终端的,虽然AP转发和智能终端发送的有效数据是相同的,但其MAC层的帧头是不同的,尤其是三个MAC地址(源MAC、目的MAC、AP的MAC)在帧头中的位置是不同的。而本发明所采用的混杂模式就是在空气中抓取无线电数据包,对于抓包中的WiFi设备来说,是分不清哪些包是配置用的智能终端发的,哪些是AP转发的,这两种类型的数据包中的MAC地址结构是不同的,而本发明“UDP组播方式”的信息源恰巧是数据包中的MAC地址,所以WiFi设备在对抓包到的数据帧进行过滤时若同时考虑这两种类型,比只取其中某一种类型效率提高了很多。本发明通过将两个方向上的UDP组播帧都纳入接收范围,可有效增加智能设备网络配置的成功率和稳定性。
进一步,所述步骤S300之后还包括:
S400、智能设备以UDP广播或组播的方式向所述智能终端发送固定格式的终止数据包,通知智能终端停止发送数据包。
具体来说,当智能设备成功连接网络后,便通过UDP广播或组播的方式向智能终端发送固定格式的终止数据包,通知智能终端停止发送配置信息,即数据包,至此整个配置过程结束。
综上所述,本发明提供一种智能设备接入网络的方法,具体地,智能设备通过开启混杂模式对多个信道进行轮流监听以锁定智能终端所在信道,当智能设备接收到智能终端以UDP组播方式发出的目标AP的配置信息组成的数据包后,对所述数据包进行解析,进一步,通过包头压缩、冗余接收、发送方验证、双向捕捉等方式实现智能设备更加快速和稳定地接入网络。
基于上述方法,本发明还提供一种智能终端接入网络的***,在一较佳实施例中,如图4所示,所述智能设备100接入网络的***包括:智能设备100及智能终端200;
所述智能设备100用于开启混杂模式,对多个信道进行轮流监听,当监听到智能终端时,锁定智能终端所在信道;
所述智能终端200用于将目标AP的配置信息组成数据包,并将所述数据包分割成多个单元,通过UDP组播方式分批次发送出去;
所述智能设备100还用于通过智能终端所在信道接收到所述数据包后,对所述数据包进行解析,根据解析结果进行WIFI连接。
较佳地,所述的智能设备接入网络的***,其中,所述智能终端200还用于将所述数据包的包头压缩到一个UDP组播帧里,并以预定时长持续发送所述UDP组播帧。
较佳地,所述的智能设备接入网络的***,其中,所述智能设备100包括:
开启混杂模式,对多个信道进行轮流监听;
当所述智能设备100接收到所述UDP组播帧时,对所述UDP组播帧进行包头判断,当判定为包头时,则锁定智能终端所在信道,结束监听。
较佳地,所述的智能设备接入网络的***,其中, 所述智能终端200具体用于:
将目标AP的配置信息组成数据包,并将所述数据包以23bits为单位分割成多个单元;
通过UDP组播方式将所述单元分批次发送出去。
较佳地,所述的智能设备接入网络的***,其中,所述智能设备100还用于:
对数据包中的第一个单元进行多次接收,并比较所述多次接收的第一个单元是否相同,若相同,则进行第二个单元的多次接收,并比较所述多次接收的第二个单元是否相同,依此类推,直到所述智能设备接收到完整的数据包;
对所述数据包进行完整性校验;
校验通过后,对所述数据包进行解析获取目标AP的SSID、密码以及加密方式,根据所述目标AP的SSID、密码以及加密方式进行WIFI连接。
较佳地,所述的智能设备接入网络的***,其中,所述智能设备100还用于:
查询接收到的每一个单元的发送方MAC地址与所述智能终端的MAC地址是否匹配,若匹配,则保留所述单元,若不匹配,则丢弃所述单元;
查询接收到的每一个单元的发送方MAC地址与所述目标AP的MAC地址是否匹配,若匹配,则保留所述单元,若不匹配,则丢弃所述单元。
较佳地,所述的智能设备接入网络的***,其中,所述智能设备100还用于以UDP广播或组播的方式向所述智能终端发送固定格式的终止数据包,通知智能终端停止发送数据包。
需要说明的是,本发明实施例提供的上述***,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。