一种用户态以太网协议实现无线上网的方法技术

技术编号:11779076 阅读:147 留言:0更新日期:2015-07-26 23:01
本发明专利技术提供一种用户态以太网协议实现无线上网的方法,所述方法包括:linux内核接收到无线网卡发送的802.11协议数据报文后,由linux内核从802.11协议数据报文中截取802.3协议数据报文,并将截取到的802.3协议数据报文发送给linux用户态程序进行处理;linux用户态程序将处理后的802.3协议数据报文发送给linux内核,由linux内核将802.3协议数据报文封装为802.11协议数据报文后发送给无线网卡进行转发。本发明专利技术通过内核对无线网卡的支持,使用tap/tun实现内核与用户态通信,在内核中进行无线报文收发和报文协议转换,在用户态实现对无线流程控制以及数据报文处理,从而实现使原本仅支持802.3协议的用户态程序实现802.11无线兼容。

【技术实现步骤摘要】

本专利技术涉及网络通信
,尤其涉及。
技术介绍
现有Iinux用户态程序支持IEEE802.3协议,因此可以做到对802.3数据流量的处理以及功能的使用,但是用户态程序不支持IEEE802.11等无线协议,也就无法处理802.11无线数据流量,而且因为流程较复杂,移植难度大,用户态程序一般没有进行兼容。随着移动终端用户的不断增加,移动互联网的不断发展,无线用户的比重逐年增加,用户态支持无线上网已经是必然考虑的趋势,不支持无线将会无法满足广大用户的需求。目前仅有极少部分用户态程序对无线数据流量处理进行了移植,但是由于整体无线流程太多,不同的无线网卡驱动对应不同的自有驱动流程,所以一般只针对特定的无线网卡做特定处理。而用户态移植了特定的无线网卡,虽满足了用户的需求,但是该功能与所支持的无线网卡形成了绑定关系,必然导致其兼容性,扩展性,可维护性不太好。
技术实现思路
为了解决Iinux用户态程序无法处理802.11数据流量的问题,本专利技术提出了,具体方案如下: ,其特征在于,所述方法包括: Iinux内核接收到无线网卡发送的802.11协议数据报文后,由Iinux内核从802.11协议数据报文中截取802.3协议数据报文,并将截取到的802.3协议数据报文发送给Iinux用户态程序进行处理; Iinux用户态程序将处理后的802.3协议数据报文发送给Iinux内核,由Iinux内核将802.3协议数据报文封装为802.11协议数据报文后发送给无线网卡进行转发。优选的,所述Iinux内核接收到无线网卡发送的802.11协议数据报文后,由Iinux内核从802.11协议数据报文中截取802.3协议数据报文具体为: 利用ieee80211_deliver_rx函数截取802.3协议数据报文并进行接收。优选的,所述并将截取到的802.3协议数据报文发送给Iinux用户态程序具体为: 利用虚拟网络设备tun/tap进行发送。优选的,所述Iinux用户态程序将处理后的802.3协议数据报文发送给Iinux内核具体为: 利用虚拟网络设备tun/tap进行发送。优选的,所述由Iinux内核将802.3协议数据报文封装为802.11协议数据报文后发送给无线网卡进行转发具体为: 利用ieee80211_subif_start_xmit函数截取802.3协议数据报文并进行发送。本专利技术利用Iinux内核对无线网卡的支持,由内核提取无线数据流量中的相关数据,通过内核与用户态的通信交换相关数据等特性,在用户态实现对无线流程控制以及数据报文处理,实现了 Iinux操作系统中仅支持802.3用户态协议类型的用户态程序可以达到使用无线WIFI上网的目的。【具体实施方式】为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本专利技术保护的范围。本专利技术提供的,具体方法如下所述: Iinux内核接收到无线网卡发送的802.11协议数据报文后,由Iinux内核从802.11协议数据报文中截取802.3协议数据报文,并将截取到的802.3协议数据报文发送给Iinux用户态程序进行处理; Iinux用户态程序将处理后的802.3协议数据报文发送给Iinux内核,由Iinux内核将802.3协议数据报文封装为802.11协议数据报文后发送给无线网卡进行转发。其中,所述Iinux内核接收到无线网卡发送的802.11协议数据报文后,由Iinux内核从802.11协议数据报文中截取802.3协议数据报文具体为:利用ieee80211_deliver_rx函数截取802.3协议数据报文并进行接收。在Iinux内核接收到来自无线网卡的IEEE802.11协议的数据报文后,由于Iinux用户态程序不支持处理IEEE802.11协议的数据报文,仅支持处理IEEE802.3协议的数据报文,因此需要由Iinux内核将IEEE802.11协议的数据报文转化为IEEE802.3协议的数据报文,这里通过利用net/mac80211/rx.c中的ieee80211_deliver_rx函数来截取并接收IEEE802.3协议的数据报文。其中,所述并将截取到的802.3协议数据报文发送给Iinux用户态程序具体为:利用虚拟网络设备tun/tap进行发送。在Iinux内核截取到的802.3协议的数据报文后,利用虚拟网络设备tun/tap与Iinux用户态进行通信,依靠tun_net_xmit函数即可将截取到的802.3协议的数据报文发送给Iinux用户态程序。其中,所述Iinux用户态程序将处理后的802.3协议数据报文发送给Iinux内核具体为:利用虚拟网络设备tun/tap进行发送。Iinux用户态程序对处理后的802.3协议数据报文进行发送给Iinux内核同样是利用虚拟网络设备tun/tap与Iinux用户态进行通信,Iinux内核通过tun_get_usr函数接收处理后的802.3协议的数据报文。其中,所述由Iinux内核将802.3协议数据报文封装为802.11协议数据报文后发送给无线网卡进行转发具体为:利用ieee80211_subif_start_xmit函数截取802.3协议数据报文并进行发送。在Iinux内核接收到来自Iinux用户态程序的IEEE802.3协议的数据报文后,也同样需要由Iinux内核将IEEE802.3协议的数据报文转化为IEEE802.11协议的数据报文,再由无线网卡转发出去,这里通过利用net/mac80211/tx.c中的ieee80211_subif_start_xmit函数来截取并发送IEEE802.3协议的数据报文。具体实施例: 首先在硬件中添加无线网卡,在对应的Iinux内核(下述简称内核)配置中打开无线网卡驱动支持,如rtl8188无线网卡,在内核编译menuconfig时开启driver下wireless中对应的rt18188\rt18192项,然后可使内核上支持该无线网卡的无线功能。无线网卡的内核驱动会注册网口,这里注册的网口为wlanO,由于无线网卡的报文需要发送到Iinux用户态程序(下述简称用户态)来完成相关业务,所以需要提供给用户态对应的操作网口,那么需要在内核网口注册后,在用户态对应注册同名网口,即wlanO,同时保证内核与用户态对应接口的索引、配置(ip、mac等)一致。内核与用户态的报文拷贝通过虚拟网卡tun/tap实现,tun/tap在内核和用户态都有对应的报文的读出和写入,从而实现内核与用户态通信;在用户态注册wlanO对应的tap_wlan,使它们有对应关系,彼此可以互相找到,在tap_wlan0接口上无配置信息,只作为连接内核与用户态的通道。配置完成后,wlanO对应的数据报文的接收和发送都会走net/mac80211/rx.c中的 ieee80211_deliver_rx 和 net/mac80211/tx.c 中的 ieee80211_s本文档来自技高网...

【技术保护点】
一种用户态以太网协议实现无线上网的方法,其特征在于,所述方法包括:linux内核接收到无线网卡发送的802.11协议数据报文后,由linux内核从802.11协议数据报文中截取802.3协议数据报文,并将截取到的802.3协议数据报文发送给linux用户态程序进行处理;linux用户态程序将处理后的802.3协议数据报文发送给linux内核,由linux内核将802.3协议数据报文封装为802.11协议数据报文后发送给无线网卡进行转发。

【技术特征摘要】

【专利技术属性】
技术研发人员:高福亮李悦磊
申请(专利权)人:北京汉柏科技有限公司
类型:发明
国别省市:北京;11

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

1