欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于使用http-察覺的客戶端代理的系統(tǒng)和方法

文檔序號:7679376閱讀:518來源:國知局
專利名稱:用于使用http-察覺的客戶端代理的系統(tǒng)和方法
技術(shù)領(lǐng)域
0001本發(fā)明總的涉M網(wǎng)技術(shù),更^#地,本發(fā)明涉及^^]客戶端代理來攔 截HTTP請求和響應(yīng)以提^^尤化的通信。
背景技術(shù)
0002諸如web瀏覽器的多個應(yīng)用^^] HTTP與服務(wù)器通信。這將導(dǎo)致給定網(wǎng) 絡(luò)上大量的業(yè)務(wù)為HTTP業(yè)務(wù)。因此,通過優(yōu)化和控制虛擬專用網(wǎng)絡(luò)中的HTTP業(yè)務(wù)的 流可以獲得多個益處。例如,可以使用高速緩存來改進重復(fù)的HTTP請求的服務(wù)?;?者例如,通過控制所請求資源的名稱和與請求發(fā)送的任一數(shù)據(jù)可以獲得多個益處。但 是,使用HTTP的不同應(yīng)用的數(shù)量可能使得讓所有HTTP應(yīng)用M適應(yīng)在虛擬專用網(wǎng)絡(luò) 環(huán)境中操作的任務(wù)不現(xiàn)實。
0003許多虛擬專用網(wǎng)絡(luò)與其中資源^求用戶3^i正。例如,虛擬專用網(wǎng)絡(luò)中 的用戶可以被要求來提供名稱和密碼以登錄網(wǎng)絡(luò),并且來獲耳"寸某些資源的訪問。 HTTP cookie (曲奇)可以被用^/A^戶端傳遞^i正信息到虛擬專用網(wǎng)絡(luò)設(shè)備。Web瀏 覽器經(jīng)常^^]來管理這些5全i正cookie。
0004在使用web瀏覽器來管理HTTP cookie以驗i正虛擬專用網(wǎng)絡(luò)的用戶可能 產(chǎn)生多個問題。例如,用戶可以使用web瀏覽器來打開到虛擬專用網(wǎng)絡(luò)的多個同時的 連接。在此情況中期望來自第一連接的^i正cookie被再次^^]以建立第二連接,使 得用戶不需要重新輸入驗證信息。該特征難以實現(xiàn)給定跨越不同瀏覽器的多個 cookie管理策略,諸如超時和cookie高速緩存的可獲得性。同樣,例如,用戶可以 經(jīng)由虛擬專用網(wǎng)絡(luò)試圖打開非HTTP連^妻,在該情況中可能不使用web瀏覽器,意味 著馬b正cookie不能^^得。
0005因此,期望存在一種需求,以在虛擬專用網(wǎng)絡(luò)環(huán)境中能夠攔截并解析 HTTP通信和管理cookie的客戶端代理。

發(fā)明內(nèi)容
0006本發(fā)明涉及使用HTTP-察覺(HTTP-aware)的客戶端代理的系統(tǒng)和方法。在一個方面,本發(fā)明為用于使用在虛擬專用網(wǎng)絡(luò)環(huán)境中操作的客戶
端代理來攔截HTTP通信的方法。在一個實施例,該方法包括由在客戶端上 執(zhí)行的客戶端代理在網(wǎng)絡(luò)層攔截來自客戶端上執(zhí)行的應(yīng)用的HTTP請求;修改 該HTTP請求;并且經(jīng)傳輸層連接發(fā)送所修改的HTTP請求到服務(wù)器。在一些 實施例中,該方法可以包括增加、移除或者修改HTTP請求中的至少一個 cookie。在其他實施例中,該方法可以包括修改包含在該HTTP請求中的至少 一個名稱-值對。
0007在第二方面中,本發(fā)明涉^J于^^]在虛擬專用網(wǎng)絡(luò)環(huán)境中操怍的客戶 端代理來攔截HTTP通信的計算機實現(xiàn)的系統(tǒng)。在一個實施例中,該系統(tǒng)包括客戶 端計算裝置;和^^戶端上才;y亍的客戶端代理,在網(wǎng)絡(luò)層攔截來自客戶端上執(zhí)行 的應(yīng)用的HTTP請求;修改該HTTP請求;并且經(jīng)傳輸層連接發(fā)送所修改的HTTP 請求到服務(wù)器。
0008在第三方面,本發(fā)明為用于使用客戶端代理在來自客戶端的非 HTTP通信中啟用HTTP cookie—瞼il的方法。該方法包括由在客戶端上扭^f亍 的客戶端代理攔截來自客戶端的連接請求;由客戶端代理建立與網(wǎng)絡(luò)設(shè)備的 傳輸層虛擬專用網(wǎng)絡(luò)連接;經(jīng)所建立的連接由客戶端代理發(fā)送包括驗證 cookie的HTTP請求;并且經(jīng)由該連接由客戶端代理發(fā)送該連接請求。
0009在第四方面,本發(fā)明為用于使用客戶端代理在來自客戶端的非 HTTP通信中啟用HTTP cookie驗證的計算機實現(xiàn)的系統(tǒng),該系統(tǒng)包括客戶 端計算設(shè)備;和在客戶端上執(zhí)行的客戶端代理,其攔截來自客戶端的連接請 求;建立與網(wǎng)絡(luò)設(shè)備的傳輸層虛擬專用網(wǎng)絡(luò)連接;經(jīng)所建立的連接由客戶端 代理發(fā)送包括驗證cookie的HTTP請求;并且經(jīng)由該連接由客戶端代理發(fā)送 該連接請求。
0010在第五方面,本發(fā)明為用于^^]客戶端代理#虛擬專用網(wǎng)絡(luò)環(huán)嫂中使 用HTTP cookie啟用安全驗i正的方法,該方法包括由在客戶端上執(zhí)行的客戶端 代理攔截從虛擬專用網(wǎng)絡(luò)上的應(yīng)用到客戶端的包括cookie的HTTP通信;由 客戶端代理,人HTTP通信移除cookie;由客戶端4、理存^f諸所4妄收的cookie; 由客戶端代理發(fā)送所修改的HTTP通信到客戶端上執(zhí)行的應(yīng)用;由該客戶端代 理攔截來自客戶端的HTTP請求;由客戶端代理在該HTTP請求中插入所接收 的cookie;并且發(fā)送所修改的HTTP請求到設(shè)備。
0011在第六方面,本發(fā)明為用于^if]客戶端^J里^^虛擬專用網(wǎng)絡(luò)環(huán)嫂中使用HTTP cookie啟用^N^i正的計算機可^vf亍系統(tǒng),該系統(tǒng)包括客戶端計算設(shè)備和 客戶端上執(zhí)行的客戶端代理,該客戶端代理攔截從虛擬專用網(wǎng)絡(luò)上的設(shè)備到客 戶端的包括cookie的HTTP通信;從HTTP通信移除cookie;存儲所接收的 cookie;發(fā)送所修改的HTTP通信到客戶端上執(zhí)行的應(yīng)用;由該客戶端代理攔 截來自客戶端的HTTP請求;由客戶端代理在該HTTP請求中插入所接收的 cookie;并且發(fā)送所^務(wù)改的HTTP請求到設(shè)備。
0012在以下附圖和描述中提出本發(fā)明的不同實施例的細節(jié)。


0013該發(fā)明的這些和其他對象、方面、特征和優(yōu)點參見下述結(jié)合附圖
的細節(jié)描述將會更加明顯并更好理解,其中
圖1A是對于客戶端通過設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的實施例的框圖IB是用于通過設(shè)備從服務(wù)器傳送計算環(huán)境到客戶端的環(huán)境的實施例的
框圖1C和ID是計算裝置的實施例的框圖2A是用于處理客戶端和服務(wù)器之間的通信的設(shè)備的實施例的框圖2B是用于優(yōu)化、加速、負載平衡和路由客戶端和服務(wù)器之間的通信的 設(shè)備的另 一個實施例的框圖3是客戶端通過設(shè)備與服務(wù)器通信的實施例的框圖4是使用在虛擬專用網(wǎng)絡(luò)環(huán)境中操作的客戶端代理來攔截HTTP通信的 方法的實施例的框圖5是使用客戶端代理來啟用HTTP cookie驗證的方法的一個實施例的框
圖6為使用客戶端代理來在虛擬專用網(wǎng)絡(luò)環(huán)境中使用HTTP cookie啟用安 全驗證的方法的框圖7為用于對先前存儲文件建立有效更新的方法的一個實施例的流程圖; 圖8為用于對先前存儲文件建立有效更新的方法的另一個實施例的流程
圖9為用于對先前存儲文件建立和接收有效更新的方法的另一個實施例的 流程圖10為用于將第二文件與第三文件組合的方法的一個實施例的流程圖,其中第二文件來自先前存儲的第 一文件,第三文件包括來自第二文件的數(shù)據(jù)
序列和在第一文件和第二文件中都存在的數(shù)據(jù)序列的長度和位置表示;和
圖11為描述用于確定文件傳輸方法的方法的一個實施例的流程圖。
0014從下面結(jié)合附圖所提出的具體實施方式
將更加明了本發(fā)明的特 征和優(yōu)點,其中,全文中相同的參考特征識別對應(yīng)的元件。附圖中,相同 的附圖標記通常指示相同的、功能類似、和/或結(jié)構(gòu)類似的元件。
具體實施例方式
A、網(wǎng)絡(luò)和計算環(huán)境
0015在討論設(shè)備和/或客戶端的系統(tǒng)和方法的實施例的細節(jié)之前,討 論可以部署在這些實施例中的網(wǎng)絡(luò)和計算環(huán)境可能是有幫助的?,F(xiàn)在參見圖 1A,描述了網(wǎng)絡(luò)環(huán)境的實施例。概括來講,網(wǎng)絡(luò)環(huán)境包括通過一個或多個網(wǎng) 絡(luò)104、 104,(總的稱為網(wǎng)絡(luò)104)與一個或多個服務(wù)器106a- 106n (同樣總 的稱為服務(wù)器106,或遠程機器106)通信的一個或多個客戶端102a-102n (同樣總的稱為本地機器102,或客戶端102)。在一些實施例中,客戶端102 通過設(shè)備200與服務(wù)器106通信。
0016雖然圖1A示出了在客戶端102和服務(wù)器106間的網(wǎng)絡(luò)104和網(wǎng) 絡(luò)104,,但是客戶端102和服務(wù)器106可以在同一個網(wǎng)絡(luò)104上。網(wǎng)絡(luò)104 和104,可以是相同類型的網(wǎng)絡(luò)或不同類型的網(wǎng)絡(luò)。網(wǎng)絡(luò)104和/或網(wǎng)絡(luò)104,可 為局域網(wǎng)(LAN)(例如公司的企業(yè)內(nèi)部互聯(lián)網(wǎng))、城域網(wǎng)(MAN)、或者廣域 網(wǎng)(WAN)(例如因特網(wǎng)或萬維網(wǎng))。在一個實施例中,網(wǎng)絡(luò)104,可為專用網(wǎng) 絡(luò)并且網(wǎng)絡(luò)104可為公用網(wǎng)絡(luò)。在一些實施例中,網(wǎng)絡(luò)104可為專用網(wǎng)絡(luò)并 且網(wǎng)絡(luò)104,可為公用網(wǎng)絡(luò)。在另一個實施例中,網(wǎng)絡(luò)104和104,可都為專用 網(wǎng)絡(luò)。在一些實施例中,客戶端102可位于公司分支機構(gòu)中,在網(wǎng)絡(luò)104之 上通過WAN連接與位于公司數(shù)據(jù)中心的服務(wù)器106通信。
0017網(wǎng)絡(luò)104和/或104,是任一類型和/或形式的網(wǎng)絡(luò),并且可包括4壬 一的下述網(wǎng)絡(luò)點對點網(wǎng)絡(luò),廣播網(wǎng)絡(luò),廣域網(wǎng),局域網(wǎng),電信網(wǎng)絡(luò),數(shù)據(jù) 通信網(wǎng)絡(luò),計算機網(wǎng)絡(luò),ATM(異步傳輸模式)網(wǎng)絡(luò),SONET (同步光纖網(wǎng) 絡(luò))網(wǎng)絡(luò),SDH(同步數(shù)字體系)網(wǎng)絡(luò),無線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)。在一些實施 例中,網(wǎng)絡(luò)104可以包括無線鏈路,諸如紅外信道或者衛(wèi)星頻帶。網(wǎng)絡(luò)104 和/或104,的拓樸可為總線型、星型或環(huán)型網(wǎng)絡(luò)拓樸。網(wǎng)絡(luò)104和/或104,以及網(wǎng)絡(luò)拓樸可以是任一對于本領(lǐng)域普通技術(shù)人員所熟知的、可以支持此處描述 的操作的任一這樣的網(wǎng)絡(luò)或網(wǎng)絡(luò)拓樸。
0018如圖1A所示,設(shè)備200(此處也指為接口單元200或者網(wǎng)關(guān)200 ) 被示在網(wǎng)絡(luò)104和104,之間。在一些實施例中,設(shè)備200可位于網(wǎng)絡(luò)104上。 例如,公司的分支機構(gòu)可在分支機構(gòu)中布署設(shè)備200。在其它實施例中,設(shè)備 200可位于網(wǎng)絡(luò)104,上。例如,設(shè)備200可位于公司的數(shù)據(jù)中心。在又一個實 施例中,多個設(shè)備200可布署在網(wǎng)絡(luò)104上。在一些實施例中,多個設(shè)備200 可布署在網(wǎng)絡(luò)104,上。在一個實施例中,第一設(shè)備200與第二設(shè)備200,通信。 在其它實施例中,設(shè)備200作為客戶端102可為位于同一個或不同的網(wǎng)絡(luò)104、 104,上的任一客戶端102或服務(wù)器106的一部分。 一個或多個設(shè)備200可位 于客戶端102和服務(wù)器106之間的網(wǎng)絡(luò)或網(wǎng)絡(luò)通信路徑中的任一點。
0019在一個實施例中,系統(tǒng)可包括多個邏輯分組服務(wù)器106。在這些 實施例中,服務(wù)器的邏輯分組可以被稱為服務(wù)器群組38。在這些實施例的一 些中,服務(wù)器106可為地理上分散的。在一些實例中,群組38可以作為單個 實體被管理。在其它實施例中,服務(wù)器群組38包括多個服務(wù)器群組38。在一 個實施例中,服務(wù)器群組執(zhí)行代表一個或者多個客戶端102的一個或者多個 應(yīng)用。
0020在每個群組38中的服務(wù)器106可為不同種類。 一個或多個服務(wù) 器106可根據(jù)一種類型的操作系統(tǒng)平臺(例如位于Washington, Redmond的 Microsoft公司制造的WINDOWS NT)操作,而一個或多個其它服務(wù)器106 可根據(jù)另一類型的操作系統(tǒng)平臺(例如,Unix或Linux)操作。每個群組38 的服務(wù)器106不需要與同一群組38內(nèi)的另一個服務(wù)器106物理上接近。因此, 邏輯分組為群組38的服務(wù)器106的組可使用廣域網(wǎng)(WAN)連接或中等區(qū)域 網(wǎng)(MAN)連接互聯(lián)。例如,群組38可包括物理上位于不同大陸或大陸、 國家、州、城市、校園或房間的不同區(qū)域的服務(wù)器106。如果服務(wù)器106使 用局域網(wǎng)(LAN)連接或一些直接連接的形式進行連接,則在群組38中的服 務(wù)器106間的數(shù)據(jù)發(fā)送速度將增加。
0021服務(wù)器106可指文件服務(wù)器、應(yīng)用服務(wù)器、web服務(wù)器、代理 服務(wù)器或者網(wǎng)關(guān)服務(wù)器。在一些實施例中,服務(wù)器106可有作為應(yīng)用服務(wù)器 或者主應(yīng)用服務(wù)器工作的能力。在一個實施例中,服務(wù)器106可包括活動目 錄??蛻舳?02也可稱為客戶端節(jié)點或端點。在一些實施例中,客戶端102有能力作為在服務(wù)器上搜尋對應(yīng)用的訪問的客戶端節(jié)點工作,也有能力作為
提供對用于其他客戶端102a-102n的所寄載的應(yīng)用的訪問的應(yīng)用服務(wù)器工作。0022在一些實施例中,客戶端102與服務(wù)器106通信。在一個實施 例中,客戶端102可與群組38中的服務(wù)器106之一直接通信。在另一個實施 例中,客戶端102執(zhí)行程序鄰近應(yīng)用以與群組38內(nèi)的服務(wù)器106通信。還是 在又另一個實施例中,服務(wù)器106提供主節(jié)點的功能。在一些實施例中,客 戶端102通過網(wǎng)絡(luò)104與群組38中的服務(wù)器106通信。通過網(wǎng)絡(luò)104,客戶 端102例如可以請求執(zhí)行在群組38中的服務(wù)器106a-106n寄載的各種應(yīng)用, 并接收應(yīng)用執(zhí)行結(jié)果的輸出用于顯示。在一些實施例中,只有主節(jié)點提供要 求識別和提供地址信息的功能,其中的地址信息與寄載所請求的應(yīng)用的服務(wù) 器106'相關(guān)。
0023在一個實施例中,服務(wù)器106提供網(wǎng)絡(luò)(Web)服務(wù)器的功能。在 另一個實施例中,服務(wù)器106a接收來自客戶端102的請求,將該請求轉(zhuǎn)發(fā)到 第二服務(wù)器106b并以來自服務(wù)器106b對該請求的響應(yīng)通過客戶端102來響 應(yīng)該請求。在又另一個實施例中,服務(wù)器106獲得客戶端102可用的應(yīng)用的 列舉以及地址信息,該地址信息與服務(wù)器106相關(guān),該服務(wù)器106寄載由該 應(yīng)用的列舉所識別的應(yīng)用。在又一個實施例中,服務(wù)器106使用web接口呈 現(xiàn)對客戶端102的請求的響應(yīng)。在一個實施例中,客戶端102直接與服務(wù)器 106通信以訪問所識別的應(yīng)用。在另一個實施例中,客戶端102接收諸如顯示 數(shù)據(jù)的應(yīng)用輸出數(shù)據(jù),該應(yīng)用輸出數(shù)據(jù)通過對在服務(wù)器106上所識別的應(yīng)用 的執(zhí)行而產(chǎn)生。
0024現(xiàn)在看圖1B,示出了在客戶端102上用于傳送和/或操作計算環(huán) 境的網(wǎng)絡(luò)環(huán)境。在一些實施例中,服務(wù)器106包括用于向一個或多個客戶端 102傳送計算環(huán)境或應(yīng)用和/或數(shù)據(jù)文件的應(yīng)用傳送系統(tǒng)190??偟膩?i兌,客戶 端〗02通過網(wǎng)絡(luò)104、 104,和設(shè)備200與服務(wù)器106通信。例如,客戶端102 可駐留在公司的遠程辦公室里,例如分支才/^勾,并JJ良務(wù)器106可駐留在公司數(shù)據(jù)中 心??蛻舳?02包括客戶端代理120以及計算環(huán)嫂15。計算沐ft 15可l^亍或操作用 于訪問、處理或^fM數(shù)據(jù)文件的應(yīng)用。計算環(huán)境15、應(yīng)用和/或數(shù)據(jù)文件可通過設(shè)備 200和/或服務(wù)器106傳送。
0025在一些實施例中,設(shè)備200加速計算環(huán)境15或者其中的任一部 分到客戶端102的傳送。在一個實施例中,設(shè)備200通過應(yīng)用傳送系統(tǒng)190加速計算環(huán)境15的傳送。例如,可^j ]此處描述的實施例勤。速應(yīng)用可處理的流 應(yīng)用和數(shù)據(jù)文件從中央公司數(shù)據(jù)中心到遠程用戶位置(例如/>司的分支才A^勾)的傳送。
在另一個實施例中,設(shè)備200力口速客戶端102和服務(wù)器106之間的傳輸層業(yè)務(wù)。設(shè)備 200可以提供用于加速/AJ良務(wù)器106到客戶端102的^""傳輸層有效載荷的力口速技 術(shù),諸如l)傳輸層連接池,2)傳輸層連接多路賴,3)傳輸控制協(xié)議緩沖,4) 壓縮,以及5)高速緩存。在一些實施例中,設(shè)備200響應(yīng)來自客戶端102的請求, 提供服務(wù)器106的負載平衡。在其它實施例中,設(shè)備200充當^J里或;^i方問服務(wù)器來 提供對一個或者多個服務(wù)器106的訪問。在另一個實施例中,設(shè)備200提供/A^戶端 102的第一網(wǎng)絡(luò)104到服務(wù)器106的第二網(wǎng)絡(luò)104,的^^虛擬專用網(wǎng)絡(luò)連接,諸如 SSLVPN連接。在又一些實施例中,設(shè)備200提供客戶端102和服務(wù)器106之間的連 接和通信的應(yīng)用防火墻安全、控制和管理。
0026在一些實施例中,基于多個執(zhí)行方法并且基于通過策略引擎195 所應(yīng)用的任一驗證和授權(quán)策略,應(yīng)用傳送管理系統(tǒng)190提供應(yīng)用傳送技術(shù)來 傳送計算環(huán)境到用戶的桌面(遠程的或者其它的)。使用這些技術(shù),遠程用戶 可以從任一網(wǎng)絡(luò)連接的裝置100獲取計算環(huán)境并且訪問服務(wù)器所存儲的應(yīng)用 和數(shù)據(jù)文件。在一個實施例中,應(yīng)用傳送系統(tǒng)190可駐留在服務(wù)器106上或在其上 4W亍。在另一個實施例中,應(yīng)用傳送系統(tǒng)190可駐留在多個服務(wù)器106a-106n上或在 其上4^亍。在一些實施例中,應(yīng)用傳送系統(tǒng)190可在服務(wù)器群組38內(nèi)^Vf亍。在一個 實施例中,#1^亍應(yīng)用傳送系統(tǒng)190的服務(wù)器106也可^f諸或提供應(yīng)用和數(shù)據(jù)文件。在 另一個實施例中, 一個或多個服務(wù)器106的第一組可4似亍應(yīng)用傳送系統(tǒng)190,并且不 同的服務(wù)器106n可^j諸或提供應(yīng)用和數(shù)據(jù)文件。在一些實施例中,應(yīng)用傳送系統(tǒng)19 0 、 應(yīng)用和數(shù)據(jù)文件中的每個可駐留或位于不同的服務(wù)器上。在又一個實施例中,應(yīng)用傳 送系統(tǒng)190的^-"^分可駐留、扭軒、或被務(wù)賭于或分發(fā)到設(shè)備200或多4S殳備。
0027客戶端102可以包^i十算環(huán)嫂15,用于扭/f刊吏用或者處理數(shù)據(jù)文件的 應(yīng)用??蛻舳?02通過網(wǎng)絡(luò)104、 104,禾^i殳備200可以請求來自服務(wù)器106的應(yīng)用 和數(shù)據(jù)文件。在一個實施例中,設(shè)備200可以轉(zhuǎn)發(fā)來自客戶端102的請求到服務(wù)器 106。例如,客戶端102可以不具有;^4##或者本地可訪問的應(yīng)用和數(shù)據(jù)文件。響 應(yīng)該請求,應(yīng)用傳送系統(tǒng)190和/或服務(wù)器106可以傳送應(yīng)用和數(shù)據(jù)文件到客戶端 102。例如,在一個實施例中,服務(wù)器106可以按照應(yīng)用;^u^發(fā)送應(yīng)用以^^戶端102 上的計算環(huán)境15中操怍。
0028在一些實施例中,應(yīng)用傳送系統(tǒng)190包括Citrix Systems, Inc的CitrixAccess Suite 的4i~^卩分,諸如MetaFrame或者Citrix Presentation Server 和 /或Microsoft公司制造的"fi的Microsoft Windows Terminal Services。在一 個實施例中,應(yīng)用傳送系統(tǒng)190可以通過遠程顯示協(xié)議或者以通過基于遠禾線者基于 服務(wù)器計算的其它方式來傳送一個或者多個應(yīng)用到客戶端102或者用戶。在另一個實 施例中,應(yīng)用傳送系統(tǒng)190可以通過應(yīng)用流來傳送一個或者多個應(yīng)用到客戶端或者用 戶。
0029在一個實施例中,應(yīng)用傳送系統(tǒng)190包括策略引擎195,用于控制和管 Jl) 十應(yīng)用扭軒方法的訪問、選#^應(yīng)用的傳送。在一些實施例中,策略引擎195確定 用戶或者客戶端102可以訪問的一個或者多個應(yīng)用。在另一個實施例中,策略引擎 195確定應(yīng)用應(yīng)該如何被傳送到用戶或者客戶端102,例如才W亍方法。在一些實施例 中,應(yīng)用傳送系統(tǒng)190提供多個傳送技術(shù),從中^i^擇應(yīng)用^^亍的方法,諸如基于服 務(wù)器的計算、流式傳輸或者本地傳送應(yīng)用到客戶端120用于本^#^亍。
0030在一個實施例中,客戶端102請求應(yīng)用程序的執(zhí)行并且包括服務(wù)器 106的應(yīng)用傳送系統(tǒng)190選褲二執(zhí)行該應(yīng)用程序的方法。在一些實施例中,服務(wù) 器106從客戶端102接收證書。在另一個實施例中,服務(wù)器106從客戶端102 接收對于可用應(yīng)用的列舉的請求。在一個實施例中,響應(yīng)該請求或者證書的 接收,應(yīng)用傳送系統(tǒng)l卯列舉對于客戶端102可用的多個應(yīng)用程序。應(yīng)用傳 送系統(tǒng)190接收請求來執(zhí)行所列舉的應(yīng)用。應(yīng)用傳送系統(tǒng)190例如響應(yīng)策略 引擎的策略,選擇預(yù)定數(shù)量的方法的其中一個來執(zhí)行所列舉的應(yīng)用。應(yīng)用傳 送系統(tǒng)190可以選擇執(zhí)行應(yīng)用的方法,使得客戶端102來接收通過執(zhí)行服務(wù) 器106上的應(yīng)用程序所產(chǎn)生的應(yīng)用輸出數(shù)據(jù)。應(yīng)用傳送系統(tǒng)190可以選擇4丸 行應(yīng)用的方法,使得本地機器102在檢索包括應(yīng)用的多個應(yīng)用文件之后來本 地執(zhí)行應(yīng)用程序。在又一個實施例中,應(yīng)用傳送系統(tǒng)190可以選擇執(zhí)行應(yīng)用 的方法,以通過網(wǎng)絡(luò)104流式傳輸應(yīng)用到客戶端102。
0031客戶端102可以執(zhí)行、操作或者以其它方式提供應(yīng)用,該應(yīng)用可 為任一類型和/或形式的軟件、程序或者可^Vf于指令,例如任一類型和/或形式的web 瀏覽器、基于web的客戶端、客戶端-服務(wù)器應(yīng)用、瘦^1戶端計算客戶端、ActiveX
才W亍指令。在一些實施例中,應(yīng)用可以是^4^戶端102在服務(wù)器106上^Vf亍的基于 月良務(wù)器或者基于遠程的應(yīng)用。在一個實施例中,服務(wù)器106可以^JHP瘦客戶端或 者遠程顯示協(xié)"i棘顯示輸出到客戶端102,諸如由Florida, Ft. Lauderdale的CitrixSystemslnc,制造的獨立計算架構(gòu)(ICA )協(xié)議,或者由Washington, Redmond的 Microsoft公司制造的遠程桌面協(xié)議(RDP)。應(yīng)用可<頓任一類型的協(xié)議,并且它可 為,例如,HTTP^:戶端、FTP客戶端、Oscar客戶端或Telnet客戶端。在其它實施 例中,應(yīng)用包括涉WJ VoIP通信的《P類型的軟件,例如軟IP電話。在進一步的實 施例中,應(yīng)用包括涉WJ實時數(shù)據(jù)通信的^-應(yīng)用,例如用于流式傳lt^LM和/或音 頻的應(yīng)用。
0032在一些實施例中,服務(wù)器106或服務(wù)器群組38可以正在運行一 個或多個應(yīng)用,例如提供瘦客戶端計算或遠程顯示表示應(yīng)用的應(yīng)用。在一 個實施例中,服務(wù)器106或服務(wù)器群組38作為一個應(yīng)用了來執(zhí)行Citrix Systems Inc.的Citrix Access Sui teTw的《壬一部分,例々口 MetaFrame或Citrix Presentation Server , 和/或Microsoft公司制造的Microsoft Windows
Terminal Services中的任--~個。在一個實施例中,應(yīng)用是位于Florida,
Fort Lauderdale的Citrix Systems Inc.開發(fā)的ICA客戶端。在其它實施例 中,應(yīng)用包括由位于Washington, Redmond的Microsoft公司開發(fā)的遠程 桌面(RDP)客戶端。另外,服務(wù)器106可以運行一個應(yīng)用,它可以是提供 電子郵件服務(wù)的應(yīng)用服務(wù)器,例如由位于Washington, Redmond的 Microsof t 乂>司制造的Microsof t Exchange,或者web或Internet月l務(wù)器, 或者桌面共享服務(wù)器,或者協(xié)作服務(wù)器。在一些實施例中,任一應(yīng)用可以 包括所寄載的服務(wù)或產(chǎn)品的任一類型,例如位于California, Santa Barbara 的Citrix Online Division ^是供的GoToMeeting , ^立于California, Santa Clara的WebEx Inc.提供的WebEx ,或者位于Washington, Redmond的 Microsof t/>司才是供的Microsof t Office Live Meeting。
0033客戶端102、服務(wù)器106矛^i殳備200可以布署為和/或#(^亍在^^類型 和形式的計算裝置上,諸如能夠在任一類型和形式的網(wǎng)絡(luò)Jiit信并纟W亍此處描述的操 作的計算機、網(wǎng)絡(luò)裝置或者設(shè)備。圖1C和lD描述用于實iElJ:戶端102、月l務(wù)器106 或者設(shè)備200的實施例的計算裝置100的框圖。如圖1C和1D所示,每個計算裝 置100包括中央處理單元101,以及主存儲單元122。如圖1C所示,計算裝 置100可以包括虛擬顯示裝置124、鍵盤126和/或諸如鼠標的定點裝置127。 每個計算裝置100也可包括其它可選擇的部件,例如一個或多個輸入/輸出裝 置130a - 130b (總的使用標號130表示),以及與中央處理單元101通信的高 速緩存存儲器140。0034中央處理單元101是響應(yīng)并處理從主存儲單元122取得的指令 的任一邏輯電路。在許多實施例中,中央處理單元由微處理器單元提供,例 如由 California , Mountain View 的 Intel 7>司制造的;由 Illinois, Schaumburg的Motorola公司制造的;由Califirnia, Santa Clara 的Transmeta公司制造的;由New York, White Plains的International Business Machines公司制造的RS/6000處理器;或者由California, Sunnyvale的Advanced Micro Devices公司制造的。計算裝置100可以基于 任一的這些處理器或者能夠如此處描述操作的任一其它處理器。
0035主存儲單元122可以是一個或多個存儲芯片,這些存儲芯片可 以存儲數(shù)據(jù)并允許微處理器101直接訪問任一存儲位置,例如靜態(tài)隨機存儲 器(SRAM)、突發(fā)(Burst) SRAM或同步突發(fā)(SynchBurst) SRAM (BSRAM), 動態(tài)隨機存取存儲器(DRAM)、快頁模式(Fast Page Mode ) DRAM (FPMDRAM)、 增強型DRAM ( EDRAM )、擴展數(shù)據(jù)輸出(Extended Data Output) RAM ( EDO RAM )、 擴展數(shù)據(jù)輸出(Extended Data Output) DRAM (EDO DRAM)、突發(fā)擴展數(shù)據(jù)輸 出DRAM ( BED0 DRAM )、增強型DRAM ( EDRAM )、同步DRAM ( SDRAM )、 JEDEC SRAM、 PC 100 SDRAM 、雙數(shù)據(jù)率SDRAM (DDR SDRAM )、增強型SDRAM ( ESDRAM )、同步 鏈接DRAM ( SLDRAM )、直接Rambus DRAM ( Direct Rambus DRAM) ( DRDRAM) 或者鐵電RAM (FRAM)。主存儲器122可以基于任一上述的存儲器芯片或者能 夠進行如此處描述的操作的任一其它可用的存儲器芯片。在圖IC所示的實施 例中,處理器101通過系統(tǒng)總線150 (下面將更詳細的介紹)與主存儲器122 通信。圖IC描述計算裝置100的實施例,其中處理器通過存儲器端口 103直 接與主存儲器122通信。例如,在圖ID中,主存儲器122可為DRDRAM。
0036圖1D描述的實施例中,主處理器101通過次級總線,有時稱為 "背端"總線,直接與高速緩存存儲器140通信。在其它實施例中,主處理 器101使用系統(tǒng)總線150與高速緩存存儲器140通信。高速緩存存儲器140 通常具有比主存儲器122更快的響應(yīng)時間,并通常通過SRAM、 BSRAM、或EDRAM ^是供。在圖1C所示的實施例中,處理器101通過本地系統(tǒng)總線150與各種I/O 裝置130通信。各種總線可以被用于連接中央處理單元101到任一 I/O裝置 130,包括VESA VL總線、ISA總線、EISA總線、微通道結(jié)構(gòu)(MCA)總線、 PCI總線、PCI-X總線、PCI-Express總線、或者NuBus。對于這樣的實施 例,其中IA)裝置是視頻顯示器124,處理器101可使用高級圖形端口 (AGP)與顯示器124通信。圖1D描述了計算機100的實施例,其中主處理器101通 過HyperTransport, Rapid I/O或者InfiniBand與I/O裝置130直接通信。 圖1D也描述了一個實施例,其中本地總線和直接通信是混合的處理器101 使用本地互聯(lián)總線與1/0裝置130a通信,而與1/0設(shè)備130b直接通信。
0037計算裝置IOO可以支持任一適合的安裝裝置116,例如用于接 收諸如3, 5英寸、5. 25英寸軟盤或ZIP盤的軟盤驅(qū)動器、CD-ROM驅(qū)動器、 CD-R/RW驅(qū)動器、DVD-ROM驅(qū)動器、各種格式的磁帶驅(qū)動器、USB裝置、硬 盤驅(qū)動器、或者適用于安裝軟件、程序(例如任一客戶端代理120或其中 的部分)的任一其它裝置。計算裝置IOO還可以包括存儲裝置128,諸如一 個或者多個硬盤驅(qū)動器或者獨立磁盤的隨機陣列,用于存儲操作系統(tǒng)和其 它相關(guān)軟件,以及用于存儲諸如涉及客戶端代理120的任一程序的應(yīng)用軟 件程序。可選地,任一安裝裝置116也可以被用作存儲裝置128。此外,操 作系統(tǒng)和軟件可從可引導(dǎo)介質(zhì)運行,例如諸如KN0PPIX ,, —種用于 GNU/Linux的可引導(dǎo)CD,該可引導(dǎo)CD可自ko叩pix. net作為GNU/Linux分 發(fā)獲得。
0038此外,計算裝置100可以包括通過多個連接來對接到局域網(wǎng) (LAN)、廣域網(wǎng)(WAN)或者因特網(wǎng)的網(wǎng)絡(luò)接口 118,該多個連接包括但不 限于標準電話線、LAN或WAN鏈路(如802. 11、 Tl、 T3、 56kb、 X. 25 )、寬 帶連接(例如,ISDN、幀中繼、ATM)、無線連接或它們的任一或者全部的 組合。網(wǎng)絡(luò)接口 118可以包含內(nèi)置網(wǎng)絡(luò)適配器、網(wǎng)絡(luò)接口卡、PCMCIA網(wǎng)卡、 卡總線網(wǎng)絡(luò)適配器、無線網(wǎng)絡(luò)適配器、USB網(wǎng)絡(luò)適配器、調(diào)制解調(diào)器或適合 將計算裝置100對接到能夠通信和執(zhí)行此處所描述操作的任一類型網(wǎng)絡(luò)的 任一其它裝置。
0039在計算裝置100中提供多個種類的1/0裝置130a-130n。輸入 裝置包括鍵盤、鼠標、軌跡板、軌跡球、麥克風(fēng)、以及繪畫板。輸出裝置包 括視頻顯示器、揚聲器、噴墨打印機、激光打印機、及染料升華(dye-sublimation)打印機。如圖1C所示,I/O裝置130可以由I/O控制器123控 制。1/0控制器可以控制諸如鍵盤126和定點裝置127(例如鼠標或者光學(xué)筆) 的一個或者多個工/0裝置。此外,I/O裝置也可為計算裝置100提供存儲器 128和/或安裝介質(zhì)116。仍然在其它實施例中,計算裝置100可以提供USB 連接用來接收手持USB存儲裝置,例如由California, Los Alamitos的Twintech Industry Inc.制造的USB閃爍驅(qū)動器系列裝置。0040在一些實施例中,計算裝置100可以包括多個顯示裝置 124a-124n或與其相連,這些顯示裝置可以是相同或不同的類型和/或形式。 同樣的,1/0裝置130a-130n中的任意一個和/或1/0控制器123可以包括 任一類型和/或形式的適當硬件、軟件或軟硬件組合以支持、啟用或提供計 算裝置100對多個顯示裝置124a-124n的連接和使用。例如,計算裝置100 可以包括任一類型和/或形式的視頻適配器、視頻卡、驅(qū)動器和/或與顯示裝 置124a-124n對接、通信、連接或以其它方式使用顯示裝置的庫。在一個實 施例中,視頻適配器可以包括多個連接器以與多個顯示裝置124a-124n對 接。在其它實施例中,計算裝置100可以包括多個視頻適配器,每個視頻 適配器與顯示裝置124a-124n中的一個或多個連接。在一些實施例中,計 算裝置100的操作系統(tǒng)的任一部分都可以被配置用于使用多個顯示器 124a-124n。在其它實施例中,顯示裝置124a-124n中的一個或多個可以由 一個或多個其它計算裝置提供,諸如(例如通過網(wǎng)絡(luò))與計算裝置100連 接的計算裝置100a和100b。這些實施例可以包括被設(shè)計和構(gòu)造的任一類型 的軟件,以使用另一個計算機的顯示裝置作為計算裝置100的第二顯示裝 置124a。本領(lǐng)域的普通技術(shù)人員將認識并領(lǐng)會到可以將計算裝置100配置 成擁有多個顯示裝置124a-124n的各種方式和實施例。0041在進一步的實施例中,I/O裝置130可為在系統(tǒng)總線150和外部 通信總線間的橋170,外部通信總線例如USB總線、A卯le Desktop總線、RS-232 串行連接、SCSI總線、FireWire總線、FireWire800總線、Ethernet總線、 AppleTalk總線、Gigabit Ethernet總線、異步傳輸模式總線、HIPPI總線、 Super HIPPI總線、SerialPlus總線、SCI/LAMP總線、FibreChannel總線、 或者串行連接(Serial Attached)小型計算機系統(tǒng)接口總線。0042圖1C和圖ID中所描述種類的計算裝置100通常在操作系統(tǒng)的 控制下操作,該操作系統(tǒng)控制對任務(wù)的調(diào)度和對系統(tǒng)資源的訪問。計算裝置100 可jEi^行任一操怍系統(tǒng),例如任一版本的Microsoft Windows操怍系統(tǒng),不同版 本的Unix和Linux々喿作系統(tǒng),用于Macintosh計算機的任一版本的Mac OS ,任 一&A式操作系統(tǒng),^"-實時操作系統(tǒng),任一開放源操怍系統(tǒng),任一專有操作系統(tǒng), 用于移動計算裝置的任一才喿作系統(tǒng),或者可以在計算裝置J^行并4A/f亍此處所述4斜卡 的任一其它操作系統(tǒng)。典型的操作系統(tǒng)包括由Washington, Redmond的Microsoft公司制造的WINDOWS 3. x、 WINDOWS 95、 WINDOWS 98、 WINDOWS 2000、 WINDOWS NT 3. 51、WIND0WS NT 4. 0、WIND0WS CE和WINDOWS XP;由California, Cupertino的Apple計算才幾7>司制造的MacOS; 由New York, Armonk的 International Business Machines制造的OS/2;以及由Utah, Salt Lake City 的Caldera公司發(fā)布的可自由獲得的操作系統(tǒng)Linux,以及除此之外的任一類 型和/或形式的UniX"l喿作系統(tǒng)。
0043在其它實施例中,計算裝置IOO可以具有與該裝置相容的不同 的處理器、操作系統(tǒng)和輸入裝置。例如,在一個實施例中,計算機100是 palm Inc.制造的Treo180、 270、 1060、 600或者650的智能電話。在此實施 例中,Treo智能電話在PalmOS操作系統(tǒng)的控制下運行并且包括觸針輸入裝置 以及五向?qū)蜓b置。此外,計算裝置IOO可以是任一工作站、桌面計算機、 膝上型或筆記本計算機、服務(wù)器、手持計算機、移動電話、任一其它計算 機、或能夠通信并有足夠的處理器能力和存儲容量以執(zhí)行此處所述的操作的 其它形式的計算或者電信裝置。
B、設(shè)備架構(gòu)
0044圖2A示出設(shè)備200的一個示例實施例。圖2A中的設(shè)備200的架構(gòu)僅僅 通過示意的方i^皮提供,并不意于要限制本發(fā)明。如圖2所示的,設(shè)備200包括硬件 層206和分為用戶空間202和內(nèi)核空間204的4欠件層。
0045硬件層206提供硬件元件,在內(nèi)核空間204和用戶空間202內(nèi)的禾辨和 月良務(wù)在該硬件元件上被^i亍。硬件層206 ^ki是供結(jié)構(gòu)和元件,使得在內(nèi)核空間204 和用戶空間202內(nèi)的程序和服務(wù)對于設(shè)備200 ,4內(nèi)又向夕卜通信數(shù)據(jù)。如圖2所示, 硬件層206包括用于#^亍軟件禾踏和服務(wù)的處理單元262、用于^j諸軟件和數(shù)據(jù)的存 儲器264、用于在網(wǎng)絡(luò)J^送和接收數(shù)據(jù)的網(wǎng)絡(luò)端口 266以及用于扭J亍涉及在網(wǎng)絡(luò) 上被發(fā)送和接收的數(shù)據(jù)的加密套4轉(zhuǎn)協(xié)議層處理的功能的加密處理器260。在一些 實施例中,中央處理單元262可在單獨的處理器中扭^亍加密處理器260的功能。另外, 硬件層206可包括用于每個處理單元262和加密處理器260的多個處理器。處理器 262可以包括以上結(jié)合圖1C和1D所述的任一處理器101。在一些實施例中,中^h 理單元262可在單獨的處理器中執(zhí)行加密處理器260的功能。另夕卜,硬件層206可包 括用于每個處理單元262和加密處理器260的多處理器。例如,在一個實施例中,設(shè) 備200包括第一處理器262和第二處理器262,。在其它實施例中,處理器262或者262,包括多核處理器。
0(M6雖然設(shè)備200的硬件層206通常示出帶有加密處理器260,但是處理器 260可為扭軒涉及^—加密協(xié)議的功能的處理器,例如加密套4^協(xié)議層(SSL)或 者傳輸層安全(TLS)協(xié)議。在一些實施例中,處理器260可為通用處理器(GPP), 并iMi進一步的實施例中,可為具有用于扭軒任一安全相關(guān)協(xié)議的處理的可扭軒指 令。
0047雖然在圖2中設(shè)備200的硬件層206示出具有一些元件,但是設(shè)備 200的硬^H卩分或部件可包^i十算裝置的^""類型和形式的元件、硬件或軟件,例如 此處結(jié)合圖1C和1D示出和討論的計算裝置100。在一些實施例中,設(shè)備200可包括 月l務(wù)器、網(wǎng)關(guān)、路由器、交換機、橋接器或其它類型的計算或網(wǎng)絡(luò)裝置,并且具有與 jH^目關(guān)的ft^硬件和/或軟件元件。
0048設(shè)備200的操怍系統(tǒng)分g己、管理或另外分離可用的系統(tǒng)^i^諸器到內(nèi)核空 間204和用戶空間202。在示例的軟件架構(gòu)200中,操作系統(tǒng)可為任一類型和/或形 式的Unix才喿怍系統(tǒng),雖然本發(fā)明并未如此限制。同樣的,i殳備200可iLi^行^"""操 作系統(tǒng),例如任一片反本的Microsoft Windows #^乍系統(tǒng),不同版本的Unix和Linux 才剁卡系統(tǒng),用于Macintosh計算機的任一版本的Mac 0S , 4—"式#^系統(tǒng), ^~"網(wǎng)^#{乍系統(tǒng),^""實時^f乍系統(tǒng),任一開源才斜乍系統(tǒng),任一專有才剁乍系統(tǒng),用 于移動計算裝置或網(wǎng)絡(luò)裝置的任一操怍系統(tǒng),或者可以在設(shè)備200上運行并^I^亍此處 所述操作的任一其它操怍系統(tǒng)。
0049內(nèi)核空間204被保留用于運行內(nèi)核230,包括4P裝置驅(qū)動器、內(nèi)核擴 ^il其它內(nèi)核相關(guān)庫欠件。就^象本領(lǐng);或^支術(shù)人員所知的,內(nèi)核230是凈剁乍系統(tǒng)的核心, 并提供對設(shè)備104的資源和硬件相關(guān)元件的訪問、控制和管理。根才射殳備200的實施 例,內(nèi)核空間204也包括與高速緩存管理器232協(xié)同工作的多個的網(wǎng)絡(luò)服務(wù)或進程, 有時^M爾為^的高速緩存,其益處此處將進一步詳細描述。另夕卜,內(nèi)核230的實施 例#^賴于通過設(shè)備200安裝、配置或其它方式使用的操怍系統(tǒng)的實施例。
0050在一個實施例中,設(shè)備200包括一個網(wǎng)絡(luò)i^^戔267,例如基于TCP/IP 的》斜戔,用于與客戶端102和/或服務(wù)器106通信。在一個實施例中,使用網(wǎng)紹J斜戔 267與諸如網(wǎng)絡(luò)108的第一網(wǎng)絡(luò)以及第二網(wǎng)絡(luò)110通信。在一些實施例中,設(shè)備200 終止第一傳輸層連接,例如客戶端102的TCP連接,并建立到服務(wù)器106的第二傳輸 層連接,用于由客戶端102^^],例如,在設(shè)備200和服務(wù)器106處終止第二傳輸層 連接??赏ㄟ^單獨的網(wǎng)絡(luò)i斜戔267建立第一和第二傳輸層連接。在其它實施例中,設(shè)備200可包括多個網(wǎng)絡(luò)堆棧,例如267或267,,并且可在一個網(wǎng)絡(luò)i斜戔267建立或 終止第一傳輸層連接,在第二網(wǎng)絡(luò)i斜戈267,可建立或者終止第二傳輸層連接。例如, 一個網(wǎng)絡(luò):t斜戔可用于在第一網(wǎng)絡(luò)上接)]t^發(fā)送網(wǎng)絡(luò)包,并且另一個網(wǎng)絡(luò)舉戰(zhàn)用于在第 二網(wǎng)絡(luò)上接收和發(fā)送網(wǎng)絡(luò)包。在一個實施例中,網(wǎng)絡(luò)^^戔267包括用于排隊一個或多 個網(wǎng)絡(luò)包的緩沖器243,其中網(wǎng)絡(luò)包由設(shè)備200發(fā)送。
0051如圖2所示,內(nèi)核空間204包括高速緩存管理器232、高il^2-7集 成包引擎240、加密引擎234、策略引擎236以及多協(xié)i5UE縮邏輯238。在內(nèi)核空間 204或內(nèi)核模式而不顏戶空間202中運行這些部件或進程232、 240、 234、 236和 238提高這些部件中的每個的單獨的和結(jié)合的性能。內(nèi)核才斜乍意味著這些部件或進程 232、 240、 234、 236和238在設(shè)備200的操怍系統(tǒng)的核地址空間中運行。例如,在 內(nèi)核模式中運行加密引擎234通過移動加密和解密^f乍到內(nèi)核來提高加密性能,從而 減少^內(nèi)核模式中的^f諸空間或內(nèi)核線程與在用戶模式中的存儲空間或線程之 間的轉(zhuǎn)換的數(shù)量。例如,在內(nèi)核模式中獲得的數(shù)據(jù)可以不需^^專輸或拷貝到運行在 用戶才莫式的進禾14^^呈,例如從內(nèi)核級數(shù)提結(jié)構(gòu)到用戶級數(shù)據(jù)結(jié)構(gòu)。在另一個方面, 也可減少內(nèi)核模式和用戶模式之間的上下文切換的數(shù)量。另夕卜,在任^^f?;蜻M程 232、 240、 234、 236和238間的同步和R間的通信在內(nèi)核空間204中可被更有效 地擬亍。
0052在一些實施例中,部件232、 240、 234、 236和238的任^4卩分可在內(nèi) 核空間204中運行或才乘作,而這些部件232、 240、 234、 236和238的其它部分可在 用戶空間202中運行或才剩乍。在一個實施例中,設(shè)備20(HM內(nèi)核級數(shù)據(jù)結(jié)構(gòu)來提供 對一個或多個網(wǎng)絡(luò)包的任一部分的訪問,例如,包括來自客戶端102的請^il者來自 月l務(wù)器106的響應(yīng)的網(wǎng)絡(luò)包。在一些實施例中,可以由包引擎240通it^網(wǎng)絡(luò)i械 267的傳輸層馬區(qū)動H4妻口或選慮器獲得內(nèi)核級數(shù)據(jù)結(jié)構(gòu)。內(nèi)核級數(shù)據(jù)結(jié)構(gòu)可包凌誠過 與網(wǎng)絡(luò)i斜戔267相關(guān)的內(nèi)核空間204可訪問的任一接口和/或數(shù)據(jù)、由網(wǎng)絡(luò)舉線267 接41il發(fā)送的網(wǎng)絡(luò)業(yè)務(wù)或包。在其它實施例中,^""^P件或進程232、 240、 234、 236 和238可使用內(nèi)核級數(shù)據(jù)結(jié)構(gòu)來#^亍部件或進程的期望的操作。在一個實施例中,當 JM內(nèi)核級數(shù)據(jù)結(jié)構(gòu)時,部件232、 240、 234、 236和238在內(nèi)核模式204中運行, 而在另一個實施例中,當^JD內(nèi)核級數(shù)據(jù)結(jié)構(gòu)時,部件232、 240、 234、 236和238 在用戶模式中運行。在一些實施例中,內(nèi)核級數(shù)據(jù)結(jié)構(gòu)可被拷貝或傳輸給第二內(nèi)核級 數(shù)據(jù)結(jié)構(gòu),或4^f可期望的用戶級凄t據(jù)結(jié)構(gòu)。
0053高速緩存管理器232可包括軟件、硬件或軟件和硬件的任意組合,以提供對任一類型和形式的內(nèi)容的高速緩存訪問、控制和管理,例如對fJl由源服務(wù)器
106服務(wù)的動態(tài)產(chǎn)生的對象。由高速緩存管理器232處理和^H渚的數(shù)據(jù)、對象或內(nèi)容 可包括^—格式的數(shù)據(jù),例如標記語言,或通過^—協(xié)i^t信。在一些實施例中,高 速緩存管理器232復(fù)制^i^諸在其它地方的原始數(shù)據(jù)或先前被計算、產(chǎn)生或發(fā)送的數(shù) 據(jù),其中相對于讀高速緩存^i^諸元件,原始數(shù)據(jù)可能需要更長的訪問時間以便取得、 計算或以別的方式獲得。一^Sjt據(jù)被^^諸在高速緩存^f諸元件中,將來的4M可通過 訪問高速緩存的副本而非再取回或再計算原始數(shù)據(jù)而實現(xiàn),因而減少了訪問時間。在 一些實施例中,高速緩存^f渚元件nat包^封殳備200的務(wù)賭器264中的數(shù)據(jù)對象。在 其它實施例中,高速緩存^f諸元件可包括具有比^f諸器264更快的存取時間的^(諸 器。在另一個實施例中,高速緩存#^諸元件可以包4射殳備200的任一類型和形式的存 儲元件,諸如硬盤的部分。在一些實施例中,處理單元262可提供被高速緩存管理器 232 4錢的高速緩存^^諸器。在又一個實施例中,高速緩存管理器232可<錢##器、 ^[諸設(shè)備或處理單元的^~"^#組合來高速緩存數(shù)據(jù)、對^^其它內(nèi)容。
0054另外,高速緩存管理器232包括用于i^f亍此處描述的設(shè)備200的技術(shù)的 任一實施例的^"-邏輯、功能、規(guī)則或4剁乍。例如,,高速緩存管理器232包括基于 無效時間周期的終止,或者來自客戶端102或服務(wù)器106的無效命令的接收,無效對 象的邏輯或功能。在一些實施例中,高速緩存管理器232可作為在內(nèi)核空間204中執(zhí) 行的牙踏、月良務(wù)、進禾試任務(wù)來:^1乍,并JL^其它實施例中在用戶空間202中4似亍。 在一個實施例中,高速緩存管理器232的第-"^分在用戶空間202內(nèi)扭行,而第二部 分在內(nèi)核空間204內(nèi)扭肝。在一些實施例中,高速H存管理器232可包括任一類型的 通用處理器(GPP),或者任一其它類型的集成電路,例如現(xiàn)場可編程門陣列(FPGA)、 可編程邏輯器件(PLD)或者專用^電路(ASIC)。
0055策略引擎236可包括,例如,智能統(tǒng)計引擎或其它可編程應(yīng)用。在一個 實施例中,策略引擎236提供西己置機制以允許用戶識另iJ、指定、限定或配置高速緩存 策略。在一些實施例中,策略引擎236也訪問^f諸器以支持數(shù)據(jù)結(jié)構(gòu),例如查^JJl 哈希表,以啟用用戶選擇的高速緩存策略決定。在其它實施例中,策略引擎236可包 括任一邏輯、規(guī)則、功能或才刺乍以決定和提供除了對^、網(wǎng)絡(luò)業(yè)務(wù)、網(wǎng)絡(luò)訪問、壓 縮或其它任一由設(shè)備200 ^^亍的功能或才刺乍的訪問、控制和管理打卜的對設(shè)備200 所高速緩存的對象、數(shù)據(jù)、或內(nèi)容的訪問、控制和管理。特定高速緩存策略的其它實 施例在此處進一步描述。
0056加密引擎234包括用于控制任一躬,相關(guān)協(xié)議處理,例如SSL或TLS,或其相關(guān)的任一功能的^"^邏輯、商業(yè)MJ'j、功能或操怍。例如,加密引擎234加密 并解密通過設(shè)備200通信的網(wǎng)絡(luò)包,或其任一p分。加密引擎234也可4汰客戶端 102a-102n、月良務(wù)器106a-106n或設(shè)備200來安絲建立SSL或TLS連接。同樣的, 加密引擎234提供SSL處理的卸載和加速。在一個實施例中,加密引擎234偵月l5^ii 協(xié)i^^提供M戶端102a-102n和服務(wù)器106a-106n間的虛擬專用網(wǎng)絡(luò)。在一些實施 例中,加密引擎234與加密處理器260通信。在其它實施例中,加密引擎234包^拔 行在加密處理器260上的可l^f亍指令。
0057多協(xié)議壓縮引擎238包括用于壓縮一個或多個網(wǎng)絡(luò)包協(xié)議(例》4皮設(shè)備 200的網(wǎng)紹3斜戔267使用的^^協(xié)議)的任一邏輯、商業(yè)類U'J、功能或才喿作。在一個 實施例中,多協(xié)議壓縮引擎238雙向壓縮^J:戶端102a-102n和服務(wù)器106a-106n 間任一基于TCP/IP的協(xié)議,包括消息應(yīng)用編程接口 (MAPI)(電子郵件email )、文 件傳豐針辦議(FTP)、超文本傳專針辦議(HTTP)、通用Internet文件系統(tǒng)(CIFS)協(xié)議
(文件傳輸)、獨立計算架構(gòu)(ICA)協(xié)議、遠程桌面協(xié)議(RDP )、無纟驗用協(xié)議(WAP )、 移動IP協(xié)議以及IP上il^ (VoIP)協(xié)議。在其它實施例中,多協(xié)"RA縮引擎238 提供基于超文^#記語言(HTML)的協(xié)議的壓縮,并且在一些實施例中,提^^i-"標 記語言的壓縮,例如可擴展標記語言(XML)。在一個實施例中,多協(xié)i50i縮引擎238 提^^壬一高性能協(xié)議的壓縮,例如為設(shè)備200設(shè)計的用于設(shè)備200通信的^""協(xié)議。 在另一個實施例中,多協(xié)^Ci縮引擎238 ^^]修改的傳輸控制協(xié)議(例如事務(wù)TCP
(T/TCP)、帶有選擇確認的TCP (TCP-SACK )、帶有大窗口的TCP (TCP-LW)、例如
載荷或^-~通信。
0058同樣的,多協(xié)議壓縮引擎238通過桌面客戶端,例如Micosoft Outlook 和非web瘦客戶端,諸如由通用企業(yè)應(yīng)用像Oracle、 SAP和Siebel啟動的^f可客戶 端,甚至移動客戶端,例如便攜式個人計算機,徊口賴戶訪問應(yīng)用的^^亍。在一些 實施例中,多協(xié)i^縮引擎238通it^內(nèi)核模式204內(nèi)部^^亍并與訪問網(wǎng)絡(luò)i斜戔267 的包處理引擎240 ^,可以壓縮TCP/IP協(xié)議承載的^^可協(xié)議,例如應(yīng)用層協(xié)議。
0059高it^ 2-7 ^包引擎240,通常^#為包處理引擎,或包引擎,通過 網(wǎng)絡(luò)端口 266負責(zé)設(shè)備200接收和發(fā)送的包的內(nèi)核m理的管理。高i4^ 2-7 ^包 引擎240可包括在處理期間用于排隊一個或多個網(wǎng)絡(luò)包的緩沖器,例如用于網(wǎng)絡(luò)包的 接4b戈者網(wǎng)絡(luò)包的發(fā)送。另夕卜,高i4^2-7城包引擎240通過網(wǎng)絡(luò)端口 266與一個 或多個網(wǎng)絡(luò)i斜戔267通信以發(fā)出和接收網(wǎng)絡(luò)包。高絲2-7 包引擎240與加密引擎234、高速緩存管理器232、策略引擎236和多協(xié)^Oi縮邏輯238協(xié)同工作。更具 體地,配i^。密引擎234以執(zhí)行包的SSL處理,配置策略引擎236以執(zhí)行涉及業(yè)## 理的功能,例々"青求級內(nèi)容切換以及請求級高速緩存重定向,并配置多協(xié)議壓縮邏輯 238以扭軒涉及數(shù)據(jù)壓縮和解壓縮的功能。
0060集成高速層2-7的包引擎240包括包處理定時器242。在一個實施例中, 包處理定時器242提供一個或多個時間間隔以觸發(fā)輸入的(即接^4者輸出(即發(fā) 送))網(wǎng)絡(luò)包的處理。在一些實施例中,高速層2-7集成包引擎240響應(yīng)于定時器242 處理網(wǎng)絡(luò)包。包處理定時器242向包引擎240提^f壬一類型和形式的信號以通知、觸 發(fā)或通信與時間相關(guān)的事件、間隔或發(fā)生。在許多實施例中,包處理定時器242以毫 秒級4喿怍,例如100ms、 50ms、或25ms。例如,在一些實施例中,包處理定時器242 提供時間間隔或者其它方式導(dǎo)致高i4yg 2-7 ^的包引擎240以10ms時間間隔處理 網(wǎng)絡(luò)包,而在其它實施例中,以5ms時間間隔,并iL^進一步的實施例中,M^iJ 3、 2或lms時間間隔。高速層2-7集成包引擎240在操作期間可與加密引擎234、高速 緩存管理器B2、策略引擎236以及多協(xié)議壓縮引擎238對接、M或通信。同樣的, 響應(yīng)于包處理定時器242和/或包引擎240,可^/f亍加密引擎234、高速緩存管理器 232、策略引擎236以及多協(xié)i滅縮邏輯238的任一邏輯、功能或4剁乍。因此,在由 包處理定時器242提供時間間隔的粒度(例如少于或等于10ms的時間間隔), 可4W亍加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)iiUi縮邏輯238 的任一邏輯、功能或操作。例如,在一個實施例中,響應(yīng)于高iW 2-7 M包引擎 240和/或包處理定時器242,高速緩存管理器232可^frf壬一所高速緩存的對象的無 效。在另一個實施例中,高速緩存的對象的終止或無效時間被設(shè)定為與包處理定時器 242的時間間P鬲相同的斗立度鄉(xiāng)及,例如每10ms。
0061與內(nèi)核空間204形^于比,用戶空間202是操作系統(tǒng)的務(wù)賭區(qū)域或部分, 被用戶模式應(yīng)用或在用戶才莫式中以其它方i^行的禾l^所使用。用戶4莫式應(yīng)用不能直 接訪問內(nèi)核空間204并且為了訪問內(nèi)核服務(wù)而^il]服務(wù)調(diào)用。如圖2所示,設(shè)備200 的用戶空間202包括圖形用戶界面(GUI )210、命令行接口 (CLI )212、殼服務(wù)(shell service) 214、 it^監(jiān)控禾踏216以及守護(daemon)月良務(wù)218。 GUI 210和CLI 212 提^"-種方法,通過該方法系統(tǒng)管理員或其它用戶可與設(shè)備200的操作相互作用并控 制該設(shè)備200的操怍,例如通過設(shè)備200的操作系統(tǒng),并iUl者是用戶空間202或者 內(nèi)核空間204。 GUI 210可為^—類型和形式的圖形用戶界面,并且可通it^本、圖 形或由^HI型的程序或應(yīng)用的其它方式(例如瀏覽器)來呈現(xiàn)。CLI 212可為^—類型和形式的命令行或基于文本的接口,例如通過才斜乍系Mi^供的命令行。例如,CLI 212可包括殼(shell),該殼是使得用戶能夠與操作系統(tǒng)相互作用的工具。在一些 實施例中,可通過bash、 csh、 tcsh或者ksh類型的殼提供CLI 212。殼服務(wù)214包 4封呈序、服務(wù)、任務(wù)、進禾1^可4似亍指令以支持由用戶通過GUI 210和/或CLI 212 與"i殳備200或者才喿怍系統(tǒng)的交互。
0062^^Hjit監(jiān)控禾踏216來監(jiān)控、檢查、報告并確保網(wǎng)絡(luò)系鄉(xiāng)組常J被行 以^J ]戶iLit過網(wǎng)^4妄^R/斤請求的內(nèi)容。1ft^監(jiān)控程序216包括一個或多個禾誘、服 務(wù)、任務(wù)、進禾試可#^亍指令,為監(jiān)控設(shè)備200的^"-行為來提供邏輯、規(guī)則、功能 或操作。在一些實施例中,健康監(jiān)控程序216攔截并檢查通過設(shè)備200傳遞的任一網(wǎng) 絡(luò)業(yè)務(wù)。在其它實施例中,健康監(jiān)控程序216通過^"-合適的方法和/或機制與一個 或多個下述設(shè)備對接加密引擎234、高速緩存管理器232、策略引擎236、多協(xié)議 壓縮邏輯238、包引擎240、守護服務(wù)218以及殼服務(wù)214。同樣的,i^^監(jiān)4封踏 216可調(diào)用^~"應(yīng)用編程接口 (API)以確定設(shè)備200的任"卩分的狀態(tài)、情況或健 康。例如,#^監(jiān)控程序216可基于周期'l"生地查驗或發(fā)送狀態(tài)查詢以檢i^l序、進程、 月良務(wù)或任務(wù)是否彬敫活并當前jE^行。在另一個例子中,1ft^監(jiān)控程序216可檢 查由^""^呈序、進程、月l務(wù)或任務(wù)提供的任一狀態(tài)、4射吳或歷史日志以確定設(shè)備200 任"^卩分的^-"^f牛、情;XiUti吳。
0063守護服務(wù)218是連續(xù)的或在后臺中運行的程序,并M理由設(shè)備200 接收的周期性服務(wù)請求。在一些實施例中,守護服務(wù)向其它禾踏或進程轉(zhuǎn)發(fā)請求,例 如向合適的另一個守護服務(wù)218。如本領(lǐng)域技術(shù)人員所V/^口的,守護服務(wù)218可M 監(jiān)護的運行,以扭軒連續(xù)的或周期性的系統(tǒng)范圍功能,例如網(wǎng)絡(luò)控制,或者"^f刊— 期望的任務(wù)。在一些實施例中, 一個或多個守護服務(wù)218運行在用戶空間202中,而 在其它實施例中, 一個或多個守護服務(wù)218運行在內(nèi)核空間。
0064現(xiàn)在參見圖2B,描述了設(shè)備200的另一個實施例??偟膩韎兌,設(shè)備200 提供以下服務(wù)、功能或者操作的一個或者多個用于一個或者多個客戶端102和一個 或者多個服務(wù)器106之間的通信的SSLVPN連接280、轉(zhuǎn)換/負載平衡284、 ii^月良務(wù) 解析286、力口速288和應(yīng)用防火墻290。在一個實施例中,設(shè)備200包括由Florida, Ft. Lauderdale的Citrix Systems Inc.制造的任一網(wǎng)絡(luò)裝置,稱為CUrix NetScaler 裝置。月良務(wù)器106的^""個可以提^-"個或者多個網(wǎng)絡(luò)相關(guān)服務(wù)270a-270n (稱為服 務(wù)270 )。例如,月良務(wù)器106可以提供http服務(wù)270。設(shè)備200包括一個或者多個虛 擬服務(wù)器或者虛擬互聯(lián)網(wǎng)協(xié)議服務(wù)器,稱為vServer、 VIP服務(wù)器或者僅是VIP275a-275n (此處^#為vServer 275 )。 vServer275根才射殳備200的配置和才刺乍來接 收、^^或者以其它方式處JH:戶端102和服務(wù)器106之間的通信。
0065vServer 275可以包括軟件、硬件或者軟件和硬件的4—組合。vServer 275包括在設(shè)備200中的用戶模式202、內(nèi)核模式204或者其<—組合中運行的1^-~ 類型和形式的禾辨、服務(wù)、任務(wù)、進禾試者可沖W亍指令。vServer 275包括^fr^邏輯、 功能、失見則或者才喿怍,以扭軒此處所述技術(shù)的任一實施例,諸如SSLVPN280、轉(zhuǎn)換 /負載平衡284、 ii^服務(wù)解析286、加速288和應(yīng)用防火墻290。在一些實施例中, vServer 275建立到服務(wù)器106的服務(wù)270的連接。服務(wù)275可以包括能夠連接到設(shè) 備200、客戶端102或者vServer 275并與^it信的^-^呈序、應(yīng)用、進程、任務(wù)或 者可才;W亍指令集。例如,服務(wù)275可以包括web服務(wù)器、http服務(wù)器、ftp、電子郵 件或者數(shù)據(jù)庫服務(wù)器。在一些實施例中,服務(wù)270是守護進程或者網(wǎng)絡(luò)驅(qū)動器,用于 監(jiān)聽、接收和/或發(fā)送用于應(yīng)用的通信,諸如電子郵件、數(shù)據(jù)庫或者企業(yè)應(yīng)用。在一 些實施例中,服務(wù)270可以在特定的IP;4iit、或者IP地址和端口上通信。
0066在一些實施例中,vServer 275應(yīng)用策略引擎236的一個或者多個策略 到客戶端102和服務(wù)器106之間的網(wǎng)絡(luò)通信。在一個實施例中,該策略與vServer 275相關(guān)。在另一個實施例中,該策略基于用戶或者用戶組。在又一個實施例中,策 略為通用的并且應(yīng)用到一個或者多個vServer 275a-275n和通過設(shè)備100通信的任一
用戶或者用戶組。在一些實施例中,策略引擎的策5^有基于通信的^""內(nèi)容應(yīng)用該
策略的條件,通信的內(nèi)容諸如互聯(lián)網(wǎng)協(xié)說t也址、端口、協(xié)議類型、包中的首部或者域、 或者通信的上下文,諸如用戶、用戶組、vServer 275、傳輸層連接、和/或客戶端102 或者服務(wù)器106的標識或者屬性。
0067在其它實施例中,設(shè)備200和策略引擎236通信或者對接,以確定遠程 用戶或者遠禾1^戶端102訪問計算環(huán)境15、應(yīng)用、和/或來自服務(wù)器106的數(shù)據(jù)文件 的-^iiE^口/或授權(quán)。在另一個實施例中,設(shè)備200和策略引擎236通信或者對接,以 確定遠程用戶或者遠禾錄戶端102的驗i財口/或授一X^使得應(yīng)用傳送系統(tǒng)190傳送一 個或者多個計算環(huán)境15、應(yīng)用、和/或數(shù)據(jù)文件。在又一個實施例中,設(shè)備200基于 對遠程用戶或者遠禾1^戶端102的策略弓1擎236的驗i財口/或授;K^建立VPN或者SSL VPN連接。在一個實施例中,設(shè)備200基于策略引擎236的策略來控制網(wǎng)絡(luò)業(yè)務(wù)和通 信會話的流。例如,設(shè)備200可以基于策略引擎236來控制對計算環(huán)境15、應(yīng)用或 者數(shù)據(jù)文件的訪問。
0068在一些實施例中,vServer 275與客戶端102經(jīng)客戶端代理120建立傳輸層連接,諸如TCP或者UDP連接。在一個實施例中,vServer 275監(jiān)聽和接收來自 客戶端102的通信。在其它實施例中,vServer 275與客戶端服務(wù)器106建立傳輸層 連接,諸如TCP或者UDP連接。在一個實施例中,vServer 275建立到運行在服務(wù)器 106上的服務(wù)器270的互聯(lián)網(wǎng)協(xié)^i4iit和端口的傳輸層連接。在另一個實施例中, vServer 275將到客戶端102的第一傳輸層連接與到服務(wù)器106的第二傳輸層連接相 關(guān)聯(lián)。在一些實施例中,vServer 275建立到服務(wù)器106的傳輸層連接池并iU至由池 化的傳輸層連接多路^客戶端請求。
0069在一些實施例中,設(shè)備200提供客戶端102和服務(wù)器106之間的SSL VPN 連接280。例如,第一網(wǎng)絡(luò)104上的客戶端102請求建立到第二網(wǎng)絡(luò)104,上的服務(wù)器 106的連接。在一些實施例中,第二網(wǎng)絡(luò)104,是不能從第一網(wǎng)絡(luò)104路由的。在其它 實施例中,客戶端102位于公用網(wǎng)絡(luò)104上,并iU良務(wù)器106位于專用網(wǎng)絡(luò)104,上, 例如企業(yè)網(wǎng)。在一個實施例中,客戶端^J里120才誠第一網(wǎng)絡(luò)104上的客戶端102 的通信,加密該通信,并iU至第一傳輸層連接發(fā)送該通信到設(shè)備200。設(shè)備200將第 一網(wǎng)絡(luò)104上的第一傳輸層連接與到第二網(wǎng)絡(luò)104,上的服務(wù)器106的第二傳輸層連 接相關(guān)聯(lián)。設(shè)備200接收來自客戶端102的所攔截的通信,加密該通信,并且經(jīng)第二 傳輸層連接發(fā)送該通信到第二網(wǎng)絡(luò)104,上的月良務(wù)器106。第二傳輸層連接可以是^4匕 的傳輸層連接。同樣的,設(shè)備200提供用于兩個網(wǎng)絡(luò)104、 104,之間的客戶端102的 端到端^^專豸敘層連《1妻。
0070在一個實施例中,設(shè)備200寄載虛擬專用網(wǎng)絡(luò)104上的客戶端102的內(nèi) 部網(wǎng)內(nèi)部網(wǎng)協(xié)議或者intranetIP 282地址??蛻舳?02具有本地網(wǎng)絡(luò)識別符,諸如互 聯(lián)網(wǎng)協(xié)議(IP)地i財口/或第一網(wǎng)絡(luò)104上的主一;U稱。當經(jīng)設(shè)備200連接到第二網(wǎng) 絡(luò)104',對于第二網(wǎng)絡(luò)104,上的客戶端102,設(shè)備200建立、分配或者以其它方式提 供IntranetIP,其是網(wǎng)絡(luò)識別符,諸如IP地址和/或主機名稱。設(shè)備200在第二或者 專用網(wǎng)絡(luò)104,上監(jiān)聽和接收^^]客戶端建立的IntranetIP 282的指向客戶端102的任 一通信。在一個實施例中,設(shè)備200用作或者^4第二專用網(wǎng)絡(luò)104上的客戶端102。 例如,在另一個實施例中,vServer 275監(jiān)聽和響應(yīng)到客戶端102的IntranetIP 282 的通信。在一些實施例中,如果第二網(wǎng)絡(luò)104,上的計算裝置100發(fā)送請求,設(shè)備200 如同客戶端102 —樣來處理該^青求。例如,設(shè)備200可以響應(yīng)對客戶端IntranetIP 282 的查驗。在另一個實施例中,設(shè)備可以與第二網(wǎng)絡(luò)104,上請求與客戶端IntranetIP 282 的連接的計算裝置100建立連接,諸如TCP或者UDP連接。
0071在一些實施例中,設(shè)備200提供一個或者多個以下力口速技術(shù)288以#戶端102和服務(wù)器106之間通信l)壓縮;2 )解壓縮;3 )傳輸控制協(xié)議池;4)傳 輸控制協(xié)議多路復(fù)用;5)傳輸控制協(xié)議緩沖;和6)高速緩存。
0072在一個實施例中,設(shè)備200通過開啟與^"-服務(wù)器106的一個或者多個 傳輸層連接并且維持這些連接以允許由客戶端經(jīng)因特網(wǎng)的重復(fù)數(shù)據(jù)訪問,來為月良務(wù)器 106緩解由重復(fù)開啟和關(guān)閉到客戶端102的傳輸層連接所帶來的許多處理負載。該技 tt此處被稱為"連接餘"。
0073在一些實施例中,為了無縫拼接/A^戶端102經(jīng)〉'W匕的傳輸層連接到服 務(wù)器106的通信,設(shè)備200通#傳輸層協(xié)議級修改序列號和確認號來翻譯或多路復(fù) 用通信。這被稱為"連接多路復(fù)用"。在一些實施例中,不需要應(yīng)用層協(xié)議交互。例 如,在W占包(即,乂A^戶端102接收的包)的例子中,包的源網(wǎng)絡(luò);l^il:被改變到設(shè) 備200的輸出端口的地址,并且目的網(wǎng)絡(luò)地址被改變到指定的服務(wù)器的地址。在出站 包(即,AJI良務(wù)器106接收的包)的例子中,源網(wǎng)絡(luò):feiibyj良務(wù)器106的地ib故改變 為設(shè)備200的輸出端口的地址,并且目的地AU人設(shè)備200的地址被改變到請求客戶端 102的地址。包的序列號和確認號^^皮翻譯為到客戶端102的設(shè)備200的傳輸層連接 上的客戶端102所期待的序列號和確認。在一些實施例中,傳輸層協(xié)議的包校-3^4皮 重新計算以說明這些翻譯。
0074在另一個實施例中,設(shè)備200提供轉(zhuǎn)換或者負載平衡功能284用于客戶 端102和服務(wù)器106之間的通信。在一些實施例中,基于層4或者應(yīng)用層請求凄封居, 設(shè)備200分發(fā)業(yè)絲且將客戶端請求指向服務(wù)器106。在一個實施例中,盡管網(wǎng)絡(luò)層 或者網(wǎng)絡(luò)包的層2標識目的服務(wù)器106,但設(shè)備200確^J艮務(wù)器106來分發(fā)由應(yīng)用信 息和數(shù)據(jù)承載的作為傳輸層包的有效載荷的網(wǎng)絡(luò)包。在一個實施例中,設(shè)備200
的健康監(jiān)控程序216監(jiān)4創(chuàng)良務(wù)器的健康來確定分發(fā)客戶端請求用于哪個服務(wù)器106。 在一些實施例中,如果設(shè)備200探測到服務(wù)器106不可用或者具有超過預(yù)定閾值的負 載,設(shè)備200可以將客戶端請求指向或者分發(fā)到另一個服務(wù)器106。
0075在一些實施例中,設(shè)備200用作域名服務(wù)(DNS)解析器或者以其它方 式提供來自客戶端102的DNS請求的解析。在一些實施例中,設(shè)備攔截由客戶端102 發(fā)送的DNS請求。在一個實施例中,設(shè)備200以設(shè)備200所寄載的IP地扯或其IP 地址來響應(yīng)客戶端的DNS請求。在此實施例中,客戶端102發(fā)送用于iW的網(wǎng)絡(luò)通信 到設(shè)備200。在另一個實施例中,設(shè)備200以第二設(shè)備200,所寄載的IP地》止或其IP 地址來響應(yīng)客戶端的DNS請求。在一些實施例中,設(shè)備200使用由設(shè)備200確定的服 務(wù)器106的IP地址來響應(yīng)客戶端的DNS請求。0076在又一個實施例中,設(shè)備200提供用于客戶端102和服務(wù)器106之間通 信的應(yīng)用防火墻功能290。在一個實施例中,策略引擎236提供用于探測和阻斷非法 請求的規(guī)則。在一些實施例中,應(yīng)用防火墻2卯保護避免拒^^良務(wù)(DoS)攻擊。在 其它實施例中,設(shè)備檢查所攔截的請求的內(nèi)容,以識別和阻斷基于應(yīng)用的攻擊。在一 些實施例中,規(guī)則/策略引擎236包括一個或者多個應(yīng)用防火墻或者^^控制策略, 用于提^f呆護,避免不同類或者類型的基于web或者因特網(wǎng)攻擊,諸如以下一個或者 多個l)緩沖溢出,2 ) CGI-BIN #|史才彰從,3)表格/隱藏域才彰從,4 )強制瀏覽,5) cookie或者^i舌定位,6)中斷的訪問控制列表(ACL)或者弱的口令,7 )跨站腳本 (XSS), 8)命令注入,9)SQL注入,10) 4射^l蟲發(fā)敏感信息泄漏,ll)密碼學(xué)的不 ^f頓,12)服務(wù)器誤配置,13)后門^i周^Ci4項,14)web站點毀損,15)平臺 或者4刺乍系統(tǒng)攻擊,和16)零天攻擊。在實施例中,應(yīng)用防火墻290以檢查或者分 析用于以下一個或者多個的網(wǎng)絡(luò)通信的形式來提供HTML格式域保護1)返回所需 要的域,2 )不增加允許的域,3 )只讀和隱藏ii^y亍,4 )下拉列表和單選4斜Si或一 致,5)表域最大長度施行。在一些實施例中,應(yīng)用防火墻290確保沒有》務(wù)改cookie。 在其它實施例中,應(yīng)用防火墻290通過執(zhí)行合法URL來保護避免強迫瀏覽。
0077仍在又一些實施例中,應(yīng)用防火墻290保護包括在網(wǎng)絡(luò)通信中的任一機 密信息。應(yīng)用防火墻290可以根據(jù)引擎236的規(guī)則或者策略^^企查或者分析任一網(wǎng)絡(luò) 通信,以識別網(wǎng)絡(luò)包的^-"域中的任一機密信息。在一些實施例中,應(yīng)用防火墻290 識別網(wǎng)路通信中的信用卡號、口令、社會^號碼、名稱、患者號碼、接觸信息和年 齡的一個或者多個的出現(xiàn)。網(wǎng)絡(luò)通信的編石解p分可以包4鏈些出現(xiàn)或者機密信息?;?于這些出現(xiàn),在一個實施例中,應(yīng)用防火墻290可以采取作用于網(wǎng)絡(luò)通信上的策略, 諸如阻止發(fā)送網(wǎng)絡(luò)通信。在另一個實施例中,應(yīng)用防火墻290可以重寫、移動或者以 其它方式掩蔽該所識別出的出iM者機密信息。
C、客戶端4々里
0078J脈看圖3,描i^:戶端代理120的實施例??蛻舳?02包括客戶端代 理120,用于經(jīng)網(wǎng)絡(luò)104與設(shè)備200和/或服務(wù)器106來建立和交換通信。總的來說, 客戶端102在計算裝置100上操作,該計算裝置100擁有帶有內(nèi)核模式302以^J ]戶 模式303,以及帶有一個或多個層310a-310b的網(wǎng)絡(luò)i斜戔310的操作系統(tǒng)??蛻舳?02 可以已經(jīng)安裝和/或扭行一個或多個應(yīng)用。在一些實施例中, 一個或多個應(yīng)用可通過 網(wǎng)絡(luò)i斜戈310與網(wǎng)絡(luò)104通信。諸如web瀏覽器的應(yīng)用之一也可包括第-^踏322。例如,可在一些實施例中^^]第一禾1^ 322來安^/或^e客戶端^J里120,或其 中^"~^分??蛻舳舜?20包括沖^i幾制或者^誠器350,用于^^經(jīng)由網(wǎng)絡(luò)J械 310來自 一個或者多個應(yīng)用的網(wǎng)絡(luò)通信。
0079客戶端102的網(wǎng)絡(luò)堆棧310可包括4壬一類型和形式的4欠件、或硬件或其 組合,用于提供與網(wǎng)絡(luò)的連接和通信。在一個實施例中,網(wǎng)絡(luò)i斜戔310包括用于網(wǎng)絡(luò) 協(xié)i^且的軟件實現(xiàn)。網(wǎng)絡(luò)堆棧310可包括一個或多個網(wǎng)絡(luò)層,例如為本領(lǐng)域技術(shù)人員 所公iA^了解的開放式系統(tǒng)互聯(lián)(OSI)通信模型的任一網(wǎng)絡(luò)層。同樣的,網(wǎng)絡(luò)i斜戔 310可包4射P類型和形式的協(xié)議,這些協(xié)議用于OSI模型的任一以下層1)物理 彬各層,2)數(shù)才繊各層,3)網(wǎng)絡(luò)層,4)傳輸層,5)絲層,6)表示層,以及7) 應(yīng)用層。在一個實施例中,網(wǎng)絡(luò)舉戰(zhàn)310可包括在互聯(lián)網(wǎng)協(xié)議(IP)的網(wǎng)絡(luò)層協(xié)"RJi 的傳輸控制協(xié)議(TCP),通常稱為TCP/IP。在一些實施例中,可在Ethernet協(xié)i^Ji 承載TCP/IP協(xié)議,Ethernet協(xié)議可包括IEEE廣域網(wǎng)(WAN)或局域網(wǎng)(LAN)協(xié)il 的^"-族,例^4皮IEEE 802. 3覆蓋的那些協(xié)議。在一些實施例中,網(wǎng)絡(luò)堆棧310包 4封壬一類型和形式的無線i"辦議,例如IEEE 802. 11和/或移動互聯(lián)網(wǎng)協(xié)議。
0080考慮基于TCP/IP的網(wǎng)絡(luò),可^^Hi^基于TCP/IP的協(xié)議,包括消息應(yīng) 用編程接口 (MAPI)(電子郵件)、文件傳!針辦議(FTP)、超文本傳豐針辦議(HTTP)、 通用因特網(wǎng)文件系統(tǒng)(CIFS)協(xié)議(文件傳輸)、獨立計勒匡架(ICA)協(xié)議、遠程桌 面協(xié)議(RDP)、無線應(yīng)用協(xié)議(WAP)、移動IP協(xié)議,以及IP語音(VoIP)協(xié)議。在 另一個實施例中,網(wǎng)絡(luò)i斜戔310包括任一類型和形式的傳輸控制協(xié)議,諸如修 文的傳 輸控制協(xié)議,例如事務(wù)TCP (T/TCP),帶有選擇確認的TCP (TCP-SACK),帶有大窗口 的TCP (TCP-LW),擁塞預(yù)測協(xié)議,例如TCP-Vegas協(xié)議,以及TCP欺騙協(xié)議。在其 它實施例中,任一類型和形式的用戶數(shù)據(jù)報協(xié)議(UDP),例如IP上UDP,可被網(wǎng)絡(luò) ^4戔31(H^i,諸如用于語^it信或?qū)崟r數(shù)據(jù)通信。
0081另外,網(wǎng)絡(luò)i斜戔310可包括支持一個或多個層的一個或多個網(wǎng)絡(luò)驅(qū)動器, 例如TCP驅(qū)動器或網(wǎng)絡(luò)層驅(qū)動器。網(wǎng)絡(luò)驅(qū)動器可被包括作為計算裝置100的才喿怍系統(tǒng) 的一卩分或者作為計算裝置100的任一網(wǎng)絡(luò)接口卡或其它網(wǎng)絡(luò)訪問部件的一部分。在 一些實施例中,網(wǎng)絡(luò)i斜戔310的^"-網(wǎng)絡(luò)驅(qū)動器可^t制、修改或調(diào)整以提供網(wǎng)絡(luò)堆 棧310的定制或修改部分,用來支持此處描述的4—技術(shù)。在其它實施例中,設(shè)計并 構(gòu)建加速程序120以與網(wǎng)絡(luò)i斜戔310協(xié)同操作或工作,上述網(wǎng)絡(luò)i斜戔310由客戶端 102的^喿作系統(tǒng)安裝或以其它方式^是供。
0082網(wǎng)絡(luò)i斜戔310包括任一類型和形式的接口,用于接收、獲得、提供或以其它方式訪問涉^^戶端102的網(wǎng)絡(luò)通信的^"^f言息和數(shù)據(jù)。在一個實施例中,網(wǎng)絡(luò)
堆棧310的接口包括應(yīng)用編程接口 (API )。接口也可包括任一函數(shù)調(diào)用、鉤子或過濾 機制、事件或回調(diào)機制、或^^類型的接口技術(shù)。網(wǎng)絡(luò)i斜戔310通過接口可接)]線提 類型和形式的數(shù)據(jù)結(jié)構(gòu),例如對象,涉^J'j網(wǎng)絡(luò)i械310的功能f線才剁乍。例 如,數(shù)據(jù)結(jié)構(gòu)可包括涉及到網(wǎng)絡(luò)包或一個或多個網(wǎng)絡(luò)包的信息和數(shù)據(jù)。在一些實施例 中,數(shù)據(jù)結(jié)構(gòu)包括在網(wǎng)絡(luò)i斜戔310的協(xié)"R^處理的網(wǎng)絡(luò)包的-"^分,例如傳輸層的網(wǎng) 絡(luò)包。在一些實施例中,數(shù)據(jù)結(jié)構(gòu)325包括內(nèi)核I5J'J數(shù)據(jù)結(jié)構(gòu),而在其它實施例中, 數(shù)據(jù)結(jié)構(gòu)325包括用戶模式數(shù)據(jù)結(jié)構(gòu)。內(nèi)核飽'J數(shù)據(jù)結(jié)構(gòu)可包括在內(nèi)核模式302中操 作的網(wǎng)絡(luò)舉民310的部分獲得的或涉及的數(shù)據(jù)結(jié)構(gòu),或者運行在內(nèi)核模式302中的網(wǎng) 絡(luò)驅(qū)動器或其它軟件,或者通##^系統(tǒng)的內(nèi)核模式中運行或才剁乍的服務(wù)、進程、
任務(wù)、纟a試其它可^y亍指令獲得或接收的任一數(shù)據(jù)結(jié)構(gòu)。
0083jtb^卜,網(wǎng)絡(luò)i斜戔310的一些部分可在內(nèi)核才莫式302中4Mf或^f乍,例如, 數(shù)才射鈔各或網(wǎng)絡(luò)層,而其它部分在用戶模式303中扭軒或操怍,例如網(wǎng)絡(luò)i斜戔310 的應(yīng)用層。例如,網(wǎng)絡(luò)i斜戈的第一部分310a可為應(yīng)用提供對網(wǎng)絡(luò)i斜戔310的用戶模 式的訪問,而網(wǎng)紹J斜戔310的第二部分310b提供對網(wǎng)絡(luò)的訪問。在一些實施例中, 網(wǎng)絡(luò);t斜戔的第"p分31 Oa可包括網(wǎng)絡(luò)i斜戔310的一個或多個^Ji層,例如層5-7的 任意層。在其它實施例中,網(wǎng)絡(luò)i斜戔310的第二部分310b包括一個或多個較低的層, 例如層1-4的任意層。網(wǎng)絡(luò)i斜戔310第一部分310a和第二部分310b的每個可包括 網(wǎng)紹Jlia 310的任一部分,在任一一個或多個網(wǎng)絡(luò)層,在用戶模式303、內(nèi)核模式302, 或其組合,或在網(wǎng)絡(luò)層的任一部分或者指向網(wǎng)絡(luò)層的接口點,或指向用戶模式303 和內(nèi)核模式302的接口點或者其^~-#分。
0084攔截器350可以包括軟件、硬件、或者軟件和硬件的任一組合。在一個 實施例中,攔截器350在網(wǎng)絡(luò)i料戔310的任一點攔截網(wǎng)絡(luò)通信,并且重定向或者發(fā)送 網(wǎng)絡(luò)通信到攔截器350或者客戶端代理120期望的、管理的或者控制的目的地。例如, 4誠器350可以攔截第一網(wǎng)絡(luò)的網(wǎng)絡(luò)i斜戔310的網(wǎng)絡(luò)通信并JX送該網(wǎng)絡(luò)通信到設(shè)備 200,用于在第二網(wǎng)絡(luò)104,J^送。在一些實施例中,沖誠器350包括含有諸3—皮構(gòu) 建禾^i殳計來與網(wǎng)絡(luò)ili4戔310連接并一同工作的網(wǎng)絡(luò)驅(qū)動器的馬區(qū)動器的任一類型的攔 截器350。在一些實施例中,客戶端代理120和/或攔截器350操作在網(wǎng)絡(luò)堆棧310 的一個或者多個層,諸如在傳輸層。在一個實施例中,拉截器350包括濾波器驅(qū)動器、 鉤子機制、或者對接到網(wǎng)絡(luò)i斜戔的傳輸層的任一形式和類型的合適網(wǎng)絡(luò)驅(qū)動^t妄口 , 諸如通過傳輸驅(qū)動##口 (TDI)。在一些實施例中,沖誠器350對接到諸如傳輸層的第一協(xié)議層和諸如傳輸協(xié)議層之上的任一層的另一個協(xié)議層,例如,應(yīng)用協(xié)
議層。在一個實施例中,攔截器350可以包4M守網(wǎng)絡(luò)驅(qū)動器接口規(guī)范(NDIS)的驅(qū) 動器,或者NDIS驅(qū)動器。在另一個實施例中,拄截器350可以包括微型濾波器或者 迷你端口驅(qū)動器。在一個實施例中,^^器350或其部分在內(nèi)核模式302中4剁乍。在 另一個實施例中,4 器350或其部分在用戶才莫式303中##。在一些實施例中,攔 截器350的-"^分在內(nèi)核模式302中操作,而攔截器350的另-~^分在用戶模式303 中^f卡。在其它實施例中,客戶端^S 120在用戶模式203中才剁乍,^it過4^l器 350對接到內(nèi)核模式驅(qū)動器、進程、月良務(wù)、任務(wù)或者才剩乍系統(tǒng)的部分,諸如以獲取內(nèi) 核級數(shù)據(jù)結(jié)構(gòu)325。在其它實施例中,攔截器350為用戶模式應(yīng)用或者程序,諸如應(yīng) 用。
0085在一個實施例中,攔截器350才誠任意的傳輸層連接請求。在這些實施 例中,^^器350 ^^亍傳輸層應(yīng)用編程接口 (API)調(diào)用以設(shè)置目的信息,諸如到期 望位置的目的IP地扯和/或端口用于定位。在此方式中,攔截器350 4誠并且重定向 傳輸層連接到由攔截器350或者客戶端代理120控制或者管理的IP地址和端口 。在 一個實施例中,4誠器350設(shè)置目的信息,用于到客戶端^J里120正監(jiān)聽的客戶端 102的本地IP地扯和端口的連接。例如,客戶端代理120可以包括為重定向的傳輸 層通信監(jiān)聽本地IP地址和端口的代J劃l務(wù)。在一些實施例中,客戶端^J里120Pil^ 將重定向的傳輸層通信傳輸?shù)皆O(shè)備200。
0086在一些實施例中,^誠器35(U誠^^服務(wù)(DNS)請求。在一個實施 例中,客戶端代理120和/或4誠器350解析DNS請求。在另一個實施例中,4誠器 發(fā)i^射誠的DNS請求到設(shè)備200用于DNS解析。在一個實施例中,設(shè)備200解析 DNS請求并且將DNS響應(yīng)通信到客戶端^J里120。在一些實施例中,設(shè)備200經(jīng)另一 ^H殳備2QQ,或者DNS服務(wù)器106來解析DNS請求。
0087在又一個實施例中,客戶端代理可以包括兩個代理UO和l20,。 在一個實施例中,第一代理120可以包括在網(wǎng)絡(luò)舉民310的網(wǎng)絡(luò)層操作的攔截器350。 在一些實施例中,第一代理120 4誠諸如因特網(wǎng)控制消息協(xié)議(ICMP)請求(例如, 查馬封口3M宗路由)的網(wǎng)絡(luò)層請求。在其它實施例中,第二代理120,可以在傳輸層操 作并iU誠傳輸層通信。在一些實施例中,第一代理120在網(wǎng)絡(luò)i斜戔310的一層41^ 通信并且與第二^J里120,對接或者將所^^的通信傳輸?shù)降诙?20,。
議層透明的方式在一協(xié)^^操作或與b于接。例如,在一個實施例中,攔截器350可以以對諸如網(wǎng)絡(luò)層的傳輸層之下的^-"協(xié)i^^i者如^i舌、表示和應(yīng)用層協(xié)議的傳
輸層之上的^^協(xié)議層透明的方式在網(wǎng)絡(luò)i斜戔310的傳輸層操怍或與之對接。這允許 網(wǎng)絡(luò)舉戌310的其它協(xié)議層如所期望的揭作并無需修改以用于攔截器350。同樣的, 客戶端^J里120和/或^^器350可以與傳輸層對接以^、優(yōu)化、力口速、路由或者 負載平衡經(jīng)由傳輸層承載的^"-協(xié)議提供的^-"通信,諸如TCP/IP上的fr-"應(yīng)用層 協(xié)議。
0089此外,客戶端代理120和/或攔截器可以以對^"-應(yīng)用、客戶端102的 用戶和與客戶端102通信的諸如服務(wù)器的任一其它計算裝置透明的方式在網(wǎng)絡(luò)i斜戔 310上4^f乍或與^^N妄??蛻舳舜鷳?yīng)120和/或攔截器350可以以無需修7丈應(yīng)用的方 式被安裝和/iU^f亍^^戶端102上。在一些實施例中,客戶端102的用戶或者與客 戶端102通信的計算裝置未意識到客戶端代理120和/或擔堿器350的存在、扭行或 者操作。同樣的,在一些實施例中,客戶端代理120和/或攔截器350以對應(yīng)用、客 戶端102的用戶、諸如服務(wù)器的另一個計算裝置、或者由攔截器350對接到的協(xié)i^ 之上和/或之下的任一協(xié)i^透明的方式被安裝、執(zhí)行、和/或操作。
0090客戶端代理120包括加速程序302、流客戶端306和/或收集代理304。 在一個實施例中,客戶端代理120包括由Florida,Fort Lauderdale的Citrix Systems Inc.開發(fā)的獨立計算架構(gòu)(ICA)客戶端或其部分,并且也指ICA客戶端。在 一些實施例中,客戶端代理120包括應(yīng)用流客戶端306,用于從服務(wù)器106流 式傳輸應(yīng)用到客戶端102。在一些實施例中,客戶端代理120包括加速程序 302,用于加速客戶端102和服務(wù)器106之間的通信。在另一個實施例中,客 戶端代理120包括收集代理304,用于執(zhí)行端點檢測/掃描并且收集用于設(shè)備 200和/或服務(wù)器106的端點信息。
0091在一些實施例中,力口速禾踏302包括客戶端側(cè)加速詳辨,用于^l^亍一 個或多個加速技術(shù)以力口速、增強或以其它方法改i^戶端與服務(wù)器106的通信和/或 對服務(wù)器106的訪問,例^i方問月良務(wù)器106提供的應(yīng)用。加速禾誘302的可^(^亍指令 的邏輯、功能和/或操作可以才;M亍一個或多個以下的加速技術(shù)l)多協(xié)議壓縮,2) 傳輸控制協(xié)議^4匕,3)傳輸控制協(xié)議多路復(fù)用,4)傳輸控制協(xié)議緩沖,以及5)通 過高速緩存管理器的高速緩沖。另夕卜,力口速禾踏302可4Mf由客戶端102接收和/或 發(fā)送的^-~通信的加密和/或解密。在一些實施例中,加速程字302以^的方式或 者格式^f亍一個或者多個加速技術(shù)。另夕卜,加速禾辨302可以在傳輸層協(xié)議的網(wǎng)路包 的有效載荷承載的^""協(xié)議或者多協(xié)iiCU;^亍壓縮。流客戶端306包括用于接收和執(zhí)行從服務(wù)器106所流式傳輸?shù)膽?yīng)用的應(yīng)用、程序、進程、服務(wù)、任務(wù)或
者可執(zhí)行指令。服務(wù)器106可以流式傳輸一個或者多個應(yīng)用數(shù)據(jù)文件到流客 戶端306,用于播;故、執(zhí)行或者以其它方式引起客戶端102上的應(yīng)用被#1行。 在一些實施例中,服務(wù)器106發(fā)送一組壓縮或者打包的應(yīng)用數(shù)據(jù)文件到流客 戶端306。在一些實施例中,多個應(yīng)用文件被壓縮并存儲在文件服務(wù)器上檔案 文件中,例如CAB、 ZIP、 SIT、 TAR、 JAR或其它檔案文件。在一個實施例中, 服務(wù)器106解壓縮、解包或者解檔應(yīng)用文件并且將該文件發(fā)送到客戶端102。 在另一個實施例中,客戶端102解壓縮、解包或者解檔應(yīng)用文件。流客戶端 306動態(tài)安裝應(yīng)用或其部分,并且執(zhí)行該應(yīng)用。在一個實施例中,流客戶端 306可以為可執(zhí)行程序。在一些實施例中,流客戶端306可以能夠啟動另一個 可執(zhí)4于程序。
0092收集代理304包括應(yīng)用、程序、進程、服務(wù)、任務(wù)或者可執(zhí)行 指令,用于識別、獲取和/或收集關(guān)于客戶端102的信息。在一些實施例中, 設(shè)備200發(fā)送收集代理304到客戶端102或者客戶端代理120。收集代理304 可以根據(jù)設(shè)備的策略引擎236的一個或者多個策略被配置。在其它實施例中, 收集代理304發(fā)送在客戶端102上所收集的信息到設(shè)備200。在一個實施例中, 設(shè)備20Q的策略引擎236使用所收集的信息來確定和提供客戶端到網(wǎng)絡(luò)104 的連接的訪問、驗證和授權(quán)控制。
0093在一個實施例中,收集代理304包括端點檢測和掃描機制,其 識別并且確定客戶端的一個或者多個屬性或者特征。例如,收集代理304可 以識別和確定以下任意一個或者多個客戶端側(cè)屬性1)操作系統(tǒng)和/或操作 系統(tǒng)的版本,2)操作系統(tǒng)的服務(wù)包,3)運行的服務(wù),4)運行的進程,和5) 文件。收集代理304也可以識別和確定客戶端上以下任意一個或者多個的存 在或者版本1)防病毒軟件,2)個人防火墻軟件,3)防蠕蟲軟件,和4) 互聯(lián)網(wǎng)安全軟件。策略引擎236可以具有基于客戶端或者客戶端側(cè)屬性的任 意一個或者多個屬性或者特征的一個或者多個策略。
0094在一些實施例中,仍舊參見圖3,第一程序3"可以被用于自動 地、靜默地、透明地或者以其它方式安裝和/或執(zhí)行客戶端代理120或其部分, 諸如攔截器350。在一個實施例中,第一程序322包括插件,例如ActiveX控件或 Java控件或腳本,其加載到應(yīng)用并由應(yīng)用執(zhí)行。例如,第一禾聘包4封皮web瀏覽器 應(yīng)用裁^^和運行的ActiveX控件,例如在務(wù)賭器空間或應(yīng)用的上下文中。在另一個實施例中,第一程序322包括可l^f亍指令組,該可#^亍指4^且被例如瀏覽器的應(yīng)用^ 并#似亍。在一個實施例中,第"-#踏322包4封皮設(shè)計和構(gòu)造的程序以安絲戶端^J里 120。在一些實施例中,第-^辨322通過網(wǎng)絡(luò)從另一個計算裝置獲得、下載、或接 |1^戶端代理120。在另一個實施例中,第-^踏322 ^于#戶端102的才刻乍系 統(tǒng)上安裝例如網(wǎng)絡(luò)驅(qū)動器的程序的安裝程序或即插即用管理器。
0095SL^參見圖4,示出用于^j ]在虛擬專用網(wǎng)絡(luò)環(huán)境中^f乍的客戶端代理 120來攔截HTTP通信的方法的實施例。總的來i兌,該方法包括在網(wǎng)絡(luò)層由^1戶端
修改該HTTP請求(步驟403 );并且經(jīng)由傳輸層連接發(fā)i^斤修 文的HTTP請求到網(wǎng)絡(luò) 設(shè)備200 (步驟405 )。
0096仍舊參見圖4,更詳細地,由#戶端上#^亍的客戶端代理120在 網(wǎng)絡(luò)層^^來自^戶端上IW亍的應(yīng)用的HTTP請求(步驟401 )。該4誠可以由^-" 裝置#^亍,包括但不限于此處討論的TDI驅(qū)動器的使用。盡管所示實施例中攔41^ 在網(wǎng)絡(luò)層,但是在^^也實施例中,4議可以發(fā)生在^i舌層或者傳輸層。應(yīng)用可以包括 使用HTTP協(xié)議的^—應(yīng)用,包括但不限于web瀏覽器和web應(yīng)用。
0097在一些實施例中,可以對于用戶、應(yīng)用或者二者透明執(zhí)行攔截。 在一些實施例中,可以對于發(fā)生攔截的層的之上或者之下的網(wǎng)絡(luò)堆棧的一個 或者多個層透明地執(zhí)行該攔截。
0098客戶端代理在網(wǎng)絡(luò)層攔截來自扭行^:戶端上的應(yīng)用的HTTP請求(步 驟401)之后,客戶端代理可以修改HTTP請求(步驟403 )。
0099在一些實施例中,客戶端^Jlit過增加、移除、或者修改包括在HTTP 請求中的cookie來修改HTTP請求??蛻舳舜砜梢栽黾?、移除或者修改cookie以 ^(/f沐此處討論的客戶端代J對目關(guān)聯(lián)的任一功能。
0100在一個實施例中,如此處所述,客戶端代理可以增加包括將被 發(fā)送到VPNi殳備200的'驗i正i正書的HTTP cookie。
0101在另一個實施例中,客戶端代理可以增加包括高速緩存信息的HTTP cookie。例如,客戶端代理可以增加包括客戶端代理已經(jīng)存儲的所請求資源的之前版 本的信息的HTTP cookie。由于具有之前^[諸的版本,接4t;斤插入的cookie的網(wǎng)絡(luò) 設(shè)備可以隨后<嫂送發(fā)生改變的所請求資源的那部分。在圖7開始討論可以利用該技 術(shù)的高速緩存的一個M方法。
0102在一些實施例中,客戶端代理120可以通過增加、移除或者修改包括在HTTP請求中的名稱-值對來修改HTTP請求。這些名稱-值對可以結(jié) 合客戶端代理執(zhí)行的任一功能來被修改,包括加速、池、高速緩存和安全性。 在一個實施例中,客戶端代理可以(修改)HTTP首部中的名稱-值對。
0103例如,客戶端代理可以修改、增加或者移除跟隨"連接"HTTP 消息首部的值,以指示客戶端代理希望保持HTTP連接打開而不是關(guān)閉。這可 以通過插入"保持-活動,,值、或者移除"關(guān)閉"值來實現(xiàn)。
0104或者例如,客戶端代理可以修改、增加或者移除跟隨"來源頁 面"(referrer) HTTP消息首部的值用于安全目的。通過移除"來源頁面"變 量可以將操作者能夠獲取的關(guān)于客戶端瀏覽歷史的站點信息最小化。
0105或者例如,客戶端代理可以》務(wù)改、增加或者移除跟隨"授權(quán)"HTTP 消息首部的值??蛻舳舜砜梢源砜蛻舳瞬迦牖蛘咭瞥踩C書以提供對 資源的安全訪問。
0106或者例如,客戶端代理可以修改、增加或者移除跟隨"高速緩存 -控制"的值。這可以被用來支持或者增強此處所述的任一高速緩存特征。
0107在一些實施例中,根據(jù)此處所述的任一功能,客戶端代理可以增加、 移除或者修改HTTP請求指定的URL中的名稱-值對。仍在其它實施例中,客戶 端代理可以重寫所請求的URL自身。
0108在一些實施例中,客戶端代理可以基于HTTP首部指定的URL來進一步 確定路由決策。例如,如^戶端正請》力寸應(yīng)于和給定應(yīng)用服務(wù)器相關(guān)聯(lián)的文件的 URL,客戶端代理可以直接路由客戶端請求到應(yīng)用月良務(wù)器。
0109修改HTTP請求(步驟403 )之后,客戶端代理可以經(jīng)由傳輸層 連接發(fā)送所修改的HTTP請求到網(wǎng)絡(luò)設(shè)備200 (步驟405 )。該發(fā)送可以經(jīng)由任 一傳輸層協(xié)議發(fā)生。在一個實施例中,可以經(jīng)由SSL連接發(fā)送HTTP請求到網(wǎng) 絡(luò)設(shè)備200??蛻舳舜砜梢栽趥鬏擧TTP請求時執(zhí)行此處所述的任一功能, 包括加速和壓縮。
0110客戶端代理也可以使用包括在所攔截的包中的HTTP信息來提供 或者增強此處所述的任一客戶端代理功能。
0111例如,客戶端代理可以使用HTTP信息M效路由客戶端請求??蛻舳?代理可以建立到提供高速緩存功能的多^S殳備200的連接??蛻舳舜鞵話可以^^ 包括對于給定UR1的請求的包,并且確定該URL已經(jīng)經(jīng)由給定設(shè)備由客戶端之前請求 過??蛻舳舜砜梢訤te發(fā)送包括HTTP請求的包到給定設(shè)備,使得設(shè)備高速緩存的^-對象可以被利用在響應(yīng)中。
0112或者例如,客戶端代理可以使用HTTP信息來確定請求是否應(yīng)該 在所建立的SSL/VPN隧道上發(fā)送。在一個實施例中,客戶端代理可以攔截包 括HTTP請求的一個或者多個包,并且檢查包括在請求中的URL??蛻舳舜?可以隨后基于URL中指定的域名來確定是否經(jīng)由所建立的SSL/VPN隧道發(fā)送 包或者經(jīng)由其它連接發(fā)送包。例如,公司可以配置客戶端代理策略以使在職 員計算機上執(zhí)行的客戶端代理經(jīng)由與公司操作的設(shè)備所建立的SSL/VPN連接 發(fā)送對于指定公司域名的URL的任一請求。
0113現(xiàn)在參見圖5,示出使用客戶端代理來啟用來自客戶端的非HTTP 通信中的HTTP cookie驗證的方法的實施例??偟膩碚f,該方法包括由客 戶端上執(zhí)行的客戶端代理攔截來自客戶端的連接請求(步驟501);由客戶端 代理建立與網(wǎng)絡(luò)設(shè)備的傳輸層虛擬專用網(wǎng)絡(luò)連接(步驟503 );由客戶端代理 經(jīng)由所建立的連接發(fā)送包括驗證cookie的HTTP請求(步驟505 );由客戶端 代理接收HTTP響應(yīng),該HTTP響應(yīng)包括驗證cookie的接受(步驟507 );并且 由客戶端代理經(jīng)由該連接發(fā)送連接請求(步驟509 )。
0114仍舊參見圖5,現(xiàn)在更詳細地,在客戶端102上執(zhí)行的客戶端代 理120攔截來自客戶端的連接請求(步驟501 )。該攔截可以經(jīng)由任一此處討 論的方法發(fā)生,包括經(jīng)由TDI驅(qū)動器。該連接請求可以包括來自客戶端的請 求以打開任一類型的網(wǎng)絡(luò)連接,包括非HTTP連接。在一個實施例中,連接請 求可以包括TCP SYN包。
0115乂All戶端4M連4妻^青求(步驟501)之后,^:戶端^C理可以與網(wǎng)紹4殳備 建立傳輸層虛擬專用網(wǎng)絡(luò)連接(步驟503 )。該連接可以包括此處所描述的任一傳輸 層協(xié)議。在一個實施例中,傳輸層VPN連接可以包括SSL連接。在一些實施例中,客 戶端代理可以利用之前存在的SSLVPN連接。仍在其他實施例中,客戶端代理可以在 之前存在的VPN連接中建立新的連接。在這些實施例中,這些連接可以被^U匕或者與 iEM VPN連接中的^fei^接多路^ 。
0116建立傳輸層VPN連接(步驟503 )之后,客戶端代^里可以經(jīng)由所建立的 連接發(fā)送包括-險i正cookie的HTTP請求(步驟505 )。在一些實施例中,HTTP請求可 以包括由網(wǎng)絡(luò)設(shè)備之前發(fā)送到客戶端的驗證cookie。例如,客戶端代逸可以與網(wǎng)絡(luò) 設(shè)備200建立SSL VPN連接,并且可以從網(wǎng)絡(luò)設(shè)備接收^i正cookie。如^戶端代 理期望打開與網(wǎng)絡(luò)設(shè)備的第二連接,客戶端代理可以隨后重新發(fā)i^斤接收的cookie,提供-3M正而不需要請求第二次登錄過程。
0U7驗證cookie可以包括經(jīng)由HTTP請求發(fā)送的^^ai正信息。在一個實施 例中,驗證cookie可以包括馬^正字符串,其允許網(wǎng)絡(luò)設(shè)^^來^ii^戶端的用戶的身 份。在另一個實施例,馬^i正cookie可以包括馬M正字符串,其允許網(wǎng)絡(luò)設(shè)備來^i正對 應(yīng)于特定用戶會話的請求。仍然在另一個實施例中,驗證cookie可以包括馬&正字符 串,其允許網(wǎng)絡(luò)設(shè)^ii^j"應(yīng)于特^用^S舌的請求。
0118在一個實施例中,客戶端代理可以確保包括驗證cookie的HTTP請求為 經(jīng)由新連接發(fā)送的第一數(shù)據(jù)。例如,建立連接之后,客戶端代理可以發(fā)送HTTP請求 "GETURLHTTP/l.lVAn…",^是馬&正cookie。在一個實施例中,客戶端代理可 以對客戶端試圖跟隨連接請求發(fā)送的任一數(shù)據(jù)進行排隊,直到HTTP請求^嫂送。在 另 一個實施例中,客戶端代理可以對客戶端試圖跟隨連接請求發(fā)送的^-數(shù)據(jù)進行排 隊直到從網(wǎng)絡(luò)設(shè)備接^JJ HTTP響應(yīng)。
0119經(jīng)由所建立的連接發(fā)送包括驗證cookie的HTTP請求(步驟505 ) 之后,客戶端代理可以接收HTTP響應(yīng),HTTP響應(yīng)包括接受驗證cookie (步 驟507 )。
0120接收包括接受驗證cookie的HTTP響應(yīng)(步驟507 )之后,客戶 端代理可以經(jīng)由所建立的連接發(fā)送連接請求(步驟509 )??蛻舳舜砜梢噪S 后執(zhí)行任一附加步驟以服務(wù)連接請求并且建立所請求的連接??蛻舳舜砜?以隨后發(fā)送已經(jīng)排隊用于所請求連接的任一數(shù)據(jù)。
0121JJ^參見圖6,示出^^客戶端^J里^^虛擬專用網(wǎng)絡(luò)環(huán)嫂中^^ HTTP cookie啟用^4^ti正的方法??偟膩韎兌,該方法包4舌由扭^亍^^戶端上的的客戶 端代理^#/人虛擬專用網(wǎng)絡(luò)上的設(shè)備到客戶端的包括cookie的HTTP通信(步驟 601);由客戶端代理從HTTP通信中移除cookie (步驟603 );由客戶端^5里^#所接 收的cookie (步驟605 );由客戶端代S^送修改的HTTP通信到扭軒^1戶端上的應(yīng) 用(步驟607 );由客戶端代理攔截來自客戶端的HTTP請求(步驟609 );由客戶端代 理在HTTP請求中插7v^斤接收的cookie (步驟611);并魏送修改的HTTP請求到i殳 備(步驟613)。
0122仍舊參見圖6,更詳細地,#^亍^1戶端102上的的客戶端代理120 4^/人虛擬專用網(wǎng)絡(luò)上的設(shè)備到客戶端的包括cookie的HTTP通信(步驟601 )。該 cookie可以包括^-~—^i正證書,包括但不限于用戶特定的、會4舌特定的、和應(yīng)用特 定的騶3正證書。在一些實施例中,cookie可以被從設(shè)備發(fā)i^J)j客戶端以響應(yīng)登錄請求和來自客戶端的相關(guān)信息。客戶端代理可以4M此處所描述的任一裝置來攔截通 信,包括TDI驅(qū)動器。
0123在^^/人虛擬專用網(wǎng)絡(luò)上的設(shè)備到客戶端的包括cookie的HTTP通信 (步驟601)之后,由客戶端^J^人HTTP通信中移除cookie (步驟603 )??蛻舳舜?理可以通過移除包括cookie的HTTP首部中的名稱-值對^A人HTTP響應(yīng)中刪除 cookie。
0124在一些實施例中,根據(jù)此處討論的任一實施例,客戶端代理也 可以增加、移除或者修改所接收的HTTP首部中的其它名稱-值對。在一個實 施例中,客戶端代理可以增加、移除或者修改HTTP首部,使得在接收到的HTTP 首部中由先前客戶端代理對HTTP請求的改變所產(chǎn)生的任一信息被從客戶端遮 掩。例如,客戶端可以在識別多個版本的所請求資源的HTTP請求中插入名稱 -值對,該資源當前高速緩存在客戶端上??蛻舳舜黼S后可以接收包括一個 文件的HTTP響應(yīng),該文件由一個所識別版本的改變以及識別哪個版本作為基 礎(chǔ)使用的HTTP首部中的名稱-值對所組成??蛻舳舜沓私M合所更新的版 本外,可以移除此名稱-值對,使得高速緩存技術(shù)對于客戶端應(yīng)用透明。
0125由客戶端^J里從HTTP通信中移除cookie (步驟603 )之后,客戶端代 理可以存儲所接收的cookie (步驟605 )。客戶端代理可以^^H壬一^H諸方法或者裝 置來4^諸所接收的cookie。在一個實施例中,客戶端代理可以存儲cookie作為磁盤 上的文件。在另一個實施例中,客戶端代渡可以務(wù)賭cookie到RAM中。客戶端^J里 可以<^]分類或者索引所#^渚的cookie的任一方法,包括但不限于按用戶、會話、 應(yīng)用、設(shè)備、連接或者VPN索引。
0126存4諸所4妻收的cookie (步驟605 )之后,客戶端代理可以發(fā)送修改的 HTTP通信到扭J亍^:戶端上的應(yīng)用(步驟607 )。所修改的HTTP通4tT以佳Jf]此處所 描述的任一方式^^i^Jij客戶端,包括TDI驅(qū)動器。
0127發(fā)送^^改的HTTP通信到扭^亍^1戶端上的應(yīng)用之后,客戶端^J里可以 攔截來自客戶端的HTTP請求(步驟609 )。該攔截可以經(jīng)由此處討論的任一方iC^生, 包括TDI驅(qū)動器。HTTP請求可以來自HTTP響應(yīng)^^i^'J的應(yīng)用,或者HTTP請求可 以來自第二應(yīng)用。在一些實施例中,客戶端代理可以攔截來自多個應(yīng)用的HTTP請求。
0128拉截來自客戶端的HTTP請求(步驟609 )之后,客戶端代理可以在HTTP 請求中插A^斤接收的cookie (步驟611 )??蛻舳薧J里通過搜索所接收的cookie的文 件、目絲者數(shù)據(jù)庫來插入HTTP cookie,并且隨后將cookie插入到請求中。在一些實施例中,客戶端代理可以包括HTTP解析器,使得客戶端代-里可以識別HTTP請求 的有效載荷邊界。
0129在HTTP請求中插A^斤接收的cookie (步驟611) ^,客戶端^J里 可以發(fā)送<奮改的HTTP請求到設(shè)備(步驟613 )。該傳輸可以經(jīng)由此處所述的任一方法。 在一些實施例中,客戶端^J里隨后可以從指示cookie被接受的設(shè)備接收HTTP響應(yīng)。0130在一些實施例中,客戶端代理可以提供其他的cookie管理功能。 例如,,客戶端代理可以探測何時VPN會話已經(jīng)結(jié)束,并刪除對應(yīng)于該VPN會 話的任一存儲的cookie。
0131現(xiàn)在參見圖7到圖11,示出高速J爰存和更新方法的詳細示例,該方法 可以利用之前討論的任一客戶端cookie管理和HTTP察覺功能。
0132現(xiàn)在參見圖7,示出用于建立對之前存儲的文件有效更新的方法 的一個實施例。盡管圖7描述的方法是在由網(wǎng)絡(luò)設(shè)備200和客戶端102來執(zhí) 行的上下文中,但是該方法可以由此處討論的任一計算設(shè)備自身或者以其任 一組合來執(zhí)行??偟膩碚f,該方法包括接收包括第一多個數(shù)據(jù)序列的第一 文件(步驟701);發(fā)送該第一文件到客戶端或者客戶端代理(步驟703 );接 收包括第二多個邀:據(jù)序列的第二文件(步驟709 );建立具有多個項目的哈希 表,多個項目的每一個對應(yīng)于第一多個序列的相應(yīng)一個,并且其中所述項目 的至少兩個對應(yīng)于交迭的數(shù)據(jù)序列(步驟711);對于所述第二多個數(shù)據(jù)序列 計算哈希值(步驟713 );比較第二多個數(shù)據(jù)序列的每一個和具有同樣哈希值 的第一多個序列的序列,以確定在兩個文件都存在的數(shù)據(jù)序列(步驟715); 存儲在第一和第二文件中都存在的數(shù)據(jù)序列的長度和位置的表示(步驟717 ); 建立包括來自第二文件的數(shù)據(jù)序列以及在第 一和第二文件二者中都出現(xiàn)的所 述數(shù)據(jù)序列的長度和位置的表示的第三文件(步驟719);并且發(fā)送第三文件 到客戶端或客戶端代理(步驟721 )。
0133依舊參見圖7并且現(xiàn)在更詳細地,網(wǎng)絡(luò)設(shè)備200接收包括第一多 個數(shù)據(jù)序列的第一文件(步驟701)。在一些實施例中,可以從網(wǎng)絡(luò)211,、月良 務(wù)器205、數(shù)據(jù)庫或者其中任一組合來接收第一文件。在一些實施例中,第一 文件可以從磁盤或者其他存儲介質(zhì)讀取,從高速緩存獲取,或者從RAM存取。 在其他實施例中,第一文件可以從網(wǎng)絡(luò)設(shè)備200上執(zhí)行的應(yīng)用或者進程接收。 在一些實施例中,第一文件可以包括客戶端或者客戶端代理請求的文件。
0134第一文件可以包括對應(yīng)于包含該文件的位或者字節(jié)序列的數(shù)據(jù)序列。第一文件可以包括任一文件協(xié)議,包括但不限于,HTML、 XML、 WML、 SVG、其它文檔協(xié)議、圖像文件協(xié)議、聲音文件協(xié)議、視頻文件協(xié)議和二進 制文件協(xié)議。在一些實施例中,該文件包括web頁面或者web頁面的部分。 在一些實施例中,文件包括以某頻率更新的任一 web頁面,包括但不限于新 聞頁面、web應(yīng)用頁面、聊天室、公告板、體育頁面、電子郵件頁面、目錄 列表、跟蹤頁面和web攝像(webcam )頁面。接收第 一文件之后,網(wǎng)絡(luò)設(shè)備 200可以存儲或者高速緩存第一文件以準許之后的獲取。在一些實施例中,網(wǎng) 絡(luò)設(shè)備200可以根據(jù)此處所述的任一網(wǎng)絡(luò)設(shè)備功能來修改所述第一文件。
0135在一些實施例中,接收第一文件(步驟701)之后,網(wǎng)絡(luò)設(shè)備200 傳輸?shù)谝晃募娇蛻舳?步驟703 )。網(wǎng)絡(luò)設(shè)備200可以經(jīng)此處所述的任一網(wǎng) 絡(luò)或者協(xié)議傳輸?shù)谝晃募酱颂幩龅娜我豢蛻舳嘶蛘呖蛻舳舜?。網(wǎng)絡(luò)設(shè) 備200可以根據(jù)網(wǎng)絡(luò)設(shè)備執(zhí)行的任一功能來修改第一文件,包括壓縮、加速 和加密。盡管圖7描述的網(wǎng)絡(luò)設(shè)備200在步驟701之后立即傳輸?shù)谝晃募?在其他實施例中,所述傳輸可以在網(wǎng)絡(luò)設(shè)備200接收第一文件(步驟701 )之 后發(fā)生的任一步驟(步驟705-721 )之后發(fā)生。
0136在一些實施例中,網(wǎng)絡(luò)設(shè)備200可以存儲所述傳輸?shù)挠涗?。所?記錄可以存儲在任一存儲元件中,包括數(shù)據(jù)庫或者高速緩存。在一個實施例 中,網(wǎng)絡(luò)設(shè)備200可以存取所述高速緩存來確定給定文件是否先前已經(jīng)傳輸 到客戶端。在一個實施例中,可以設(shè)置所述記錄以在設(shè)定時間之后無效。例 如,如果網(wǎng)絡(luò)設(shè)備200具有指示在每一天結(jié)束時給定客戶端102刪除來自其 高速緩存的所有文件的信息,則網(wǎng)絡(luò)設(shè)備可以設(shè)置傳輸?shù)娇蛻舳?02的文件 的所有記錄在每一天結(jié)束時無效。
0137在所示實施例中,網(wǎng)絡(luò)設(shè)備200傳輸?shù)谝晃募娇蛻舳?02 (步 驟703 )之后,客戶端可以隨后接收第一文件(步驟705 ),顯示第一文件(步 驟707),并且存儲第一文件(步驟708)。客戶端可以根據(jù)此處所述任一實施 例來執(zhí)行這些步驟。
0138在所示實施例中,網(wǎng)絡(luò)設(shè)備200傳輸?shù)谝晃募娇蛻舳?02或者 客戶端代理120 (步驟703 )之后,網(wǎng)絡(luò)設(shè)備接收包括第二多個數(shù)據(jù)序列的第 二文件(步驟709 )。在其他實施例中,網(wǎng)絡(luò)設(shè)備200可以在傳輸?shù)谝晃募?客戶端(步驟703 )之前或期間接收第二文件(步驟709)。第二文件可以包 括此處所述的任一的文件類型、協(xié)議、web頁面和web頁面的部分。接收到第二文件之后,網(wǎng)絡(luò)設(shè)備200可以存儲或者高速緩存第二文件以準許隨后的
獲取。在一些實施例中,網(wǎng)絡(luò)設(shè)備200可以根據(jù)此處所述的任一網(wǎng)絡(luò)設(shè)備功 能來修改所述第二文件。
0139在一些實施例中,第二文件可以包括客戶端代理所請求的文件。 在一個實施例中,客戶端代理可以發(fā)送對第二文件的請求到網(wǎng)絡(luò)設(shè)備,該請 求包括識別客戶端代理具有第一文件的存儲的拷貝的信息。在一些實施例中, 該請求可以是HTTP請求。例如,客戶端代理可以發(fā)送HTTP請求用于新聞 web頁面??蛻舳舜砜梢栽贖TTP請求中插入下面的名稱-值對
"previously-stored-version=826482764"(之前存儲版本=826482764 ),其中, 826482764可以包括對應(yīng)于之前存儲的先前版本的新聞web頁面的序列號或 者時間戳(因此對應(yīng)于關(guān)于此數(shù)字討論的第一文件)。設(shè)備200可以隨后使用 此序列號或者時間戳來從其存儲設(shè)備檢索第 一文件。
0140在接收包括第二多個數(shù)據(jù)序列的第二文件(步驟709)之后,網(wǎng) 絡(luò)設(shè)備可以建立具有多個項目的哈希表,多個項目中的每一個對應(yīng)于第一多
(步驟711)。所述哈希表可以根據(jù)任一已知的哈希表算法來建立,所述哈希 表算法提供將數(shù)據(jù)序列或者對數(shù)據(jù)序列的引用存儲為項目,并且隨后有效搜 索所述表中匹配給定序列的項目的功能。在其他實施例中,網(wǎng)絡(luò)設(shè)備可以在 接收第二文件(步驟709)之前或者期間建立哈希表(步驟711)。
00141在一些實施例中,哈希表中的項目可以對應(yīng)于來自包括字節(jié)序 列的第一文件的數(shù)據(jù)序列。該字節(jié)序列可以是任一長度。在一個實施例中, 該序列是四字節(jié)序列。
0142在所示實施例中,至少兩個哈希表項目對應(yīng)于交迭的數(shù)據(jù)序列。 交迭的序列可以具有任一相同的字節(jié)數(shù)量。例如,如果文件包括序列
"abcdefghijklmnop",四字節(jié)序列交迭的例子除了 "cdef,和"fghi"之外, 還包括"cdef,和"defg"。在一個實施例中,哈希表項目對應(yīng)于連續(xù)的交迭 字節(jié)序列。例如,如果文件包括序列"abcdefg",包括至少兩個連續(xù)交迭四字 節(jié)序列的哈希表可以包括對應(yīng)于序列"abcd,, "bcde" "cdef,和"defg"的項 目。
0143在一些實施例中,哈希表項目在給定時刻可以僅對應(yīng)于來自第一 文件的給定部分或者"窗口"的數(shù)據(jù)序列。如果整個文件被立刻哈希的話,這允許該哈希表的尺寸小于該哈希表的可能的尺寸。在一些實施例中,僅哈 希第一文件的第一個X個字節(jié),并且隨后根據(jù)一些條件的發(fā)生,從表中移除
Y個項,隨后在表中加入Y個項。在一個實施例中,使用64K字節(jié)的窗口尺 寸,并且根據(jù)某些條件的發(fā)生,窗口以32K字節(jié)移動。在此實施例中,哈希 來自第一文件的第一個64K字節(jié)的序列,并且隨后根據(jù)某些條件的發(fā)生,移 除對應(yīng)于來自文件的第一個32K字節(jié)的序列的項目,并且加入對應(yīng)于來自文 件的下一個32K字節(jié)的序列的項目。
0144移動哈希窗口所基于的條件可以是改進哈希算法的執(zhí)行時間、性 能或者壓縮的任一條件。在一個實施例中,當在窗口的給定一半中已經(jīng)發(fā)現(xiàn) 超過85%的序列匹配時則移動窗口。在另一個實施例中,當?shù)诙募腲^定 比例已經(jīng)和已有哈希項目比較時則移動窗口。在一個實施例中,當對于已經(jīng) 與第 一文件相比的第二文件的適當部分哈希值已經(jīng)被計算并且被比較時則移 動窗口。例如,如果第一文件為100K字節(jié),第二文件是80K字節(jié),當?shù)诙?文件的80/100*64K字節(jié)已經(jīng)和哈希表中的序列相比4交時可以移動哈希窗口 。
0145網(wǎng)絡(luò)設(shè)備200建立哈希表(步驟711 )之后,網(wǎng)絡(luò)設(shè)備200可以 隨后計算所述第二多個數(shù)據(jù)序列的哈希值(步驟713)。根據(jù)用于計算第一多 個序列的哈希值的相同的方法來計算所述哈希值。網(wǎng)絡(luò)設(shè)備200可以以與其 從第一文件選擇數(shù)據(jù)序列相同的方式來從第二文件選擇數(shù)據(jù)序列。例如,如 果網(wǎng)絡(luò)設(shè)備200建立的哈希表項目對應(yīng)于來自第一文件的連續(xù)交迭的四字節(jié) 序列,網(wǎng)絡(luò)設(shè)備可以選擇來計算來自第二文件的連續(xù)交迭的四字節(jié)序列的哈 希值。
0146在計算第二多個數(shù)據(jù)序列的一些或者全部的哈希值(步驟713) 之后,網(wǎng)絡(luò)設(shè)備200可以比較第二多個數(shù)據(jù)序列的每一個與來自具有相同哈 希值的第一多個序列的序列,以確定在兩個文件中都出現(xiàn)的數(shù)據(jù)序列(步驟 715)。網(wǎng)絡(luò)設(shè)備可以根據(jù)當前可用的任一哈希算法執(zhí)行該步驟。所述比較可 以包括比較匹配的序列的隨后字節(jié)以確定更長的匹配。例如,第一文件可以 包括序歹ll "abcdefghijklmno"并且第二文件可以包括序列"zyxwvutcdefghituv"。 如果在連續(xù)四字節(jié)序列上作哈希,網(wǎng)絡(luò)設(shè)備200可以確定序列"cdef,在兩個 文件中都出現(xiàn)。網(wǎng)絡(luò)設(shè)備200隨后比較匹配序列的隨后字節(jié)以確定序列 "cdefghi"出現(xiàn)于兩個文件中。因此,在一些實施例中,確定出現(xiàn)于兩個文 件中的序列的長度可以隨計算哈希值的序列的長度改變。在一些實施例中,可以設(shè)置匹配序列的最小和最大長度。
0147確定出現(xiàn)于兩個文件中的數(shù)據(jù)序列(步驟715)之后,網(wǎng)絡(luò)設(shè)備 200可以存儲出現(xiàn)在第 一和第二文件二者中的所述數(shù)據(jù)序列的長度和位置的 表示(步驟717)。網(wǎng)絡(luò)設(shè)備200可以在任一存儲介質(zhì)中存儲該表示,包括高 速緩存、RAM、磁盤或者磁帶。在一些實施例中,網(wǎng)絡(luò)設(shè)備200可以在網(wǎng)絡(luò) 設(shè)備200自身上存儲該表示。在其他實施例中,網(wǎng)絡(luò)設(shè)備200可以在另一個 計算設(shè)備100上存儲該表示。在一些實施例中,可以存儲數(shù)據(jù)序列的長度和 位置,同時網(wǎng)絡(luò)設(shè)備200正比較第二多個數(shù)據(jù)序列的每一個和來自于具有相 同哈希值的第一多個序列的序列(步驟713)。在其他實施例中,對于要存儲 的給定序列的長度和位置,可以要求最小長度。在一個實施例中,最小長度 可以指定為四字節(jié)。
0148在兩個文件中都出現(xiàn)的所述序列的長度和位置的表示可以包括識 別序列的長度和位置的任一表示。在一些實施例中,所述序列的位置被存儲 為文件中的絕對位置。在其他實施例中,所述序列的位置被存儲為所述第一 文件中相對于一個給定參考指針的位置。在一個實施例中,所述參考指針可 以被固定,在另一個實施例中,所述參考指針可以根據(jù)設(shè)置的規(guī)則移動。
0149在一個實施例中,參考指針可以被初始設(shè)置指向第一文件的開始。 指針隨后可以在每次發(fā)現(xiàn)長于5字節(jié)的匹配序列后遞增。指針可能隨后被增 加到指向第一文件中匹配序列的最后一個字節(jié)加一。在此實施例中,在兩個 文件中都出現(xiàn)的所述序列的位置可以被存儲為從參考指針的位置起正向或者 負向的給定數(shù)量字節(jié)。
0150在一些實施例中,所匹配序列的長度和位置被存儲為固定長度整 數(shù)。在一個實施例中,所匹配序列的長度被存儲為1字節(jié)整數(shù),其中該整數(shù) 表示介于4到1027字節(jié)的長度。在此實施例中,所匹配序列的字節(jié)長度被限 制為4的倍數(shù)。在其他實施例中,任一其他位或者字節(jié)長度整數(shù)可以被用于 存儲所述序列長度。在又一些實施例中,任一其他限制可以:故施加到所匹配 序列的字節(jié)長度,包括最小和最大長度以及限制字節(jié)長度到給定倍數(shù)。在又 一些實施例中,所匹配序列的長度可以存儲為可變長度整數(shù)。在一些實施例 中,所匹配序列的位置可以被存儲為可變長度整數(shù)。在其他實施例中,所匹 配序列的位置可以被存儲為給定字節(jié)或者位長度的固定長度整數(shù)。
0151網(wǎng)絡(luò)設(shè)備200存儲出現(xiàn)在第 一和第二文件二者中的所述數(shù)據(jù)序列的長度和位置的表示(步驟717)之后,網(wǎng)絡(luò)設(shè)備200可以建立包括來自第二 文件的數(shù)據(jù)序列和在第 一和第二文件中都出現(xiàn)的數(shù)據(jù)序列的位置和長度的表
置都存儲之后,或者所述建立(717)可以與發(fā)現(xiàn)所匹配序列同時發(fā)生。第三 文件可以包含此處所述任一格式的長度和位置的表示。在一些實施例中,特 殊的字節(jié)或者位序列可以位于共享序列的長度和位置之前。
0152例如,如果第一文件包括字符串"abcdefghijklmnop",第二文件 包括字符串"xxxxxxxdefghijkxxxxxxcdefkxx ,,,第三文件可以包括序列 "xxxxxxx3, 8xxxxxx2, 4xxx"。在此例中,3、 8用于指明一個表示,以指示 從第一文件的字節(jié)3開始并且8字節(jié)長的序列(在一些實施例中該表示可以 是兩個固定長度的二進制整數(shù))。同樣地,2、 4指明一個表示,以指示從第一 文件的字節(jié)2開始并且4字節(jié)長的序列。
0153作為另 一 個例子,如果第 一 文件包括包括字符串 "abcdefghijklmnop,,,第二文件包括字符串"xxxxxxxdefghijkxxxxxxcdefkxx'', 第三文件可以包括序列"xxxxxxx3, 8xxxxxx-9, 4xxx"。在此例中,共享序列 的位置被存儲為與參考指針的相對距離,根據(jù)上述方法遞增。在此例中,網(wǎng) 絡(luò)設(shè)備200以與上例相同方式指示第一所匹配序列,因為參考指針初始指向 第一文件的開始。參考指針隨后增加到指向第一文件中匹配序列的最后一個 字節(jié)加一的位置。因此,第二匹配序列被指示為-9、 4,其指示第二所匹配序 列發(fā)生在緊隨第一文件中之前所匹配序列的字節(jié)之前的9個字節(jié)。
0154在一個實施例中,第三文件可以以字節(jié)協(xié)議編碼,諸如ASCII。 在一個實施例中,二進制數(shù)據(jù)的每一組7個字節(jié)可以被編碼為8個字節(jié)的 ASCII字符。這種轉(zhuǎn)化可以使用任一公知的轉(zhuǎn)化方法實現(xiàn)。ASCII字符可以對 應(yīng)于任一現(xiàn)有的字符集定義,包括ISO-8859-l。在一些實施例中,第三文件 可以包括HTML文件。在一個實施例中,第三文件可以包括Javascript變量, 該Javascript變量包括來自第二文件的所述數(shù)據(jù)序列和出現(xiàn)在第 一和第二文件 二者中的所述數(shù)據(jù)序列的位置和長度的表示。在一個實施例中,第三文件還 可以包括含有用于通過處理所述Javascript變量來組合所述第二文件的功能的 Javascript函數(shù)。在其他實施例中,第三文件可以包括對含有所述功能的 Javascript函凄丈的引用。
0155以下HTML代碼示出可以被傳輸?shù)娇蛻舳说牡谌募囊粋€例子。
<HTML>
<HEAD>
<SCRIPT>
var叩dateFile =" ~-"
<SCRIPT> </HEAD>
<BODY onload=create.Page ( updateFie ) > </BODY> </HTML>
0156在上述例子中,HTML文件包括命名為"updateFile"的Javascript 變量。該變量可以包括來自第二文件的數(shù)據(jù)序列和出現(xiàn)在第 一和第二文件二 者中的所述數(shù)據(jù)序列的長度和位置的表示。上述例子還包括對命名為
"createPage,,的Javascript函數(shù)的調(diào)用。所述函數(shù)或者可以包括在HTML文 件中或者存儲在客戶端上,其可以包括用于使用來自Javascript變量
"updateFile"的數(shù)據(jù)來組合所述第二文件的功能。在上述例子中,標準HTML 瀏覽器可以在載入HTML頁面時執(zhí)行"createPage"函數(shù)。"createPage"函數(shù) 還可以包括用于一旦第二文件被組合則改變HTML頁面來顯示所述第二文件 的功能。
0157建立包括來自第二文件的數(shù)據(jù)序列和出現(xiàn)在第 一和第二文件二者 中的所述數(shù)據(jù)序列的位置和長度的表示的第三文件(步驟719)之后,并且網(wǎng) 絡(luò)設(shè)備200可以傳輸?shù)谌募娇蛻舳?步驟721)。所述傳輸可以通過此處 討論的任一網(wǎng)絡(luò)和方法發(fā)生。網(wǎng)絡(luò)設(shè)備200可以根據(jù)網(wǎng)絡(luò)設(shè)備200所執(zhí)行的 包括壓縮、加速和加密的任一功能來修改第三文件。
0158在一些實施例中,網(wǎng)絡(luò)設(shè)備200可以發(fā)送對應(yīng)于第二文件的該傳 輸?shù)腍TTP首部中的信息。繼續(xù)之前的例子,網(wǎng)絡(luò)設(shè)備可以將名稱-值對 "previously-stored-version=826482764',插入以指示使用文件的哪個版本作為 第一文件,用于文件比較和壓縮。0159傳輸?shù)谌募娇蛻舳?步驟721)之后,客戶端102可以接收 第三文件(步驟723 ),執(zhí)行Javascript函數(shù)以重新建立包括來自第二文件的數(shù) 據(jù)序列和第三文件所指示的第一文件中的序列的第二文件(步驟725 );并且 顯示第二文件(步驟727)。客戶端102可以根據(jù)此處描述的任一實施例執(zhí)行 這些步驟。
0160現(xiàn)在參見圖8,示出描述用于建立對先前存儲文件的有效更新的 方法的另一個實施例的流程圖。總的來說,該方法包括使用對應(yīng)于第一文件 中的交迭數(shù)據(jù)序列的項目建立哈希表(步驟711);設(shè)置參考指針指向所述第 一文件的開始(步驟801);計算用于第二文件的數(shù)據(jù)序列的哈希值(步驟7H ); 并且確定在兩個文件中是否都出現(xiàn)所述序列(步驟715)。該方法隨后還可以 包括或者移動到第二文件中的下一序列(步驟809 )或者確定匹配序列的總長 度(步驟803 )并且確定所述長度是否超過最小闊值(步驟805 )。該方法隨 后還可以包括或者移到第二文件中的下一序列(步驟809 )或者存儲相對于參 考指針的匹配序列的長度和位置(步驟717)。該方法隨后可以包括設(shè)置參考 指針指向第一文件中的匹配序列的最后一個字節(jié)加一 (步驟807 )并且隨后移 到第二文件中的下一序列(步驟809)。在所述實施例中,可以由網(wǎng)絡(luò)設(shè)備200 執(zhí)行該方法。
0161依舊參見圖8,現(xiàn)在更詳細地,網(wǎng)絡(luò)設(shè)備200使用對應(yīng)于第一文 件中的交迭數(shù)據(jù)序列的項目建立哈希表(步驟711)??梢愿鶕?jù)此處所述用于 建立哈希表的任一方法來執(zhí)行該步驟。
0162在使用對應(yīng)于第一文件中的交迭數(shù)據(jù)序列的項目建立哈希表(步 驟711)之后,網(wǎng)絡(luò)設(shè)備200可以設(shè)置參考指針指向所述第一文件的開始(步 驟801 )。該參考指針可以包括任一類型的指針。
0163設(shè)置參考指針指向第一文件的開始(步驟801)之后,網(wǎng)絡(luò)設(shè)備 200可以計算用于第二文件的數(shù)據(jù)序列的哈希值(步驟713)。可以根據(jù)此處 所討論的用于計算所述哈希值的任一方法來執(zhí)行該步驟。
0164計算用于第二文件的數(shù)據(jù)序列的哈希值(步驟713)之后,網(wǎng)絡(luò) 設(shè)備200可以確定在兩個文件中是否都出現(xiàn)所述序列(步驟715)??梢愿鶕?jù) 此處所述的任一 方法來"t丸行該步驟。
0165如果不是在兩個文件中都出現(xiàn)一個序列,網(wǎng)絡(luò)設(shè)備200可以移動 到第二文件的下一個序列(809 )。所述下一序列可以包括發(fā)生在第二文件中給定序列之后的任一序列。在一個實施例中,下一個序列可以是前一序列之 后開始一字節(jié)的序列。在另一個實施例中,下一序列可以是前一序列之后開 始任一其他數(shù)量個字節(jié)的序列。在一些實施例中,移動到第二文件的下一個
序列(步驟809)可以伴以上述的移動哈希窗。如果不存在下一個序列,該方 法可以終止。
0166如果在兩個文件中都出現(xiàn)一個序列,網(wǎng)絡(luò)設(shè)備200可以通過比較 所匹配序列的隨后的字節(jié)來確定匹配序列的總長度(步驟803 )。根據(jù)此處所 述的任一方法可以確定總長度。
0167網(wǎng)絡(luò)設(shè)備200隨后可以確定匹配序列的總長度是否超過一個給定 閾值(步驟805 )。可以根據(jù)此處所述的任一方法做出該確定。如果匹配序列 的長度沒有超過最小闞值,網(wǎng)絡(luò)設(shè)備200可以移動到第二文件的下 一個序列。
0168如果該長度超過最小閾值,網(wǎng)絡(luò)設(shè)備200可以隨后根據(jù)此處所述 的任一方法存儲匹配序列的長度和相對于給定參考指針的位置。網(wǎng)絡(luò)設(shè)備200 可以隨后根據(jù)此處所述任一方法遞增參考指針(步驟807 )。網(wǎng)絡(luò)設(shè)備200隨 后可以移動到第二文件的下一個序列(步驟809)。
0169現(xiàn)在參見圖9,示出用于有效接收對先前存儲文件的更新的方法 的一個實施例??偟膩碚f,所述方法包括接收組合函數(shù)(步驟903 );接收 包括數(shù)據(jù)序列的第一文件(步驟705 );顯示所述第一文件,存儲所述第一文 件(步驟708);接收包括數(shù)據(jù)序列和在第一文件中的序列的位置和長度的表 示的第三文件(步驟723 );執(zhí)行Javascript函數(shù)以建立包括來自第二文件的數(shù) 據(jù)序列和由第三文件指示的第一文件中的序列的第二文件(步驟725 );并且 顯示所述第二文件(步驟727 )。
0170依舊參見圖9,現(xiàn)在更詳細地,網(wǎng)絡(luò)設(shè)備200可以傳輸組合函數(shù)。 所述組合函數(shù)可以包括用于使用包括來自第二文件的數(shù)據(jù)序列和出現(xiàn)在第一 和第二文件二者中的所述數(shù)據(jù)序列的位置和長度的表示的文件來組合第二文 件的任一計算機可讀程序裝置。所述組合函數(shù)可以包括任一編程或者腳本語 言,包括Javascript或者Java。在一些實施例中,可以根據(jù)此處所述的任一其 他網(wǎng)絡(luò)設(shè)備函數(shù)來傳輸該組合函數(shù)。在一個實施例中,該組合函數(shù)可以包括 在提供其它客戶端側(cè)加速功能的程序中。
0171在所示實施例中,網(wǎng)絡(luò)設(shè)備200傳輸組合函數(shù)(步驟901 )之后, 客戶端102或者客戶端代理120接收組合函數(shù)(步驟903 )??蛻舳丝梢酝ㄟ^此處所述的任一網(wǎng)絡(luò)、協(xié)議或者計算裝置來接收所述組合函數(shù)。在一些實施
例中,客戶端102從網(wǎng)絡(luò)設(shè)備200接收組合函數(shù)。在一個實施例中,組合函
數(shù)可以被包括作為客戶端側(cè)加速程序的部分。在其他實施例中,組合函數(shù)可
以通過發(fā)送軟件的4壬一方法被安裝在客戶端102上,該方法包括通過石茲盤或 者其他便攜存儲設(shè)備。在一些實施例中,客戶端代理120可以接收并且之后 執(zhí)行重組合函數(shù),使得重組合函數(shù)的執(zhí)行對于一個或者多個應(yīng)用或者網(wǎng)絡(luò)層 透明。
0172在所示實施例中,接收組合函數(shù)(步驟903 )之后,客戶端102
或者客戶端代理接收包括數(shù)據(jù)序列的第一文件。在所示實施例中,客戶端102 從網(wǎng)絡(luò)設(shè)備200接收第一文件。在其他實施例中,客戶端102可以從任一計 算設(shè)備接收第一文件。所述文件可以包括此處所述任一文件類型或者協(xié)議。
0173客戶端102接收包括數(shù)據(jù)序列的第一文件(步驟705 )之后,客 戶端102可以顯示所述第一文件(步驟707)。可以以任一對于給定文件合適 的方式顯示該文件。在一些實施例中,文件可以被顯示在web瀏覽器中。在 其他實施例中,文件可以被顯示在商業(yè)應(yīng)用中,諸如字處理器或者電子數(shù)據(jù) 表。在又一些實施例中,文件可以包括獨立應(yīng)用并且被照此顯示。在一些實 施例中,文件可以對應(yīng)于運行在虛擬計算環(huán)境中的應(yīng)用。在一個實施例中, 文件可以對應(yīng)于遠程^丸行應(yīng)用。在其他實施例中,文件可以對應(yīng)于流應(yīng)用。
0174客戶端102顯示所述第一文件(步驟707)之后,客戶端102或 者客戶端代理120可以存儲所述第一文件(步驟708)??蛻舳?02可以存儲 第一文件到任一存儲元件中,包括存儲在高速緩存、磁盤、閃爍存儲器或者 RAM中。在一些實施例中,客戶端102可以壓縮該文件用于存儲。在其他實 施例中,客戶端102可以僅存儲文件的部分。在一些實施例中,客戶端102 可以在顯示所述第一文件(步驟707 )之前或者期間來存儲所述第一文件(步 驟708 )。
0175客戶端102存儲所述第一文件(步驟708 )之后,所述客戶端102 或者客戶端代理120可以接收第三文件(步驟723 )。在所示實施例中,客戶 端102從網(wǎng)絡(luò)設(shè)備200接收第三文件。在其他實施例中,客戶端102可以從 任一計算裝置接收第三文件。所述文件可以包括此處所述的任一文件類型或 者協(xié)議。在一些實施例中,該文件可以包括ASCII字符。在其他實施例中, 該文件可以包括二進制數(shù)據(jù)。0176客戶端102接收所述第三文件(步驟723 )之后,客戶端或者客 戶端代理120可以執(zhí)行Javascript或者其他函數(shù)來組合第二文件(步驟725 )。 在一些實施例中,Javascript函數(shù)可以被包括在所述第三文件中。在其他實施 例中,該Javascript函數(shù)可以已經(jīng)存儲在客戶端102上。在一些實施例中, Javascript函數(shù)可以在客戶端側(cè)加速程序中^是供。在一些實施例中,第三文件 可以包括到一個位置的鏈接,客戶端102可以在該位置下載Javascript函數(shù)。
0177Javascript函數(shù)可以執(zhí)行此處所述的任一技術(shù)或者任一技術(shù)的逆操 作來組合所述第二文件。在一些實施例中,Javascript函凄t可以包括在步驟903 接收的組合函數(shù)。在其他實施例中,Javascript函數(shù)可以包括對所述組合函數(shù) 的引用。在又一些實施例中,所述Javascript函數(shù)可以包括用于下載所述組合 函凄t的方法。
0178執(zhí)行Javascript函數(shù)以組合所述第二文件(步驟725 )之后,所述
客戶端可以顯示所述第二文件(步驟727)。該文件可以根據(jù)此處所述用于顯 示文件的任一方法來顯示。
0179現(xiàn)在參見圖10,示出用于將第二文件和第三文件進行組合的方法 的一個實施例,所述第二文件來自先前存儲的第一文件,所述第三文件包括來 自第二文件的數(shù)據(jù)序列以及出王脈第一和第二文件二者中的數(shù)據(jù)序列的位置和長 度的表示??偟膩碚f,該方法包括讀取來自第三文件的數(shù)據(jù)集(步驟1002 )并 且確定所述數(shù)據(jù)集是否對應(yīng)于出現(xiàn)在第 一和第二文件二者中的所述數(shù)據(jù)序列 的位置和長度(步驟1003 )。所述方法還可以包括在所述第一文件中的指定位 置讀取指定長度的字節(jié)(步驟1005 );將所述字節(jié)加到第二文件(步驟1007 ); 將參考指針增加到指向從第一文件讀取的字節(jié)的最后一個字節(jié)加一的位置 (步驟1009 );并且移到來自所述第三文件的下一數(shù)據(jù)集(步驟1013)。在一 個實施例中,所述方法可以由客戶端102或者客戶端代理120執(zhí)行。在另一 個實施例中,所述方法可以由圖9描述的組合函數(shù)來執(zhí)行。
0180依舊參見圖10,現(xiàn)在更詳細地,客戶端102可以設(shè)置參考指針指 向第一文件的開始。這可以根據(jù)此處所述的任一方法來執(zhí)行。
0181設(shè)置參考指針(步驟1001 )之后,客戶端102可以從第三文件讀 取數(shù)據(jù)集(步驟1002 )。所述數(shù)據(jù)集可以包括所述第三文件的任一數(shù)量的位或 者字節(jié)。在一個實施例中,所述數(shù)據(jù)集隨后存儲在存儲元件或者高速緩存中。
0182讀取所述數(shù)據(jù)集(步驟1002 )之后,客戶端102可以確定所述數(shù)據(jù)集是否對應(yīng)于在第一文件中的序列的長度和位置。在一個實施例中,客戶 端可以確定所述數(shù)據(jù)集是否包括特殊字符或者位序列。
0183如果所述數(shù)據(jù)集不對應(yīng)于在第一文件中的序列的長度和位置,客 戶端102可以將所述數(shù)據(jù)集加到第二文件(步驟1011 )。所述加到第二文件可 包括添加所述數(shù)據(jù)集到第二文件的末尾。客戶端102可以隨后移動到來自第 三文件的下一數(shù)據(jù)集(步驟1013)。
0184如果所述數(shù)據(jù)對應(yīng)于在第一文件中的序列的長度和位置,客戶端 102隨后可以在第一文件中的指定位置讀取指定長度的字節(jié)(步驟1005 )???戶端可以通過識別此處描述的長度和位置的任一表示來確定所指定的長度和 位置。在一個實施例中,客戶端可以隨后存儲所述指定字節(jié)到存儲元件或者 高速緩存中。
0185在第一文件中的指定位置讀取指定長度的字節(jié)(步驟1005 )之后, 客戶端102隨后可以將所述字節(jié)加到所述第二文件(步驟1007 )。所述加到所 述第二文件可以包括添加所述字節(jié)到第二文件的末尾。
0186客戶端102可以隨后將參考指針增加到指向從第一文件讀取的字 節(jié)的最后一個字節(jié)加一的位置(步驟1009 )。這可以才艮據(jù)此處所述的任一方法 來執(zhí)行??蛻舳?02隨后可以移到來自第三文件的下一數(shù)據(jù)集(步驟1013)。
0187現(xiàn)在參見圖11,示出用于確定文件傳輸方法的方法的一個實施例。 所述方法可以由上述的任一機器或者機器的組合來執(zhí)行,盡管以下實施例描 述該方法由網(wǎng)絡(luò)設(shè)備200執(zhí)行??偟膩碚f,該方法包括接收來自客戶端102 或客戶端代理120對資源的請求(步驟1101 );發(fā)送對所述客戶端的性能的請 求(步驟1103 );接收傳達所述客戶端性能的信息(步驟1105 );并且確定文 件傳輸方法(步驟1107)。
0188依舊參見圖11,現(xiàn)在更詳細地,網(wǎng)絡(luò)設(shè)備200接收來自客戶端或 者客戶端代理120的請求(步驟1101 )。在一個實施例中,從客戶端接收請求 (步驟1101 )包括直接從客戶端接收請求。在其他實施例中,來自客戶端102 的請求可以從上述的任一網(wǎng)絡(luò)、連接和設(shè)備接收。所述請求可以包括前述的 任一協(xié)議。在一些實施例中,該請求可以僅包括從客戶端102傳輸?shù)恼埱蟆?在其他實施例中,該請求可以包括對來自客戶端102的初始請求的修改。所 述修改可以包括在提供上述任一 網(wǎng)絡(luò)設(shè)備服務(wù)過程期間的修改,以及對來自 于客戶端102的請求或者一個新的請求的內(nèi)容、格式、協(xié)議、尋址、首部或其它部分的修改。
一個請求可以包括由客戶端102直接請求的資源,并且可
以包括在執(zhí)行用于客戶端102的任一服務(wù)過程期間所請求的資源。
0189從客戶端接收請求(步驟1101 )之后,網(wǎng)絡(luò)設(shè)備200發(fā)送對所述 客戶端性能的請求(步驟1103)。在一個實施例中,所述請求可以被發(fā)送到客 戶端102。在另一個實施例中,請求可以被發(fā)送到收集代理,如美國專利申請
序歹寸號 10/956832 "A METHOD AND APPARATUS FOR ASSIGNING ACCESS CONTROL LEVELS IN PROVIDING ACCESS TO NETWORKED CONTENT FILES"中所述,其內(nèi)容通過 引用被明確引入本申請。所述收集代理可以駐留在與發(fā)送該請求的網(wǎng)絡(luò)設(shè)備 同一個物理機器上,或者它們可以駐留在不同的物理機器上。所述請求也可 以被發(fā)送到文件、高速緩存、數(shù)據(jù)庫、服務(wù)器、執(zhí)行應(yīng)用或者關(guān)于客戶端102 的任一其他信息源。
0190發(fā)送對客戶端性能的請求(步驟1103 )之后,網(wǎng)絡(luò)設(shè)備200接收 傳達所述客戶端性能的信息(步驟1105)。所述信息可以從客戶端102、或者 客戶端代理120、收集代理、文件、高速緩存、數(shù)據(jù)庫、服務(wù)器、執(zhí)行應(yīng)用或 者關(guān)于客戶端102的任一其他信息源中接收。所述信息可以包括但不限于客 戶端節(jié)點102的機器ID、操作系統(tǒng)類型、操作系統(tǒng)補丁的存在、所安裝網(wǎng)卡 的MAC地址、客戶端設(shè)備上的數(shù)字水印、活動目錄中的成員、病毒掃描器的 存在、個人防火墻的存在、HTTP頭、瀏覽器類型、設(shè)備類型、網(wǎng)絡(luò)連接信息、 授權(quán)證書和以上討論的任一其他性能或偏好。在一些實施例中,網(wǎng)絡(luò)設(shè)備可 以存儲或者高速緩存所述信息用于之后的獲取。
0191接收傳達所述客戶端性能的信息(步驟1105 )之后,網(wǎng)絡(luò)設(shè)備可 以確定對應(yīng)于所述客戶端102或客戶端代理120的文件傳輸方法(步驟1107 )。 可以基于任一所接收到的信息做出所述確定。
0192在一些實施例中,響應(yīng)在步驟1105接收的信息,網(wǎng)絡(luò)設(shè)備200 可以確定根據(jù)圖7中所述用于建立對先前存儲文件的有效更新的方法來傳輸 文件。在一個實施例中,響應(yīng)對應(yīng)于客戶端102存儲器尺寸、連接速度、連 接帶寬、處理器速度或者存儲文件的之前存在的信息,做出該確定。
0193在一些實施例中,網(wǎng)絡(luò)設(shè)備200可以響應(yīng)步驟1105接收的信息 來確定傳輸組合函數(shù)到客戶端102。例如,如果網(wǎng)絡(luò)設(shè)備200接收到客戶端 102不具有組合函數(shù)的信息以及指示客戶端102有能力執(zhí)行組合函數(shù)的信息, 網(wǎng)絡(luò)設(shè)備可以傳輸組合函數(shù)到客戶端102。在一些實施例中,所述組合函數(shù)可以與任一其他文件一起傳輸,包括請求的內(nèi)容文件、或者根據(jù)網(wǎng)絡(luò)設(shè)備200 的功能傳輸?shù)钠渌募T谝恍嵤├?,網(wǎng)絡(luò)設(shè)備可具有多個組合函數(shù)。 例如,網(wǎng)絡(luò)設(shè)備200可以具有優(yōu)化用于不同計算環(huán)境、操作系統(tǒng)和硬件配置 的多個組合函數(shù)。網(wǎng)絡(luò)設(shè)備隨后可以響應(yīng)步驟1105接收到的信息來確定哪個 組合函數(shù)傳輸?shù)娇蛻舳?02。
0194雖然本發(fā)明參考具體優(yōu)選實施例來詳細示出和說明,本領(lǐng)域內(nèi) 的普通技術(shù)人員應(yīng)該理解在不脫離由所附權(quán)利要求書限定的本發(fā)明的精神和 范圍的情況下,可以對本發(fā)明在形式和細節(jié)上作出多種改變。
權(quán)利要求
1、一種用于使用在虛擬專用網(wǎng)絡(luò)環(huán)境中操作的客戶端代理來攔截HTTP通信的方法,所述方法包括(a)由在客戶端上執(zhí)行的客戶端代理在網(wǎng)絡(luò)層或者傳輸層的其中之一攔截包括來自客戶端上執(zhí)行的應(yīng)用的HTTP請求的一個或者多個包;(b)修改所述HTTP請求;并且(c)經(jīng)傳輸層連接發(fā)送所修改的HTTP請求到服務(wù)器。
2、 權(quán)利要求1的方法,其中,步驟(a)包括由客戶端代理攔截虛擬專用網(wǎng)絡(luò)上從客戶端到服務(wù)器的HTTP請求。
3、 權(quán)利要求l的方法,其中,步驟(b)包括修改包括在所述HTTP請求中的至少一個cookie。
4、 權(quán)利要求l的方法,其中,步驟(b)包括移除包括在所述HTTP請求中的至少一個cookie。
5、 權(quán)利要求l的方法,其中,步驟(b)包括(b-a )在所述HTTP請求中識別名稱-值對;和(b-b)修改所述名稱-值對的值。
6、 權(quán)利要求l的方法,其中,步驟(b)包括(b-a )在所述HTTP請求中識別URL;和(b-b)在所述HTTP請求中插入識別當前存儲在所述客戶端上的URL識別的資源的版本的信息。
7、 權(quán)利要求l的方法,其中,步驟(b)包括修改在所述HTTP請求中識別的URL。
8、 權(quán)利要求l的方法,其中,步驟(b)包括(b-a )在所述HTTP請求指定的URL中識別名稱-值對;和(b-b )修改所識別的名稱-值對的值。
9、 權(quán)利要求l的方法,其中,步驟(c)包括(c-a )響應(yīng)所述HTTP請求中指定的URL,確定對應(yīng)于服務(wù)所述請求的服務(wù)器的網(wǎng)絡(luò)層地址;和(c-b)經(jīng)由傳輸層連接,發(fā)送所修改的HTTP請求到所指定的地址。
10、 一種用于使用在虛擬專用網(wǎng)絡(luò)環(huán)境中操作的客戶端代理來攔截HTTP通信的計算機實現(xiàn)的系統(tǒng),所述系統(tǒng)包括客戶端計算裝置;和在客戶端上執(zhí)行的客戶端代理,在網(wǎng)絡(luò)層攔截來自客戶端上執(zhí)行的應(yīng)用的HTTP請求;修改所述HTTP請求;并且經(jīng)傳輸層連接發(fā)送所修改的HTTP請求到服務(wù)器。
11、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理攔截虛擬專用網(wǎng)絡(luò)上從客戶端到服務(wù)器的HTTP請求。
12、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理修改包括在所述HTTP請求中的至少一個cookie。
13、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理移除包括在所述HTTP請求中的至少一個cookie。
14、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理在所述HTTP請求中識別名稱-值對;和修改所述名稱-值對的值。
15、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理在所述HTTP請求中識別URL;和在所述HTTP請求中插入識別當前存儲在所述客戶端上的URL識別的資源的版本的信息。
16、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理修改在所述HTTP請求中識別的URL。
17、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理在所述HTTP請求指定的URL中識別名稱-值對;和修改所識別的名稱-值對的值。
18、 權(quán)利要求10的系統(tǒng),其中,所述客戶端代理響應(yīng)所述HTTP請求中指定的URL,確定對應(yīng)于服務(wù)所述請求的服務(wù)器的網(wǎng)絡(luò)層地址;和經(jīng)由傳輸層連接,發(fā)送所修改的HTTP請求到所確定的地址。
19 、 一種用于^^]客戶端代理來啟用使用HTTP cookie的虛擬專用網(wǎng)絡(luò)環(huán)嫂中的安4^封正的方法,所述方法包括(a )由扭軒^ll戶端上的的客戶端代/里4 /人虛擬專用網(wǎng)絡(luò)上的設(shè)備到客戶端的包括cookie的HTTP通信;(b)由客戶端代理/人HTTP通信中移除cookie;(c )由客戶端代理^^諸所接收的cookie;(d)由客戶端^J嫂送修改的HTTP通信到#1^亍#戶端上的應(yīng)用;(e) 由客戶端代理攔截來自客戶端的HTTP請求;(f) 由客戶端代理在HTTP請求中插7sJ斤接收的cookie;并且(g )發(fā)送修改的HTTP請求到設(shè)備。
20、 權(quán)利要求19的方法,其中步驟(a)包括由扭軒#戶端上的的客戶端代》里沖^A虛擬專用網(wǎng)絡(luò)上的設(shè)備到客戶端的包括cookie的HTTP通信,其中所述cookie包括授權(quán)證書。
21、 權(quán)利要求19的方法,其中步驟(e)包括由客戶端代理才織虛擬專用網(wǎng)絡(luò)上/A^戶端到服務(wù)器的HTTP GET請求。
22、 權(quán)利要求19的方法,其中步驟(e)包括由客戶端^J里攔截來自客戶端的多個HTTP請求。
23、 權(quán)利要求19的方法,其中步驟(e)包括由客戶端^J里攔截來自客戶端上#(^亍的多個應(yīng)用的多個HTTP請求。
24、 權(quán)利要求19的方法,還包括步驟(h)客戶端代理確定與虛擬專用網(wǎng)絡(luò)設(shè)備的客戶端會話已經(jīng)結(jié)束;并且(i )響應(yīng)該確定,刪除所存儲的cookie。
25、 權(quán)利要求24的方法,其中,步驟(h)包括由客戶端^J里確定客戶端和虛擬專用網(wǎng)絡(luò)設(shè)備之間的傳輸層連接已經(jīng)終止。
26、 權(quán)利要求19的方法,其中步驟(f)包括由客戶端代理在HTTP請求中插入包括用戶驗^i正i正書的cookie。
27、 權(quán)利要求19的方法,其中步驟(f)包括客戶端代理在HTTP請求中插入包括應(yīng)用特定的驗證證書的cook i e 。
28、 權(quán)利要求19的方法,其中步驟(f)包括客戶端^J錄HTTP請求中插入包括傳輸y^i舌信息的cookie。
29、 一種用于^jf]客戶端代理來啟用使用HTTP cookie的虛擬專用網(wǎng)絡(luò)床竟中的^N^正的系統(tǒng),所述系統(tǒng)包括^:戶端計算裝置;和#^亍#戶端上的的客戶端代理,4^/人虛擬專用網(wǎng)絡(luò)上的設(shè)備到客戶端的包括cookie的HTTP通信;從HTTP通信中移除cookie; #^諸所接收的cookie;發(fā)送修改的HTTP通信到#1^亍#戶端上的應(yīng)用;由客戶端4"里攔截來自客戶端的HTTP請求;由客戶端代理在HTTP請求中插7v^斤接收的cookie;并JX送修改的HTTP請求到設(shè)備。
30、 權(quán)利要求29的系統(tǒng),其中客戶端^J里4誠包括從虛擬專用網(wǎng)絡(luò)上的設(shè)備 到客戶端的cookie的HTTP通信,其中所述cookie包括授權(quán)證書。
31、 權(quán)利要求29的系統(tǒng),其中客戶端^J里4^l^擬專用網(wǎng)絡(luò)Ji/A^戶端到服 務(wù)器的HTTP GET請求。
32、 權(quán)利要求29的系統(tǒng),其中客戶端^J里4誠來自客戶端的多個HTTP請求。
33、 權(quán)利要求29的系統(tǒng),其中客戶端^J里^^來自客戶端上^^亍的多個應(yīng)用 的多個HTTP請求。
34、 權(quán)利要求29的系統(tǒng),其中客戶端代理確定與虛擬專用網(wǎng)絡(luò)設(shè)備的客 戶端會話已經(jīng)結(jié)束;并且,響應(yīng)該確定,刪除所存^f諸的cookie。
35、 權(quán)利要求34的系統(tǒng),其中,客戶端^J里確定客戶端和虛擬專用網(wǎng)絡(luò)設(shè)備之 間的傳輸層連接已經(jīng)終止。
36、 權(quán)利要求29的系統(tǒng),其中客戶端代J錄HTTP請求中插入包括用戶騶3正證書 的cookie。
37、 權(quán)利要求29的系統(tǒng),其中客戶端代S^HTTP請求中插入包括應(yīng)用特定的驗 證證書的cookie。
38、 權(quán)利要求29的系統(tǒng),其中客戶端代理在HTTP請求中插入包括傳輸^"i舌信 息的cookie。
39、 一種用于使用客戶端代理來啟用來自客戶端的非HTTP通信中的HTTP cookie驗證的方法,所述方法包括(a )由客戶端上執(zhí)行的客戶端代理攔截來自客戶端的連接請求; (b )由客戶端代理建立與網(wǎng)絡(luò)設(shè)備的傳輸層虛擬專用網(wǎng)絡(luò)連接;(c) 由客戶端代理經(jīng)由所建立的連接發(fā)送包括驗證cookie的HTTP請求;和(d) 由客戶端代理經(jīng)由該連接發(fā)送連接請求。
40、 權(quán)利要求39的方法,其中,所述客戶端代理關(guān)于以下網(wǎng)絡(luò)層的其中 之一透明地執(zhí)行應(yīng)用層、表示層、會話層或者傳輸層。
41、 權(quán)利要求39的方法,其中,步驟(a)包括由客戶端上執(zhí)行的客戶 端代理攔截來自客戶端的傳輸層連接請求,其中,所述攔截發(fā)生在以下網(wǎng)絡(luò) 層的其中一個傳輸層、網(wǎng)絡(luò)層或者數(shù)據(jù)層。
42、 權(quán)利要求39的方法,其中,步驟(a)包括由客戶端上4丸行的客戶 端代理攔截TCP SYN包。
43、 權(quán)利要求39的方法,其中,步驟(c)包括在經(jīng)由該連接發(fā)送任一數(shù)據(jù) 之前,客戶端代理經(jīng)由所建立的連接發(fā)送包括驗i正cookie的HTTP請求。
44、 權(quán)利要求39的方法,其中,步驟(c)包括響應(yīng)連接已經(jīng)建立的確定, 客戶端代理發(fā)送包括—瞼證cookie的HTTP請求,所述cookie包括用戶驗證證 書。
45、 權(quán)利要求39的方法,其中,步驟(c)包括客戶端代理經(jīng)由所建立 的連接發(fā)送包括^S正cookie的HTTP請求,所述cookie包括應(yīng)用特定的—險證 證書。
46、 權(quán)利要求39的方法,其中,步驟(c)還包括客戶端代理接收HTTP 響應(yīng),所述HTTP響應(yīng)包括 接收所述-瞼i正cookie。
47. —種用于使用客戶端代理來啟用來自客戶端的非HTTP通信中的HTTP cookie驗證的計算才幾實現(xiàn)的系統(tǒng),所述系統(tǒng)包括客戶端計算裝置;和客戶端上執(zhí)行的客戶端代理,攔截來自客戶端的連接請求;建立與網(wǎng)絡(luò) 設(shè)備的傳輸層虛擬專用網(wǎng)絡(luò)連接;由客戶端代理經(jīng)由所建立的連接發(fā)送包括 驗證cookie的HTTP請求;和由客戶端代理經(jīng)由該連接發(fā)送連接請求。
48、 權(quán)利要求47的系統(tǒng),其中,所述客戶端代理關(guān)于以下網(wǎng)絡(luò)層的其中 之一透明地執(zhí)行應(yīng)用層、表示層、會話層或者傳輸層。
49、 權(quán)利要求47的系統(tǒng),其中,客戶端代理攔截來自客戶端的傳輸層連 接請求,其中,所述攔截發(fā)生在以下網(wǎng)絡(luò)層的其中一個傳輸層、網(wǎng)絡(luò)層或 者數(shù)據(jù)層。
50、 權(quán)利要求47的系統(tǒng),其中,客戶端代理攔截TCP SYN包。
51、 權(quán)利要求47的系統(tǒng),其中,客戶端^J里經(jīng)由所建立的連接在經(jīng)由該連接 發(fā)送任一數(shù)據(jù)之前發(fā)送包括-3&正cookie的HTTP請求。
52、 權(quán)利要求47的系統(tǒng),其中客戶端代理經(jīng)由所建立的連接發(fā)送包括驗 證cookie的HTTP請求,所述cookie包括用戶驗證證書。
53、 權(quán)利要求47的系統(tǒng),其中,客戶端代理經(jīng)由所建立的連接發(fā)送包括 驗證cookie的HTTP請求,所述cookie包括應(yīng)用特定的驗證證書。
54、 權(quán)利要求47的系統(tǒng),其中,客戶端代理接收HTTP響應(yīng),所述HTTP 響應(yīng)包括接收所述'瞼i正cookie。
全文摘要
所描述的系統(tǒng)和方法用于使用在虛擬專用網(wǎng)絡(luò)環(huán)境中操作的客戶端代理來攔截HTTP通信。該方法包括由在客戶端上執(zhí)行的客戶端代理在網(wǎng)絡(luò)層攔截來自客戶端上執(zhí)行的應(yīng)用的HTTP請求;修改該HTTP請求;并且經(jīng)傳輸層連接發(fā)送所修改的HTTP請求到服務(wù)器。附加的方法可以包括增加、移除或者修改HTTP請求中的至少一個cookie。又一個方法可以包括修改包含在該HTTP請求中的至少一個名稱-值對。該其它方法可以使用客戶端代理來管理HTTP驗證cookie。
文檔編號H04L29/08GK101523865SQ200780036904
公開日2009年9月2日 申請日期2007年8月3日 優(yōu)先權(quán)日2006年8月3日
發(fā)明者A·索尼, C·溫卡塔拉曼, 何軍曉 申請人:思杰系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
特克斯县| 彰化县| 平安县| 灵丘县| 安乡县| 遵义市| 涪陵区| 宣威市| 东光县| 双城市| 宝兴县| 新昌县| 手机| 瓦房店市| 壤塘县| 沙坪坝区| 竹北市| 新丰县| 临安市| 翁牛特旗| 河南省| 漠河县| 青川县| 黔西| 洱源县| 宜城市| 太康县| 法库县| 桐庐县| 长子县| 微博| 麦盖提县| 陇川县| 洮南市| 德兴市| 双柏县| 桐乡市| 缙云县| 论坛| 丹东市| 和田市|