背景技术
无线网络是一种能够将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术。Wi-Fi是一个无线网络通信技术的品牌,由Wi-Fi联盟(Wi-Fi Alliance)所持有。目的是改善基于IEEE802.11标准的无线网络产品之间的互通性。
802.11协议组是国际电工电子工程学会(IEEE)为无线局域网络制定的标准。主要用于解决办公室局域网和校园网中用户与用户终端的无线接入,业务主要限于数据存取。
针对帧的不同功能,可将802.11中的MAC帧细分为以下3类:
1)控制帧:用于竞争期间的握手通信和正向确认、结束非竞争期等;
2)管理帧:主要用于STA与AP之间协商、关系的控制,如关联、认证、同步等;
3)数据帧:用于在竞争期和非竞争期传输数据。
Probe Request探查请求帧是管理帧的一种,STA用此帧来扫描区域内目前有哪些802.11网络。Probe Request帧包含2个字段。
SSID(Service Set Identifier,服务集标识):可被设定为特定网络的SSID或任何网络的SSID。
Support rates:移动工作站所支持的速率。
发明内容
本发明所要解决的技术问题是,提供一种方法,使处于独立状态的无线网卡设备,能够接收到PC或智能终端发出的配置请求,从而获得加入指定AP所必须的SSID及密码信息,完成设备加网。
本发明为解决上述技术问题采用的技术方案是,基于802.11协议ProbeRequest探查请求帧的SSID字段,携带经过加密、编码的配置信息,通过PC或智能终端发送Probe Request探查请求帧,无线网卡设备端监听和解密该帧的方法,实现配置信息从PC或智能终端到处于独立状态的无线网卡设备的无线传输。
本发明具体是这样实现的:
本发明提供一种由无线网络设备自动搜索并配置无线网卡设备的方法,无线网络设备向无线网络发送探查请求,在所述探查请求中至少包括经过加密、编码及分包的无线网络配置信息;所述无线网络设备进入监听状态,所述监听状态为监听固定端口是否收到无线网卡设备发来的加网成功通知;在所述无线网络设备收到所述无线网卡设备发来的所述加网成功通知后,所述无线网络设备结束所述由无线网络设备自动搜索并配置无线网卡设备的方法。
本发明所述由无线网络设备自动搜索并配置无线网卡设备的方法,所述无线网络设备处于无线网络中。
本发明所述由无线网络设备自动搜索并配置无线网卡设备的方法,所述探查请求为Probe Request探查请求帧,并在其中的SSID字段写入经过加密、编码及分包的所述无线网络配置信息。
本发明所述由无线网络设备自动搜索并配置无线网卡设备的方法,在所述无线网络设备收到所述无线网卡设备发送的所述加网成功通知后,首先显示所述无线网卡设备信息。
本发明还提供一种自动获取无线网络信息并加入该无线网络的方法,无线网卡设备进入监听模式,所述监听模式允许接收及处理由无线网络设备发送的无线网络配置信息;当所述无线网卡设备收到由所述无线网络设备发送的无线网络配置请求时,通过组包、解码、解密得到所述无线网络配置信息;所述无线网卡设备基于所述无线网络配置信息进行加网操作,并在加网成功后,向所述无线网络设备发送加网成功通知。
本发明所述自动获取无线网络信息并加入该无线网络的方法,当所述无线网卡设备收到由所述无线网络设备发送的所述无线网络配置请求时,首先通过所述无线网络配置请求中的校验标签与和校验值确认所述无线网络配置请求是由所述无线网络设备发送的。
本发明所述自动获取无线网络信息并加入该无线网络的方法,所述无线网络配置信息包括加入所述无线网络所需的SSID和密码。
本发明所述自动获取无线网络信息并加入该无线网络的方法,所述加网成功通知是UDP广播包。
本发明还提供了PC端在Windows操作系统以及智能终端在Android操作系统下,指定SSID发送Probe Request探查请求帧的流程。
本发明所述方法,解决了无线网卡设备在独立状态下获取AP参数的问题,省去了需要通过有线连接无线网卡设备到PC才能进行配置的步骤,实现PC或智能终端应用程序对无线网卡设备的一键配置。
具体实施方式
以下结合附图与实施例对本发明做进一步说明。
如图1所示,PC或智能终端对无线网卡设备的配置流程,采用Probe Request探查请求帧的SSID字段承载配置信息:
(1)PC或智能终端首先需要连接到无线网卡设备要加入的AP。
(2)无线网卡设备首先需要进入监听模式,只有在此监听模式下,才需要处理由PC或智能终端侧发来的配置信息。
(3)PC或智能终端通过发送Probe Request探查请求帧,并在该帧的SSID字段填入经过加密、编码、分包的配置信息(AP的SSID和密码),配置处于独立状态的无线网卡设备。
如图2所示,是Probe Request探查请求帧的SSID字段的编码方式。由于SSID字段最大支持32Byte数据,而配置信息中,AP的SSID同样最大支持32个ASSIC码字符,密码更是最大可以设置64个字符。所以,PC或智能终端需要多次发送配置请求,采用分包、组包的方式完成对配置信息的发送。
如图2,是一次配置请求包的数据编码方式,前面3个Byte是由不同特殊字符组成的标签,只有以该标签开头的配置请求才会被无线网卡设备端接收做进一步分析。第3个(从0开始计数)Byte是包长度,最大值是32。第4个Byte是包标识,表示该包承载的是SSID还是密码。第5个Byte包总数,表示SSID或密码需要请求的总次数。第6个Byte是包序号,表示该包位于总包数中的位置(从0开始计数)。从第7个Byte开始是包数据,最大支持24个Byte,该部分是SSID或密码经过加密、编码后的部分数据。最后一个Byte是校验和,是该包除最后一个Byte以外所有Byte的数据总和。需要说明的是,由于ProbeRequest探查请求帧的SSID字段在某些操作系统下只能支持普通的ASSIC码,为了做到所有系统兼容,SSID字段每个Byte最后填入的值都是经过编码的,编码后的结果就是保证每个Byte都是个普通的ASSIC码字符。
(4)无线网卡设备端监听到由PC或智能终端发来的配置请求,通过校验标签、和校验值,确认该请求的确是由PC或智能终端发来的配置请求,经过组包、解码、解密得到要加入AP的SSID和密码。无线网卡设备保存该AP的配置信息并进行加网操作。
(5)PC或智能终端进入监听状态,监听固定端口,等待加网成功的无线网卡设备发来的加网成功通知请求。(6)无线网卡设备加网成功后,向PC或智能终端的监听端口发送UDP(User Data Protocol,用户数据报协议)广播包,通知PC或智能终端无线网卡设备加网成功,然后结束配置流程。
(7)PC或智能终端收到无线网卡设备发来的加网成功通知后,显示无线网卡设备信息,然后结束配置流程。
上述(3)和(5)是并行的。在(3)中,PC或智能终端不间断的循环发送Probe Request探查请求帧。在(5)中,PC或智能终端一直处于监听状态,直到收到无线网卡设备发来的加网成功消息或超时(例如持续1分钟,图中未显示),然后通知(3)停止发送,显示配置成功(或超时失败,图中未显示),最后结束。
对于不同操作系统,所提供的操作无线网卡的API也不相同,即使提供了控制网卡进行主动扫描网络的API,但参数中也不支持指定SSID进行扫描。以下就在Windows和Android操作系统下,如何控制无线网卡进行主动扫描,并且指定SSID(用来承载配置信息)的实现流程进行详细说明。
如图3所示,是PC端在Windows操作系统下发送Probe Request探查请求帧的流程。在windows平台下,可以使用native wifi api来控制无线网卡,包括获取无线网卡参数,发送Probe Request探查请求帧等功能,在windows xp sp2版本的系统上,使用需要下载一个KB918997补丁包才能支持。而在xp sp3、vista、win7等高版本操作系统中,已经包含了此库,所以可以直接使用。
(1)调用WlanOpenHandle()函数,打开一个与服务器的连接,返回一个客户端句柄。
(2)调用WlanEnumInterfaces()函数,枚举出当前系统安装的所有无线网卡的接口信息。
(3)循环遍历由(2)得到的无线网卡接口,如果该无线网卡的状态为连接状态(wlan_interface_state_connected),则停止遍历。
(4)取得连接状态的无线网卡接口,以下步骤中皆使用该无线网卡接口。
(5)如果操作系统版本是vista、win7等高版本操作系统,调用WlanScan()函数进行主动扫描网络,发送Probe Request探查请求帧。为了承载配置信息,调用此函数时,必须设置pDot11Ssid参数(一个DOT11_SSID结构体指针,用来指定SSID进行扫描)。由于在Windows xp sp3及以下版本操作系统中,此参数必须设置为NULL,所以不能调用WlanScan()函数直接完成指定SSID进行扫描,在Windows xp sp3及以下版本操作中,需要通过(6)~(8)步骤来完成指定SSID进行扫描。
(6)调用WlanSetProfile()函数,配置一个无线网络信息,需要设置一个xml字符串作为无线网络信息profile的内容xml,该xml中可以指定SSID来承载配置信息。
(7)调用WlanConnect函数,连接(6)配置好的网络,此步骤的目的是发送Probe Request探查请求帧并携带SSID作为配置信息,因为在连接到指定网络之前,Windwos xp系统会首先主动扫描该网络(指定SSID进行扫描)。这里也有个问题,调用此函数会使网卡之前连接的网络断开,所以在Windows xp系统下进行配置之前,我们会提示用户配置过程中需要断网。
(8)调用WlanDeleteProfile()函数,删除(6)配置的无线网络信息,清理无用的网络配置信息。
如图4所示,是智能终端在Android操作系统下发送Probe Request探查请求帧的流程。在Android操作系统下,WifiManager类提供了管理wifi连接的所有方面的API接口,通过调用此类的接口,可以进行指定SSID主动扫描无线网络,从而达到利用SSID携带配置信息的目的。但是,WifiManager.startScan()函数没有参数,不能指定SSID进行扫描,所以,本发明提供了以下流程,实现指定SSID进行扫描。
(1)调用WifiManager.addNetwork()函数,添加一个无线网络配置,该函数需要一个WifiConfiguration类型的参数,我们仅需要设置此参数类型的SSID属性,其它属性我们不需要特别关注。添加此网络配置,仅仅是用来发送指定SSID的Probe Request探查请求帧,在发送完之后,此网络配置会在以下最后一步中被删除。
(2)调用WifiManager.saveConfiguration()函数,保存网络配置。
(3)调用WifiManager.disableNetwork()函数,禁用指定网络。
(4)调用WifiManager.enableNetwork()函数,启用指定网络。
(5)调用WifiManager.startScan()函数,扫描网络。
(6)调用WifiManager.removeNetwork()函数,删除网络配置。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。