本發(fā)明屬于計(jì)算機(jī)通信網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種透明代理實(shí)現(xiàn)方法、裝置以及客戶端。
背景技術(shù):
winsock作為應(yīng)用程序的windows的網(wǎng)絡(luò)套接字工具,可以由稱為“分層服務(wù)提供商(lsp,layeredserviceprovider)”的機(jī)制進(jìn)行擴(kuò)展。winsocklsp可用于非常廣泛的實(shí)用用途,包括internet家長(zhǎng)控制(parentalcontrol)、web內(nèi)容篩選等。lsp就是tcp/ip等協(xié)議的接口,lsp可以方便程序員們編寫(xiě)監(jiān)視系統(tǒng)網(wǎng)絡(luò)通訊情況的sniffer,也可以是現(xiàn)在常見(jiàn)的用于瀏覽器劫持。
在視窗系統(tǒng)(windows)中,刪除不正確的lsp(也稱為“buggy”)可能會(huì)導(dǎo)致注冊(cè)表中的winsock目錄損壞,潛在地導(dǎo)致所有網(wǎng)絡(luò)連接的丟失。另外,lsp是指一個(gè)fec在mpls網(wǎng)絡(luò)中經(jīng)過(guò)的路徑稱為標(biāo)簽交換路徑lsp(labelswitchedpath),是從入口到出口的一個(gè)單向路徑。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)代理實(shí)現(xiàn)方法、裝置以及客戶端,技術(shù)方案如下:
第一方面,提供一種透明代理實(shí)現(xiàn)方法,所述方法包括:分層服務(wù)提供層(lsp)將第一應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層;中轉(zhuǎn)回路層接收來(lái)自lsp層的第一應(yīng)用層數(shù)據(jù),并按照預(yù)設(shè)的代理協(xié)議將所述第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù);中轉(zhuǎn)回路層將第二應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp);所述基礎(chǔ)服務(wù)提供層(bsp)根據(jù)所述第二應(yīng)用層數(shù)據(jù)所包含的代理協(xié)議信息將所述第二應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧。
第二方面,提供一種透明代理裝置,所述方法裝置組成如下:分層服務(wù)提供層(lsp),用于將第一應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層;中轉(zhuǎn)回路層,用于接收來(lái)自lsp層的第一應(yīng)用層數(shù)據(jù),并按照預(yù)設(shè)的代理協(xié)議將所述第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù);并將第二應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp);基礎(chǔ)服務(wù)提供層(bsp),用于根據(jù)所述第二應(yīng)用層數(shù)據(jù)所包含的代理協(xié)議信息將所述第二應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧。
第三方面,提供一種客戶端,包含前述的裝置。
第四方面,提供一種終端,包括存儲(chǔ)器、處理器以及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)權(quán)利要求1-7所述的方法步驟。
本發(fā)明能夠達(dá)到的有益效果:基于本發(fā)明實(shí)施例提供的技術(shù)方案能夠?qū)sp層與應(yīng)用層數(shù)據(jù)修改功能解耦,降低了lsp層的復(fù)雜程度,從而避免了在修改應(yīng)用層數(shù)據(jù)時(shí)導(dǎo)致的lsp沖突,或者由于遺漏模型導(dǎo)致的上層應(yīng)用程序無(wú)法執(zhí)行。
附圖說(shuō)明
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)的說(shuō)明;
圖1是本發(fā)明實(shí)施例提供的透明代理原理示意圖。
圖2是本發(fā)明實(shí)施例提供的透明代理層構(gòu)架示意圖。
圖3是本發(fā)明實(shí)施例提供的透明代理原理示意圖。
圖4是本發(fā)明實(shí)施例提供的透明代理層構(gòu)架示意圖。
圖5是本發(fā)明實(shí)施例提供的透明代理原理示意圖。
圖6是本發(fā)明實(shí)施例提供的透明代理方法步驟流程圖。
圖7(a)-(c)是本發(fā)明實(shí)施例提供的透明代理方法步驟流程圖。
圖8是本發(fā)明實(shí)施例提供的透明代理裝置結(jié)構(gòu)框圖。
圖9是本發(fā)明實(shí)施例提供的透明代理裝置結(jié)構(gòu)框圖。
圖10是本發(fā)明實(shí)施例提供的終端結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
如圖1所示,透明代理是指客戶端根本不需要知道有代理服務(wù)器的存在,它會(huì)改編終端發(fā)送的報(bào)文(requestfields),并會(huì)傳送真實(shí)ip。加密的透明代理則是屬于匿名代理,意思是不用設(shè)置使用代理了。透明代理實(shí)踐的例子就是時(shí)下很多公司使用的行為管理軟件。
用戶設(shè)備a和用戶設(shè)備b并不知道行為管理設(shè)備充當(dāng)透明代理行為,當(dāng)用戶設(shè)備a或用戶設(shè)備b向服務(wù)器a或服務(wù)器b提交請(qǐng)求的時(shí)候,透明代理設(shè)備根據(jù)自身策略攔截并修改用戶設(shè)備a或用戶設(shè)備b的報(bào)文,并作為實(shí)際的請(qǐng)求方,向服務(wù)器a或服務(wù)器b發(fā)送請(qǐng)求,當(dāng)接收信息回傳,透明代理再根據(jù)自身的設(shè)置把允許的報(bào)文發(fā)回至用戶設(shè)備a或用戶設(shè)備b;如果透明代理設(shè)置不允許訪問(wèn)服務(wù)器b,那么用戶設(shè)備a或者用戶設(shè)備b就不會(huì)得到服務(wù)器b的數(shù)據(jù)。
如圖2、圖3所示,在一個(gè)實(shí)施例中,實(shí)現(xiàn)透明代理的層構(gòu)架包括:上層應(yīng)用程序、windowssocketsapi、lsp接口層、bsp、tcp/ip協(xié)議棧。上層應(yīng)用程序,通過(guò)windowssockets程序的api接口接入到應(yīng)用層數(shù)據(jù)。應(yīng)用層數(shù)據(jù)通過(guò)支持internet和網(wǎng)絡(luò)應(yīng)用程序的動(dòng)態(tài)鏈接庫(kù)接入到分層服務(wù)提供商層(lsp)。在一個(gè)實(shí)施例中,動(dòng)態(tài)鏈接庫(kù)為系統(tǒng)連接庫(kù)中的ws2_32.dll,ws2_32.dll是windowssockets應(yīng)用程序接口,用于支持internet和網(wǎng)絡(luò)應(yīng)用程序。程序運(yùn)行時(shí)會(huì)自動(dòng)調(diào)用ws2_32.dll文件,ws2_32.dll是個(gè)動(dòng)態(tài)鏈接庫(kù)文件位于系統(tǒng)文件夾中。windows在查找動(dòng)態(tài)鏈接庫(kù)文件時(shí)會(huì)先在應(yīng)用程序當(dāng)前目錄搜索,如果沒(méi)有找到然后才會(huì)搜索windows所在目錄;如果還是沒(méi)有會(huì)搜索system32和system目錄。在lsp層,涉及到select模型、eventselect模型、asyncsocket模型、wsaasyncselect模型、i/ocompletion模型的對(duì)接實(shí)現(xiàn)。之后,lsp層將應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp),bsp層則將數(shù)據(jù)發(fā)送至tcp/ip協(xié)議堆棧,以按照l(shuí)sp層寫(xiě)入的頭文件依據(jù)tcp/ip協(xié)議將數(shù)據(jù)發(fā)送至遠(yuǎn)端設(shè)備。
select模型的實(shí)現(xiàn)原理是:按照一定周期,而復(fù)始地去檢查是否有數(shù)據(jù)輸入,如果有數(shù)據(jù)那么便接收/發(fā)送數(shù)據(jù)。
wsaasyncselect模型是windows下最簡(jiǎn)單易用的一種socketi/o模型。使用這種模型時(shí),windows會(huì)把網(wǎng)絡(luò)事件以消息的形勢(shì)通知應(yīng)用程序。首先定義一個(gè)消息標(biāo)示常量:然后就可以使用wsaasyncselect了:應(yīng)用程序可以對(duì)收到wm_socket消息進(jìn)行分析,判斷是哪一個(gè)socket產(chǎn)生了網(wǎng)絡(luò)事件以及事件類型:msg的wparam是產(chǎn)生了網(wǎng)絡(luò)事件的socket句柄,lparam則包含了事件類型。
wsaeventselect模型則是在大量用戶使用的情況下,為網(wǎng)絡(luò)消息添加一個(gè)附加裝置,用于監(jiān)視網(wǎng)絡(luò)事件,在發(fā)生某些網(wǎng)絡(luò)事件時(shí),發(fā)出提醒消息,該模型要使用線程:proceduretlistenthread.execute。
在上述過(guò)程中,lsp層同時(shí)進(jìn)行代理和改寫(xiě)應(yīng)用層數(shù)據(jù),由此實(shí)現(xiàn)對(duì)于lsp的透明代理。然而,要實(shí)現(xiàn)一個(gè)支持任何應(yīng)程序的lsp非常復(fù)雜,最容易出現(xiàn)的問(wèn)題是與其他廠商的lsp產(chǎn)生沖突。并且,為了在lsp層實(shí)現(xiàn)代理協(xié)議,就需要在應(yīng)用層數(shù)據(jù)上增加包頭實(shí)現(xiàn)透明代理,一旦需要改變應(yīng)用層數(shù)據(jù),就必須實(shí)現(xiàn)所有windows網(wǎng)絡(luò)模型,任何一個(gè)模型漏掉都可能引起上層應(yīng)用程序無(wú)法工作,這也導(dǎo)致了維護(hù)成本很高。
如圖4、5所示,在另一個(gè)實(shí)施例中,在lsp層與bsp層之間,引入一個(gè)負(fù)責(zé)代理數(shù)據(jù)傳輸?shù)闹修D(zhuǎn)回路層,利用中轉(zhuǎn)回路層將代理協(xié)議和lsp層解耦,無(wú)需在lsp層實(shí)現(xiàn)代理協(xié)議,從而大大簡(jiǎn)化lsp的復(fù)雜度。具體地,透明代理的層構(gòu)架包括:上層應(yīng)用程序、windowssocketsapi、lsp接口層、bsp、tcp/ip協(xié)議棧、中轉(zhuǎn)回路層、bsp、tcp/ip協(xié)議棧。上層應(yīng)用程序,通過(guò)windowssockets程序的api接口接入到應(yīng)用層數(shù)據(jù)。應(yīng)用層數(shù)據(jù)通過(guò)支持internet和網(wǎng)絡(luò)應(yīng)用程序的動(dòng)態(tài)鏈接庫(kù)接入到分層服務(wù)提供商層(lsp)。在一個(gè)實(shí)施例中,動(dòng)態(tài)鏈接庫(kù)為系統(tǒng)連接庫(kù)中的ws2_32.dll,ws2_32.dll是windowssockets應(yīng)用程序接口,用于支持internet和網(wǎng)絡(luò)應(yīng)用程序。程序運(yùn)行時(shí)會(huì)自動(dòng)調(diào)用ws2_32.dll文件,ws2_32.dll是個(gè)動(dòng)態(tài)鏈接庫(kù)文件位于系統(tǒng)文件夾中。windows在查找動(dòng)態(tài)鏈接庫(kù)文件時(shí)會(huì)先在應(yīng)用程序當(dāng)前目錄搜索,如果沒(méi)有找到然后才會(huì)搜索windows所在目錄;如果還是沒(méi)有會(huì)搜索system32和system目錄。在lsp層,lsp僅負(fù)責(zé)修改目標(biāo)傳輸?shù)刂罚回?fù)責(zé)修改應(yīng)用層數(shù)據(jù)。那么,lsp層與應(yīng)用層數(shù)據(jù)修改功能解耦,這大大降低了lsp層的復(fù)雜程度,從而避免了在修改應(yīng)用層數(shù)據(jù)時(shí)導(dǎo)致的lsp沖突,或者由于遺漏模型導(dǎo)致的上層應(yīng)用程序無(wú)法執(zhí)行。在lsp層會(huì)將應(yīng)用層數(shù)據(jù)的發(fā)送地址修改為中轉(zhuǎn)回路層的地址,這樣,應(yīng)用層數(shù)據(jù)被首先發(fā)送至中轉(zhuǎn)回路層,并在中轉(zhuǎn)回路層進(jìn)行應(yīng)用層數(shù)據(jù)修改,比較典型的修改是在應(yīng)用層數(shù)據(jù)中增加tcp/ip傳輸協(xié)議的頭文件。
在上述過(guò)程中,通過(guò)在lsp層與bsp層之間設(shè)置中轉(zhuǎn)回路層,lsp層負(fù)責(zé)修改目標(biāo)傳輸?shù)刂罚修D(zhuǎn)回路層負(fù)責(zé)應(yīng)用層數(shù)據(jù)的修改,成功地將應(yīng)用層數(shù)據(jù)修改這一個(gè)功能與lsp層解耦,從而避免了由于應(yīng)用層數(shù)據(jù)修改與lsp層的網(wǎng)絡(luò)模型適應(yīng)問(wèn)題,也可以避免不同lsp沖突的問(wèn)題,這樣可以極大地降低維護(hù)成本。
如圖6所示,本發(fā)明的一個(gè)實(shí)施例提供一種透明代理方法,包括:
s610,分層服務(wù)提供層(lsp)將第一應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層。
根據(jù)在圖2-3、圖4-5所對(duì)應(yīng)的實(shí)施例中所分析的,在圖2、3所示的代理服務(wù)構(gòu)架中,lsp層會(huì)根據(jù)select模型、eventselect模型、asyncsocket模型、i/ocompletion模型等為應(yīng)用層數(shù)據(jù)添加代理包頭。但是,圖2、3的模型導(dǎo)致了lsp層的高復(fù)雜度,不同提供商之間的lsp還可能存在沖突,如果在應(yīng)用層數(shù)據(jù)上增加包頭實(shí)現(xiàn)透明代理,一旦需要改變應(yīng)用層數(shù)據(jù),就必須實(shí)現(xiàn)所有windows網(wǎng)絡(luò)模型,任何一個(gè)模型遺漏都可能引起上層應(yīng)用程序無(wú)法工作。因此,在圖4、5所示的代理服務(wù)構(gòu)架中,對(duì)圖2、3的實(shí)施例進(jìn)行進(jìn)一步地改進(jìn),在lsp層的上層設(shè)置一個(gè)中轉(zhuǎn)回路層,負(fù)責(zé)代理數(shù)據(jù)傳輸,中轉(zhuǎn)回路層可以降低lsp層的復(fù)雜度。具體地,中轉(zhuǎn)回路層設(shè)置在lsp層與bsp層之間,負(fù)責(zé)代理數(shù)據(jù)的傳輸、修改,lsp層只負(fù)責(zé)修改目標(biāo)地址,而不負(fù)責(zé)修改應(yīng)用層數(shù)據(jù),據(jù)此,可以將lsp層與應(yīng)用層數(shù)據(jù)修改功能解耦,這大大降低了lsp層的復(fù)雜程度。當(dāng)然,與應(yīng)用層數(shù)據(jù)修改無(wú)相關(guān)性、且不會(huì)提高lsp處理負(fù)責(zé)度的其它功能,仍然可以由lsp層執(zhí)行。
在上述過(guò)程中,第一應(yīng)用層數(shù)據(jù)是lsp層從上層應(yīng)用程序獲取的,通過(guò)系統(tǒng)動(dòng)態(tài)連接庫(kù)調(diào)用的,包含了上層應(yīng)用程序交互信息的原始數(shù)據(jù)。
在本步驟中,lsp層只需將應(yīng)用層數(shù)據(jù)的發(fā)送地址修改為中轉(zhuǎn)回路層地址。當(dāng)然,更具體地,中轉(zhuǎn)層是設(shè)置在本地回路中的本地回路中轉(zhuǎn)層。
s620,中轉(zhuǎn)回路層接收來(lái)自lsp層的第一應(yīng)用層數(shù)據(jù),并按照預(yù)設(shè)的代理協(xié)議將所述第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù)。
如前所述,第一應(yīng)用層數(shù)據(jù)是lsp層從上層應(yīng)用程序獲取的,通過(guò)系統(tǒng)動(dòng)態(tài)連接庫(kù)調(diào)用的,包含了上層應(yīng)用程序交互信息的原始數(shù)據(jù)。lsp層將第一應(yīng)用層數(shù)據(jù)發(fā)送到中轉(zhuǎn)回路層后,中轉(zhuǎn)回路層則按照預(yù)先設(shè)置的代理協(xié)議規(guī)則對(duì)應(yīng)用層數(shù)據(jù)進(jìn)行修改,比較典型的一種修改是為應(yīng)用層數(shù)據(jù)增加頭文件,頭文件可以包含了tcp/ip傳輸協(xié)議所需的ip地址、ip地址轉(zhuǎn)換函數(shù)、域名轉(zhuǎn)換函數(shù)、數(shù)據(jù)結(jié)構(gòu)定義函數(shù)等。當(dāng)然,修改也不局限于增加頭文件,可以是用于tcp/ip傳輸?shù)膯蝹€(gè)信息,修改也可以是對(duì)于應(yīng)用層內(nèi)容的修改、拆分、重組、合并等,修改后的第一應(yīng)用層數(shù)據(jù)稱為第二應(yīng)用層函數(shù)。
按照解耦后的功能劃分,lsp層只負(fù)責(zé)簡(jiǎn)單的網(wǎng)絡(luò)調(diào)用轉(zhuǎn)發(fā),本地回路中轉(zhuǎn)層工作在應(yīng)用層級(jí)別,負(fù)責(zé)代理協(xié)議實(shí)現(xiàn),可是視為公共底層和邏輯完全解耦獨(dú)立,大大簡(jiǎn)化了lsp層的復(fù)雜度。中轉(zhuǎn)回路層負(fù)責(zé)代理數(shù)據(jù)的傳輸、修改,其會(huì)接收l(shuí)sp層發(fā)送的應(yīng)用層數(shù)據(jù),按照預(yù)設(shè)代理協(xié)議生成應(yīng)用層數(shù)據(jù)的頭文件,當(dāng)需要進(jìn)行代理版本升級(jí),或者代理和加速軟件版本的變更時(shí),只需要修改本地回路中轉(zhuǎn)層,無(wú)需修改lsp,在維護(hù)成本極大降低的情況下,能保持良好的兼容性。
s630,中轉(zhuǎn)回路層將第二應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
在中轉(zhuǎn)回路層將第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù)之后,中轉(zhuǎn)回路層將數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
s640,所述基礎(chǔ)服務(wù)提供層(bsp)根據(jù)所述第二應(yīng)用層數(shù)據(jù)所包含的代理協(xié)議信息將所述第二應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧。
如前所述,第二應(yīng)用層數(shù)據(jù)包含用于tcp/ip傳輸?shù)念^文件信息或者其他信息,bsp基于第二應(yīng)用層數(shù)據(jù)包含的頭文件信息或tcp/ip信息推送至tcp/ip協(xié)議棧。
如圖7(a)所示,本發(fā)明的一個(gè)實(shí)施例提供一種透明代理方法,包括:
s700,初始化步驟,如圖7(b)所示,該步驟包括如下子步驟:
s7001,初始化分層服務(wù)提供層(lsp);
s7002,創(chuàng)建所述中轉(zhuǎn)回路層工作的子線程,所述子線程與lsp處于相同進(jìn)程。
上述步驟中,本地回路中轉(zhuǎn)回路層工作在lsp初始化后創(chuàng)建的子線程,并且lsp所處相同進(jìn)程。遠(yuǎn)程網(wǎng)絡(luò)回包后,使用進(jìn)程內(nèi)通信手段,即可在lsp層進(jìn)行來(lái)源地址的修改。如此,應(yīng)用程序接收到的網(wǎng)絡(luò)數(shù)據(jù)包,其網(wǎng)絡(luò)地址是本地修改后的地址,而不是真正的網(wǎng)絡(luò)地址。lsp層進(jìn)行來(lái)源地址修改,可以防止應(yīng)用程序由于網(wǎng)絡(luò)ip地址而認(rèn)為接收到的數(shù)據(jù)包是非法數(shù)據(jù)包。
s710,分層服務(wù)提供層(lsp)將應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層。
在一個(gè)示例中,在lsp層的上層設(shè)置一個(gè)中轉(zhuǎn)回路層,負(fù)責(zé)代理數(shù)據(jù)傳輸,中轉(zhuǎn)回路層可以降低lsp層的復(fù)雜度。具體地,中轉(zhuǎn)回路層設(shè)置在lsp層與bsp層之間,負(fù)責(zé)代理數(shù)據(jù)的傳輸、修改,lsp層只負(fù)責(zé)修改目標(biāo)地址,而不負(fù)責(zé)修改應(yīng)用層數(shù)據(jù),據(jù)此,可以將lsp層與應(yīng)用層數(shù)據(jù)修改功能解耦,這大大降低了lsp層的復(fù)雜程度。當(dāng)然,與應(yīng)用層數(shù)據(jù)修改無(wú)相關(guān)性、且不會(huì)提高lsp處理負(fù)責(zé)度的其它功能,仍然可以由lsp層執(zhí)行。
在一個(gè)示例中,所述中轉(zhuǎn)回路層地址包括中轉(zhuǎn)回路層的網(wǎng)絡(luò)ip地址和中轉(zhuǎn)回路層的端口地址。例如,將中轉(zhuǎn)回路層地址修改為127.0.0.1這樣的本機(jī)地址,將中轉(zhuǎn)服務(wù)器端口修改為指定的端口。
因此,在本步驟中,lsp層只需將應(yīng)用層數(shù)據(jù)的發(fā)送地址修改為中轉(zhuǎn)回路層地址。當(dāng)然,更具體地,中轉(zhuǎn)層是設(shè)置在本地回路中的本地回路中轉(zhuǎn)層。
在一個(gè)示例中,如圖7(c),將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層包含如下自步驟:
s7101,分層服務(wù)提供層(lsp)將所述應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
s7102,基礎(chǔ)服務(wù)提供層(bsp)將所述應(yīng)用層數(shù)據(jù)發(fā)送至tcp/ip協(xié)議棧。
s7103,所述tcp/ip協(xié)議棧將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層地址。
通過(guò)上述步驟,實(shí)現(xiàn)了將與lsp處于同一進(jìn)程中的中轉(zhuǎn)回路層“服務(wù)器”化,基于tcp/ip規(guī)則進(jìn)行訪問(wèn),并在功能上將原lsp進(jìn)行解耦。當(dāng)然,除使用tcp/ip的方式外,還可以使用其他線程內(nèi)可以執(zhí)行協(xié)議進(jìn)行l(wèi)sp與中轉(zhuǎn)回路層之間的通信。
s720,中轉(zhuǎn)回路層接收來(lái)自lsp層的應(yīng)用層數(shù)據(jù),按照預(yù)設(shè)中轉(zhuǎn)規(guī)則生成頭文件。
按照解耦后的功能劃分,lsp層只負(fù)責(zé)簡(jiǎn)單的網(wǎng)絡(luò)調(diào)用轉(zhuǎn)發(fā),本地回路中轉(zhuǎn)層工作在應(yīng)用層級(jí)別,負(fù)責(zé)代理協(xié)議實(shí)現(xiàn),可是視為公共底層和邏輯完全解耦獨(dú)立,大大簡(jiǎn)化了lsp層的復(fù)雜度。中轉(zhuǎn)回路層負(fù)責(zé)代理數(shù)據(jù)的傳輸、修改,其會(huì)接收l(shuí)sp層發(fā)送的應(yīng)用層數(shù)據(jù),按照預(yù)設(shè)代理協(xié)議生成應(yīng)用層數(shù)據(jù)的頭文件,當(dāng)需要進(jìn)行代理版本升級(jí),或者代理和加速軟件版本的變更時(shí),只需要修改本地回路中轉(zhuǎn)層,無(wú)需修改lsp,在維護(hù)成本極大降低的情況下,能保持良好的兼容性。
在一個(gè)實(shí)施例中,本地中轉(zhuǎn)回路層實(shí)際是一個(gè)本地服務(wù)器層(監(jiān)聽(tīng)tcp服務(wù)端口,開(kāi)放udp服務(wù)端口),其工作在lsp的上層,即應(yīng)用層。而lsp層只修改目標(biāo)地址為本機(jī)(127.0.0.1)地址和中轉(zhuǎn)回路層的端口,不修改應(yīng)用層數(shù)據(jù)。因此應(yīng)用層調(diào)用網(wǎng)絡(luò)api后,數(shù)據(jù)會(huì)傳輸?shù)奖镜鼗芈分修D(zhuǎn)層。再由本地回路中轉(zhuǎn)層實(shí)現(xiàn)代理協(xié)議傳輸?shù)竭h(yuǎn)程,從而實(shí)現(xiàn)網(wǎng)絡(luò)代理。
s730,中轉(zhuǎn)回路層將包含所述頭文件的應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
在中轉(zhuǎn)回路層將第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù)之后,中轉(zhuǎn)回路層將數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
s740,所述基礎(chǔ)服務(wù)提供層根據(jù)所述頭文件將包含所述頭文件的應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧;所述tcp/ip協(xié)議棧將所述應(yīng)用層數(shù)據(jù)發(fā)送至遠(yuǎn)端設(shè)備。
如前所述,第二應(yīng)用層數(shù)據(jù)包含用于tcp/ip傳輸?shù)念^文件信息或者其他信息,bsp基于第二應(yīng)用層數(shù)據(jù)包含的頭文件信息或tcp/ip信息推送至tcp/ip協(xié)議棧。tcp/ip協(xié)議棧會(huì)根據(jù)頭文件基于tcp協(xié)議將應(yīng)用層數(shù)據(jù)發(fā)送至遠(yuǎn)端設(shè)備。
750,中轉(zhuǎn)回路層接收來(lái)自基礎(chǔ)服務(wù)提供層(bsp)的遠(yuǎn)程網(wǎng)絡(luò)回包,基于進(jìn)程內(nèi)通信將所述遠(yuǎn)程網(wǎng)絡(luò)回包傳遞給所述lsp;所述lsp將所述網(wǎng)絡(luò)回包地址修改為本地地址。
在一個(gè)實(shí)施例中,中轉(zhuǎn)回路層在監(jiān)聽(tīng)tcp服務(wù)端口的同時(shí)開(kāi)放udp服務(wù)端口。使用tcp服務(wù)端和udp服務(wù)端在中轉(zhuǎn)回路層的設(shè)計(jì)上有所不同。因?yàn)榭蛻舳酥信溆衝ic(networkinterfacecard,網(wǎng)絡(luò)接口卡)數(shù)據(jù)傳輸設(shè)備。通過(guò)nic向計(jì)算機(jī)內(nèi)部傳輸數(shù)據(jù)時(shí)會(huì)用到ip。操作系統(tǒng)負(fù)責(zé)把傳遞到內(nèi)部的數(shù)據(jù)適當(dāng)分配給套接字,這時(shí)就利用端口號(hào),也就是說(shuō),通過(guò)nic接收的數(shù)據(jù)內(nèi)有端口號(hào),操作系統(tǒng)正式參考此端口號(hào)把數(shù)據(jù)傳輸給相應(yīng)端口的套接字,而套接字的類型有分為tcp面向連接的套接字和udp面向消息的套接字,兩種套接字類型,操作系統(tǒng)是可以按接收到的數(shù)據(jù)按套接字類型傳輸給相應(yīng)的端口號(hào)套接字,所以tcp套接字和udp套接字可以共用相同端口。
在一個(gè)實(shí)施例中,基于tcp端口在層轉(zhuǎn)換時(shí)需要設(shè)計(jì)不同組的套接字,本地回路中轉(zhuǎn)層基于tcp協(xié)議接收來(lái)自lsp的應(yīng)用層數(shù)據(jù)時(shí)使用第一組套接字,本地回路中轉(zhuǎn)層修改本地回路中轉(zhuǎn)層數(shù)據(jù)之后,將修改后的中轉(zhuǎn)層數(shù)據(jù)發(fā)往bsp層使用第二組套接字,不同組套接字保證兩套tcp協(xié)議使用不同的端口號(hào),如此可以將中轉(zhuǎn)回路層模擬為一個(gè)“本地服務(wù)層”從而更好地將實(shí)現(xiàn)lsp層功能的解耦,同時(shí)實(shí)現(xiàn)數(shù)據(jù)在功能上的隔離。而udp端口是基于的直連進(jìn)行,在轉(zhuǎn)換過(guò)程中無(wú)需更改套接字,來(lái)自lsp的應(yīng)用層數(shù)據(jù)可以基于udp的方式在層間通信。當(dāng)然,不排除遠(yuǎn)端數(shù)據(jù)通過(guò)tcp協(xié)議傳遞至中轉(zhuǎn)回路層,中轉(zhuǎn)回路層通過(guò)udp的方式與lsp層進(jìn)行數(shù)據(jù)交互。
如圖8所示,本實(shí)施例提供一種透明代理裝置,裝置結(jié)構(gòu)如下:
分層服務(wù)提供層(lsp),用于將第一應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層;
中轉(zhuǎn)回路層,用于接收來(lái)自lsp層的第一應(yīng)用層數(shù)據(jù),并按照預(yù)設(shè)的代理協(xié)議將所述第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù);并將第二應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp);
基礎(chǔ)服務(wù)提供層(bsp),用于根據(jù)所述第二應(yīng)用層數(shù)據(jù)所包含的代理協(xié)議信息將所述第二應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧。
上述裝置可以用于實(shí)施s610-s630所對(duì)應(yīng)的步驟。
如圖9所示,本實(shí)施例提供一種透明代理裝置,裝置結(jié)構(gòu)如下:
初始化步模塊;
分層服務(wù)提供層(lsp),用于將應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層;
中轉(zhuǎn)回路層,用于接收來(lái)自lsp層的應(yīng)用層數(shù)據(jù),按照預(yù)設(shè)中轉(zhuǎn)規(guī)則生成頭文件;在中轉(zhuǎn)回路層將第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù)之后,中轉(zhuǎn)回路層將數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
基礎(chǔ)服務(wù)提供層(bsp),用于根據(jù)所述頭文件將包含所述頭文件的應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧;所述tcp/ip協(xié)議棧將所述應(yīng)用層數(shù)據(jù)發(fā)送至遠(yuǎn)端設(shè)備。
中轉(zhuǎn)回路層,還用于接收來(lái)自基礎(chǔ)服務(wù)提供層(bsp)的遠(yuǎn)程網(wǎng)絡(luò)回包,基于進(jìn)程內(nèi)通信將所述遠(yuǎn)程網(wǎng)絡(luò)回包傳遞給所述lsp;所述lsp將所述網(wǎng)絡(luò)回包地址修改為本地地址。
初始化模塊包括如下子模塊:
初始化模塊,用于初始化分層服務(wù)提供層(lsp);
子線程創(chuàng)建模塊,用于創(chuàng)建所述中轉(zhuǎn)回路層工作的子線程,所述子線程與lsp處于相同進(jìn)程。
上述模塊中,本地回路中轉(zhuǎn)回路層工作在lsp初始化后創(chuàng)建的子線程,并且lsp所處相同進(jìn)程。遠(yuǎn)程網(wǎng)絡(luò)回包后,使用進(jìn)程內(nèi)通信手段,即可在lsp層進(jìn)行來(lái)源地址的修改。如此,應(yīng)用程序接收到的網(wǎng)絡(luò)數(shù)據(jù)包,其網(wǎng)絡(luò)地址是本地修改后的地址,而不是真正的網(wǎng)絡(luò)地址。lsp層進(jìn)行來(lái)源地址修改,可以防止應(yīng)用程序由于網(wǎng)絡(luò)ip地址而認(rèn)為接收到的數(shù)據(jù)包是非法數(shù)據(jù)包。
分層服務(wù)提供層(lsp)將應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層。
在一個(gè)示例中,在lsp層的上層設(shè)置一個(gè)中轉(zhuǎn)回路層,負(fù)責(zé)代理數(shù)據(jù)傳輸,中轉(zhuǎn)回路層可以降低lsp層的復(fù)雜度。具體地,中轉(zhuǎn)回路層設(shè)置在lsp層與bsp層之間,負(fù)責(zé)代理數(shù)據(jù)的傳輸、修改,lsp層只負(fù)責(zé)修改目標(biāo)地址,而不負(fù)責(zé)修改應(yīng)用層數(shù)據(jù),據(jù)此,可以將lsp層與應(yīng)用層數(shù)據(jù)修改功能解耦,這大大降低了lsp層的復(fù)雜程度。當(dāng)然,與應(yīng)用層數(shù)據(jù)修改無(wú)相關(guān)性、且不會(huì)提高lsp處理負(fù)責(zé)度的其它功能,仍然可以由lsp層執(zhí)行。
在一個(gè)示例中,所述中轉(zhuǎn)回路層地址包括中轉(zhuǎn)回路層的網(wǎng)絡(luò)ip地址和中轉(zhuǎn)回路層的端口地址。例如,將中轉(zhuǎn)回路層地址修改為127.0.0.1這樣的本機(jī)地址,將中轉(zhuǎn)服務(wù)器端口修改為指定的端口。
在一個(gè)示例中,lsp層包含如下子模塊:
第一發(fā)送模塊,用于將所述應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp)。
第二發(fā)送模塊,用于將所述應(yīng)用層數(shù)據(jù)發(fā)送至tcp/ip協(xié)議棧。
第三發(fā)送模塊,用于將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層地址。
通過(guò)上述模塊,實(shí)現(xiàn)了將與lsp處于同一進(jìn)程中的中轉(zhuǎn)回路層“服務(wù)器”化,基于tcp/ip規(guī)則進(jìn)行訪問(wèn),并在功能上將原lsp進(jìn)行解耦。當(dāng)然,除使用tcp/ip的方式外,還可以使用其他線程內(nèi)可以執(zhí)行協(xié)議進(jìn)行l(wèi)sp與中轉(zhuǎn)回路層之間的通信。
上述模塊可以用于實(shí)施步驟s710-s750的方法。
請(qǐng)參考圖10,其示出了本發(fā)明一個(gè)實(shí)施例提供的終端的結(jié)構(gòu)示意圖。該終端用于實(shí)施上述實(shí)施例中提供的透明代理方法。具體來(lái)講:
終端1000可以包括rf(radiofrequency,射頻)電路110、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器120、輸入單元130、顯示單元140、視頻傳感器150、音頻電路160、wifi(wirelessfidelity,無(wú)線保真)模塊170、包括有一個(gè)或者一個(gè)以上處理核心的處理器180、以及電源190等部件。本領(lǐng)域技術(shù)人員可以理解,圖1中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
rf電路110可用于收發(fā)信息或通話過(guò)程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個(gè)或者一個(gè)以上處理器180處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路110包括但不限于天線、至少一個(gè)放大器、調(diào)諧器、一個(gè)或多個(gè)振蕩器、用戶身份模塊(sim)卡、收發(fā)信機(jī)、耦合器、lna(lownoiseamplifier,低噪聲放大器)、雙工器等。此外,rf電路110還可以通過(guò)無(wú)線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無(wú)線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommunication,全球移動(dòng)通訊系統(tǒng))、gprs(generalpacketradioservice,通用分組無(wú)線服務(wù))、cdma(codedivisionmultipleaccess,碼分多址)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、lte(longtermevolution,長(zhǎng)期演進(jìn))、電子郵件、sms(shortmessagingservice,短消息服務(wù))等。
存儲(chǔ)器120可用于存儲(chǔ)軟件程序以及模塊,處理器180通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器120的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器120可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端1000的使用所創(chuàng)建的數(shù)據(jù)(比如視頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器120可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤(pán)存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器120還可以包括存儲(chǔ)器控制器,以提供處理器180和輸入單元130對(duì)存儲(chǔ)器120的訪問(wèn)。
輸入單元130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤(pán)、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。具體地,輸入單元130可包括圖像輸入設(shè)備131以及其他輸入設(shè)備132。圖像輸入設(shè)備131可以是攝像頭,也可以是光電掃描設(shè)備。除了圖像輸入設(shè)備131,輸入單元130還可以包括其他輸入設(shè)備132。具體地,其他輸入設(shè)備132可以包括但不限于物理鍵盤(pán)、功能鍵(比如音量控制按鍵、開(kāi)關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端1000的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來(lái)構(gòu)成。顯示單元140可包括顯示面板141,可選的,可以采用lcd(liquidcrystaldisplay,液晶顯示器)、oled(organiclight-emittingdiode,15有機(jī)發(fā)光二極管)等形式來(lái)配置顯示面板141。
終端1000可包括至少一種視頻傳感器150,視頻傳感器用于獲取用戶的視頻信息。終端1000還可以包括其它傳感器(未示出),比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來(lái)調(diào)節(jié)顯示面板141的亮度,接近傳感器可在終端1000移動(dòng)到耳邊時(shí),關(guān)閉顯示面板141和/或背光。作為運(yùn)動(dòng)傳感器的一種,重力加速度傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端1000還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。
視頻電路160、揚(yáng)聲器161,傳聲器162可提供用戶與終端1000之間的視頻接口。音頻電路160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器161,由揚(yáng)聲器161轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器162將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器180處理后,經(jīng)rf電路11以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器120以便進(jìn)一步處理。音頻電路160還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端1000的通信。
wifi屬于短距離無(wú)線傳輸技術(shù),終端1000通過(guò)wifi模塊70可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)和訪問(wèn)流式媒體等,它為用戶提供了無(wú)線的寬帶互聯(lián)網(wǎng)訪問(wèn)。雖然圖1示出了wifi模塊170,但是可以理解的是,其并不屬于終端1000的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器180是終端1000的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器120內(nèi)的數(shù)據(jù),執(zhí)行終端1000的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器180可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信。
可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器180中。
終端1000還包括給各個(gè)部件供電的電源190(比如電池),優(yōu)選的,電源可以通過(guò)電源管理系統(tǒng)與處理器180邏輯相連,從而通過(guò)電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源190還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
盡管未示出,終端1000還可以包括藍(lán)牙模塊等,在此不再贅述。
具體在本實(shí)施例中,終端1000還包括有存儲(chǔ)器,以及一個(gè)或者一個(gè)以上的程序,其中一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,且經(jīng)配置以由一個(gè)或者一個(gè)以上處理器執(zhí)行。上述一個(gè)或者一個(gè)以上程序包含用于執(zhí)行上述發(fā)送方客戶端側(cè)或者接收方客戶端側(cè)的方法的指令。所述指令用于在被處理器執(zhí)行時(shí)實(shí)現(xiàn)如下步驟:分層服務(wù)提供層(lsp)將第一應(yīng)用層數(shù)據(jù)發(fā)送地址修改為中轉(zhuǎn)回路層地址,并將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層;中轉(zhuǎn)回路層接收來(lái)自lsp層的第一應(yīng)用層數(shù)據(jù),并按照預(yù)設(shè)的代理協(xié)議將所述第一應(yīng)用層數(shù)據(jù)修改為第二應(yīng)用層數(shù)據(jù);中轉(zhuǎn)回路層將第二應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp);所述基礎(chǔ)服務(wù)提供層(bsp)根據(jù)所述第二應(yīng)用層數(shù)據(jù)所包含的代理協(xié)議信息將所述第二應(yīng)用層數(shù)據(jù)推送至tcp/ip協(xié)議棧。
進(jìn)一步地,所述指令還用于執(zhí)行如下步驟:初始化分層服務(wù)提供層(lsp);創(chuàng)建所述中轉(zhuǎn)回路層工作的子線程,所述子線程與lsp處于相同進(jìn)程。
進(jìn)一步地,所述指令還用于執(zhí)行如下步驟:中轉(zhuǎn)回路層接收來(lái)自基礎(chǔ)服務(wù)提供層(bsp)的遠(yuǎn)程網(wǎng)絡(luò)回包,基于進(jìn)程內(nèi)通信將所述遠(yuǎn)程網(wǎng)絡(luò)回包傳遞給所述lsp;所述lsp將所述遠(yuǎn)程網(wǎng)絡(luò)回包的網(wǎng)絡(luò)地址修改為中轉(zhuǎn)回路層地址。
進(jìn)一步地,所述指令還用于執(zhí)行如下步驟:分層服務(wù)提供層(lsp)將所述應(yīng)用層數(shù)據(jù)發(fā)送至基礎(chǔ)服務(wù)提供層(bsp);基礎(chǔ)服務(wù)提供層(bsp)將所述應(yīng)用層數(shù)據(jù)發(fā)送至tcp/ip協(xié)議棧;所述tcp/ip協(xié)議棧將所述應(yīng)用層數(shù)據(jù)發(fā)送至所述中轉(zhuǎn)回路層的網(wǎng)絡(luò)地址。
應(yīng)當(dāng)理解的是,在本文中提及的“多個(gè)”是指兩個(gè)或兩個(gè)以上?!昂?或”,描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:?jiǎn)为?dú)存在a,同時(shí)存在a和b,單獨(dú)存在b這三種情況。字符“/”一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。