一种热点数据传输方法及装置与流程

文档序号:18644877发布日期:2019-09-12 08:49阅读:582来源:国知局
一种热点数据传输方法及装置与流程

本申请涉及网络传输技术,尤其涉及一种热点数据传输方法及装置。



背景技术:

随着智能设备对无线网络(wireless fidelity,WIFI)需求的日益增加,利用个人电脑(Personal Computer,PC)无线网卡进行热点分享的PC热点技术迅速兴起。参阅图1所示,PC热点技术的两大基础为无线访问接入点(WirelessAccessPoint,AP)与网络地址转换(Network Address Translation,NAT)AP即利用无线网卡创建一个无线hub,其主要作用是将无线网络客户端(如手机)与PC主机连到一起,组建成小型无线局域网,而网络地址转换(Network Address Translation,NAT)则用来打通局域网与外网的连接,如右图所示。

NAT技术是PC热点稳定性及兼容性的核心,在Windows平台,现有NAT方案主要有两种:一种是利用Windows系统自带组件因特网连接共享(Internet Connection Sharing,ICS)技术,另一种是开发NDIS中间层驱动(NDIS Intermediate Drivers)进行地址转换。

然而以上两种解决方案都存在不同程度不足。

首先介绍ICS。ICS是Windows自带组件,由于该功能非windows核心组件,同时ICS组件对系统其他服务依赖较多,因此,在实际使用过程中存在实现PC热点失败率高,稳定性差,并且一旦出现问题,难以进行问题定位等缺陷。

其次介绍NDIS。由于ICS的诸多限制和缺陷,基于NDIS中间层的NAT技术开始出现。

参阅图2所示,正常情况下(没有使用NDIS中间层时),在创建了PC热点后,若无线网卡驱动接收到无线客户端(如,手机)发送的数据后,会将数据提交给系统的协议驱动〔如,(传输控制协议/因特网互联协议(TCP/IP)协议驱动〕,如果系统注册了多个协议驱动,则每个协议驱动都会收到该数据,并由每一个协议驱动分别决定是否继续处理接收到的数据。

例如,如图2所示,当IP地址及端口号为“192.168.0.3:1234”的手机需要通过PC热点与IP地址及端口号为“10.11.12.13:80”的外网建立TCP连接时,手机首先将TCP数据包发往PC机上IP地址为192.168.0.1的无线网卡,无线网卡接着将接收到的数据包提交给各类协议驱动,而各类协议驱动接收发往外网的数据包后,在未配置规则的前提下无法连接至外网,因而不能做进一步处理,则向手机回复重置(RESET,RST)数据包,通信过程中,任何一方接收到RST数据包就会断开当前连接,因此,此时网络连接中断,手机连接外网失败。

有鉴于此,在PC机中加入了NDIS中间层,参阅图3所示,通过NDIS中间层实现NAT方案的示例如下:

当手机需要应用IP地址及端口号“192.168.0.3:1234”连接IP地址及端口号为“10.11.12.13:80”的外网服务器时,手机将数据包发往PC机上IP地址为“192.168.0.1”的无线网卡;无线网卡的网卡驱动获得数据包,将数据包向上提交至NDIS中间层驱动;NDIS中间层获得数据包后,停止向协议驱动提交,而是查找PC机上出口网卡(如,有线网卡)的空闲端口,假设查到的空闲端口为678,则将数据包中的源地址替换为出口网卡的IP地址及端口号“16.17.18.19:678”,再通过出口网卡将数据包向外网发送,从而打通从内向外的连接。

当IP地址及端口号为“10.11.12.13:80”的外网服务器回复IP地址及端口号为“16.17.18.19:678”的出口网卡时,外网服务器首先将回复的数据包发往PC机上的IP地址及端口号为“16.17.18.19:678”的出口网卡;出口网卡接收到数据包后,将数据包提交到NDIS中间层;NDIS中间层经检测确定678端口对应的原始源地址是“192.168.0.3:1234”,则将数据包的目标地址修改为“192.168.0.3:1234”,再通过无线网卡发送到IP地址及端口号为“192.168.0.3:1234”的手机,从而打通了外网到内网的连接。

NDIS解方案较ICS在稳定性与可控性上有明显提升,但同时下面两点不足。

(1)通常情况下,各个软件中均安装有自身的NDIS组件,而Windows对系统内NDIS组件的数目有限制,当系统内NDIS组件数目达到上限后,后续软件再安装NDIS组件将失败,从而导致这部分软件无法正常使用PC热点功能。而由于软件厂商众多,在PC机侧,NDIS组件达到上限的情况很容易发生,从而经常会导致软件不能正常使用的情况发现。

(2)在现有的NDIS中间层驱动解决方案中,NDIS中间层驱动需要同时对无线网卡和出口网卡进行数据包嗅探和拦截,这样操作会对系统产生较大影响和干扰,处理不当容易会影响用户正常使用出口网卡,从而导致用户网络异常。



技术实现要素:

本申请的目的是提供一种热点数据传输方法及装置,用以解决应用PC热点功能的软件数量受限的情况,以及避免因实现PC热点功能而导致用户网络发生异常的情况发生。

本申请的目的是通过以下技术方案实现的:

一种热点数据传输方法,包括:

通过入口网卡接收无线客户端发送的数据包,并将数据包传送至本地自定义的网络地址转换NAT协议驱动;

通过本地自定义的NAT协议驱动,将接收的数据包发往应用层进行协议分析;

根据协议分析结果,通过出口网卡在本地和目的网络之间建立socket连接,并基于所述socket连接将数据包发往目的网络。

这样,通过自定义的NAT协议驱动来中转与无线客户端之间交互的数据包,可以突破系统对ndis组件数目的限制,从而增加系统热点数据的传输容量,进一步地,通过socket连接传输数据包,可以有效提高数据传输的稳定性和安全性。

可选的,进一步包括:

在将所述数据包传送至本地自定义的NAT协议驱动的过程中,关闭入口网卡对应的TCP/IP协议驱动。

这样,可以最大限度地避免TCP/IP协议驱动对热点传输数据的造成干扰。

可选的,将接收的数据包发往应用层进行协议分析,包括:

在所述应用层对所述数据包进行协议分析,提取出数据包中记录的目的网络的IP地址和有效数据。

可选的,根据协议分析结果,通过出口网卡在本地和目的网络之间建立socket连接,通过所述socket连接将数据包发往目的网络,包括:

基于数据包中记录的目的网络的IP地址,调用系统socket函数选定出口网卡;

通过所述出口网卡在本地和目的网络之间建立socket连接,并通过所述socket连接,将所述有效数据发往目的网络。

基于数据包中记录的目的网络的IP地址,调用系统socket函数在本地和目的网络之间建立socket连接;

通过所述socket连接,将所述有效数据发往目的网络。

一种热点数据传输方法,包括:

通过出口网卡接收到目的网络基于socket连接反馈的响应数据,并基于所述socket连接确定对应的无线客户端;

在应用层基于所述无线客户端使用的协议对所述响应数据进行报文封装;并将封装后的响应数据发往NAT协议驱动;

将封装后的响应数据通过本地自定义的NAT协议驱动发送至入口网卡,并通过所述入口网卡将所述封装后的响应数据发往所述无线客户端。

这样,通过自定义的NAT协议驱动来中转与无线客户端之间交互的数据包,可以突破系统对ndis组件数目的限制,从而增加系统热点数据的传输容量,进一步地,通过socket连接传输数据包,可以有效提高数据传输的稳定性和安全性。

可选的,在应用层基于所述无线客户端使用的协议对所述响应数据进行报文封装,包括:

在报文的目的地址字段中填写无线客户端使用的IP地址和端口号;

在报文的源地址字段中填写目的网络使用的IP地址和端口号;

将响应数据封装在报文的数据净荷部分。

可选的,进一步包括:

通过所述无线网卡将所述封装后的响应数据发往所述无线客户端后,若确定热点传输已结束,则开启入口网卡对应的TCP/IP协议驱动。

一种热点数据传输装置,包括:

入口网卡,用于接收无线客户端发送的数据包,并将数据包传送至本地自定义的网络地址转换NAT协议驱动;

NAT协议驱动模块,用于将接收的数据包发往应用层;

协议分析模块,位于应用层,用于对接收的数据包进行协议分析,并根据协议分析结果,通过出口网卡在本地和目的网络之间建立socket连接;

出口网卡,用于通过所述socket连接将数据包发往目的网络。

这样,通过自定义的NAT协议驱动来中转与无线客户端之间交互的数据包,可以突破系统对ndis组件数目的限制,从而增加系统热点数据的传输容量,进一步地,通过socket连接传输数据包,可以有效提高数据传输的稳定性和安全性。

所述入口网卡进一步用于:

在将所述数据包传送至所述NAT协议驱动模块的过程中,关闭所述入口网卡对应的TCP/IP协议驱动。

这样,可以最大限度地避免TCP/IP协议驱动对热点传输数据的造成干扰。

对接收的数据包进行协议分析时,所述协议分析模块具体用于:

在应用层对所述数据包进行协议分析,提取出数据包中记录的目的网络的IP地址和有效数据。

根据协议分析结果,在本地和目的网络之间建立socket连接,并基于所述socket连接将数据包发往目的网络时,

所述协议分析模块具体用于:基于数据包中记录的目的网络的IP地址,调用系统socket函数选定出口网卡;

所述出口网卡具体用于,基于数据包中记录的目的网络的IP地址,在本地和目的网络之间建立socket连接,并基于所述socket连接,将所述有效数据发往目的网络。

一种热点数据传输装置,包括:

出口网卡,用于在接收到目的网络通过socket连接反馈的响应数据,基于所述socket连接确定对应的无线客户端;

协议分析模块,位于应用层,基于所述无线客户端使用的协议对所述响应数据进行报文封装,并将封装后的响应数据发往NAT协议驱动;

NAT协议驱动模块,用于将封装后的响应数据至入口网卡;

入口网卡,用于将所述封装后的响应数据发往所述无线客户端。

这样,通过自定义的NAT协议驱动来中转与无线客户端之间交互的数据包,可以突破系统对ndis组件数目的限制,从而增加系统热点数据的传输容量,进一步地,通过socket连接传输数据包,可以有效提高数据传输的稳定性和安全性。

在应用层基于所述无线客户端使用的协议对所述响应数据进行报文封装时,所述协议分析模块具体用于:

在报文的目的地址字段中填写无线客户端使用的IP地址和端口号;

在报文的源地址字段中填写目的网络使用的IP地址和端口号;

将响应数据封装在报文的数据净荷部分。

所述入口网卡进一步用于:

将所述封装后的响应数据发往所述无线客户端后,若确定热点传输已结束,则开启所述入口网卡对应的TCP/IP协议驱动。

附图说明

图1为现有技术下热点技术实现原理示意图;

图2为现有技术下无NDIS中间层情况下热点数据传输示意图;

图3为现有技术下有NDIS中间层情况下热点数据传输示意图;

图4为本申请实施例中由内至外实现热点数据传输流程图;

图5为本申请实施例中热点数据传输示意图;

图6A、图6B和图6C为本申请实施例中数据包格式示意图;

图7为本申请实施例中由外至内实现热点数据传输流程图;

图8为本申请实施例中热点装置结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请发明人经研究发现:在windows中,协议驱动和NDIS中间层驱动都能够嗅探到数据包,但是两者之间存在差别。首先,NDIS中间层驱动在嗅探到数据包后能控制数据包,例如,停止向其他协议驱动提交,丢弃等等,而协议驱动不能控制嗅探到的数据包,即只能接收,不能修改数据包。其次,NDIS中间层驱动不能突破系统关于NDIS组件数目的限制,而协议驱动可以突破系统NDIS组件数目的限制。

基于上述两个差别,本申请实施例中,基于NDIS中间层驱动实现NAT工作流程的解决方案将不再适用,而是设计了新的NAT工作流程。

参阅图4和图5所示,本申请实施例中,由内向外传输PC热点数据的具体过程如下:

步骤400:PC机通过入口网卡接收无线客户端发送的数据包,并将数据包传送至本地自定义的NAT协议驱动。

在windows的系统框架中,关于网络的驱动被分为三种类型,小端口驱动,中间层驱动,以及协议驱动。小端口负责操作网卡,收取及发送数据;中间层用来对数据进行过滤操作;协议驱动用来分析和处理具体的网络数据。由于网络数据包在通常情况下最终会发往协议驱动,且开发协议驱动相对中间层要简单,所以在很多产品中,都使用协议驱动进行网络数据包的嗅探,如wireshark,科来网络分析系统等。因此,本申请实施例中设计的NAT协议驱动主要用于在入口网卡处对无线客户端发送的数据进行嗅探。

具体的,首先需要在PC机上安装自定义的NAT协议驱动。window系统结构中,网卡驱动在收到数据包后,会给每个协议驱动都发一份,因此很多软件利用协议驱动的这个特性进行网络嗅探,在本申请实施例中,自定义的NAT协议驱动的功能与其他协议驱动功能一致,用于在入口网卡侧进行数据嗅探,接收无线客户端发送的数据包,与其他协议驱动并无太大差异;其中,通常情况下,入口网卡为无线网卡。

可选的,在无线客户端通过PC机的入口网卡向PC机发送数据包后,PC机内入口网卡对应的所有协议驱动(包含自定义的各个协议驱动及的TCP/IP协议驱动)都会收到无线客户端发送的数据包,而若无线客户端发送的数据包采用的是TCP/IP协议,则入口网卡对应的TCP/IP协议驱动在收到数据包后会做出相应的应答,从而干扰自定义的NAT协议驱动的正常工作,因此,在此种情况下,PC机可以关闭本地入口网卡对应的TCP/IP协议驱动。

当然,实际应用中,本实施例同样适应于笔记本电脑或者其他具备热点功能的装置,此处仅以PC机为例进行说明。

步骤410:PC机通过本地自定义的NAT协议驱动,将接收的数据包发往应用层进行协议分析。

具体的,PC机是将接收的无线客户端发送的数据包传送至位于应用层的自定义的协议分析模块进行解析,本申请实施例中,协议分析模块实现了完整的协议栈,它用于分析网络传输的数据包,组装网络数据。

目前的数据包格式有多种,具体参阅图6A-图6C所示,无论无线客户端采用哪一种数据包格式,协议分析模块均可以从数据包中解析出源地址(即,无线客户端采用的IP地址及端口号)和目的地址(即目的网络采用的IP地址和端口号),以及提取出有效数据。

步骤420:PC机根据协议分析结果(主要基于提取的目的地址和有效数据),通过出口网卡在本地和目的网络之间建立socket连接,并基于该socket连接将数据包发往目的网络。

socket是系统提供的应用程序编程接口(Application Programming Interface,API),调用系统socket函数即可创建socket连接。具体的,协议分析模块解析出数据包携带的有效数据和目的地址,基于该目的地址,调用本地的socket函数选定出口网卡,接着,出口网卡基于该目的地址,在本地和目的网络之间建立socket连接,并通过该socket连接,直接将提取的有效数据发往目的网络,从而实现了热点数据从内至外的传输。

在这种情况下,由于只发送有效数据而无需对有效数据进行报文封装有效地节省了PC机的操作步骤,提高了处理效率。

进一步地,如果PC机接收到多个无线客户端发送的数据包,则PC机会会分别针对每一个无线客户端建立一个socket连接,以传输对应用无线客户端的有效数据,因此,PC机会记录每一个socket连接与相应的无线客户端的关联关系,以便在接收到目的网络返回的响应数据后,能够及时确定响应数据对应的无线客户端。

对应于上述实施例,参阅图7所示,本申请实施例中,由外至内传输PC热点数据的具体过程如下:

步骤700:PC机通过出口网卡接收到目的网络基于socket连接反馈的响应数据,并基于该socket连接确定对应的无线客户端。

与步骤500同理,本实施例同样亦适应于笔记本电脑或其他具有热点功能的装置,此处仅以PC机为例进行介绍。

具体的,PC机在将无线客户端发送的数据包中的有效数据通过建立的socket连接发往目的网络后,会对建立的socket进行数据接收,在接收到响应数据后,根据之前记录的socket连接的关联信息确定对应的无线客户端。

步骤710:PC机在应用层基于无线客户端使用的协议对响应数据进行报文封装,并将封装后的响应数据发往本地自定义的NAT协议驱动。

具体的,PC机可以在应用层采用如图6A-图6C所示的报文格式对响应数据进行封装,在软件开发领域,运行在系统内核的叫内核层,运行在用户态的叫应用层;其中,需要在报文的目的地址字段中填写无线客户端使用的IP地址和端口号,在报文的源地址字段中填写目的网络使用的IP地址和端口号,以及将响应数据封装在数据净荷部分。

在操作系统中,工作在内核层的程序称为处于内核态,即是与系统内核在同一层次运行;处于内核态的程序在运行过程中稍有不当就可能导致系统崩溃。相反作在应用层的程序称为处于用户态;处于用户态的各个程序之间是互相隔离的,能够能做到互不影响,即使某一程序崩溃也不会影响到系统的稳定和其他程序。进一步的,某些特有的函数接口只有在用户态才能够调用(比如socket接口,亦称socket函数)。因此,本申请实施例中,将报文的解析和封装均放置在应用层,一是为了不影响其他程序运行,二是为了能够便于调用socket函数建立socket连接。

步骤720:PC机通过上述NAT协议驱动将封装后的响应数据发往入口网卡,并通过入口网卡将封装后的响应数据发往无线客户端。

如果PC机此时确定热点传输已结束,则可以开启入口网卡对应的TCP/IP协议驱动。

例如:当手机需要应用IP地址及端口号“192.168.0.3:1234”连接IP地址及端口号为“10.11.12.13:80”的外网服务器时,手机将数据包发往PC机上的无线网卡;无线网卡的网卡驱动获得数据包,将数据包向上提交至NAT协议驱动,同时,关闭自身对应的TCP/IP议驱动;NAT协议驱动将获得的数据包发往应用层的协议分析模块进行分析;协议分析模块提取出数据包中携带的外网服务器的IP地址及端口号“10.11.12.13:80”和有效数据,调用系统的socket函数选定能够执行当前任务的出口网卡;出口网卡基于外网服务器的IP地址及端口号“10.11.12.13:80”在本地和外网服务器之间建立socket连接,并将有效数据通过该连接发往外网服务器。

当IP地址及端口号为“10.11.12.13:80”的外网服务器基于上述连接向有线网卡回复响应数据时,有线网卡基于对应socket连接记录的关联信息确定接收方为IP地址及端口号为“192.168.0.3:1234”的手机,并将响应数据和手机的IP地址及端口号传递给协议分析模块;协议分析模块基于上述手机使用的协议对响应数据进行报文封装,并将封装后的响应数据发往NAT协议驱动;NAT协议驱动将封装后的响应数据发往入口网卡;入口网卡基于IP地址及端口号“192.168.0.3:1234”将封装后的响应数据发往对应的手机。

基于上述实施例,参阅图8所示,本申请实施例中,热点数据传输装置包括入口网卡80、NAT协议驱动模块81、协议分析模块82和出口网卡83,其中,

第一方面,在由内向外传输热点数据过程中,各个模块作用如下:

入口网卡80,用于接收无线客户端发送的数据包,并将数据包传送至本地自定义的网络地址转换NAT协议驱动;

NAT协议驱动模块81,用于将接收的数据包发往应用层;

协议分析模块82,位于应用层,用于对接收的数据包进行协议分析,并根据协议分析结果,通过出口网卡在本地和目的网络之间建立socket连接;

出口网卡83,用于通过socket连接将数据包发往目的网络。

入口网卡80进一步用于:

在将数据包传送至NAT协议驱动模块的过程中,关闭入口网卡对应的TCP/IP协议驱动。

协议分析模块82具体用于:

在应用层对数据包进行协议分析,提取出数据包中记录的目的网络的IP地址和有效数据。

协议分析模块82具体用于:基于数据包中记录的目的网络的IP地址,调用系统socket函数选定出口网卡;

出口网卡83具体用于,基于数据包中记录的目的网络的IP地址,在本地和目的网络之间建立socket连接,并基于所述socket连接,将所述有效数据发往目的网络。

第二方面,在由外向内传输热点数据过程中,各个模块作用如下:

出口网卡83,用于在接收到目的网络通过socket连接反馈的响应数据,基于socket连接确定对应的无线客户端;

协议分析模块82,位于应用层,基于无线客户端使用的协议对响应数据进行报文封装,并将封装后的响应数据发往NAT协议驱动;

NAT协议驱动模块81,用于将封装后的响应数据至入口网卡;

入口网卡80,用于将封装后的响应数据发往无线客户端。

协议分析模块82具体用于:

在报文的目的地址字段中填写无线客户端使用的IP地址和端口号;

在报文的源地址字段中填写目的网络使用的IP地址和端口号;

将响应数据封装在报文的数据净荷部分。

入口网卡80进一步用于:

将封装后的响应数据发往无线客户端后,若确定热点传输已结束,则开启入口网卡对应的TCP/IP协议驱动。

综上所述,本申请实施例中,热点数据传输装置通过入口网卡接收无线客户端发送的数据包,并经由自定义的NAT协议驱动发送至应用层进行协议分析,再通过出口网卡在本地和目的网络之间建立socket连接,并基于socket连接将数据包发往目的网络,这样,通过自定义的NAT协议驱动来中转与无线客户端之间交互的数据包,可以突破系统对组件数目的限制,从而增加系统热点数据的传输容量,进一步地,通过socket连接传输数据包,可以有效提高数据传输的稳定性和安全性。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1