一种基于ndis的sslvpn终端数据交互方法

文档序号:7797774阅读:389来源:国知局
一种基于ndis的ssl vpn终端数据交互方法
【专利摘要】本发明提供了一种基于NDIS的SSL?VPN终端数据交互方法。SSL?VPN网关通过虚拟网卡与NDIS中间驱动实现连接,NDIS再通过TCP/IP协议栈与网络应用程序实现通信;在SSL?VPN网关与虚拟网卡之间引入SSL?VPN客户端作为这两者之间的中间传递媒介,实现数据双向转输。有效降低了网络数据中转所产生的时延,确保在接收到数据后,即时通知相应的模块进行处理。
【专利说明】—种基于NDIS的SSL VPN终端数据交互方法
【技术领域】
[0001]本发明涉及一种基于NDIS的SSL VPN终端数据交互方法,特别是涉及一种适用于通信【技术领域】中基于NDIS的SSL VPN终端数据交互方法。
【背景技术】
[0002]SSL是Secure Socket Layer (安全套接层协议)的缩写,可以在Internet上提供秘密性传输。SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。
[0003]VPN (Virtual Private Network,虚拟专用网络)被定义为通过公用网络(通常是因特网)建立临时的、安全的连接,是一条穿过公用网络的安全、稳定隧道。VPN可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。VPN主要采用隧道技术、力口解密技术、密钥管理技术和使用者与设备身份认证技术。
[0004]SSL VPN是一种采用SSL加密连接实现远程访问的VPN技术。如图1所示,用户终端与SSL VPN网关之间建立SSL连接,以加密方式在Internet上传送SSL数据;而SSLVPN网关收到数据后,解密并验证用户终端发送来的数据,然后通过与内网的服务器建立TCP (Transmission Control Protocol,传输控制协议)连接(TCP接入方式)或者通过直接IP转发(IP接入方式),以明文方式传送用户终端发来的请求,并将服务器的应答通过SSL连接发给用户终端。
[0005]SSLVPN客户端前期负责建立SSL隧道并发起安全认证、SSL隧道建立成功后,负责SSL隧道的管理控制、数据加解密、数据在SSL隧道及虚拟网卡之间的传递。
[0006]NDIS 小端口驱动(Network Driver Interface Specification 网卡驱动接口标准),是微软与一些网卡厂商及其他一些业界领导共同制定的。实际上,它是一组定义好的函数接口,工作在网卡与操作系统之间,它具备拦截通过物理网卡的网络数据。执行相应处理后,可按开发人员意图,执行处理网络数据。SSLVPN客户端正是利用这些特性,拦截数据后转递至SSLVPN客户端或是向TCP/IP协议栈传送从SSLVPN客户端获得的网络数据。
[0007]但基于NDIS的SSL VPN终端数据交互由于网络数据中转所产生的时延,无法确保在接收到数据后,即时通知相应的模块进行处理。

【发明内容】

[0008]本发明要解决的技术问题是提供一种能够有效降低网络数据中转所产生的的时延的基于NDIS的SSL VPN终端数据交互方法。
本发明采用的技术方案如下:一种基于NDIS的SSL VPN终端数据交互方法,其特征在于:SSL VPN网关通过虚拟网卡与NDIS中间驱动实现连接,NDIS再通过TCP/IP协议栈与网络应用程序实现通信。[0009]作为优选,在SSL VPN网关与虚拟网卡之间引入SSL VPN客户端作为这两者之间的中间传递媒介,实现数据双向转输。
[0010]作为优选,SSL VPN客户端在SSL隧道建立后,创建子线程进行数据通信。
[0011]作为优选,所述子线程包括负责从SSL隧道读取数据的线程A、负责向SSL隧道写入数据的线程B和负责虚拟网卡读写数据的线程C。
与现有技术相比,本发明的有益效果是:本发明综合利用Windows平台内核提供的NDIS中间驱动框架、虚拟网卡、OPENSSL, Windows多线程等技术高效稳定地实现本地应用程序与SSLVPN网关进行数据通信功能。在SSLVPN网关与虚拟网卡之间引入SSLVPN客户端作为这两者之间的中间传递媒介,实现数据双向转输。有效降低了网络数据中转所产生的时延,确保在接收到数据后,即时通知相应的模块进行处理,也简化了数据交换处理过程,提高了数据处理效率。
【专利附图】

【附图说明】
[0012]图1为SSL VPN功能示意图。
[0013]图2为本发明其中一实施例的数据传输流程示意图。
【具体实施方式】
[0014]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0015]本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0016]如图2所示,一种基于NDIS的SSL VPN终端数据交互方法,SSL VPN网关通过虚拟网卡与NDIS中间驱动实现连接,NDIS再通过TCP/IP协议栈与网络应用程序实现通信。
[0017]在SSL VPN网关与虚拟网卡之间引入SSL VPN客户端作为这两者之间的中间传递媒介,实现数据双向转输。
[0018]以客户端本地应用程序发送为例,SSL客户端向网关发起认证并成功建立SSL隧道连接后,客户端根据网关下发的相关的网络配置信息,配置好虚拟网卡的IP地址、默认网关等等后,本地应用程序即可与远程虚拟局域网提供的服务,数据转输流程大概如下:应用程序向目地地址发送网络数据,NDIS中间驱动截获数据后,通知SSLVPN客户端有数据需要发送,SSLVPN客户端获取通知后,从Windows内核驱动中读取数据,并将整个网络数据通过SSL隧道转输给SSL VPN网关,网关最终将数据传输到目地地址,应用程序接收数据过程与之相反,SSL VPN网关数据通过SSL隧道发送给SSL VPN客户端,SSL VPN客户端接收到数据后,通知虚拟网卡接收到新的数据,并将原始网络数据转发给虚拟网卡驱动,网卡驱动接收到数据后,按照TCP/IP协议栈,向上层协议驱动 转递网络数据包,协议驱动最终将数据包解析后,再次向TCP/IP应用层传递数据,最终交给相应的应用程序。
[0019]整个数据交换过程中,网络通信对于应用程序来说是完全透明的,它无需关心网络拓扑,仅直接向虚拟网卡发送或接收数据。[0020]SSL VPN客户端在SSL隧道建立后,创建子线程进行数据通信。
[0021]所述子线程包括负责从SSL隧道读取数据的线程A、负责向SSL隧道写入数据的线程B和负责虚拟网卡读写数据的线程C。
[0022]三个线程创建成功后,线程A立即从SSL隧道读取数据,如若没有数据,则进入阻塞状态,等待新的数据来临。线程B创建SSL隧道写数据同步事件,等待此事件的激活。线程C创建读、写虚拟网卡数据同步事件,线程退出事件。等待多个事件的激活。
[0023]有新的数据从SSL隧道传输过来,线程A首先读取数据,然后激活线程C的写数据事件,通知线程C有新的数据需要写入虚拟网卡。随后线程A再次进入等待数据来临的阻塞状态。
[0024]线程C的写入事件接收到通知后,直接将线程A读取到的数据直接写入内核驱动中,交由NDIS向协议栈向上传递。
[0025]NDIS中间驱动至TCP/IP协议栈接收到数据后,激活SSL客户端的线程C得到读取事件,线程C读取事件激活后,直接从内核驱动中读取数据,读取成功,则激活线程B的隧道写入事件。B随后数据写入SSL隧道。
[0026]多线程特性高效率地实现了 SSLVPN客户端与NDIS小端口驱动的数据交换。有效降低网络数据中转所产生的时延,确保在接收到数据后,即时通知相应的模块进行处理。多线程的结构设计也简化了数据交换处理过程,提高了数据处理效率。
【权利要求】
1.一种基于NDIS的SSL VPN终端数据交互方法,其特征在于:SSL VPN网关通过虚拟网卡与NDIS中间驱动实现连接,NDIS再通过TCP/IP协议栈与网络应用程序实现通信。
2.根据权利要求1所述的基于NDIS的SSLVPN终端数据交互方法,其特征在于:在SSLVPN网关与虚拟网卡之间引入SSL VPN客户端作为这两者之间的中间传递媒介,实现数据双向转输。
3.根据权利要求2所述的基于NDIS的SSLVPN终端数据交互方法,其特征在于:SSLVPN客户端在SSL隧道建立后,创建子线程进行数据通信。
4.根据权利要求3所述的基于NDIS的SSLVPN终端数据交互方法,其特征在于:所述子线程包括负责从SSL隧道读取数据的线程A、负责向SSL隧道写入数据的线程B和负责虚拟网卡读写数据的线程C。
【文档编号】H04L12/46GK103812751SQ201410070776
【公开日】2014年5月21日 申请日期:2014年2月28日 优先权日:2014年2月28日
【发明者】唐伟, 邹雷, 吴庆国 申请人:成都卫士通信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1