一種基于ndis的ssl vpn終端數(shù)據(jù)交互方法
【專利摘要】本發(fā)明提供了一種基于NDIS的SSL?VPN終端數(shù)據(jù)交互方法。SSL?VPN網(wǎng)關(guān)通過(guò)虛擬網(wǎng)卡與NDIS中間驅(qū)動(dòng)實(shí)現(xiàn)連接,NDIS再通過(guò)TCP/IP協(xié)議棧與網(wǎng)絡(luò)應(yīng)用程序?qū)崿F(xiàn)通信;在SSL?VPN網(wǎng)關(guān)與虛擬網(wǎng)卡之間引入SSL?VPN客戶端作為這兩者之間的中間傳遞媒介,實(shí)現(xiàn)數(shù)據(jù)雙向轉(zhuǎn)輸。有效降低了網(wǎng)絡(luò)數(shù)據(jù)中轉(zhuǎn)所產(chǎn)生的時(shí)延,確保在接收到數(shù)據(jù)后,即時(shí)通知相應(yīng)的模塊進(jìn)行處理。
【專利說(shuō)明】—種基于NDIS的SSL VPN終端數(shù)據(jù)交互方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于NDIS的SSL VPN終端數(shù)據(jù)交互方法,特別是涉及一種適用于通信【技術(shù)領(lǐng)域】中基于NDIS的SSL VPN終端數(shù)據(jù)交互方法。
【背景技術(shù)】
[0002]SSL是Secure Socket Layer (安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸。SSL采用公開密鑰技術(shù)。其目標(biāo)是保證兩個(gè)應(yīng)用間通信的保密性和可靠性,可在服務(wù)器端和用戶端同時(shí)實(shí)現(xiàn)支持。目前,利用公開密鑰技術(shù)的SSL協(xié)議,已成為Internet上保密通訊的工業(yè)標(biāo)準(zhǔn)。
[0003]VPN (Virtual Private Network,虛擬專用網(wǎng)絡(luò))被定義為通過(guò)公用網(wǎng)絡(luò)(通常是因特網(wǎng))建立臨時(shí)的、安全的連接,是一條穿過(guò)公用網(wǎng)絡(luò)的安全、穩(wěn)定隧道。VPN可以幫助遠(yuǎn)程用戶、公司分支機(jī)構(gòu)、商業(yè)伙伴及供應(yīng)商同公司的內(nèi)部網(wǎng)建立可信的安全連接,用于經(jīng)濟(jì)有效地連接到商業(yè)伙伴和用戶的安全外聯(lián)網(wǎng)虛擬專用網(wǎng)。VPN主要采用隧道技術(shù)、力口解密技術(shù)、密鑰管理技術(shù)和使用者與設(shè)備身份認(rèn)證技術(shù)。
[0004]SSL VPN是一種采用SSL加密連接實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)的VPN技術(shù)。如圖1所示,用戶終端與SSL VPN網(wǎng)關(guān)之間建立SSL連接,以加密方式在Internet上傳送SSL數(shù)據(jù);而SSLVPN網(wǎng)關(guān)收到數(shù)據(jù)后,解密并驗(yàn)證用戶終端發(fā)送來(lái)的數(shù)據(jù),然后通過(guò)與內(nèi)網(wǎng)的服務(wù)器建立TCP (Transmission Control Protocol,傳輸控制協(xié)議)連接(TCP接入方式)或者通過(guò)直接IP轉(zhuǎn)發(fā)(IP接入方式),以明文方式傳送用戶終端發(fā)來(lái)的請(qǐng)求,并將服務(wù)器的應(yīng)答通過(guò)SSL連接發(fā)給用戶終端。
[0005]SSLVPN客戶端前期負(fù)責(zé)建立SSL隧道并發(fā)起安全認(rèn)證、SSL隧道建立成功后,負(fù)責(zé)SSL隧道的管理控制、數(shù)據(jù)加解密、數(shù)據(jù)在SSL隧道及虛擬網(wǎng)卡之間的傳遞。
[0006]NDIS 小端口驅(qū)動(dòng)(Network Driver Interface Specification 網(wǎng)卡驅(qū)動(dòng)接口標(biāo)準(zhǔn)),是微軟與一些網(wǎng)卡廠商及其他一些業(yè)界領(lǐng)導(dǎo)共同制定的。實(shí)際上,它是一組定義好的函數(shù)接口,工作在網(wǎng)卡與操作系統(tǒng)之間,它具備攔截通過(guò)物理網(wǎng)卡的網(wǎng)絡(luò)數(shù)據(jù)。執(zhí)行相應(yīng)處理后,可按開發(fā)人員意圖,執(zhí)行處理網(wǎng)絡(luò)數(shù)據(jù)。SSLVPN客戶端正是利用這些特性,攔截?cái)?shù)據(jù)后轉(zhuǎn)遞至SSLVPN客戶端或是向TCP/IP協(xié)議棧傳送從SSLVPN客戶端獲得的網(wǎng)絡(luò)數(shù)據(jù)。
[0007]但基于NDIS的SSL VPN終端數(shù)據(jù)交互由于網(wǎng)絡(luò)數(shù)據(jù)中轉(zhuǎn)所產(chǎn)生的時(shí)延,無(wú)法確保在接收到數(shù)據(jù)后,即時(shí)通知相應(yīng)的模塊進(jìn)行處理。
【發(fā)明內(nèi)容】
[0008]本發(fā)明要解決的技術(shù)問(wèn)題是提供一種能夠有效降低網(wǎng)絡(luò)數(shù)據(jù)中轉(zhuǎn)所產(chǎn)生的的時(shí)延的基于NDIS的SSL VPN終端數(shù)據(jù)交互方法。
本發(fā)明采用的技術(shù)方案如下:一種基于NDIS的SSL VPN終端數(shù)據(jù)交互方法,其特征在于:SSL VPN網(wǎng)關(guān)通過(guò)虛擬網(wǎng)卡與NDIS中間驅(qū)動(dòng)實(shí)現(xiàn)連接,NDIS再通過(guò)TCP/IP協(xié)議棧與網(wǎng)絡(luò)應(yīng)用程序?qū)崿F(xiàn)通信。[0009]作為優(yōu)選,在SSL VPN網(wǎng)關(guān)與虛擬網(wǎng)卡之間引入SSL VPN客戶端作為這兩者之間的中間傳遞媒介,實(shí)現(xiàn)數(shù)據(jù)雙向轉(zhuǎn)輸。
[0010]作為優(yōu)選,SSL VPN客戶端在SSL隧道建立后,創(chuàng)建子線程進(jìn)行數(shù)據(jù)通信。
[0011]作為優(yōu)選,所述子線程包括負(fù)責(zé)從SSL隧道讀取數(shù)據(jù)的線程A、負(fù)責(zé)向SSL隧道寫入數(shù)據(jù)的線程B和負(fù)責(zé)虛擬網(wǎng)卡讀寫數(shù)據(jù)的線程C。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明綜合利用Windows平臺(tái)內(nèi)核提供的NDIS中間驅(qū)動(dòng)框架、虛擬網(wǎng)卡、OPENSSL, Windows多線程等技術(shù)高效穩(wěn)定地實(shí)現(xiàn)本地應(yīng)用程序與SSLVPN網(wǎng)關(guān)進(jìn)行數(shù)據(jù)通信功能。在SSLVPN網(wǎng)關(guān)與虛擬網(wǎng)卡之間引入SSLVPN客戶端作為這兩者之間的中間傳遞媒介,實(shí)現(xiàn)數(shù)據(jù)雙向轉(zhuǎn)輸。有效降低了網(wǎng)絡(luò)數(shù)據(jù)中轉(zhuǎn)所產(chǎn)生的時(shí)延,確保在接收到數(shù)據(jù)后,即時(shí)通知相應(yīng)的模塊進(jìn)行處理,也簡(jiǎn)化了數(shù)據(jù)交換處理過(guò)程,提高了數(shù)據(jù)處理效率。
【專利附圖】
【附圖說(shuō)明】
[0012]圖1為SSL VPN功能示意圖。
[0013]圖2為本發(fā)明其中一實(shí)施例的數(shù)據(jù)傳輸流程示意圖。
【具體實(shí)施方式】
[0014]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0015]本說(shuō)明書(包括任何附加權(quán)利要求、摘要和附圖)中公開的任一特征,除非特別敘述,均可被其他等效或者具有類似目的的替代特征加以替換。即,除非特別敘述,每個(gè)特征只是一系列等效或類似特征中的一個(gè)例子而已。
[0016]如圖2所示,一種基于NDIS的SSL VPN終端數(shù)據(jù)交互方法,SSL VPN網(wǎng)關(guān)通過(guò)虛擬網(wǎng)卡與NDIS中間驅(qū)動(dòng)實(shí)現(xiàn)連接,NDIS再通過(guò)TCP/IP協(xié)議棧與網(wǎng)絡(luò)應(yīng)用程序?qū)崿F(xiàn)通信。
[0017]在SSL VPN網(wǎng)關(guān)與虛擬網(wǎng)卡之間引入SSL VPN客戶端作為這兩者之間的中間傳遞媒介,實(shí)現(xiàn)數(shù)據(jù)雙向轉(zhuǎn)輸。
[0018]以客戶端本地應(yīng)用程序發(fā)送為例,SSL客戶端向網(wǎng)關(guān)發(fā)起認(rèn)證并成功建立SSL隧道連接后,客戶端根據(jù)網(wǎng)關(guān)下發(fā)的相關(guān)的網(wǎng)絡(luò)配置信息,配置好虛擬網(wǎng)卡的IP地址、默認(rèn)網(wǎng)關(guān)等等后,本地應(yīng)用程序即可與遠(yuǎn)程虛擬局域網(wǎng)提供的服務(wù),數(shù)據(jù)轉(zhuǎn)輸流程大概如下:應(yīng)用程序向目地地址發(fā)送網(wǎng)絡(luò)數(shù)據(jù),NDIS中間驅(qū)動(dòng)截獲數(shù)據(jù)后,通知SSLVPN客戶端有數(shù)據(jù)需要發(fā)送,SSLVPN客戶端獲取通知后,從Windows內(nèi)核驅(qū)動(dòng)中讀取數(shù)據(jù),并將整個(gè)網(wǎng)絡(luò)數(shù)據(jù)通過(guò)SSL隧道轉(zhuǎn)輸給SSL VPN網(wǎng)關(guān),網(wǎng)關(guān)最終將數(shù)據(jù)傳輸?shù)侥康氐刂?,?yīng)用程序接收數(shù)據(jù)過(guò)程與之相反,SSL VPN網(wǎng)關(guān)數(shù)據(jù)通過(guò)SSL隧道發(fā)送給SSL VPN客戶端,SSL VPN客戶端接收到數(shù)據(jù)后,通知虛擬網(wǎng)卡接收到新的數(shù)據(jù),并將原始網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)給虛擬網(wǎng)卡驅(qū)動(dòng),網(wǎng)卡驅(qū)動(dòng)接收到數(shù)據(jù)后,按照TCP/IP協(xié)議棧,向上層協(xié)議驅(qū)動(dòng) 轉(zhuǎn)遞網(wǎng)絡(luò)數(shù)據(jù)包,協(xié)議驅(qū)動(dòng)最終將數(shù)據(jù)包解析后,再次向TCP/IP應(yīng)用層傳遞數(shù)據(jù),最終交給相應(yīng)的應(yīng)用程序。
[0019]整個(gè)數(shù)據(jù)交換過(guò)程中,網(wǎng)絡(luò)通信對(duì)于應(yīng)用程序來(lái)說(shuō)是完全透明的,它無(wú)需關(guān)心網(wǎng)絡(luò)拓?fù)?,僅直接向虛擬網(wǎng)卡發(fā)送或接收數(shù)據(jù)。[0020]SSL VPN客戶端在SSL隧道建立后,創(chuàng)建子線程進(jìn)行數(shù)據(jù)通信。
[0021]所述子線程包括負(fù)責(zé)從SSL隧道讀取數(shù)據(jù)的線程A、負(fù)責(zé)向SSL隧道寫入數(shù)據(jù)的線程B和負(fù)責(zé)虛擬網(wǎng)卡讀寫數(shù)據(jù)的線程C。
[0022]三個(gè)線程創(chuàng)建成功后,線程A立即從SSL隧道讀取數(shù)據(jù),如若沒(méi)有數(shù)據(jù),則進(jìn)入阻塞狀態(tài),等待新的數(shù)據(jù)來(lái)臨。線程B創(chuàng)建SSL隧道寫數(shù)據(jù)同步事件,等待此事件的激活。線程C創(chuàng)建讀、寫虛擬網(wǎng)卡數(shù)據(jù)同步事件,線程退出事件。等待多個(gè)事件的激活。
[0023]有新的數(shù)據(jù)從SSL隧道傳輸過(guò)來(lái),線程A首先讀取數(shù)據(jù),然后激活線程C的寫數(shù)據(jù)事件,通知線程C有新的數(shù)據(jù)需要寫入虛擬網(wǎng)卡。隨后線程A再次進(jìn)入等待數(shù)據(jù)來(lái)臨的阻塞狀態(tài)。
[0024]線程C的寫入事件接收到通知后,直接將線程A讀取到的數(shù)據(jù)直接寫入內(nèi)核驅(qū)動(dòng)中,交由NDIS向協(xié)議棧向上傳遞。
[0025]NDIS中間驅(qū)動(dòng)至TCP/IP協(xié)議棧接收到數(shù)據(jù)后,激活SSL客戶端的線程C得到讀取事件,線程C讀取事件激活后,直接從內(nèi)核驅(qū)動(dòng)中讀取數(shù)據(jù),讀取成功,則激活線程B的隧道寫入事件。B隨后數(shù)據(jù)寫入SSL隧道。
[0026]多線程特性高效率地實(shí)現(xiàn)了 SSLVPN客戶端與NDIS小端口驅(qū)動(dòng)的數(shù)據(jù)交換。有效降低網(wǎng)絡(luò)數(shù)據(jù)中轉(zhuǎn)所產(chǎn)生的時(shí)延,確保在接收到數(shù)據(jù)后,即時(shí)通知相應(yīng)的模塊進(jìn)行處理。多線程的結(jié)構(gòu)設(shè)計(jì)也簡(jiǎn)化了數(shù)據(jù)交換處理過(guò)程,提高了數(shù)據(jù)處理效率。
【權(quán)利要求】
1.一種基于NDIS的SSL VPN終端數(shù)據(jù)交互方法,其特征在于:SSL VPN網(wǎng)關(guān)通過(guò)虛擬網(wǎng)卡與NDIS中間驅(qū)動(dòng)實(shí)現(xiàn)連接,NDIS再通過(guò)TCP/IP協(xié)議棧與網(wǎng)絡(luò)應(yīng)用程序?qū)崿F(xiàn)通信。
2.根據(jù)權(quán)利要求1所述的基于NDIS的SSLVPN終端數(shù)據(jù)交互方法,其特征在于:在SSLVPN網(wǎng)關(guān)與虛擬網(wǎng)卡之間引入SSL VPN客戶端作為這兩者之間的中間傳遞媒介,實(shí)現(xiàn)數(shù)據(jù)雙向轉(zhuǎn)輸。
3.根據(jù)權(quán)利要求2所述的基于NDIS的SSLVPN終端數(shù)據(jù)交互方法,其特征在于:SSLVPN客戶端在SSL隧道建立后,創(chuàng)建子線程進(jìn)行數(shù)據(jù)通信。
4.根據(jù)權(quán)利要求3所述的基于NDIS的SSLVPN終端數(shù)據(jù)交互方法,其特征在于:所述子線程包括負(fù)責(zé)從SSL隧道讀取數(shù)據(jù)的線程A、負(fù)責(zé)向SSL隧道寫入數(shù)據(jù)的線程B和負(fù)責(zé)虛擬網(wǎng)卡讀寫數(shù)據(jù)的線程C。
【文檔編號(hào)】H04L12/46GK103812751SQ201410070776
【公開日】2014年5月21日 申請(qǐng)日期:2014年2月28日 優(yōu)先權(quán)日:2014年2月28日
【發(fā)明者】唐偉, 鄒雷, 吳慶國(guó) 申請(qǐng)人:成都衛(wèi)士通信息產(chǎn)業(yè)股份有限公司