路由器网桥模式下无线终端类型的识别系统及方法_3

文档序号:9618588阅读:来源:国知局
t报文,直接对此包的Opt1nl2、Opt1n55、0pt1n60字段进行解析,获取其相应的值,然后通过Netlink技术将此三个字段的值同终端MAC地址发送到用户态,然后放行此数据包(只读取数据包中信息,读取结束放行,否则DHCP交互过程会失败),最后用户态将三个字段的值和对应MAC地址经Internet发送到云端。(除了这三个字段的值,还会带上终端的MAC地址来识别是哪个终端)
[0070]云端服务器16和查询单元15的工作原理为:进行转动类型查询的方式可以按照0pt1n60、0pt1nl2、0pt1n55顺序进行查询,0pt1n60是厂商识别号,通常厂家会带上厂商名,部分也同时带上产品型号;0pt1nl2是hostname,通常会设置为产品类型和序列号,0pt1n55通常设置为请求的一些附加参数,请求的参数顺序,子字段条目多少,各个厂商和终端不一样,也会有区别。一种查询方法比如:某厂商手机的0pt1n60字段为“****_phone”,那么可以确定此终端是手机,该厂商Android手机的0pt1nl2字段为“andr0id-9dC35f25flged653”,那么通过这两个字段就可以大致确定这个终端类型是Android手机,再和0pt1n55字段值比对,可以达到90%以上的准确率,由于0pt1nl2可能会在终端上修改过,那么当0pt1nl2不能确定时候,需要0pt1n55字段值来确定。查询算法可以设计多种,并不以上面的方法为限。
[0071]一方面,云端数据库16查询此终端的终端类型,将查询结果保存,等待和路由器本地查询结果进行比对;另一方面在用户态本地数据库中查询终端类型,查询到后上报到云端和云端查询结果进行比对,如果本地查询的终端类型与云端查询到的终端类型不一致,那么云端将云端查询的结果下发到路由器本地,替换掉路由器本地查询到该无线终端的终端类型,这样便更新了本地的数据库,这样可以保证本地显示的终端类型一定的正确率,当路由器与Internet断开后,新的无线终端接入路由器,路由器也可以在本地查询到相应的终端类型,经过一定的时间积累,本地数据库可以和云端数据库保持一致。
[0072]本发明路由器网桥模式下无线终端类型的识别系统的有益效果为:
[0073]在网桥模式下通过抓取无线终端与DHCP服务器的通讯报文来解析DHCP Request数据包(不选择Discover包是因为当无线终端第一次采用Discover、Request步骤申请分配到IP地址后,在IP地址租约时间未到之前用户断开无线后再次连接上,获取IP地址时候,只有 Request 而没有 Discover 步骤)中 opt1nl2 (hostname 字段)、opt1nf5f5 (附加请求参数)、opt1n60(厂商识别)三个字段的参数值,然后上报的云端服务器进行查询。
[0074]将参数值发送到云端查询的同时,也在路由器本地数据库里查询,通过调整三个字段顺序来确定查询优先级,在云端终端类型数据库中自动查找该终端的终端类型,同时在本地数据库中查找到类型后,上报到云端进行比对,如果本地查询结果同云端查询的结果不一致,那么将云端查询结果下发到本地(云端数据库数据更多,因此准确率更高),同时更新本地数据库(替换掉本地查询结果),保证本地数据库不断更新,从而提高终端类型识别正确率。如果云端数据库数据足够多,可以大大提高对终端类型的识别准确率,而且云端数据库数据可以人工添加终端类型数据,随着数据库数据条数的增多,自动识别类型的准确率会不断提高。
[0075]当路由器同Internet断开时候,新的无线终端接入路由器后,路由器通过查询本地数据库,也可以识别终端类型。
[0076]下面对本发明路由器网桥模式下无线终端类型的识别方法进行说明。
[0077]如图2所示,本发明路由器网桥模式下无线终端类型的识别方法包括如下步骤:
[0078]执行步骤S21,在网桥模式下,获取DHCP请求数据包,通过抓取路由器转发的所有通讯数据包,并对所有的通讯数据包进行过滤来得到无线终端与DHCP服务器交互的DHCP请求数据包,接着执行步骤S22。
[0079]执行步骤S22,对DHCP请求数据包进行解析以得到解析值,接着执行步骤S22。
[0080]执行步骤S23,将解析值和无线终端的MAC地址发送至云端服务器进行无线终端类型的查询,以获取无线终端的类型。
[0081]如图3所示,内核过滤处理数据包流程为:
[0082]执行步骤S301,加载内核数据包解析K0模块,用于启动数据过滤单元进行工作,该K0模块即为数据过滤单元,接着执行步骤S302。
[0083]执行步骤S302,解析Η00Κ函数中收到的转发数据包,由于Η00Κ函数抓到的数据包是内核转发的所有数据包,因此需要过滤掉不需要的数据包,接着执行步骤S303。
[0084]执行步骤S303,判断是否为无线LAN侧包,由于识别无线终端类型仅针对无线LAN侦牝可以过滤掉有限LAN侧的,判断通讯数据包是否为来自无线局域网,若是,则继续判断,接着执行步骤S304,若否,接着执行步骤S314而对通讯数据包放行;
[0085]执行步骤S304,解析源IP地址和目的IP地址,由于DHCP请求数据包中的源IP地址和目的IP地址为固定值,可以通过解析出通讯数据包中的源IP地址和目的IP地址对通讯数据包是否为DHCP请求数据进行判断。接着执行步骤S305。
[0086]执行步骤S305,判断源IP地址和目的IP是否分别为0.0.0.0和255.255.255.255,判断通讯数据包中的源IP地址是否为0.0.0.0和目的IP地址是否为255.255.255.255,若源IP地址和目的IP地址均为是,则继续判断,接着执行步骤S306,若源IP地址和目的IP地址中任一为否,接着执行步骤S314而则对通讯数据包放行;
[0087]执行步骤S306,解析数据包类型,DHCP协议是基于UDP协议,所以DHCP请求数据包一定是UDP包(用户数据包),可以以此为判断条件进一步进行过滤,接着执行步骤S307o
[0088]执行步骤S307,是否为UDP包,判断通讯数据包是否为用户数据包,若是,则继续判断,接着执行步骤S308。若否,接着执行步骤S314而则对通讯数据包放行;
[0089]执行步骤S308,解析数据包源端口和目的端口,由于DHCP请求数据包中的源端口和目的端口号为固定值,可以通过解析出通讯数据包中的源端口号和目的端口号对通讯数据包是否为DHCP请求数据进行判断。接着执行步骤S309。
[0090]执行步骤S309,端口号是否分别为68和67,判断通讯数据包的源端口号是否为68和目的端口号是否为67,若源端口号和目的端口号均为是,则继续判断,接着执行步骤S310,若源端口号和目的端口号中任一为否,接着执行步骤S314而对通讯数据包放行;
[0091]执行步骤S310,解析DHCP包类型,解析0pt1n53字段,该字段值为3表示是DHCP请求数据包。接着执行步骤S311。
[0092]执行步骤S311,是否为DHCP Request包,判断通讯数据包中的信息类型字段是否为请求数据包,若是接着执行步骤S312,则得到了 DHCP请求数据包,若否,接着执行步骤S314而对通讯数据包放行。
[0093]执行步骤S312,解析0pt1nl2、0pt1n55、0pt1n60字段获取相应值,并获取到MAC地址,接着执行步骤S313和步骤S314。读取到DHCP请求数据包中的信息即可将该DHCP请求数据包放行,否则DHCP交互过程会失败。对DHCP请求数据包中的主机名字段(0pt1nl2)、附加请求参数字段(0pt1n55)、以及厂商识别字段(0pt1n60)进行解析,得出对应的主机名字段值、附加请求参数字段值、以及厂商识别字段值。
[0094]执行步骤S313,将数据包发送到用户态,通过Netlink技术将三个字段值同终端MAC地址发送到用户态。将解析到的主机名字段值、附加请求参数字段值、以及厂商识别字段值同无线终端的MAC地址一起发送至用户态,由用户态将主机名字段值、附加请求参数字段值、以及厂商识别字段值和无线终端的MAC地址经无线通信传送至云端服务器。
[0095]执行步骤S314,将数据包放行。
[0096]如图4所示,下面对终端的类型查询和本地数据库更新进行说明。
[0097]执行步骤S401,云端服务器查询云端数据库,云端服务器通过云端数据库查询无线终端的类型,具体的查询方式可以按照0pt1n60、0pt1nl2、0pt1n55顺序进行查询,0pt1n60是厂商识别号,通常厂家会带上厂商名,部分也同时带上产品型号;0pt1nl2是hostname,通常会设置为产品类型和序列号,0pt1n55通常设置为请求的一些附加参数,请求的参数顺序,子字段条目多少,各个厂商和终端不一样,也会有区别。一种查询方法比如:某厂商手机的0pt1n60字段为“****_phone”,那么可以确定此终端是手机,该厂商Android手机的0pt1nl2字段为“android_9dc35f25f lged653”,那么通过这两个字段就可以大致确定这个终端类型是Android手机,再和0pt1n55字段值比对,可以达到90%以上的准确率,由于0pt1nl2可能会在终端上修改过,那么当0pt1nl2不能确定时候,需要0pt1n55字段值来确定。查询方式并不以此为限,可以选用其他的算法进行类型查询。接着执行步骤S402。
[0098]执行步骤S402,查询到终端类型,云端服务器查询到终端类型后,将查询结果进行保存,等待和路由器本地的查询结果进行比对。接着执行步骤S406。
[0099]执行步骤S403,路由器查询本地数据库,在路由器的本地数据库对所得到的解析值和无线终端的MAC地址进行无线终端类型的查询,以获得本地查询结果,其查询方式可以
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1