專利名稱:用于中間設(shè)備壓縮通過遠(yuǎn)程顯示協(xié)議傳遞的數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明總的涉及數(shù)據(jù)通信網(wǎng)絡(luò)。具體而言,本發(fā)明涉及用于改善中間設(shè)備壓縮效率的系統(tǒng)和方法以便壓縮通過遠(yuǎn)程顯示協(xié)議傳輸?shù)臄?shù)據(jù)。
背景技術(shù):
在基于服務(wù)器的計算環(huán)境中,服務(wù)器可以向客戶機傳遞在服務(wù)器上運行的應(yīng)用的輸出中的變化。服務(wù)器可以通過遠(yuǎn)程顯示協(xié)議傳遞這些變化。在一些情況下,服務(wù)器通過遠(yuǎn)程顯示協(xié)議傳遞繪圖或繪制命令。例如,服務(wù)器可以將由應(yīng)用造成的顯示上的變化作為一系列在客戶機的屏幕上繪制這些變化的命令來進行傳遞。服務(wù)器可以給客戶機發(fā)送在客戶機的屏幕上繪制所識別的字形或位圖的命令。在這種方式中,服務(wù)器僅僅發(fā)送通過一系列繪畫命令改變的顯示部分,而不是將服務(wù)器應(yīng)用的整個輸出傳輸?shù)娇蛻魴C。當(dāng)客戶機收到繪制命令和將要被繪制的數(shù)據(jù)時,客戶機可以緩存這樣的數(shù)據(jù)以用于隨后的繪制命令。服務(wù)器為這樣的數(shù)據(jù)提供高速緩存句柄以便引用在該高速緩存中存儲的數(shù)據(jù)而不是在收到隨后的繪制命令時重新傳輸該數(shù)據(jù)。例如,服務(wù)器可以通過遠(yuǎn)程顯示協(xié)議發(fā)送繪制位圖的命令。該命令可識別繪制命令并使用高速緩存句柄來識別要繪制的位圖。當(dāng)客戶機收到繪制命令時,該客戶機使用對應(yīng)的高速緩存句柄來從其高速緩存中檢索要繪制的位圖。服務(wù)器可以使用隨機的高速緩存句柄生成方案。當(dāng)生成繪制命令和/或?qū)τ谠摾L制命令的位圖時,服務(wù)器可以分配一個唯一的高速緩存標(biāo)識符。例如,服務(wù)器可使用順序計數(shù)器來簡單地給將要被緩存的下一個位圖分配下一個可用的標(biāo)識符。對于在服務(wù)器和多個客戶機之間的不同會話,高速緩存可能不僅包括不同的位圖,而且服務(wù)器可能為同一位圖生成不同的高速緩存句柄。
發(fā)明內(nèi)容
本發(fā)明針對遠(yuǎn)程顯示協(xié)議中的變化來改善由在服務(wù)器和多個客戶機之間的一個或多個中間設(shè)備進行壓縮的效率。在一個示例部署中,多個服務(wù)器106可通過廣域網(wǎng)(WAN) 給多個客戶機102提供應(yīng)用。一個或多個WAN加速中間設(shè)備(例如WAN設(shè)備或設(shè)備200)可被部署在服務(wù)器(例如服務(wù)器106)和客戶機(例如客戶機102)之間。例如,一個WAN設(shè)備可被部署在提供服務(wù)器的數(shù)據(jù)中心的企業(yè)專用網(wǎng)上。該WAN設(shè)備200可連接到或連線到從數(shù)據(jù)中心的專用網(wǎng)的服務(wù)器106到WAN或公共網(wǎng)的連接。第二 WAN設(shè)備可內(nèi)聯(lián)地部署在從客戶機的LAN到WAN或公共網(wǎng)的客戶機側(cè)局域網(wǎng)(LAN)上。這些WAN設(shè)備200可共享壓縮歷史并且傳遞壓縮的數(shù)據(jù)以改善在服務(wù)器和客戶機之間的通信的帶寬和性能。服務(wù)器可通過代表客戶機在服務(wù)器上執(zhí)行應(yīng)用來給多個客戶機提供基于遠(yuǎn)程的計算。服務(wù)器可通過遠(yuǎn)程顯示協(xié)議向客戶機傳輸在執(zhí)行在服務(wù)器上的應(yīng)用的輸出中的變化。基于WAN的中間設(shè)備(例如設(shè)備200)可攔截這樣的通信并對數(shù)據(jù)進行壓縮。在不提供高速緩存句柄和在多個客戶機會話間的更多可重復(fù)的內(nèi)容的遠(yuǎn)程顯示協(xié)議版本的情況下,WAN加速器200不能根據(jù)需求加速這樣的遠(yuǎn)程顯示協(xié)議數(shù)據(jù)。在一些情況下,這些遠(yuǎn)程顯示協(xié)議對于跨越會話的同一位圖或字形使用不同的高速緩存句柄。例如,服務(wù)器將具有第一句柄的第一位圖傳遞給第一客戶機而對于第二客戶機,服務(wù)器傳遞具有不同于第一句柄的第二句柄的第一位圖。對于相同的位圖內(nèi)容使用不同的高速緩存句柄,如果跨越會話的高速緩存句柄是相同的,WAN加速器的壓縮歷史沒有那么多可重復(fù)的和可壓縮的數(shù)據(jù)。一方面,本發(fā)明自動檢測客戶機、服務(wù)器和/或中間設(shè)備的遠(yuǎn)程顯示協(xié)議能力以便確定是客戶機和服務(wù)器還是中間設(shè)備應(yīng)該壓縮遠(yuǎn)程顯示協(xié)議數(shù)據(jù),以及在一些情況下都應(yīng)進行壓縮。在一個方面,本發(fā)明涉及用于確定使中間設(shè)備對在客戶機和服務(wù)器之間通信的遠(yuǎn)程顯示協(xié)議進行壓縮的方法。該方法可包括由客戶機向服務(wù)器經(jīng)由第一中間設(shè)備和第二中間設(shè)備傳輸標(biāo)識客戶機的遠(yuǎn)程顯示協(xié)議能力的通信。服務(wù)器可從經(jīng)由第一中間設(shè)備和第二中間設(shè)備轉(zhuǎn)發(fā)的通信確定客戶機和第一中間設(shè)備和/或第二中間設(shè)備的遠(yuǎn)程顯示協(xié)議能力。服務(wù)器可響應(yīng)于所述確定來向客戶機傳輸標(biāo)識客戶機和服務(wù)器不對遠(yuǎn)程顯示協(xié)議通信進行壓縮的第二通信。在這些實施例中,中間設(shè)備進行壓縮。第一中間設(shè)備可對由服務(wù)器通過遠(yuǎn)程顯示協(xié)議向客戶機傳遞的數(shù)據(jù)進行壓縮,并將所壓縮的數(shù)據(jù)轉(zhuǎn)發(fā)到第二中間設(shè)備。第二中間設(shè)備可對所壓縮的數(shù)據(jù)進行解壓縮并將解壓縮的數(shù)據(jù)通過遠(yuǎn)程顯示協(xié)議轉(zhuǎn)發(fā)到客戶機。在一些實施例中,服務(wù)器可發(fā)起遠(yuǎn)程顯示協(xié)議的握手事務(wù)以便協(xié)商客戶機和服務(wù)器之間的能力。客戶機可經(jīng)由該通信標(biāo)識該客戶機支持的遠(yuǎn)程顯示協(xié)議的版本。第一中間設(shè)備和第二中間設(shè)備可各自修改該通信來標(biāo)識它們各自支持的遠(yuǎn)程顯示協(xié)議的版本。服務(wù)器可以向客戶機傳輸作為遠(yuǎn)程顯示協(xié)議的握手事務(wù)的一部分的第二通信以協(xié)商客戶機和服務(wù)器之間的能力。第一中間設(shè)備通過在客戶機和服務(wù)器之間的遠(yuǎn)程顯示協(xié)議的第一會話接收數(shù)據(jù)的第一幀并且將第一幀的一部分存儲到第一壓縮歷史。第二中間設(shè)備可接收由第一中間設(shè)備轉(zhuǎn)發(fā)的第一幀并將第一幀的部分存儲到第二壓縮歷史。第二壓縮歷史共享第一壓縮歷史的內(nèi)容。第一中間設(shè)備可以通過遠(yuǎn)程顯示協(xié)議的第二會話接收數(shù)據(jù)的第二幀并且使用在第一壓縮歷史中存儲的第一會話的第一幀的部分?jǐn)?shù)據(jù)來壓縮第二會話的第二幀的部分?jǐn)?shù)據(jù)。 連接到客戶機的第一網(wǎng)絡(luò)的第一中間設(shè)備通過不同于所述遠(yuǎn)程顯示協(xié)議的第二協(xié)議向連接到客戶機的第二網(wǎng)絡(luò)的第二中間設(shè)備傳遞所壓縮的數(shù)據(jù)。在又一個方面,本發(fā)明涉及用于確定使中間設(shè)備對在客戶機和服務(wù)器之間通信的遠(yuǎn)程顯示協(xié)議進行壓縮的方法。該方法可包括由服務(wù)器經(jīng)由第一中間設(shè)備和第二中間設(shè)備向客戶機傳輸標(biāo)識客戶機的遠(yuǎn)程顯示協(xié)議能力的通信??蛻魴C可從經(jīng)由第一中間設(shè)備和第二中間設(shè)備轉(zhuǎn)發(fā)的通信確定服務(wù)器以及第一中間設(shè)備和/或第二中間設(shè)備的其中一個的遠(yuǎn)程顯示協(xié)議能力??蛻魴C可響應(yīng)于所述確定來向服務(wù)器傳輸標(biāo)識客戶機和服務(wù)器不對遠(yuǎn)程顯示協(xié)議通信進行壓縮的第二通信。在這些實施例中,中間設(shè)備而不是客戶機和服務(wù)器可對遠(yuǎn)程顯示協(xié)議進行壓縮。第一中間設(shè)備可對由服務(wù)器向客戶機通過遠(yuǎn)程顯示協(xié)議傳遞的數(shù)據(jù)進行壓縮,并將所壓縮的數(shù)據(jù)轉(zhuǎn)發(fā)到第二中間設(shè)備。第二中間設(shè)備可對所壓縮的數(shù)據(jù)進行解壓縮并將解壓縮的數(shù)據(jù)通過遠(yuǎn)程顯示協(xié)議轉(zhuǎn)發(fā)到客戶機。在一些實施例中,客戶機可經(jīng)由該通信發(fā)起遠(yuǎn)程顯示協(xié)議的握手事務(wù)以便協(xié)商客戶機和服務(wù)器之間的能力。服務(wù)器可經(jīng)由該通信標(biāo)識由服務(wù)器支持的遠(yuǎn)程顯示協(xié)議的版本。第一中間設(shè)備和/或第二中間設(shè)備可修改所述通信以標(biāo)識由中間設(shè)備各自支持的遠(yuǎn)程顯示協(xié)議的版本??蛻魴C可以向服務(wù)器傳輸作為遠(yuǎn)程顯示協(xié)議的握手事務(wù)的一部分的第二通信以協(xié)商客戶機和服務(wù)器之間的能力。在一些方面,本發(fā)明使用基于內(nèi)容的句柄生成機制(稱為通用句柄)來為跨越遠(yuǎn)程顯示協(xié)議會話的諸如位圖的內(nèi)容生成相同的句柄。例如,服務(wù)器106可將預(yù)定的哈希 (hash)或算法應(yīng)用于位圖的內(nèi)容。這樣,相同的位圖將具有相同的句柄。然而,遠(yuǎn)程顯示協(xié)議可支持預(yù)定的位數(shù)以表示和存儲高速緩存句柄。例如,可以為高速緩存句柄分配2個字節(jié)或16位。使用有限的位數(shù)和由遠(yuǎn)程顯示協(xié)議使用的大量字形或位圖,對于句柄的基于內(nèi)容的機制將導(dǎo)致沖突。也就是說,使用16位的句柄,盡管位圖是不同的,但第一位圖和第二位圖可能會具有相同的所生成的句柄。這樣,盡管基于內(nèi)容的句柄有助于改善WAN加速器的壓縮效率,但由于基于句柄區(qū)分位圖,它妨礙遠(yuǎn)程顯示協(xié)議機制。在本發(fā)明中,遠(yuǎn)程顯示協(xié)議包括消歧能力以保持在跨越遠(yuǎn)程顯示會話和客戶機的可壓縮內(nèi)容的改善的可重復(fù)性,同時允許客戶機在具有相同句柄的位圖之間進行區(qū)別。由于服務(wù)器了解該服務(wù)器為其生成句柄的位圖,所以該服務(wù)器可給客戶機提供消歧向量或記錄。遠(yuǎn)程顯示協(xié)議可在幀或首部的任何部分包含消歧記錄??蛻魴C可使用該消歧記錄來在相同的但代表不同位圖的句柄間進行區(qū)別。用對遠(yuǎn)程顯示協(xié)議的修改來支持通用內(nèi)容句柄(UCH)和消歧,WAN中間設(shè)備可提供更好的壓縮性能同時保持服務(wù)器和客戶機的操作以將合適的變化顯示到客戶機的遠(yuǎn)程顯示。遠(yuǎn)程顯示協(xié)議中對消歧記錄的支持增加了該協(xié)議的開銷。然而,在部署中可存在于多個會話和多個客戶機之間可壓縮數(shù)據(jù)的增加,改善了在客戶機和服務(wù)器之間的WAN鏈路上的壓縮,從而克服了該開銷。在附圖和下文的描述中詳細(xì)闡述本發(fā)明的各種實施例的細(xì)節(jié)。
通過參考下述結(jié)合附圖的描述,本發(fā)明的前述和其它目的、方面、特征和優(yōu)點,將會更加明顯并更易于理解,其中圖IA是客戶機通過一個或多個網(wǎng)絡(luò)優(yōu)化設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的實施例的框圖;圖IB是客戶機通過一個或多個網(wǎng)絡(luò)優(yōu)化設(shè)備連同其他網(wǎng)絡(luò)設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的又一個實施例的框圖;圖IC是客戶機通過單獨部署的或者與其他網(wǎng)絡(luò)設(shè)備一起部署的單個網(wǎng)絡(luò)優(yōu)化設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的又一個實施例的框圖IE到IF是計算裝置的實施例的框圖;圖2A是用于處理客戶機和服務(wù)器之間的通信的設(shè)備的實施例的框圖;圖2B是部署設(shè)備的網(wǎng)絡(luò)優(yōu)化特征的客戶機和/或服務(wù)器的又一個實施例的框圖;圖3是使用網(wǎng)絡(luò)優(yōu)化特征與服務(wù)器通信的客戶機的實施例的框圖;圖4A是使用通用內(nèi)容句柄和消歧記錄處理遠(yuǎn)程顯示協(xié)議的通信的中間設(shè)備的實施例的框圖;圖4B是使用通用內(nèi)容句柄和消歧記錄壓縮遠(yuǎn)程顯示協(xié)議提供的數(shù)據(jù)的方法的實施例的流程圖;圖5是協(xié)商在客戶機和服務(wù)器之間經(jīng)由多個中間設(shè)備的遠(yuǎn)程顯示協(xié)議的消歧能力的系統(tǒng)和方法的實施例的框圖。從下面結(jié)合附圖所闡述的詳細(xì)描述,本發(fā)明的特征和優(yōu)點將更明顯,其中,同樣的參考標(biāo)記在全文中標(biāo)識相應(yīng)的元素。在附圖中,同樣的附圖標(biāo)記通常表示相同的、功能上相似的和/或結(jié)構(gòu)上相似的元素。
具體實施例方式為了閱讀下述各種具體實施例的描述,下述對于說明書的部分以及它們各自內(nèi)容的描述是有用的-A部分描述有益于實施本發(fā)明的實施例的網(wǎng)絡(luò)環(huán)境和計算環(huán)境;-B部分描述用于向遠(yuǎn)程用戶加速傳送計算環(huán)境的系統(tǒng)和設(shè)備架構(gòu)的實施例;-C部分描述用于加速客戶機和服務(wù)器之間的通信的客戶機代理的實施例;以及-D部分描述用于壓縮包括消歧能力的遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)的系統(tǒng)和方法的實施例。A、網(wǎng)絡(luò)和計算環(huán)境在討論設(shè)備和/或客戶機的系統(tǒng)和方法的實施例的細(xì)節(jié)之前,討論可在其中部署這樣的實施例的網(wǎng)絡(luò)和計算環(huán)境是有幫助的。現(xiàn)在參見圖1A,描述了網(wǎng)絡(luò)環(huán)境的實施例。概括來講,網(wǎng)絡(luò)環(huán)境包括經(jīng)由一個或多個網(wǎng)絡(luò)104、104’、104”與一個或多個服務(wù)器106a-106n(同樣總的稱為服務(wù)器106,或遠(yuǎn)程機器106)通信的一個或多個客戶機 10加-10211(同樣總的稱為本地機器102,或客戶機10 。在一些實施例中,客戶機102經(jīng)由一個或多個網(wǎng)絡(luò)優(yōu)化設(shè)備200、200’(總的稱為設(shè)備200)與服務(wù)器106通信。在一個實施例中,網(wǎng)絡(luò)優(yōu)化設(shè)備200被設(shè)計為、配置為或適合于優(yōu)化廣域網(wǎng)(WAN)網(wǎng)絡(luò)業(yè)務(wù)量。在一些實施例中,第一設(shè)備200與第二設(shè)備200’結(jié)合或協(xié)同工作來優(yōu)化網(wǎng)絡(luò)業(yè)務(wù)量。例如,第一設(shè)備200可位于分支機構(gòu)和WAN連接之間而第二設(shè)備200’位于WAN和公司局域網(wǎng)(LAN) 之間。設(shè)備200、200’可一起工作以優(yōu)化在分支機構(gòu)中的客戶機和公司LAN上的服務(wù)器之間的WAN相關(guān)的網(wǎng)絡(luò)業(yè)務(wù)量。雖然圖IA示出了在客戶機102和服務(wù)器106之間的網(wǎng)絡(luò)104、網(wǎng)絡(luò)104,和網(wǎng)絡(luò) 104” (總的稱為網(wǎng)絡(luò)104),但客戶機102和服務(wù)器106可以位于同一個的網(wǎng)絡(luò)104上。網(wǎng)絡(luò)104、104’、104”可以是相同類型的網(wǎng)絡(luò)或不同類型的網(wǎng)絡(luò)。網(wǎng)絡(luò)104可為局域網(wǎng)(LAN) (例如公司內(nèi)網(wǎng)),城域網(wǎng)(MAN),或者廣域網(wǎng)(WAN)(例如互聯(lián)網(wǎng)或萬維網(wǎng))。網(wǎng)絡(luò)104、104’、104”可為專用網(wǎng)絡(luò)或公網(wǎng)。在一個實施例中,網(wǎng)絡(luò)104’和網(wǎng)絡(luò)104”可為專用網(wǎng)而網(wǎng)絡(luò)104可為公網(wǎng)。在一些實施例中,網(wǎng)絡(luò)104可為專用網(wǎng)而網(wǎng)絡(luò)104’和/或網(wǎng)絡(luò)104”可為公網(wǎng)。在又一個實施例中,網(wǎng)絡(luò)104、104’、104”可都為專用網(wǎng)。在一些實施例中,客戶機 102可位于公司企業(yè)的分支機構(gòu)中,經(jīng)由網(wǎng)絡(luò)104上的WAN連接與位于公司數(shù)據(jù)中心中的公司LAN上的服務(wù)器106進行通信。網(wǎng)絡(luò)104可以是任何類型和/或形式的網(wǎng)絡(luò),并且可包括任何下列任何一種網(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 的拓?fù)淇蔀榭偩€型、星型或環(huán)型網(wǎng)絡(luò)拓?fù)?。網(wǎng)絡(luò)104以及網(wǎng)絡(luò)拓?fù)淇梢允潜绢I(lǐng)域普通技術(shù)人員所知的能夠支持此處描述的操作的任何這樣的網(wǎng)絡(luò)或網(wǎng)絡(luò)拓?fù)洹H鐖DIA所示,第一網(wǎng)絡(luò)優(yōu)化設(shè)備200被顯示在網(wǎng)絡(luò)104和104’之間,并且第二網(wǎng)絡(luò)優(yōu)化設(shè)備200’也在網(wǎng)絡(luò)104’和104”之間。在一些實施例中,設(shè)備200可位于網(wǎng)絡(luò)104 上。例如,公司企業(yè)可在分支機構(gòu)中部署設(shè)備200。在其它實施例中,設(shè)備200可以位于網(wǎng)絡(luò)104’上。在一些實施例中,設(shè)備200可以位于網(wǎng)絡(luò)104’或網(wǎng)絡(luò)104”上。例如,設(shè)備200 可位于公司的數(shù)據(jù)中心。在一個實施例中,設(shè)備200和200’在同一網(wǎng)絡(luò)上,在又一個實施例中,設(shè)備200和200’在不同的網(wǎng)絡(luò)上。在一個實施例中,設(shè)備200是用于加速、優(yōu)化或者以其他方式改善任何類型和形式的網(wǎng)絡(luò)業(yè)務(wù)量的性能、操作或服務(wù)質(zhì)量的裝置。在一些實施例中,設(shè)備200是一個性能增強代理。在其它實施例中,設(shè)備200是任何類型和形式的WAN優(yōu)化或加速裝置,有時也被稱為WAN優(yōu)化控制器。在一個實施例中,設(shè)備200是由位于佛羅里達(dá)州Ft. Lauderdale的 Citrix Systems公司出品的被稱為WANkaler的產(chǎn)品實施例中的任何一種。在其它實施例中,設(shè)備200包括由位于華盛頓州kattle的F5Networks公司出品的被稱為BIG-IP鏈路控制器和WANjet的產(chǎn)品實施例中的任何一種。在又一個實施例中,設(shè)備200包括由位于加利福尼亞州Sunnyvale的Juniper Netfforks公司出品的WX和WXC WAN加速裝置平臺中的任何一種。在一些實施例中,設(shè)備200包括由加利福尼亞州San Francisco的Riverbed "Technology公司出品的虹鱒(steelhead)系列WAN優(yōu)化設(shè)備中的任何一種。在其它實施例中,設(shè)備200包括由位于新澤西州Roseland的Expand Networks公司出品的WAN相關(guān)裝置中的任何一種。在一個實施例中,設(shè)備200包括由位于加利福尼亞州Cupertino的 Packeteer公司出品的任何一種WAN相關(guān)設(shè)備,例如由Packeteer提供的PacketShaper、 iShared和SkyX產(chǎn)品實施例。在又一個實施例中,設(shè)備200包括由位于加利福尼亞州San Jose的Cisco Systems公司出品的任何WAN相關(guān)設(shè)備和/或軟件,例如Cisco廣域網(wǎng)應(yīng)用服務(wù)軟件和網(wǎng)絡(luò)模塊以及廣域網(wǎng)弓I擎設(shè)備。在一些實施例中,設(shè)備200為分支機構(gòu)或遠(yuǎn)程辦公室提供應(yīng)用和數(shù)據(jù)加速業(yè)務(wù)。 在一個實施例中,設(shè)備200包括廣域文件服務(wù)(WAR5)的優(yōu)化。在又一個實施例中,設(shè)備200 加速文件的傳送,例如經(jīng)由通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議。在其它實施例中,設(shè)備200 在存儲器和/或存儲裝置中提供高速緩存來加速應(yīng)用和數(shù)據(jù)的傳送。在一個實施例中,設(shè)備200在任何級別的網(wǎng)絡(luò)堆棧或在任何的協(xié)議或網(wǎng)絡(luò)層中提供網(wǎng)絡(luò)業(yè)務(wù)量的壓縮。在又一個實施例中,設(shè)備200提供傳輸層協(xié)議優(yōu)化、流量控制、性能增強或修改和/或管理,以加速WAN連接上的應(yīng)用和數(shù)據(jù)的傳送。例如,在一個實施例中,設(shè)備200提供傳輸控制協(xié)議(TCP) 優(yōu)化。在其它實施例中,設(shè)備200提供對于任何會話或應(yīng)用層協(xié)議的優(yōu)化、流量控制、性能增強或修改和/或管理。在下文的B部分中討論設(shè)備200的架構(gòu)、操作和優(yōu)化技術(shù)的進一步的細(xì)節(jié)。仍參考圖1A,網(wǎng)絡(luò)環(huán)境可包括多個邏輯分組的服務(wù)器106。在這些實施例中,服務(wù)器的邏輯分組可以被稱為服務(wù)器群38。在這些實施例的一些中,服務(wù)器106可為地理上分散的。在一些情況中,群38可以作為單個實體被管理。在其它實施例中,服務(wù)器群38包括多個服務(wù)器群38。在一個實施例中,服務(wù)器群代表一個或多個客戶機102執(zhí)行一個或多個應(yīng)用程序。在每個群38中的服務(wù)器106可為不同種類。一個或多個服務(wù)器106可根據(jù)一種類型的操作系統(tǒng)平臺(例如,由華盛頓州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)連接或城域網(wǎng)(MAN)連接互聯(lián)。例如,群38可包括物理上位于不同大陸或大陸的不同區(qū)域、國家、州、城市、校園或房間的服務(wù)器106。如果使用局域網(wǎng)(LAN)連接或一些直連形式來連接服務(wù)器106,則可增加群 38中的服務(wù)器106間的數(shù)據(jù)傳送速度。服務(wù)器106可指文件服務(wù)器、應(yīng)用服務(wù)器、web服務(wù)器、代理服務(wù)器或者網(wǎng)關(guān)服務(wù)器。在一些實施例中,服務(wù)器106可以有作為應(yīng)用服務(wù)器或者作為主應(yīng)用服務(wù)器工作的能力。在一個實施例中,服務(wù)器106可包括活動目錄。客戶端102也可稱為客戶端節(jié)點或端點。在一些實施例中,客戶機102可以有作為客戶機節(jié)點尋求訪問服務(wù)器上的應(yīng)用的能力, 也可以有作為應(yīng)用服務(wù)器為其它客戶機10加-10211提供對寄載的應(yīng)用的訪問的能力。在一些實施例中,客戶端102與服務(wù)器106通信。在一個實施例中,客戶端102可與群38中的服務(wù)器106的其中一個直接通信。在又一個實施例中,客戶端102執(zhí)行程序鄰近應(yīng)用(program neighborhood application)以與群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)的地址信息所需的功能。在一個實施例中,服務(wù)器106提供web服務(wù)器的功能。在又一個實施例中,服務(wù)器 106a接收來自客戶機102的請求,將請求轉(zhuǎn)發(fā)到第二服務(wù)器106b,并使用來自服務(wù)器106b 對該請求的響應(yīng)來對客戶機102的請求進行響應(yīng)。在又一個實施例中,服務(wù)器106獲得客戶機102可用的應(yīng)用的列舉以及與由該應(yīng)用的列舉所識別的應(yīng)用的服務(wù)器106相關(guān)的地址信息。在又一個實施例中,服務(wù)器106使用web接口將對請求的響應(yīng)提供給客戶機102。在一個實施例中,客戶端102直接與服務(wù)器106通信以訪問所識別的應(yīng)用。在又一個實施例中,客戶機102接收由執(zhí)行服務(wù)器106上所識別的應(yīng)用而產(chǎn)生的諸如顯示數(shù)據(jù)的應(yīng)用輸出數(shù)據(jù)。與其他設(shè)備一起部署現(xiàn)在參考圖1B,描述了網(wǎng)絡(luò)環(huán)境的又一個實施例,在其中,網(wǎng)絡(luò)優(yōu)化設(shè)備200和諸如網(wǎng)關(guān)、防火墻或加速設(shè)備的一個或多個其他設(shè)備205、205’ (總的稱為設(shè)備205或第二設(shè)備20 部署在一起。例如,在一個實施例中,設(shè)備205是防火墻或安全設(shè)備,而設(shè)備205’ 是LAN加速設(shè)備。在一些實施例中,客戶機102可通過一個或多個第一設(shè)備200和一個或多個第二設(shè)備205與服務(wù)器106通信。一個或多個設(shè)備200和205可以位于在客戶機102和服務(wù)器106之間的網(wǎng)絡(luò)或網(wǎng)絡(luò)通信路徑中的任一點處。在一些實施例中,第二設(shè)備205可與第一設(shè)備200位于同一網(wǎng)絡(luò)104上。在其他實施例中,第二設(shè)備205可位于與第一設(shè)備200不同的網(wǎng)絡(luò)104上。在又一個實施例中,第一設(shè)備200和第二設(shè)備205在同一網(wǎng)絡(luò)上,例如網(wǎng)絡(luò)104,而第一設(shè)備 200,和第二設(shè)備205,在同一網(wǎng)絡(luò)上,例如網(wǎng)絡(luò)104,。在一個實施例中,第二設(shè)備205包括任何類型和形式的傳輸控制協(xié)議或傳輸后終止裝置,例如網(wǎng)關(guān)或防火墻裝置。在一個實施例中,設(shè)備205通過與客戶機建立第一傳輸控制協(xié)議連接并且與第二設(shè)備或服務(wù)器建立第二傳輸控制協(xié)議連接來終止傳輸控制協(xié)議。在又一個實施例中,設(shè)備205通過改變、管理或控制在客戶機和服務(wù)器或第二設(shè)備之間的傳輸控制協(xié)議連接的行為來終止傳輸控制協(xié)議。例如,設(shè)備205可以改變、排隊、轉(zhuǎn)發(fā)或傳輸網(wǎng)絡(luò)分組以有效地終止傳輸控制協(xié)議連接或者起到終止該連接的作用或模擬為終止該連接。在一些實施例中,第二設(shè)備205是性能增強代理。在一個實施例中,設(shè)備205提供虛擬專用網(wǎng)(VPN)連接。在一些實施例中,設(shè)備205提供安全套接字層VPN (SSL VPN)連接。 在其他實施例中,設(shè)備205提供基于Ipsec(互聯(lián)網(wǎng)協(xié)議安全)的VPN連接。在一些實施例中,設(shè)備205提供任何一個或多個下列功能壓縮、加速、負(fù)載平衡、交換/路由、緩存和傳輸控制協(xié)議(TCP)加速。在一個實施例中,設(shè)備205是由位于佛羅里達(dá)州Ft. Lauderdale的Citrix Systems公司出品的被稱為訪問網(wǎng)關(guān)、應(yīng)用防火墻、應(yīng)用網(wǎng)關(guān)或NetScaler的產(chǎn)品實施例中的任何一種。這樣,在一些實施例中,設(shè)備200包括執(zhí)行諸如SSL VPN連通、SSL卸載、交換 /負(fù)載平衡、域名服務(wù)解析、LAN加速和應(yīng)用防火墻的服務(wù)或功能的任何邏輯、功能、規(guī)則或操作。在一些實施例中,設(shè)備205提供在客戶機102和服務(wù)器106之間的SSL VPN連接。 例如,第一網(wǎng)絡(luò)104上的客戶端102請求建立到第二網(wǎng)絡(luò)104’上的服務(wù)器106的連接。在一些實施例中,第二網(wǎng)絡(luò)104”是不能從第一網(wǎng)絡(luò)104路由的。在其它實施例中,客戶端102 位于公用網(wǎng)絡(luò)104上,而服務(wù)器106位于專用網(wǎng)絡(luò)104’上,例如公司網(wǎng)。在一個實施例中, 客戶機代理攔截第一網(wǎng)絡(luò)104上的客戶機102的通信,加密該通信,并且經(jīng)第一傳輸層連接發(fā)送該通信到設(shè)備205。設(shè)備205將第一網(wǎng)絡(luò)104上的第一傳輸層連接與到第二網(wǎng)絡(luò)104 上的服務(wù)器106的第二傳輸層連接相關(guān)聯(lián)。設(shè)備205接收來自客戶端代理的被攔截的通信, 解密該通信,并且經(jīng)第二傳輸層連接發(fā)送該通信到第二網(wǎng)絡(luò)104上的服務(wù)器106。第二傳輸層連接可以是池化的傳輸層連接。在一個實施例中,設(shè)備205為在兩個網(wǎng)絡(luò)104和104’之間的客戶機102提供端到端安全傳輸層連接。在一個實施例中,設(shè)備205寄載虛擬專用網(wǎng)絡(luò)104上的客戶機102的內(nèi)部網(wǎng)互聯(lián)網(wǎng)協(xié)議或者h(yuǎn)tranetIP地址。客戶機102具有本地網(wǎng)絡(luò)標(biāo)識符,諸如第一網(wǎng)絡(luò)104上的互聯(lián)網(wǎng)協(xié)議(IP)地址和/或主機名稱。當(dāng)經(jīng)由設(shè)備205連接到第二網(wǎng)絡(luò)104’時,設(shè)備205在第二網(wǎng)絡(luò)104’上為客戶機102建立、分配或者以其它方式提供htranetn^內(nèi)部網(wǎng)IP), 其是諸如IP地址和/或主機名稱的網(wǎng)絡(luò)標(biāo)識符。使用客戶機的所建立的htranetIP,設(shè)備 205在第二或?qū)S镁W(wǎng)104’上監(jiān)聽并接收指向該客戶機102的任何通信。在一個實施例中, 設(shè)備205在第二專用網(wǎng)絡(luò)104上用作或者代表客戶機102。在一些實施例中,設(shè)備205具有加密引擎,所述加密引擎提供用于操控諸如SSL或 TLS的任何安全相關(guān)協(xié)議或其中涉及的任何功能的處理的邏輯、商業(yè)規(guī)則、功能或操作。例如,加密引擎加密并解密通過設(shè)備205傳輸?shù)木W(wǎng)絡(luò)分組,或其任何部分。加密引擎也可代表客戶機10加-10211、服務(wù)器106a-106n或設(shè)備200、205來設(shè)置或建立SSL或TLS連接。因此,加密引擎提供SSL處理的卸載和加速。在一個實施例中,加密引擎使用隧道協(xié)議來提供在客戶機102a-102n和服務(wù)器106a-106n間的虛擬專用網(wǎng)絡(luò)。在一些實施例中,加密引擎使用加密處理器。在其它實施例中,加密引擎包括運行在加密處理器260上的可執(zhí)行指令。在一些實施例中,設(shè)備205為在客戶機102和服務(wù)器106之間的通信提供下列一個或多個加速技術(shù)1)壓縮、幻解壓縮、幻傳輸控制協(xié)議池、4)傳輸控制協(xié)議多路復(fù)用、5) 傳輸控制協(xié)議緩沖、以及6)高速緩存。在一個實施例中,設(shè)備200通過打開與每一服務(wù)器 106的一個或者多個傳輸層連接并且維持這些連接以允許由客戶機經(jīng)由互聯(lián)網(wǎng)的重復(fù)數(shù)據(jù)訪問,來為服務(wù)器106緩解由重復(fù)打開和關(guān)閉到客戶機102的傳輸層連接所造成的大量處理負(fù)載。該技術(shù)此處稱為“連接池”。在一些實施例中,為了經(jīng)由池化的傳輸層連接無縫拼接從客戶機102到服務(wù)器 106的通信,設(shè)備205通過在傳輸層協(xié)議級修改序列號和確認(rèn)號來轉(zhuǎn)換或多路復(fù)用通信。這被稱為“連接多路復(fù)用”。在一些實施例中,不需要應(yīng)用層協(xié)議相互作用。例如,在到來的分組(即,自客戶機102接收的分組)的情況中,所述分組的源網(wǎng)絡(luò)地址被改變?yōu)樵O(shè)備205的輸出端口的網(wǎng)絡(luò)地址,而目的網(wǎng)絡(luò)地址被改為目的服務(wù)器的網(wǎng)絡(luò)地址。在發(fā)出的分組(即, 自服務(wù)器106接收的一個分組)的情況中,源網(wǎng)絡(luò)地址被從服務(wù)器106的網(wǎng)絡(luò)地址改變?yōu)樵O(shè)備205的輸出端口的網(wǎng)絡(luò)地址,而目的地址被從設(shè)備205的網(wǎng)絡(luò)地址改變?yōu)檎埱蟮目蛻魴C102的網(wǎng)絡(luò)地址。分組的序列號和確認(rèn)號也被轉(zhuǎn)換為到客戶機102的設(shè)備205的傳輸層連接上的由客戶機102所期待的序列號和確認(rèn)。在一些實施例中,傳輸層協(xié)議的分組校驗和被重新計算以計及這些轉(zhuǎn)換。在又一個實施例中,設(shè)備205為客戶機102和服務(wù)器106之間的通信提供交換或負(fù)載平衡功能。在一些實施例中,設(shè)備205根據(jù)層4有效載荷或應(yīng)用層請求數(shù)據(jù)來分配業(yè)務(wù)量并將客戶機請求定向到服務(wù)器106。在一個實施例中,盡管網(wǎng)絡(luò)分組的網(wǎng)絡(luò)層或者層2 標(biāo)識了目的服務(wù)器106,但設(shè)備205利用承載為傳輸層分組的有效載荷的數(shù)據(jù)和應(yīng)用信息來確定服務(wù)器106以便分發(fā)網(wǎng)絡(luò)分組。在一個實施例中,設(shè)備205的健康監(jiān)控程序監(jiān)控服務(wù)器的健康來確定分發(fā)客戶機請求到哪個服務(wù)器106。在一些實施例中,如果設(shè)備205檢測到某個服務(wù)器106不可用或者具有超過預(yù)定閾值的負(fù)載,設(shè)備205可以將客戶機請求定向或者分發(fā)到另一個服務(wù)器106。在一些實施例中,設(shè)備205用作域名服務(wù)(DNS)解析器或以其他方式提供對來自客戶機102的DNS請求的解析。在一些實施例中,設(shè)備攔截由客戶機102發(fā)送的DNS請求。 在一個實施例中,設(shè)備205以設(shè)備205的IP地址或其所寄載的IP地址來響應(yīng)客戶機的DNS 請求。在此實施例中,客戶機102把用于該域名的網(wǎng)絡(luò)通信發(fā)送到設(shè)備200。在又一個實施例中,設(shè)備200以第二設(shè)備200’的或其所寄載的IP地址來響應(yīng)客戶機的DNS請求。在一些實施例中,設(shè)備205使用由設(shè)備200確定的服務(wù)器106的IP地址來響應(yīng)客戶機的DNS請求。在又一個實施例中,設(shè)備205為客戶機102和服務(wù)器106之間的通信提供應(yīng)用防火墻功能。在一個實施例中,策略引擎四5’提供用于檢測和阻斷非法請求的規(guī)則。在一些實施例中,應(yīng)用防火墻防御拒絕服務(wù)(DoS)攻擊。在其它實施例中,設(shè)備檢查所攔截的請求的內(nèi)容,以識別和阻斷基于應(yīng)用的攻擊。在一些實施例中,規(guī)則/策略引擎包括用于提供對多個種類和類型的基于web或互聯(lián)網(wǎng)的脆弱點的保護的一個或多個應(yīng)用防火墻或安全控制策略,例如下列的一個或多個1)緩沖區(qū)泄出,2) CGI-BIN參數(shù)操縱,幻表單/隱藏字段操縱,4)強制瀏覽,5)C00kie或會話中毒,6)被破壞的訪問控制列表(ACLs)或弱密碼,7) 跨站腳本處理(XSS),8)命令注入,9) SQL注入,10)錯誤觸發(fā)敏感信息泄露,11)對加密的不安全使用,12)服務(wù)器錯誤配置,13)后門和調(diào)試選項,14)網(wǎng)站涂改,15)平臺或操作系統(tǒng)弱點,和16)零天攻擊。在一個實施例中,對下列情況的一種或多種,設(shè)備的防火墻以檢查或分析網(wǎng)絡(luò)通信的形式來提供HTML格式字段的保護1)返回所需的字段,幻不允許附加字段,3)只讀和隱藏字段強制(enforcement),4)下拉列表和單選按鈕字段的一致,以及5)格式字段最大長度強制。在一些實施例中,設(shè)備205的應(yīng)用防火墻確保cookie不被修改。在其它實施例中,設(shè)備205通過執(zhí)行合法的URL來防御強制瀏覽。在另一些實施例中,應(yīng)用防火墻設(shè)備205保護在網(wǎng)絡(luò)通信中包含的任何機密信息。設(shè)備205可以根據(jù)策略引擎的規(guī)則或策略來檢查或分析任一網(wǎng)絡(luò)通信以識別在網(wǎng)絡(luò)分組的任一字段中的任一機密信息。在一些實施例中,應(yīng)用防火墻在網(wǎng)絡(luò)通信中識別信用卡號、口令、社會保險號、姓名、病人代碼、聯(lián)系信息和年齡的一次或多次出現(xiàn)。網(wǎng)絡(luò)通信的編碼部分可以包括這些出現(xiàn)或機密信息?;谶@些出現(xiàn),在一個實施例中,應(yīng)用防火墻可以對網(wǎng)絡(luò)通信采取策略行動,諸如阻止發(fā)送網(wǎng)絡(luò)通信。在又一個實施例中,應(yīng)用防火墻可以重寫、移動或者以其它方式掩蓋該所識別的出現(xiàn)或者機密信息。盡管總的稱為網(wǎng)絡(luò)優(yōu)化或第一設(shè)備200和第二設(shè)備205,但第一設(shè)備200和第二設(shè)備205可以是相同類型和形式的設(shè)備。在一個實施例中,第二設(shè)備205可執(zhí)行與第一設(shè)備200相同的功能,或部分相同的功能,反之亦然。例如,第一設(shè)備200和第二設(shè)備205都可以提供加速技術(shù)。在一個實施例中,第一設(shè)備200可執(zhí)行LAN加速而第二設(shè)備205執(zhí)行 WAN加速,或者反之亦然。在又一個實施例中,第一設(shè)備200也可以與第二設(shè)備205 —樣是傳輸控制協(xié)議終止裝置。而且,盡管設(shè)備200和205被顯示為在網(wǎng)絡(luò)上單獨的裝置,但設(shè)備 200和/或設(shè)備205可以是客戶機102或服務(wù)器106的一部分?,F(xiàn)在參考圖1C,描述了用于部署設(shè)備200的網(wǎng)絡(luò)環(huán)境的其他實施例。在如圖IC的上部所描述的又一個實施例中,設(shè)備200可以部署為網(wǎng)絡(luò)104上單個設(shè)備或單個代理。例如,設(shè)備200可以被設(shè)計、構(gòu)建或調(diào)整來執(zhí)行此處所討論的WAN優(yōu)化技術(shù),而不需要第二協(xié)同設(shè)備200’。在如圖IC的下部所描述的其他實施例中,可以將單個設(shè)備200與一個或多個第二設(shè)備205部署在一起。例如,諸如Citrix WANkaler設(shè)備的WAN加速第一設(shè)備200可以與LAN加速或應(yīng)用防火墻第二設(shè)備205(例如Citrix NetScaler)部署在一起。計算裝置客戶機102、服務(wù)器106和設(shè)備200和205可以被部署為和/或執(zhí)行在任何類型和形式的計算裝置上,諸如能夠在任何類型和形式的網(wǎng)絡(luò)上通信并執(zhí)行此處描述的操作的計算機、網(wǎng)絡(luò)裝置或者設(shè)備。圖IC和ID描述了可用于實施客戶機102、服務(wù)器106或設(shè)備 200的實施例的計算裝置100的框圖。如圖IC和ID所示,每個計算裝置100包括中央處理單元101和主存儲器單元122。如圖IC所示,計算裝置100可以包括可視顯示裝置124、鍵盤1 和/或諸如鼠標(biāo)的指示裝置127。每個計算裝置100也可包括其它可選元件,例如一個或多個輸入/輸出裝置130a-130b (總的使用附圖標(biāo)記130表示),以及與中央處理單元 101通信的高速緩存存儲器140。中央處理單元101是響應(yīng)并處理從主存儲器單元122取出的指令的任何邏輯電路。在許多實施例中,中央處理單元由微處理器單元提供,例如由加利福尼亞州Mountain View的Intel公司制造的微處理器單元;由伊利諾伊州Schaumburg的Motorola公司制造的微處理器單元;由加利福尼亞州Santa Clara的Transmeta公司制造的微處理器單元;由紐約州 White Plains 的 hternational Business Machines 公司制造的 RS/6000 處理器; 或者由加利福尼亞州Sunnyvale的Advanced Micro Devices公司制造的微處理器單元。計算裝置100可以基于這些處理器中的任何一種,或者能夠按照這里所說明的那樣運行的任何其它處理器。主存儲器單元122可以是能夠存儲數(shù)據(jù)并允許微處理器101直接訪問任何存儲位置的一個或多個存儲器芯片,例如靜態(tài)隨機存取存儲器(SRAM)、突發(fā)SRAM或同步突發(fā)SRAM (BSRAM)、動態(tài)隨機存取存儲器DRAM、快速頁模式DRAM (FPM DRAM)、增強型 DRAM (EDRAM)、擴展數(shù)據(jù)輸出RAM (EDO RAM)、擴展數(shù)據(jù)輸出DRAM (EDO DRAM)、突發(fā)式擴展數(shù)據(jù)輸出 DRAM (BED0 DRAM)、增強型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PClOO SDRAM、雙數(shù)據(jù)速率 SDRAM (DDR SDRAM)、增強型 SRAM (ESDRAM)、同步鏈路 DRAM (SLDRAM)、直接Rambus DRAM (DRDRAM)或鐵電RAM (FRAM)。主存儲器122可以基于上述存儲芯片的任何一種,或者能夠像這里所說明的那樣運行的任何其它可用存儲芯片。在圖IC中所示的實施例中,處理器101通過系統(tǒng)總線150 (在下面進行更詳細(xì)的描述)與主存儲器122進行通信。圖IC描述了在其中處理器通過存儲器端口 103直接與主存儲器122通信的計算裝置 100的實施例。例如,在圖ID中,主存儲器122可以是DRDRAM。圖ID描述了在其中主處理器101通過第二總線與高速緩存存儲器140直接通信的實施例,第二總線有時也稱為背側(cè)總線。其他實施例中,主處理器101使用系統(tǒng)總線150 和高速緩存存儲器140通信。高速緩存存儲器140通常有比主存儲器122更快的響應(yīng)時間,并且通常由SRAM、BSRAM或EDRAM提供。在圖IF中所示的實施例中,處理器101通過本地系統(tǒng)總線150與多個1/0裝置130進行通信??梢允褂酶鞣N不同的總線將中央處理單元101連接到任何1/0裝置130,所述總線包括VESA VL總線、ISA總線、EISA總線、微通道架構(gòu)(MCA)總線、PCI總線、PCI-X總線、PCI-Express總線或NuBus。對于1/0裝置是視頻顯示器124的實施例,處理器101可以使用高級圖形端口(AGP)與顯示器IM通信。圖ID 說明了主處理器101通過超傳輸(HyperTransport)、快速1/0或者InfiniBand直接與1/0 裝置130通信的計算機100的一個實施例。圖ID還描述了在其中混合本地總線和直接通信的實施例處理器101使用本地互連總線與1/0裝置130進行通信,同時直接與1/0裝置 130進行通信。計算裝置100可以支持任何適當(dāng)?shù)陌惭b裝置116,例如用于接收像3. 5英寸、5. 25英寸磁盤或ZIP磁盤這樣的軟盤的軟盤驅(qū)動器、CD-ROM驅(qū)動器、CD-R/RW驅(qū)動器、DVD-ROM 驅(qū)動器、多種格式的磁帶驅(qū)動器、USB裝置、硬盤驅(qū)動器或適于安裝像任何客戶機代理120 或其部分的軟件和程序的任何其它裝置。計算裝置100還可以包括存儲裝置128,諸如一個或者多個硬盤驅(qū)動器或者獨立磁盤冗余陣列,用于存儲操作系統(tǒng)和其它相關(guān)軟件,以及用于存儲諸如涉及客戶機代理120的任何程序的應(yīng)用軟件程序?;蛘?,可以使用安裝裝置116 的任何一種作為存儲裝置128。此外,操作系統(tǒng)和軟件可從例如可引導(dǎo)CD的可引導(dǎo)介質(zhì)運行,諸如KNOPPIX ,一種用于GNU/Linux的可引導(dǎo)⑶,該可引導(dǎo)⑶可自knoppix. net作為GNU/Linux分發(fā)獲得。此外,計算裝置100可以包括通過多種連接接口到局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或互聯(lián)網(wǎng)的網(wǎng)絡(luò)接口 118,所述多種連接包括但不限于標(biāo)準(zhǔn)電話線路、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)絡(luò)卡、卡總線網(wǎng)絡(luò)適配器、無線網(wǎng)絡(luò)適配器、USB網(wǎng)絡(luò)適配器、調(diào)制解調(diào)器或適用于將計算裝置 100接口到能夠通信并執(zhí)行這里所說明的操作的任何類型的網(wǎng)絡(luò)的任何其它設(shè)備。計算裝置100中可以包括各種I/O裝置130a-130n。輸入裝置包括鍵盤、鼠標(biāo)、觸控板、軌跡球、麥克風(fēng)和繪圖板。輸出裝置包括視頻顯示器、揚聲器、噴墨打印機、激光打印機和熱升華打印機。如圖IC所示,I/O裝置130可以由I/O控制器123控制。I/O控制器可以控制一個或多個I/O裝置,例如鍵盤1 和指示裝置127 (如鼠標(biāo)或光筆)。此外,I/O裝置還可以為計算裝置100提供存儲裝置1 和/或安裝介質(zhì)116。在其它實施例中,計算裝置100可以提供USB連接以接收手持USB存儲裝置,例如由位于加利福尼亞州Los Alamitos,的Twintech Industry公司生產(chǎn)的設(shè)備的USB閃存驅(qū)動器線。在一些實施例中,計算裝置100可以包括多個顯示裝置1對『12如或與其相連,這些顯示裝置各自可以是相同或不同的類型和/或形式。因而,任何一種I/O裝置130a-130n 和/或I/O控制器123可以包括任一類型和/或形式的適當(dāng)?shù)挠布④浖蛴布蛙浖慕M合,以支持、允許或提供通過計算裝置100連接和使用多個顯示裝置12如-1對11。例如, 計算裝置100可以包括任何類型和/或形式的視頻適配器、視頻卡、驅(qū)動器和/或庫,以與顯示裝置1對『12如接口、通信、連接或以其他方式使用顯示裝置。在一個實施例中,視頻適配器可以包括多個連接器以與多個顯示裝置1對『12如接口。在其它實施例中,計算裝置100可以包括多個視頻適配器,每個視頻適配器與顯示裝置12如-1對11中的一個或多個連接。在一些實施例中,計算裝置100的操作系統(tǒng)的任一部分都可以被配置用于使用多個顯示器12如-1對11。在其它實施例中,顯示裝置12^-124n中的一個或多個可以由一個或多個其它計算裝置提供,諸如例如通過網(wǎng)絡(luò)與計算裝置100連接的計算裝置IOOa和100b。 這些實施例可以包括被設(shè)計和構(gòu)造為將另一個計算機的顯示裝置用作計算裝置100的第二顯示裝置12 的任一類型的軟件。本領(lǐng)域的普通技術(shù)人員會認(rèn)識和理解可以將計算裝置100配置成具有多個顯示裝置12如-1對11的各種方法和實施例。在進一步的實施例中,I/O裝置130可以是系統(tǒng)總線150和外部通信總線之間的橋170,所述外部通信總線例如USB總線、Apple桌面總線、RS-232串行連接、SCSI總線、 Fireffire總線、Fireffire800總線、以太網(wǎng)總線、AppleTalk總線、千兆位以太網(wǎng)總線、異步傳輸模式總線、HIPPI總線、超級HIPPI總線、SerialPlus總線、SCI/LAMP總線、光纖信道總線或串行SCSI總線。圖IC和ID中描述的那類計算裝置100通常在控制任務(wù)的調(diào)度和對系統(tǒng)資源的訪問的操作系統(tǒng)的控制下操作。計算裝置100可以運行任何操作系統(tǒng),如Microsoft Windows操作系統(tǒng),不同發(fā)行版本的Unix和Linux操作系統(tǒng),用于Macintosh計算機的任何版本的MAC OS ,任何嵌入式操作系統(tǒng),任何實時操作系統(tǒng),任何開源操作系統(tǒng),任何專有操作系統(tǒng),任何用于移動計算裝置的操作系統(tǒng),或者任何其它能夠在計算裝置上運行并完成這里所述操作的操作系統(tǒng)。典型的操作系統(tǒng)包括WIND0WS 3. x.ffINDOffS 95,WINDOWS 98,WINDOWS 2000, WINDOWS NT 3. 51、WINDOWS NT 4. 0、WINDOWS CE 禾口 WINDOWS XP,所有這些均由位于華盛頓州Redmond的微軟公司出品;由位于加利福尼亞州Cupertino的蘋果計算機出品的MacOS ;由位于紐約州Armonk的國際商業(yè)機器公司出品的OS/2 ;以及由位于猶他州Mlt Lake City的Caldera公司發(fā)布的可免費使用的Linux操作系統(tǒng)或者任何類型和/或形式的Unix操作系統(tǒng),以及其它。在其它實施例中,計算裝置100可以有符合該裝置的不同的處理器、操作系統(tǒng)和輸入設(shè)備。例如,在一個實施例中,計算機100是由I^alm公司出品的Treo 180、270、1060、600 或650智能電話。在該實施例中,Treo智能電話在I3aImOS操作系統(tǒng)的控制下操作,并包括指示筆輸入裝置以及五向?qū)Ш窖b置。此外,計算裝置100可以是任何工作站、桌面計算機、 膝上型或筆記本計算機、服務(wù)器、手持計算機、移動電話、任何其它計算機、或能夠通信并有足夠的處理器能力和存儲容量以執(zhí)行此處所述的操作的其它形式的計算或者電信裝置。B、系統(tǒng)和設(shè)備架構(gòu)現(xiàn)在參考圖2A,描述了用于傳送和/或操作客戶機上的計算環(huán)境的設(shè)備200的系統(tǒng)環(huán)境和架構(gòu)的實施例。在一些實施例中,服務(wù)器106包括用于向一個或多個客戶機102 傳送計算環(huán)境或應(yīng)用和/或數(shù)據(jù)文件的應(yīng)用傳送系統(tǒng)四0??偟膩碚f,客戶機102經(jīng)由網(wǎng)絡(luò) 104和設(shè)備200與服務(wù)器106通信。例如,客戶機102可駐留在公司的遠(yuǎn)程辦公室里,例如分支機構(gòu),而服務(wù)器106可駐留在公司數(shù)據(jù)中心??蛻魴C102包括客戶機代理120以及計算環(huán)境215。計算環(huán)境215可執(zhí)行或操作用于訪問、處理或使用數(shù)據(jù)文件的應(yīng)用。可經(jīng)由設(shè)備200和/或服務(wù)器106傳送計算環(huán)境215、應(yīng)用和/或數(shù)據(jù)文件。在一些實施例中,設(shè)備200向客戶機102加速傳送計算環(huán)境215或者其任何部分。 在一個實施例中,設(shè)備200通過應(yīng)用傳送系統(tǒng)290加速計算環(huán)境15的傳送。例如,可使用此處描述的實施例來加速從公司中央數(shù)據(jù)中心到遠(yuǎn)程用戶位置(例如公司的分支機構(gòu))的流應(yīng)用(streaming application)及該應(yīng)用可處理的數(shù)據(jù)文件的傳送。在又一個實施例中, 設(shè)備200加速客戶機102和服務(wù)器106之間的傳輸層業(yè)務(wù)量。在又一個實施例中,設(shè)備200 控制、管理、或調(diào)整傳輸層協(xié)議以便加速計算環(huán)境的傳送。在一些實施例中,設(shè)備200使用緩存和/或壓縮技術(shù)來加速計算環(huán)境的傳輸。在一些實施例中,基于多個執(zhí)行方法并且基于通過策略引擎295所應(yīng)用的任一驗證和授權(quán)策略,應(yīng)用傳送管理系統(tǒng)290提供將計算環(huán)境傳送到遠(yuǎn)程的或者其它的用戶的桌面的應(yīng)用傳送技術(shù)。使用這些技術(shù),遠(yuǎn)程用戶可以從任何網(wǎng)絡(luò)連接裝置100獲取計算環(huán)境并且訪問存儲應(yīng)用和數(shù)據(jù)文件的服務(wù)器。在一個實施例中,應(yīng)用傳送系統(tǒng)290可駐留在服務(wù)器106上或在其上執(zhí)行。在又一個實施例中,應(yīng)用傳送系統(tǒng)290可駐留在多個服務(wù)器 106a-106n上或在其上執(zhí)行。在一些實施例中,應(yīng)用傳送系統(tǒng)290可在服務(wù)器群38內(nèi)執(zhí)行。在一個實施例中,執(zhí)行應(yīng)用傳送系統(tǒng)290的服務(wù)器106也可存儲或提供應(yīng)用和數(shù)據(jù)文件。在又一個實施例中,一個或多個服務(wù)器106的第一組可執(zhí)行應(yīng)用傳送系統(tǒng)四0,而不同的服務(wù)器106η可存儲或提供應(yīng)用和數(shù)據(jù)文件。在一些實施例中,應(yīng)用傳送系統(tǒng)四0、應(yīng)用和數(shù)據(jù)文件中的每一個可駐留或位于不同的服務(wù)器。在又一個實施例中,應(yīng)用傳送系統(tǒng)四0的任何部分可駐留、執(zhí)行、或被存儲于或分發(fā)到設(shè)備200或多個設(shè)備??蛻魴C102可包括用于執(zhí)行使用或處理數(shù)據(jù)文件的應(yīng)用的計算環(huán)境215。客戶機 102可通過網(wǎng)絡(luò)104、104’和設(shè)備200請求來自服務(wù)器106的應(yīng)用和數(shù)據(jù)文件。在一個實施例中,設(shè)備200可以將來自客戶機102的請求轉(zhuǎn)發(fā)到服務(wù)器106。例如,客戶機102可能不具有本地存儲或者本地可訪問的應(yīng)用和數(shù)據(jù)文件。響應(yīng)于請求,應(yīng)用傳送系統(tǒng)290和/或服務(wù)器106可以傳送應(yīng)用和數(shù)據(jù)文件到客戶機102。例如,在一個實施例中,服務(wù)器106可以把應(yīng)用作為應(yīng)用流來傳輸,以在客戶機102上的計算環(huán)境215中操作。在一些實施例中,應(yīng)用傳送系統(tǒng)290包括Citrix Systems公司的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微軟公司開發(fā)的Microsoft Windows終端服務(wù)中的任何一個。在一個實施例中,應(yīng)用傳送系統(tǒng)290 可以通過遠(yuǎn)程顯示協(xié)議或者以其它方式通過基于遠(yuǎn)程計算或者基于服務(wù)器計算來傳送一個或者多個應(yīng)用到客戶機102或者用戶。在又一個實施例中,應(yīng)用傳送系統(tǒng)290可以通過應(yīng)用流來傳送一個或者多個應(yīng)用到客戶機或者用戶。在一個實施例中,應(yīng)用傳送系統(tǒng)290包括策略引擎四5,其用于控制和管理對應(yīng)用的訪問、應(yīng)用執(zhí)行方法的選擇以及應(yīng)用的傳送。在一些實施例中,策略引擎295確定用戶或者客戶機102可以訪問的一個或者多個應(yīng)用。在又一個實施例中,策略引擎295確定應(yīng)用應(yīng)該如何被傳送到用戶或者客戶機102,例如執(zhí)行的方法。在一些實施例中,應(yīng)用傳送系統(tǒng) 290提供多個傳送技術(shù),從中選擇應(yīng)用執(zhí)行的方法,例如基于服務(wù)器的計算、本地流式傳輸或傳送應(yīng)用給客戶機120以用于本地執(zhí)行。在一個實施例中,客戶機102請求應(yīng)用程序的執(zhí)行而包括服務(wù)器106的應(yīng)用傳送系統(tǒng)290選擇執(zhí)行應(yīng)用程序的方法。在一些實施例中,服務(wù)器106從客戶機102接收證書。 在又一個實施例中,服務(wù)器106從客戶機102接收對于可用應(yīng)用的列舉的請求。在一個實施例中,響應(yīng)該請求或者證書的接收,應(yīng)用傳送系統(tǒng)290列舉對于客戶機102可用的多個應(yīng)用程序。應(yīng)用傳送系統(tǒng)290接收執(zhí)行所列舉的應(yīng)用的請求。應(yīng)用傳送系統(tǒng)290選擇預(yù)定數(shù)量的方法之一來執(zhí)行所列舉的應(yīng)用,例如響應(yīng)策略引擎的策略。應(yīng)用傳送系統(tǒng)290可以選擇執(zhí)行應(yīng)用的方法,使得客戶機102接收通過執(zhí)行服務(wù)器106上的應(yīng)用程序所產(chǎn)生的應(yīng)用輸出數(shù)據(jù)。應(yīng)用傳送系統(tǒng)290可以選擇執(zhí)行應(yīng)用的方法,使得本地機器102在檢索包括應(yīng)用的多個應(yīng)用文件之后本地執(zhí)行應(yīng)用程序。在又一個實施例中,應(yīng)用傳送系統(tǒng)290可以選擇執(zhí)行應(yīng)用的方法,以通過網(wǎng)絡(luò)104流式傳輸應(yīng)用到客戶機102??蛻魴C102可以執(zhí)行、操作或者以其它方式提供應(yīng)用,所述應(yīng)用可為任何類型和/ 或形式的軟件、程序或者可執(zhí)行指令,例如任何類型和/或形式的web瀏覽器、基于web的客戶機、客戶機-服務(wù)器應(yīng)用、瘦客戶端計算客戶機、ActiveX控件、或者Java程序、或者可以在客戶機102上執(zhí)行的任何其它類型和/或形式的可執(zhí)行指令。在一些實施例中,應(yīng)用可以是代表客戶機102在服務(wù)器106上執(zhí)行的基于服務(wù)器或者基于遠(yuǎn)程的應(yīng)用。在一個實施例中,服務(wù)器106可以使用任何瘦-客戶端或遠(yuǎn)程顯示協(xié)議來顯示輸出到客戶機102,所述瘦-客戶端或遠(yuǎn)程顯示協(xié)議例如由位于佛羅里達(dá)州Ft. Lauderdale的Citrix Systems 公司出品的獨立計算架構(gòu)(ICA)協(xié)議或由位于華盛頓州Redmond的微軟公司出品的遠(yuǎn)程桌面協(xié)議(RDP)。應(yīng)用可使用任何類型的協(xié)議,并且它可為,例如,HTTP客戶機、FTP客戶機、 Oscar客戶機或Telnet客戶機。在其它實施例中,應(yīng)用包括和VoIP通信相關(guān)的任何類型的軟件,例如軟IP電話。在進一步的實施例中,應(yīng)用包括涉及到實時數(shù)據(jù)通信的任一應(yīng)用,例如用于流式傳輸視頻和/或音頻的應(yīng)用。在一些實施例中,服務(wù)器106或服務(wù)器群38可運行一個或多個應(yīng)用,例如提供瘦客戶端計算或遠(yuǎn)程顯示表示應(yīng)用的應(yīng)用。在一個實施例中,服務(wù)器106或服務(wù)器群38 作為一個應(yīng)用來執(zhí)行Citrix Systems Inc.的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微軟公司開發(fā)的Microsoft Windows終端服務(wù)中的任何一個。在一個實施例中,該應(yīng)用是位于佛羅里達(dá)州R)rt Lauderdale的Citrix Systems Inc.開發(fā)的ICA客戶機。在其它實施例中,該應(yīng)用包括由位于華盛頓州Redmond的Microsoft公司開發(fā)的遠(yuǎn)程桌面(RDP)客戶機。另外,服務(wù)器106 可以運行一個應(yīng)用,例如,其可以是提供電子郵件服務(wù)的應(yīng)用服務(wù)器,例如由位于華盛頓州 Redmond 的 Microsoft 公司制造的 Microsoft Exchange, web 或 Internet 月艮務(wù)器,或者桌面共享服務(wù)器,或者協(xié)作服務(wù)器。在一些實施例中,任一應(yīng)用可以包括任一類型的所寄載的服務(wù)或產(chǎn)品,例如位于加利福尼亞州Santa Barbara的Citrix Online Division提供的 Go^ToMeeting ,位于加利福尼亞州Santa Clara的WebEx Inc.提供的WebEx ,或者位于華盛頓州 Redmond 的 Microsoft 公司提供的 Microsoft Office Live Meeting。示例設(shè)備架構(gòu)圖2A也示出設(shè)備200的示例實施例。僅通過示例來提供圖2A的設(shè)備200的架構(gòu)并且不意于以任一方式受限。設(shè)備200可包括任何類型和形式的計算裝置100,例如上文結(jié)合圖ID和IE所討論的任何元件或部分。概括來講,設(shè)備200具有用于經(jīng)由網(wǎng)絡(luò)104接收和/或傳輸通信的一個或多個網(wǎng)絡(luò)堆棧^7A-267N和一個或多個網(wǎng)絡(luò)端口 ^6A-266N。設(shè)備200還具有用于優(yōu)化、加速或以其他方式改善經(jīng)過設(shè)備200的任何網(wǎng)絡(luò)業(yè)務(wù)量或通信的質(zhì)量、操作或性能。設(shè)備200包括操作系統(tǒng)或在操作系統(tǒng)的控制之下。設(shè)備200的操作系統(tǒng)可以是任何類型和/或形式的Unix操作系統(tǒng),盡管本發(fā)明并未這樣限制。這樣,設(shè)備200可以運行任何操作系統(tǒng),如任何版本的Microsoft Windows操作系統(tǒng)、不同版本的Unix和Linux操作系統(tǒng)、用于Macintosh計算機的任何版本的Mac OS 、任何的嵌入式操作系統(tǒng)、任何的網(wǎng)絡(luò)操作系統(tǒng)、任何的實時操作系統(tǒng)、任何的開放源操作系統(tǒng)、任何的專用操作系統(tǒng)、用于移動計算裝置或網(wǎng)絡(luò)裝置的任何操作系統(tǒng)、或者能夠運行在設(shè)備200上并執(zhí)行此處所描述的操作的任何其它操作系統(tǒng)。設(shè)備200的操作系統(tǒng)分配、管理或以其他方式將可用的系統(tǒng)存儲器分離到被稱為內(nèi)核或系統(tǒng)空間和用戶或應(yīng)用空間中。通常保留內(nèi)核空間用于運行內(nèi)核,所述內(nèi)核包括任何設(shè)備驅(qū)動器,內(nèi)核擴展或其他內(nèi)核相關(guān)軟件。就像本領(lǐng)域技術(shù)人員所知的,內(nèi)核是操作系統(tǒng)的核心,并提供對設(shè)備200的資源和硬件相關(guān)的元件的訪問、控制和管理。根據(jù)設(shè)備200 的實施例,內(nèi)核空間也包括與網(wǎng)絡(luò)優(yōu)化引擎250或其任何部分協(xié)同工作的多個網(wǎng)絡(luò)服務(wù)或進程。另外,內(nèi)核的實施例將依賴于通過設(shè)備200安裝、配置或以其他方式使用的操作系統(tǒng)的實施例。與內(nèi)核空間不同,用戶空間是由用戶模式應(yīng)用或以其他方式運行于用戶模式的程序所使用的操作系統(tǒng)的存儲區(qū)域或部分。用戶模式應(yīng)用不能直接訪問內(nèi)核空間而使用服務(wù)調(diào)用以訪問內(nèi)核服務(wù)。操作系統(tǒng)使用用戶或應(yīng)用空間來執(zhí)行或運行應(yīng)用以及供應(yīng)用戶級程序、服務(wù)、進程和/或任務(wù)。設(shè)備200具有一個或多個網(wǎng)絡(luò)端口沈6,用于通過網(wǎng)絡(luò)104傳輸和接收數(shù)據(jù)。網(wǎng)絡(luò)端口 266提供在計算裝置和網(wǎng)絡(luò)104或另一個裝置100之間的物理和/或邏輯接口,用于傳輸和接收網(wǎng)絡(luò)通信。網(wǎng)絡(luò)端口 266的類型和形式取決于網(wǎng)絡(luò)的類型和形式以及用于連接到網(wǎng)絡(luò)的介質(zhì)的類型。而且,網(wǎng)絡(luò)端口 266和網(wǎng)絡(luò)堆棧沈7的、為其供應(yīng)的或者其使用的任何軟件可運行在內(nèi)核空間或用戶空間。在一個實施例中,設(shè)備200具有一個網(wǎng)絡(luò)堆棧沈7,例如基于TCP/IP的堆棧,用于在網(wǎng)絡(luò)105上與客戶機102和/或服務(wù)器106通信。在一個實施例中,網(wǎng)絡(luò)堆棧267用于與諸如網(wǎng)絡(luò)104第一網(wǎng)絡(luò)以及第二網(wǎng)絡(luò)104’通信。在又一個實施例中,設(shè)備200可具有兩個或多個網(wǎng)絡(luò)堆棧,例如第一網(wǎng)絡(luò)堆棧和第二網(wǎng)絡(luò)堆棧267N。第一網(wǎng)絡(luò)堆??膳c第一網(wǎng)絡(luò)端口聯(lián)合使用以在第一網(wǎng)絡(luò)104上通信。第二網(wǎng)絡(luò)堆??膳c第二網(wǎng)絡(luò)端口 聯(lián)合使用以在第二網(wǎng)絡(luò)104’上通信。在一個實施例中,網(wǎng)絡(luò)堆棧267包括用于為由設(shè)備200產(chǎn)生的一個或多個網(wǎng)絡(luò)分組進行排隊的一個或多個緩沖器。網(wǎng)絡(luò)堆棧267可包括任何類型和形式的軟件、或硬件或其組合,用于提供與網(wǎng)絡(luò)的連接和通信。在一個實施例中,網(wǎng)絡(luò)堆棧267包括用于網(wǎng)絡(luò)協(xié)議組的軟件實現(xiàn)。網(wǎng)絡(luò)堆棧267可包括一個或多個網(wǎng)絡(luò)層,例如為本領(lǐng)域技術(shù)人員所公認(rèn)和了解的開放式系統(tǒng)互聯(lián) (OSI)通信模型的任何網(wǎng)絡(luò)層。這樣,網(wǎng)絡(luò)堆棧267可包括用于下列OSI模型的任何一層的任何類型和形式的協(xié)議1)物理鏈路層;2)數(shù)據(jù)鏈路層;3)網(wǎng)絡(luò)層;4)傳輸層;5)會話層);6)表示層,以及7)應(yīng)用層。在一個實施例中,網(wǎng)絡(luò)堆棧267可包括在互聯(lián)網(wǎng)協(xié)議(IP) 的網(wǎng)絡(luò)層協(xié)議上的傳輸控制協(xié)議(TCP),通常稱為TCP/IP。在一些實施例中,可在以太網(wǎng)協(xié)議上承載TCP/IP協(xié)議,所述以太網(wǎng)協(xié)議可包括IEEE廣域網(wǎng)(WAN)或局域網(wǎng)(LAN)協(xié)議的任何族,例如被IEEE802. 3覆蓋的這些協(xié)議。在一些實施例中,網(wǎng)絡(luò)堆棧267包括任何類型和形式的無線協(xié)議,例如IEEE 802. 11和/或移動互聯(lián)網(wǎng)協(xié)議??紤]到基于TCP/IP的網(wǎng)絡(luò),可使用任何基于TCP/IP的協(xié)議,包括消息應(yīng)用編程接口(MAPI) (email)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、通用互聯(lián)網(wǎng)文件系統(tǒng) (CIFS)協(xié)議(文件傳輸)、獨立計算架構(gòu)(ICA)協(xié)議、遠(yuǎn)程桌面協(xié)議(RDP)、無線應(yīng)用協(xié)議 (WAP)、移動IP協(xié)議,以及IP語音(VoIP)協(xié)議。在又一個實施例中,網(wǎng)絡(luò)堆棧267包括任何類型和形式的傳輸控制協(xié)議,諸如修改的傳輸控制協(xié)議,例如事務(wù)TCP (T/TCP),帶有選擇確認(rèn)的TCP (TCP-SACK),帶有大窗口的TCP (TCP-Lff),例如TCP-Vegas協(xié)議的擁塞預(yù)測協(xié)議, 以及TCP欺騙協(xié)議。在其他實施例中,網(wǎng)絡(luò)堆棧267可使用諸如IP上UDP的任何類型和形式的用戶數(shù)據(jù)報協(xié)議(UDP),例如用于語音通信或?qū)崟r數(shù)據(jù)通信。另外,網(wǎng)絡(luò)堆棧267可包括支持一個或多個層的一個或多個網(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ò)堆棧267的任何網(wǎng)絡(luò)驅(qū)動器可被定制、修改或調(diào)整以提供支持此處描述的任何技術(shù)網(wǎng)絡(luò)堆棧267的定制或修改部分。
在一個實施例中,設(shè)備200使用單個網(wǎng)絡(luò)堆棧267來提供或維持在客戶機102和服務(wù)器106之間的傳輸層連接。在一些實施例中,設(shè)備200通過改變、管理或控制在客戶機和服務(wù)器之間的傳輸控制協(xié)議連接的行為來有效地終止傳輸層連接。在這些實施例中, 設(shè)備200可使用單個網(wǎng)絡(luò)堆棧沈7。在其他實施例中,設(shè)備200終止第一傳輸層連接,例如客戶機102的TCP連接,并建立客戶機102使用的或代表客戶機102的到服務(wù)器106的第二傳輸層連接,例如,終止在設(shè)備200和服務(wù)器106的第二傳輸層連接??赏ㄟ^單個網(wǎng)絡(luò)堆棧267建立第一和第二傳輸層連接。在其他實施例中,設(shè)備200可使用多個網(wǎng)絡(luò)堆棧,例如 267A和^7N。在這些實施例中,在第一網(wǎng)絡(luò)堆棧267k可建立或終止第一傳輸層連接,且在第二網(wǎng)絡(luò)堆棧 7N可建立或者終止第二傳輸層連接。例如,一個網(wǎng)絡(luò)堆??捎糜谠诘谝痪W(wǎng)絡(luò)上接收和傳輸網(wǎng)絡(luò)分組,并且另一個網(wǎng)絡(luò)堆??捎糜谠诘诙W(wǎng)絡(luò)上接收和傳輸網(wǎng)絡(luò)分組。如圖2A所示,網(wǎng)絡(luò)優(yōu)化引擎250包括一個或多個下列元件、組件或模塊網(wǎng)絡(luò)分組處理引擎250、LAN/WAN檢測器210、流控制器220、Qos引擎236、協(xié)議加速器234、壓縮引擎 238、高速緩存管理器232和策略引擎四5’。網(wǎng)絡(luò)優(yōu)化引擎250或其任何部分可包括軟件、 硬件或軟件和硬件的任何組合。而且網(wǎng)絡(luò)引擎250的、為其供應(yīng)的或由其使用的任何軟件可運行在內(nèi)核空間或用戶空間。例如,在一個實施例中,網(wǎng)絡(luò)優(yōu)化引擎250可運行在內(nèi)核空間。在又一個實施例中,網(wǎng)絡(luò)優(yōu)化引擎250可運行在用戶空間。在又一個實施例中,網(wǎng)絡(luò)優(yōu)化引擎250的第一部分可運行在內(nèi)核空間而網(wǎng)絡(luò)優(yōu)化引擎250的第二部分可運行在用戶空間。網(wǎng)絡(luò)分組處理引擎網(wǎng)絡(luò)分組引擎M0,通常也稱為分組處理引擎,或分組引擎,負(fù)責(zé)控制和管理對由設(shè)備200通過網(wǎng)絡(luò)端口 266和網(wǎng)絡(luò)堆棧267接收和傳輸?shù)姆纸M的處理。網(wǎng)絡(luò)分組引擎240 可操作在網(wǎng)絡(luò)堆棧267的任一層。在一個實施例中,網(wǎng)絡(luò)分組引擎240操作在網(wǎng)絡(luò)堆棧沈7 的層2和層3.在一些實施例中,分組引擎240在網(wǎng)絡(luò)層(例如,TCP/IP實施例中的IP層) 攔截或以其他方式接收分組。在又一個實施例中,分組引擎240操作在網(wǎng)絡(luò)堆棧沈7的層 4。例如,在一些實施例中,分組引擎240在傳輸層攔截或以其他方式接收分組,例如在TCP/ IP實施例中的TCP層攔截分組。在其他實施例中,分組引擎240操作在層4之上的任何會話或應(yīng)用層。例如,在一個實施例中,分組引擎240在傳輸層協(xié)議層之上攔截或以其他方式接收的網(wǎng)絡(luò)分組,例如在TCP實施例中的TCP分組的有效載荷。分組引擎240可包括用于在例如接收網(wǎng)絡(luò)分組或者傳輸網(wǎng)絡(luò)分組的處理期間排隊一個或多個網(wǎng)絡(luò)分組的緩沖器。另外,分組引擎240與一個或多個網(wǎng)絡(luò)堆棧沈7通信以通過網(wǎng)絡(luò)端口 266發(fā)送和接收網(wǎng)絡(luò)分組。分組引擎240包括分組處理定時器。在一個實施例中,分組處理定時器提供一個或多個時間間隔以觸發(fā)輸入的(即,接收的)或輸出的(即, 傳輸?shù)?網(wǎng)絡(luò)分組的處理。在一些實施例中,分組引擎240響應(yīng)于定時器來處理網(wǎng)絡(luò)分組。 分組處理定時器向分組引擎240提供任何類型和形式的信號以通知、觸發(fā)或傳輸時間相關(guān)的事件、間隔或發(fā)生。在許多實施例中,分組處理定時器以毫秒級操作,例如100ms、50ms、 25msλIOmsλ5ms 或 Ims0在操作期間,分組引擎240可與諸如LAN/WAN檢測器210、流控制器220、Qos引擎236、協(xié)議加速器234、壓縮引擎238、高速緩存管理器232和/或策略引擎四5’的網(wǎng)絡(luò)優(yōu)化引擎250的任一部分接口、集成或通信。因此,可響應(yīng)于分組處理定時器和/或分組引擎240來執(zhí)行LAN/WAN檢測器210、流控制器220、Qos引擎236、協(xié)議加速器234、壓縮引擎 238、高速緩存管理器232和策略引擎四5’的任何邏輯、功能或操作。在一些實施例中,在由分組處理定時器提供的時間間隔粒度(例如,少于或等于IOms的時間間隔),可執(zhí)行加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238的任何邏輯、功能或操作。例如,在一個實施例中,高速緩存管理器232可響應(yīng)于集成分組引擎240和/或分組處理定時器242來執(zhí)行任何高速緩存的對象的終止。在又一個實施例中,高速緩存的對象的終止或無效時間被設(shè)定為與分組處理定時器的時間間隔相同的粒度級,例如每10ms。高諫緩存管理器高速緩存管理器232可包括軟件、硬件或軟件和硬件的任何組合,以將數(shù)據(jù)、信息和對象存儲到在存儲器或存儲中的高速緩存、提供高速緩存訪問以及控制和管理高速緩存。由高速緩存管理器232處理和存儲的數(shù)據(jù)、對象或內(nèi)容可包括任何格式(例如標(biāo)記語言)的數(shù)據(jù),或者通過任何協(xié)議的通信的任何類型的數(shù)據(jù)。在一些實施例中,高速緩存管理器232復(fù)制存儲在其他地方的原始數(shù)據(jù)或先前計算、生成或傳輸?shù)臄?shù)據(jù),其中相對于讀高速緩存存儲器或存儲元件,需要更長的訪問時間以取得、計算或以其他方式得到原始數(shù)據(jù)。 一旦數(shù)據(jù)被存儲在高速緩存中,通過訪問高速緩存的副本而不是重新獲得或重新計算原始數(shù)據(jù)即可進行后續(xù)操作,因此而減少了訪問時間。在一些實施例中,高速緩存可以包括設(shè)備 200的存儲器中的數(shù)據(jù)對象。在又一個實施例中,高速緩存可以包括設(shè)備200的任一類型和形式的存儲元件,諸如硬盤的一部分。在一些實施例中,裝置的處理單元可提供由高速緩存管理器232使用的高速緩存存儲器。在又一個實施例中,高速緩存管理器232可使用存儲器、存儲區(qū)或處理單元的任何部分和組合來高速緩存數(shù)據(jù)、對象或其它內(nèi)容。另外,高速緩存管理器232包括用于執(zhí)行設(shè)備200的任何高速緩存技術(shù)的任何邏輯、功能、規(guī)則或操作。在一些實施例中,高速緩存管理器232可作為應(yīng)用、庫、程序、服務(wù)、 進程、線程或任務(wù)而操作。在一些實施例中,高速緩存管理器232可包括任何類型的通用處理器(GPP),或者任何其他類型的集成電路,例如現(xiàn)場可編程門陣列(FPGA),可編程邏輯設(shè)備(PLD),或者專用集成電路(ASIC)。策略引擎策略引擎四5’包括用于提供和應(yīng)用一個或多個策略或規(guī)則到設(shè)備200的任一部分的功能、操作或配置的任何邏輯、功能或操作。策略引擎四5’可包括例如智能統(tǒng)計引擎或其它可編程應(yīng)用。在一個實施例中,策略引擎四5’提供配置機制以允許用戶識別、指定、 定義或配置用于網(wǎng)絡(luò)優(yōu)化引擎250或其任何部分的策略。例如,策略引擎四5’可提供用于緩存哪些數(shù)據(jù)、何時緩存該數(shù)據(jù)、為誰緩存該數(shù)據(jù)、何時終止高速緩存中的對象或刷新高速緩存的策略。在其他實施例中,除了對安全、網(wǎng)絡(luò)業(yè)務(wù)量、網(wǎng)絡(luò)訪問、壓縮或由設(shè)備200執(zhí)行的任何其它功能或操作的訪問、控制和管理之外,策略引擎236可包括任何邏輯、規(guī)則、功能或操作以確定和提供對設(shè)備200所高速緩存的對象、數(shù)據(jù)、或內(nèi)容的訪問、控制和管理。在一些實施例中,策略引擎四5’可基于下列的任何一個或多個來提供和應(yīng)用一個或多個策略用戶、客戶機的標(biāo)識、服務(wù)器的標(biāo)識、連接的類型、連接的時間、網(wǎng)絡(luò)的類型或網(wǎng)絡(luò)業(yè)務(wù)量的內(nèi)容。在一個實施例中,策略引擎四5’基于網(wǎng)絡(luò)分組的任何協(xié)議層的字段或首部來提供和應(yīng)用策略。在又一個實施例中,策略引擎四5’基于網(wǎng)絡(luò)分組的任一有效載荷來提供和應(yīng)用策略。例如,在一個實施例中,策略引擎四5’基于對被承載為傳輸層分組的有效載荷的應(yīng)用層協(xié)議內(nèi)容的特定部分的識別來應(yīng)用策略。在又一個實施例中,策略引擎四5’基于由客戶機、服務(wù)器或用戶證書識別的任何信息來應(yīng)用策略。在又一個實施例中,策略引擎四5’基于例如通過任何類型和形式的端點檢測(參見下面所描述的客戶機代理的收集代理示例)所獲得的關(guān)于客戶機102的任何屬性或特征來應(yīng)用策略。在一個實施例中,策略引擎四5’和應(yīng)用傳送系統(tǒng)四0的策略引擎295聯(lián)合或協(xié)同工作。在一些實施例中,策略引擎四5’是應(yīng)用傳送系統(tǒng)四0的策略引擎四5的一個分布式的部分。在又一個實施例中,應(yīng)用傳送系統(tǒng)290的策略引擎295被部署于或執(zhí)行在設(shè)備200 上。在一些實施例中,策略引擎四5、四5’都操作在設(shè)備200上。在又一個實施例中,設(shè)備 200的策略引擎四5’或其一部分操作在服務(wù)器106上。多協(xié)議和多層壓縮引擎壓縮引擎238包括用于壓縮一個或多個協(xié)議的網(wǎng)絡(luò)分組(例如由設(shè)備200的網(wǎng)絡(luò)堆棧267使用的任何協(xié)議)的任何邏輯、商業(yè)規(guī)則、功能或操作。壓縮引擎238也可被稱為多協(xié)議壓縮引擎238,這是由于其可以被設(shè)計、構(gòu)建為或能夠壓縮多個協(xié)議。在一個實施例中,壓縮引擎238使用對上下文不敏感的壓縮,其可在不了解數(shù)據(jù)類型的情況下對數(shù)據(jù)進行壓縮。在又一個實施例中,壓縮引擎238使用對上下文敏感的壓縮。在該實施例中,壓縮引擎238利用數(shù)據(jù)類型的知識來從一系列合適的算法中選擇特定的壓縮算法。在一些實施例中,使用特定協(xié)議的知識來執(zhí)行上下文敏感的壓縮。在一個實施例中,設(shè)備200或壓縮引擎238可使用端口號(例如,公知端口),以及來自連接本身的數(shù)據(jù)來確定要使用的合適的壓縮算法。一些協(xié)議僅使用一種類型的數(shù)據(jù),僅要求當(dāng)連接建立時可被選擇的單個壓縮算法。其他協(xié)議在不同的時間包含不同類型的數(shù)據(jù)。例如,POP、IMSP、SMTP和HTTP都移動夾雜其他協(xié)議數(shù)據(jù)的任意類型的文件。在一個實施例中,壓縮引擎238使用增量型壓縮算法。在又一個實施例中,壓縮引擎238使用首地點壓縮以及搜索在高速緩存、存儲器或盤中存儲的數(shù)據(jù)間的重復(fù)模式。在一些實施例中,壓縮引擎238使用無損壓縮算法。在其他實施例中,壓縮引擎238使用有損壓縮算法。在一些情況下,數(shù)據(jù)類型的知識和有時來自用戶的許可被要求使用有損壓縮算法。壓縮不限于協(xié)議的有效載荷。協(xié)議本身的控制字段也可以被壓縮。在一些實施例中, 壓縮引擎238使用與用于有效載荷的算法不同的算法。在一些實施例中,壓縮引擎238在網(wǎng)絡(luò)堆棧267的一個或多個層進行壓縮。在一個實施例中,壓縮引擎238在傳輸層協(xié)議處進行壓縮。在又一個實施例中,壓縮引擎238在應(yīng)用層協(xié)議處進行壓縮。在一些實施例中,壓縮引擎238在層2-4協(xié)議處進行壓縮。在其他實施例中,壓縮引擎238在層5-7協(xié)議處進行壓縮。在又一個實施例中,壓縮引擎238壓縮傳輸層協(xié)議和應(yīng)用層協(xié)議。在一些實施例中,壓縮引擎238壓縮層2-4協(xié)議和層5-7協(xié)議。在一些實施例中,壓縮引擎238使用基于存儲器的壓縮、基于高速緩存的壓縮或基于盤的壓縮或上述的任一組合。這樣,壓縮引擎238也可以被稱為多層壓縮引擎。在一個實施例中,壓縮引擎238使用在存儲器(例如RAM)中存儲的數(shù)據(jù)歷史。在又一個實施例中,壓縮引擎238使用在高速緩存(例如處理器的L2高速緩存)中存儲的數(shù)據(jù)歷史。在其他實施例中,壓縮引擎238使用存儲到盤或存儲單元的數(shù)據(jù)歷史。在一些實施例中,壓縮引擎238使用基于高速緩存的、基于存儲器的和基于盤的數(shù)據(jù)歷史的分層結(jié)構(gòu)。壓縮引擎238 可首先使用基于高速緩存的數(shù)據(jù)來確定用于壓縮的一個或多個數(shù)據(jù)匹配,然后可檢查基于存儲器的數(shù)據(jù)以確定用于壓縮的一個或多個數(shù)據(jù)匹配。在另一種情況下,壓縮引擎238可在檢查基于高速緩存的和/或基于存儲器的數(shù)據(jù)歷史之后檢查盤存儲來找出用于壓縮的數(shù)據(jù)匹配。在一個實施例中,多協(xié)議壓縮引擎238雙向壓縮在客戶機102a-102n和服務(wù)器 106a-106n間任一基于TCP/IP的協(xié)議,包括消息應(yīng)用編程接口(MAPI)(電子郵件)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、通用互聯(lián)網(wǎng)文件系統(tǒng)(Cire)協(xié)議(文件傳輸)、 獨立計算架構(gòu)(ICA)協(xié)議、遠(yuǎn)程桌面協(xié)議(RDP)、無線應(yīng)用協(xié)議(WAP)、移動IP協(xié)議以及 IP上語音(VoIP)協(xié)議。在其它實施例中,多協(xié)議壓縮引擎238提供基于超文本標(biāo)記語言 (HTML)的協(xié)議的壓縮,并且在一些實施例中,提供任何標(biāo)記語言的壓縮,例如可擴展標(biāo)記語言(XML)。在一個實施例中,多協(xié)議壓縮引擎238提供任何高性能協(xié)議的壓縮,例如設(shè)計用于設(shè)備200到設(shè)備200通信的任何協(xié)議。在又一個實施例中,多協(xié)議壓縮引擎238使用修改的傳輸控制協(xié)議來壓縮任何通信的任何載荷或任何通信,例如事務(wù)TCP(T/TCP)、帶有選擇確認(rèn)的TCP (TCP-SACK)、帶有大窗口的TCP (TCP-Lff)、諸如TCP-Vegas協(xié)議的擁塞預(yù)報協(xié)議以及 TCP 欺騙協(xié)議(TCP spoofing protocol)。同樣的,多協(xié)議壓縮引擎238為用戶加速經(jīng)由桌面客戶機以及甚至移動客戶機訪問應(yīng)用的性能。所述桌面客戶機例如Micosoft Outlook和非web瘦客戶機,例如由像 Oracle, SAP和Siebel的通用企業(yè)應(yīng)用所啟動的任何客戶機,所述移動客戶機例如掌上電腦。在一些實施例中,通過與訪問網(wǎng)絡(luò)堆棧267的分組處理引擎240集成,多協(xié)議壓縮引擎能夠壓縮由傳輸層協(xié)議攜帶的任何協(xié)議,例如任何應(yīng)用層協(xié)議。LAN/WAN 檢測器LAN/WAN檢測器238包括用于自動檢測慢速側(cè)連接(例如,諸如內(nèi)部網(wǎng)的廣域網(wǎng) (WAN)連接)和關(guān)聯(lián)端口沈7,以及快速側(cè)連接(例如,局域網(wǎng)(LAN)連接)和關(guān)聯(lián)端口 267 的任何邏輯、商業(yè)規(guī)則、功能或操作。在一些實施例中,LAN/WAN檢測器238監(jiān)控設(shè)備200 的網(wǎng)絡(luò)端口 267上的網(wǎng)絡(luò)業(yè)務(wù)量以便檢測同步分組(有時被稱為“加標(biāo)記的”網(wǎng)絡(luò)分組)。 同步分組識別網(wǎng)絡(luò)業(yè)務(wù)量的類型或速度。在一個實施例中,同步分組識別WAN的速度或WAN 類型的連接。LAN/WAN檢測器238也識別對加標(biāo)記的同步分組的確認(rèn)分組的接收以及其在哪個端口上被接收。接著,設(shè)備200將自身配置為操作所識別的、加標(biāo)記的同步分組到達(dá)的端口以使得該端口上的速度被設(shè)置為與連接到該端口的網(wǎng)絡(luò)相關(guān)聯(lián)的速度。那么,另一個端口被設(shè)置為與連接到該端口的網(wǎng)絡(luò)相關(guān)聯(lián)的速度。為了此處討論的方便,“快速”側(cè)可參考關(guān)于與廣域網(wǎng)(WAN)(例如,互聯(lián)網(wǎng))的連接,并且以該WAN的網(wǎng)絡(luò)速度操作。類似地,“慢速”側(cè)可參考關(guān)于與局域網(wǎng)(LAN)的連接并且以LAN的網(wǎng)絡(luò)速度操作。然而,應(yīng)指出網(wǎng)絡(luò)的“快速”和“慢速”側(cè)可以在每連接的基礎(chǔ)上改變并且是對于網(wǎng)絡(luò)連接的速度或者網(wǎng)絡(luò)拓?fù)漕愋偷南嚓P(guān)術(shù)語。這樣的配置可以用在復(fù)雜的網(wǎng)絡(luò)拓?fù)渲?,其中網(wǎng)絡(luò)僅在與相鄰網(wǎng)絡(luò)比較時是“快速”或“慢速”,而不是絕對的“快速” 或“慢速”。在一個實施例中,LAN/WAN檢測器238可用于使設(shè)備200自動發(fā)現(xiàn)其所連接的網(wǎng)絡(luò)。在又一個實施例中,LAN/WAN檢測器238可用于檢測在網(wǎng)絡(luò)104中部署的第二設(shè)備200 ’的存在或在場。例如,根據(jù)圖IA的操作中的自動發(fā)現(xiàn)機制起到以下作用將設(shè)備200和 200’置于與鏈接客戶機102和服務(wù)器106的連接在一條線上。設(shè)備200和200’處于連接兩個LAN的低速鏈路(例如,互聯(lián)網(wǎng))的端點處。在一個示例實施例中,設(shè)備200和200’ 各自包括兩個端口,一個端口與“較低”速度的鏈路連接而另一個端口與“較高”速度的鏈路(例如,LAN)連接。到達(dá)一個端口的任一分組被復(fù)制到另一個端口。因此,設(shè)備200和 200’各自被配置為充當(dāng)兩個網(wǎng)絡(luò)104之間的橋。當(dāng)諸如客戶機102的端節(jié)點打開與諸如服務(wù)器106的另一個端節(jié)點的新的TCP連接時,客戶機102向服務(wù)器106發(fā)送具有同步(SYN)首部位組的TCP分組或SYN分組。在本例中,客戶機102打開到服務(wù)器106的傳輸層連接。當(dāng)SYN分組穿過設(shè)備200時,設(shè)備 200給該分組插入、附加或以其他方式提供特有的TCP首部選項,以宣告其存在。如果該分組穿過第二設(shè)備(在該示例中設(shè)備200’),第二設(shè)備記錄該SYN分組中的首部選項。服務(wù)器106用同步確認(rèn)(SYN-ACK)分組來響應(yīng)該SYN分組。當(dāng)SYN-ACK分組穿過設(shè)備200’時, TCP首部選項被標(biāo)記(例如,附加、插入或添加)到該SYN-ACK分組以便向設(shè)備200宣告設(shè)備200’的存在。當(dāng)設(shè)備200收到該分組時,設(shè)備200,200’此時互相察覺并且該連接可以被適當(dāng)?shù)丶铀佟jP(guān)于LAN/WAN檢測器238的操作,描述了使用SYN分組來檢測網(wǎng)絡(luò)的“快速”側(cè)和 “慢速”側(cè)的方法或過程。在客戶機102和服務(wù)器106之間建立傳輸層連接的期間,設(shè)備200 通過LAN/WAN檢測器238確定SYN分組是否被加了確認(rèn)(ACK)標(biāo)記。如果其被加了標(biāo)記, 設(shè)備200將接收加標(biāo)記的SYN分組(SYN-ACK)的端口標(biāo)識或配置為“慢速”側(cè)。在一個實施例中,設(shè)備200可選擇在將該分組復(fù)制到另一個端口之前ACK標(biāo)記從該分組刪除。如果 LAN/WAN檢測器238確定該分組未加標(biāo)記,那么設(shè)備200將接收未加標(biāo)記的分組的端口標(biāo)識或配置為“快速”側(cè)。設(shè)備200接著給該SYN分組加上ACK標(biāo)記并將該分組復(fù)制到另一個端□。 在又一個實施例中,LAN/WAN檢測器238使用SYN-ACK分組來檢測網(wǎng)絡(luò)的快速側(cè)和慢速側(cè)。設(shè)備200通過LAN/WAN檢測器238確定SYN-ACK分組是否被加了確認(rèn)(ACK)標(biāo)記。如果其被加了標(biāo)記,設(shè)備200將接收加標(biāo)記的SYN分組(SYN-ACK)的端口標(biāo)識或配置為“慢速”側(cè)。在一個實施例中,設(shè)備200可選擇在將該分組復(fù)制到另一個端口之前從該分組刪除ACK標(biāo)記。如果LAN/WAN檢測器238確定該分組未加標(biāo)記,那么設(shè)備200將接收未加標(biāo)記的分組的端口標(biāo)識或配置為“快速”側(cè)。LAN/WAN檢測器238確定SYN分組是否被加了標(biāo)記。如果該SYN分組沒有被加標(biāo)記,那么設(shè)備200將該分組復(fù)制到另一個端口。如果該SYN分組被加了標(biāo)記,那么該設(shè)備在將該分組拷貝到另一個端口之前給SYN-ACK分組加標(biāo)記。設(shè)備200、200’可以添加、插入、修改、附加或以其他方式提供TCP選項首部中的任
何信息或數(shù)據(jù),以提供關(guān)于網(wǎng)絡(luò)連接、網(wǎng)絡(luò)業(yè)務(wù)流或者設(shè)備200的配置或操作的任何信息、 數(shù)據(jù)或特征。在這種方式中,設(shè)備200不僅向另一個設(shè)備200’宣告其存在或者標(biāo)記較高或較低速度的連接,該設(shè)備200還通過TCP選項首部提供關(guān)于該設(shè)備或該連接的其他信息和數(shù)據(jù)。TCP選項首部信息可能是對設(shè)備有用的或由設(shè)備用于控制、管理、優(yōu)化、加速或改善經(jīng)過設(shè)備200的網(wǎng)絡(luò)業(yè)務(wù)流,或者以其他方式配置其自身或網(wǎng)絡(luò)端口的操作。盡管通常LAN/WAN檢測器238被結(jié)合檢測網(wǎng)絡(luò)連接的速度或設(shè)備的存在來描述,但LAN/WAN檢測器238可被用于將設(shè)備200的任何類型的功能、邏輯或操作應(yīng)用到網(wǎng)絡(luò)業(yè)務(wù)量的端口、連接或流。更具體地,每當(dāng)設(shè)備在不同的端口執(zhí)行不同的功能時都可以自動分配端口,其中給任務(wù)分配端口可以在該單元操作期間,和/或每個端口的網(wǎng)絡(luò)段的性質(zhì)可被設(shè)備200發(fā)現(xiàn)。流控制 流控制器220包括用于優(yōu)化、加速或以其他方式改善網(wǎng)絡(luò)分組的傳輸層通信的性能、操作或服務(wù)質(zhì)量或者在傳輸層的分組的發(fā)送的任何邏輯、商業(yè)規(guī)則、功能或操作。流控制器(有時也被稱為流控制模塊)調(diào)節(jié)、管理和控制數(shù)據(jù)傳輸速率。在一些實施例中,流控制器220被部署在或連接在網(wǎng)絡(luò)104中的帶寬瓶頸處。在一個實施例中,流控制器220有效地調(diào)節(jié)、管理和控制帶寬的使用或利用。在其他實施例中,流控制模塊也可以被部署在延遲轉(zhuǎn)換(從低延遲到高延遲)的網(wǎng)絡(luò)上的位置和具有介質(zhì)損失的鏈路(例如無線或衛(wèi)星鏈路)上的位置。在一些實施例中,流控制器220可包括用于控制網(wǎng)絡(luò)傳輸?shù)慕邮账俾实慕邮掌鱾?cè)流控制模塊和用于控制網(wǎng)絡(luò)分組的傳輸速率的發(fā)送器側(cè)流控制模塊。在其他實施例中,第一流控制器220包括接收器側(cè)流控制模塊并且第二流控制器220’包括發(fā)送器側(cè)流控制模塊。在一些實施例中,第一流控制器220被部署在第一設(shè)備200上并且第二流控制器220’ 被部署在第二設(shè)備200’上。同樣,在一些實施例中,第一設(shè)備200控制接收器側(cè)上的數(shù)據(jù)流而第二設(shè)備200'控制來自發(fā)送器側(cè)的數(shù)據(jù)流。在又一個實施例中,單個設(shè)備200包括用于經(jīng)過設(shè)備200的網(wǎng)絡(luò)通信的接收器側(cè)和發(fā)送器側(cè)的流控制。在一個實施例中,配置流控制模塊220以使瓶頸處的帶寬被更充分地利用,以及在一些實施例中,配置流控制模塊220以使瓶頸處的帶寬不被過度利用。在一些實施例中, 流控制模塊220透明地緩沖(或者重新緩沖例如發(fā)送器已經(jīng)緩沖的數(shù)據(jù))經(jīng)過具有相關(guān)聯(lián)的流控制模塊220的節(jié)點間的網(wǎng)絡(luò)會話。當(dāng)會話經(jīng)過兩個或多個流控制模塊220時,一個或多個流控制模塊控制會話的速率。在一個實施例中,用有關(guān)瓶頸帶寬的預(yù)定數(shù)據(jù)來配置流控制模塊200。在又一個實施例中,流控制模塊220可被配置為檢測瓶頸帶寬或與其關(guān)聯(lián)的數(shù)據(jù)。與諸如TCP的傳統(tǒng)網(wǎng)絡(luò)協(xié)議不同,接收器側(cè)流控制模塊220控制數(shù)據(jù)傳輸速率。接收器側(cè)流控制模塊220 通過將傳輸速率限制轉(zhuǎn)發(fā)到發(fā)送器側(cè)流控制模塊220來控制發(fā)送器側(cè)流控制模塊(例如, 220)的數(shù)據(jù)傳輸速率。在一個實施例中,接收器側(cè)流控制模塊220在由接收器(例如服務(wù)器106)向發(fā)送器(例如客戶機102)發(fā)送的確認(rèn)(ACK)分組(或信號)上捎帶這些傳輸速率限制。接收器側(cè)流控制模塊220響應(yīng)于由發(fā)送器側(cè)流控制模塊220'發(fā)送的速率控制請求來執(zhí)行這一工作??梢栽谟砂l(fā)送器106發(fā)送的數(shù)據(jù)分組上捎帶來自發(fā)送器側(cè)流控制模塊 220’的請求。在一些實施例中,流控制器220操縱、調(diào)整、模擬、改變、改進或以其他方式修改傳輸層協(xié)議的行為以便提供傳輸層的傳送、數(shù)據(jù)速率和/或帶寬利用的改善的性能或操作。 流控制器220可在傳輸層實現(xiàn)多個數(shù)據(jù)流控制技術(shù),包括但不限于1)預(yù)確認(rèn),2)窗口虛擬化,3)重新?lián)砣夹g(shù),3)本地重傳技術(shù),4)波前檢測和消除二義性,5)傳輸控制協(xié)議選擇性確認(rèn),6)事務(wù)邊界檢測技術(shù)和7)重新分組。盡管此處通常將發(fā)送器描述為客戶機102,將接收器描述為服務(wù)器106,但發(fā)送器可以是諸如網(wǎng)絡(luò)104上任一計算裝置100或者服務(wù)器106的任一端點。同樣地,接收器可以是客戶機102或者網(wǎng)絡(luò)104上的任何其他計算裝置。預(yù)確認(rèn) 概括來講預(yù)確認(rèn)流控制技術(shù),在一些實施例中,流控制器220處理確認(rèn)并為發(fā)送器重傳確認(rèn),有效地終止發(fā)送器與網(wǎng)絡(luò)連接的下游部分的連接。參考圖1B,描述用來實現(xiàn)該特征的,設(shè)備200在網(wǎng)絡(luò)架構(gòu)中的一個可能的部署。在該示例實施例中,發(fā)送計算機或者客戶機102在網(wǎng)絡(luò)104上例如經(jīng)由交換機傳輸數(shù)據(jù),其確定該數(shù)據(jù)發(fā)往VPN設(shè)備205。由于所選擇的網(wǎng)絡(luò)拓?fù)洌l(fā)往VPN設(shè)備205的所有數(shù)據(jù)穿過設(shè)備200,使得設(shè)備200可以將任一必要的算法應(yīng)用到該數(shù)據(jù)。進一步在該示例中,客戶機102傳輸由設(shè)備200接收的分組。當(dāng)設(shè)備200接收從客戶機102向接收者傳輸?shù)慕?jīng)過VPN設(shè)備205的分組時,設(shè)備200保留分組的副本并且將該分組向下游轉(zhuǎn)發(fā)到VPN設(shè)備205。設(shè)備200接著生成確認(rèn)分組(ACK)并且將ACK分組發(fā)送回客戶機102或者發(fā)送端點。該ACK(即預(yù)確認(rèn))使發(fā)送器102相信分組已經(jīng)被成功傳輸、釋放發(fā)送器的資源用于后續(xù)的處理。在要求重傳分組的事件中,設(shè)備200保留該分組的副本, 使得發(fā)送器102不必處理數(shù)據(jù)的重傳。提前生成確認(rèn)可以被稱為“提前確認(rèn)(preack)”。如果要求重傳分組,設(shè)備200將分組重傳到發(fā)送器。設(shè)備200可以確定當(dāng)發(fā)送器處于傳統(tǒng)系統(tǒng)中時是否需要重傳,例如,在預(yù)定時間段之后對于該分組如果沒有接收到確認(rèn)則確定分組丟失。為此,設(shè)備200監(jiān)控由例如服務(wù)器106 (或者任何其他下游網(wǎng)絡(luò)實體) 的接收端點生成的確認(rèn),以便其可以確定是否已經(jīng)成功傳送分組或者需要重傳分組。如果設(shè)備200確定分組已經(jīng)被成功傳送,則設(shè)備200能夠自由地丟棄所保存的分組數(shù)據(jù)。設(shè)備 200還可以禁止轉(zhuǎn)發(fā)對已經(jīng)由發(fā)送端點接收的分組的確認(rèn)。在上述實施例中,設(shè)備200經(jīng)由流控制器220通過預(yù)確認(rèn)(也稱為“提取確認(rèn)”) 的傳送來控制發(fā)送器102,如同設(shè)備200是接收端點本身一樣。由于設(shè)備200不是端點并且實際上不消耗數(shù)據(jù),所以設(shè)備200包括用于給發(fā)送端點提供溢出控制的機制。如果沒有溢出機制,設(shè)備200將耗盡存儲器,因為設(shè)備200存儲已經(jīng)向發(fā)送端點提取確認(rèn)的但還沒有被確認(rèn)為由接收端點接收的分組。因此,在發(fā)送器102傳輸分組到設(shè)備200快于設(shè)備200 向下游轉(zhuǎn)發(fā)分組的情況下,設(shè)備200中可用于存儲未被確認(rèn)的分組數(shù)據(jù)的存儲器將迅速填滿。用于溢出控制的機制允許設(shè)備200控制來自發(fā)送器的分組的傳輸以避免該問題。在一個實施例中,設(shè)備200或者流控制器220包括固有的“自同步 (self-clocking)”溢出控制機制。該自同步歸因于這樣的順序,其中設(shè)備200可以被設(shè)計為向下游傳輸分組并向發(fā)送器102或者106發(fā)送ACK。在一些實施例中,設(shè)備200直到其向下游傳輸分組后為才提前確認(rèn)分組。以此方式,發(fā)送器102將以設(shè)備200能夠傳輸分組的速率而不是以設(shè)備200從發(fā)送器100接收分組的速率來接收ACK。這有助于調(diào)節(jié)來自發(fā)送器102的分組的傳輸。窗口虛擬化設(shè)備200可以實現(xiàn)的另一個溢出控制機制是使用TCP窗口大小參數(shù),其告知發(fā)送器接收器允許該發(fā)送器填滿多少緩沖區(qū)。預(yù)確認(rèn)中的非零窗口大小(例如至少一個最大段大小(MSS)的大小)允許發(fā)送端點繼續(xù)向設(shè)備傳輸數(shù)據(jù),而零窗口大小禁止進一步的數(shù)據(jù)傳輸。相應(yīng)地,設(shè)備200可以例如當(dāng)設(shè)備200的緩沖區(qū)變滿時通過適當(dāng)?shù)卦O(shè)置每一預(yù)確認(rèn)中的TCP窗口大小來調(diào)節(jié)來自發(fā)送器的分組的流量。
另一項用來降低該附加開銷的技術(shù)是應(yīng)用滯后作用(hysteresis)。當(dāng)設(shè)備200將數(shù)據(jù)傳送到較慢側(cè)時,設(shè)備299中的溢出控制機制可以在向發(fā)送器發(fā)送非零窗口通告之前要求可用的最小數(shù)量的空間。在一個實施例中,設(shè)備200在發(fā)送非零窗口分組(例如,四個分組的窗口大小)之前進行等待直到存在最小的預(yù)定數(shù)量的分組(諸如四個分組)的可用空間為止。由于對于四個數(shù)據(jù)分組的每個組僅發(fā)送兩個ACK分組,而不是對于四個數(shù)據(jù)分組要發(fā)送八個ACK分組,因此這將開銷降低到大約原來的四分之一。設(shè)備200或流控制器220可用于溢出控制的另一技術(shù)是TCP延遲ACK機制,其跳過 ACK來降低網(wǎng)絡(luò)業(yè)務(wù)量。TCP延遲ACK自動延遲ACK的發(fā)送,直到接收到兩個分組或直到發(fā)生固定的超時為止。該機制單獨導(dǎo)致開銷減半,而且,通過將分組的數(shù)量增加到兩個以上, 降低了附加的開銷。但是僅延遲ACK本身不足以控制溢出,并且設(shè)備200還可以使用在ACK 上的通告窗口機制來控制發(fā)送器。當(dāng)這樣做時,在一個實施例中,設(shè)備200通過延遲ACK很長時間來避免觸發(fā)發(fā)送器的超時機制。在一個實施例中,流控制器220不對一組分組的最后一個分組進行提取確認(rèn)。通過不提取確認(rèn)最后一個分組或者該組中分組的至少一個,設(shè)備避免對一組分組的錯誤確認(rèn)。例如,如果設(shè)備將發(fā)送對最后一個分組的預(yù)確認(rèn)而該分組隨后丟失,那么發(fā)送器在分組沒有被傳送時已經(jīng)欺騙認(rèn)為其被傳送??紤]到分組已被傳送,發(fā)送器將丟棄該數(shù)據(jù)。如果設(shè)備也丟失該分組,那么不能將該分組重傳到接收者。通過不對一組分組的最后一個分組進行提前確認(rèn),發(fā)送器直到該分組被傳送時才將其丟棄。在又一個實施例中,流控制器220可以使用窗口虛擬化技術(shù)來控制網(wǎng)絡(luò)連接的帶寬利用或者流速。雖然根據(jù)檢查諸如RFC1323的傳統(tǒng)文獻其可能不是直接明顯的,但是用于諸如TCP的傳輸層協(xié)議的發(fā)送窗口是有效的。由于發(fā)送窗口消耗緩沖區(qū)空間(盡管在發(fā)送器上),所以發(fā)送窗口類似于接收窗口。發(fā)送器的發(fā)送窗口包括還沒有被接收器確認(rèn)的、 由應(yīng)用發(fā)送的所有數(shù)據(jù)。在要求重傳的情況下,必須在存儲器中保留該數(shù)據(jù)。由于存儲器是共享資源,所以一些TCP堆棧的實現(xiàn)限制了該數(shù)據(jù)的大小。當(dāng)發(fā)送窗口滿時,應(yīng)用程序嘗試發(fā)送更多的數(shù)據(jù)導(dǎo)致阻塞應(yīng)用程序直到空間可用為止。隨后接收的確認(rèn)將釋放發(fā)送窗口存儲器并且不再阻塞應(yīng)用程序。在一些實施例中,該窗口大小就是一些TCP實現(xiàn)中的套接字緩沖區(qū)大小。在一個實施例中,流控制模塊220被配置為提供對增加的窗口(或緩沖區(qū))大小的訪問。該配置還可以被稱為窗口虛擬化。在作為傳輸層協(xié)議的TCP的實施例中,TCP首部可以包括對應(yīng)窗口比例(window scale)的位串。在一個實施例中,“窗口”可以在發(fā)送、 接收或二者的上下文中提及。窗口虛擬化的一個實施例是將預(yù)確認(rèn)設(shè)備200插入到TCP會話中。參考圖IA和 IB的任何一個環(huán)境,建立例如客戶機102 (為討論方便,現(xiàn)稱為源節(jié)點102)的源節(jié)點與例如服務(wù)器106(為討論方便,現(xiàn)稱之為目標(biāo)節(jié)點106)的目標(biāo)節(jié)點之間數(shù)據(jù)通信會話的初始化。 對于TCP通信,源節(jié)點102最初將同步信號(“SYN”)通過其局域網(wǎng)104傳輸?shù)降谝涣骺刂颇K220。第一流控制模塊220將配置標(biāo)識符插入到TCP首部選項區(qū)域中。該配置標(biāo)識符將數(shù)據(jù)路徑中的該點識別為流控制模塊。盡管具有例如16k字節(jié)的小緩沖區(qū)大小的端節(jié)點,但設(shè)備200經(jīng)由流控制模塊220提供窗口(或緩沖區(qū))來允許提高會話內(nèi)的數(shù)據(jù)緩沖能力。然而,RFC1323要求對大于 64k字節(jié)的任何緩沖區(qū)大小進行窗口縮放(window scaling),其必須在會話初始化(SYN、 SYN-ACK信號)時設(shè)置。此外,窗口縮放對應(yīng)于數(shù)據(jù)路徑中的最小公分母,經(jīng)常是具有小的緩沖區(qū)大小的端節(jié)點。該窗口比例通常是0或1的比例,其對應(yīng)于高達(dá)64k或者128k字節(jié)的緩沖區(qū)大小。注意到,由于窗口大小被限定為每一分組中的、隨窗口比例改變的窗口字段,窗口比例建立緩沖區(qū)的上限,但并不保證該緩沖區(qū)實際上就那么大。每個分組在窗口字段中指示接收器處當(dāng)前可用的緩沖區(qū)空間。在使用窗口虛擬化技術(shù)進行縮放的一個實施例中,在連接建立(即,會話初始化) 期間,當(dāng)?shù)谝涣骺刂颇K220從源節(jié)點102接收SYN信號(或者分組)時,流控制模塊220 源節(jié)點102(其是之前的節(jié)點)的窗口比例或者如果之前的節(jié)點的比例丟失則為窗口比例存儲0。第一流控制模塊220還在SYN-FCM信號中修改該比例,例如將該比例從0或者1增加到4。當(dāng)?shù)诙骺刂颇K220接收 SYN信號時,其存儲來自第一流控制信號的增加的比例并且將該SYN信號中的比例重置為源節(jié)點103的比例值以用于到目標(biāo)節(jié)點106的傳輸。當(dāng)?shù)诙骺刂破?20接收到來自目標(biāo)節(jié)點106的SYN-ACK信號時,其存儲來自目標(biāo)節(jié)點106 的比例(例如,0或1)的比例并且將其修改為與SYN-ACK-FCM信號一起發(fā)送的增加的比例。 第一流控制節(jié)點220接收并且記錄所接收的窗口比例并且將被發(fā)回源節(jié)點102的窗口比例修訂為降回到初始比例(例如0或者1)?;谏厦嬖谶B接建立期間的窗口變換對話,會話的每個后續(xù)分組(例如TCP分組)的中的窗口字段必須隨窗口變換對話而改變。如上所述,窗口比例表示出大于64k的緩沖區(qū)大小,并且可以不需要窗口虛擬化。 因此,窗口比例的變換可以用于表示在每個流控制模塊220中的增加的緩沖區(qū)容量。該緩沖區(qū)容量的增加可作為窗口(或緩沖區(qū))虛擬化而被提及。該緩沖區(qū)大小的增加允許更大的分組從各自的端節(jié)點102和106進出。注意到,TCP中的緩沖區(qū)大小典型地以字節(jié)表示, 但是為了討論的方便,由于“分組”和虛擬化相關(guān),在此處描述中可以使用“分組”。通過舉例描述由流控制器220執(zhí)行的窗口(或緩存區(qū))虛擬化。在該示例中,源節(jié)點102和目標(biāo)節(jié)點106被配置為與具有16k字節(jié)的有限的緩存區(qū)容量的傳統(tǒng)端節(jié)點相似,其大約等于10個數(shù)據(jù)分組。通常,端節(jié)點102、106在能夠傳輸下一組分組之前必須進行等待,直到該分組被傳輸并且收到確認(rèn)為止。在一個實施例中,使用在流控制模塊220中的增加的緩沖區(qū)容量,當(dāng)源節(jié)點103傳輸其數(shù)據(jù)分組時,第一流控制模塊220接收該分組, 將該分組存儲在其較大容量的緩存區(qū)(例如512個分組容量)中,并且立即將指示分組接收的確認(rèn)信號(“REC-ACK”)發(fā)送回到源節(jié)點102。源節(jié)點102接著可以“刷新”其當(dāng)前緩沖區(qū),將10個新的數(shù)據(jù)分組載入到緩存區(qū),并且將這些傳輸?shù)降谝涣骺刂颇K220上。再次,第一流控制模塊220將REC-ACK信號發(fā)送回到源節(jié)點102,并且源節(jié)點102刷新其緩沖區(qū)并且對其載入10個更新的分組用于傳輸。當(dāng)?shù)谝涣骺刂颇K220接收到來自源節(jié)點的數(shù)據(jù)分組時,其相應(yīng)地將該數(shù)據(jù)分組載入到緩沖區(qū)中。當(dāng)其準(zhǔn)備好時,第一流控制模塊220可以開始將數(shù)據(jù)分組傳輸?shù)降诙骺刂颇K230,其也具有增加的緩存區(qū)大小,例如以便接收512個分組。第二流控制模塊 220’接收數(shù)據(jù)分組并且開始每次傳輸10個分組到目標(biāo)節(jié)點106。在第二流控制節(jié)點220處接收的、來自目標(biāo)節(jié)點106的每個REC-ACK致使又有10個分組被傳輸?shù)侥繕?biāo)節(jié)點106,直到所有的數(shù)據(jù)分組被傳送為止。因此,本發(fā)明能夠通過利用裝置之間的流控制模塊220、220’的較大的緩沖區(qū)來增加在源節(jié)點(發(fā)送器)102和目標(biāo)節(jié)點(接收器)106之間的數(shù)據(jù)傳輸
吞吐量。注意到通過之前描述的“預(yù) 220、220’處于缺乏大窗口的節(jié)點(例如,源節(jié)點102或者目標(biāo)節(jié)點106) 附近時,該技術(shù)是有效的。重新?lián)砣骺刂破?20的另一個技術(shù)或者算法被稱為重新?lián)砣?。眾所周知?biāo)準(zhǔn)的TCP擁塞避免算法在面對特定網(wǎng)絡(luò)條件(包括大的RTT(往返時間)、高分組丟失率,以及其它)時性能低下。當(dāng)設(shè)備200檢測到諸如長的往返時間或者高的分組丟失的擁塞條件時,設(shè)備200 插入、代入更適合該特定網(wǎng)絡(luò)調(diào)節(jié)的替代的擁塞避免算法。在一個實施例中,重新?lián)砣惴ㄊ褂妙A(yù)確認(rèn)來有效地終止發(fā)送器和接收器之間的連接。設(shè)備200接著使用不同的擁塞避免算法從自身重新發(fā)送分組到接收器。重新?lián)砣惴梢砸蕾囉赥CP連接的特征。設(shè)備200 監(jiān)控每個TCP連接,在不同的維度將其特征化,選擇適合用于當(dāng)前特征的重新?lián)砣惴āT谝粋€實施例中,當(dāng)檢測到由往返時間(RTT)限制的TCP連接時,應(yīng)用表現(xiàn)為多個 TCP連接的重新?lián)砣惴?。每個TCP連接操作在其自身性能限度內(nèi),但是聚合帶寬獲得了更高的性能水平。該機制中的一個參數(shù)是所應(yīng)用的并行連接的數(shù)量(N)。N值過大則連接束獲得超過其合理份額的帶寬。N值過小則連接束獲得低于其合理份額的帶寬。建立“N”的一個方法依賴于設(shè)備200監(jiān)控實際連接的分組大小、RTT和分組丟失率。將這些數(shù)字插入 TCP響應(yīng)曲線方程來提供本配置中單個TCP連接的性能的上限。如果連接束中每個連接正獲得與計算出的上限性能基本相同的性能,則應(yīng)用額外的并行連接。如果當(dāng)前束正獲得低于上限的性能,則減少并行連接的數(shù)量。依次方式,由于單獨的連接束包含的并行性不比消除協(xié)議自身所強加的限制所需的并行性更多,所以維持了系統(tǒng)的整體公平性。進一步,每個單獨的連接保留TCP兼容性。建立“N”的另一個方法是使用并行流控制算法,例如TCP “Vegas”算法或者其改進版本“穩(wěn)定的Vegas”。在該方法中,與連接束中的連接相關(guān)聯(lián)的網(wǎng)絡(luò)信息(例如,RTT、丟失率、平均分組大小等等)被聚集并且被應(yīng)用到替代的流控制算法。該算法的結(jié)果進而被分布到控制其數(shù)量(即,N)的束的連接之間??蛇x地,束中的每個連接仍舊使用標(biāo)準(zhǔn)TCP擁塞避免算法。在又一個實施例中,并行束中的單獨的連接被虛擬化,即不建立實際的單獨的TCP 連接。事實上擁塞避免算法被修改為表現(xiàn)得就好像存在N個并行連接一樣。該方法的優(yōu)點在于對于經(jīng)過多個網(wǎng)絡(luò)節(jié)點而言就如同單個連接一樣。因此重新?lián)砣惴ú挥绊戇@些節(jié)點的Q0S、安全性和其他監(jiān)控方法。在又一個實施例中,并行束中的單獨的連接是真實存在的, 即獨立的。為束中的并行連接的每一個建立TCP連接。不必修改用于每個TCP連接的擁塞避免算法。m^在一些實施例中,流控制器220可以使用本地重傳技術(shù)。實施預(yù)確認(rèn)的一個原因是為經(jīng)過高損的鏈路(例如無線)作準(zhǔn)備。在這些實施例中,預(yù)確認(rèn)設(shè)備200或者流控制模塊220最好位于無線鏈路“之前”。這使得要進行的重傳更接近于高損鏈路,免去了網(wǎng)絡(luò)的剩余部分的重傳負(fù)擔(dān)。設(shè)備200可提供本地重傳,在這種情形中,由于鏈路錯誤而丟棄的分組由設(shè)備200直接重傳。由于這消除了在端節(jié)點(諸如服務(wù)器106)和任一網(wǎng)絡(luò)104的基礎(chǔ)設(shè)施上的重傳負(fù)擔(dān),所以這是有益的。利用設(shè)備200提供本地重傳,丟棄的分組可以被重傳通過高損鏈路而不必由端節(jié)點重傳且不會引起端節(jié)點的數(shù)據(jù)傳輸率的對應(yīng)下降。實施預(yù)確認(rèn)的另一個原因是避免接收超時(RTO)懲罰。在標(biāo)準(zhǔn)TCP中,即使是成功接收傳輸中的較大百分比的分組,但仍存在多種情況導(dǎo)致RT0。使用標(biāo)準(zhǔn)TCP算法,在一個RTT窗口中丟棄不只一個分組有可能會導(dǎo)致超時。此外,如果重傳的分組被丟棄,則大部分TCP連接經(jīng)歷超時。在具有高帶寬延遲產(chǎn)品的網(wǎng)絡(luò)中,甚至相對小的分組丟失率也會導(dǎo)致頻繁的重傳超時(RTO)。在一個實施例中,設(shè)備200使用重傳和超時算法來避免過早的 RTO0設(shè)備200或者流控制器220基于每一分組來維持重傳的計數(shù)。每傳輸一個分組,將計數(shù)加一,然后設(shè)備200繼續(xù)傳輸分組。在一些實施例中,僅有當(dāng)一個分組已經(jīng)被重傳預(yù)定的次數(shù)后才宣告RT0。
波前檢測和消除二義件在一些實施例中,設(shè)備200或者流控制器220在管理和控制網(wǎng)絡(luò)業(yè)務(wù)流中使用波前檢測和消除二義性技術(shù)。在該技術(shù)中,流控制器220使用傳輸標(biāo)識符或者號碼來確定是否需要重傳特定數(shù)據(jù)分組。舉例來說,發(fā)送器在網(wǎng)絡(luò)上傳輸數(shù)據(jù)分組,其中所傳輸?shù)臄?shù)據(jù)分組的每一個實例與一個傳輸號碼相關(guān)聯(lián)。可以理解,分組的傳輸號碼與分組的序列號不相同,因為序列號標(biāo)記分組中的數(shù)據(jù),而傳輸號碼標(biāo)記該數(shù)據(jù)的傳輸?shù)膶嵗鬏斕柎a可以是對于該目的可用的任意信息,包括與分組相關(guān)聯(lián)的時間戳或者簡單地增加的號碼(類似于序列號或者分組號)。因為數(shù)據(jù)段可以被重傳,所以不同的傳輸號碼可以與特定的序列號相關(guān)聯(lián)。由于發(fā)送器傳輸數(shù)據(jù)分組,所以發(fā)送器保持被確認(rèn)的數(shù)據(jù)分組傳輸?shù)膶嵗臄?shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)分組傳輸?shù)拿總€實例由其序列號和傳輸號碼標(biāo)記。通過保持對于每個分組的傳輸號碼,發(fā)送器保留數(shù)據(jù)分組的傳輸順序。當(dāng)發(fā)送器接收到ACK或者SACK時,發(fā)送器確定與接收器(在所接收的確認(rèn)中)指示的已經(jīng)接收的分組相關(guān)聯(lián)的最高的傳輸號碼。具有較低傳輸號碼的任何未完成的未經(jīng)確認(rèn)的分組被假設(shè)為已丟失。在一些實施例中,當(dāng)?shù)竭_(dá)分組已經(jīng)被重傳時,發(fā)送器呈現(xiàn)出模糊的情形標(biāo)準(zhǔn)的 ACK/SACK沒有包含足夠的信息來使發(fā)送器確定該到達(dá)分組的哪個傳輸觸發(fā)了該確認(rèn)。從而,在接收到模糊確認(rèn)之后,發(fā)送器消除該確認(rèn)二義性以將其與傳輸號碼相關(guān)聯(lián)。在不同的實施例中,多個技術(shù)的其中之一或者組合可以被用來解決該模糊性。在一個實施例中,發(fā)送器在所傳輸?shù)臄?shù)據(jù)分組中包含標(biāo)識符,然后,接收器在確認(rèn)中返回該標(biāo)識符或者該標(biāo)識符的函數(shù)。該標(biāo)識符可以是時間戳(例如在RFC1323中描述的 TCP時間戳)、序列號、可以被用來在分組傳輸?shù)膬蓚€或多個實例之間進行解析的任何其他信息。在TCP時間戳選項被用來消除確認(rèn)的二義性的實施例中,使用高達(dá)32位唯一的信息來標(biāo)記每個分組。接收到數(shù)據(jù)分組時,接收器通過確認(rèn)將該唯一信息回送到發(fā)送器。發(fā)送器確保最初發(fā)送的分組和其重傳的一個或者多個版本包含對于時間戳選項的不同值,這允許其明確地消除ACK的模糊性。發(fā)送器可以將該唯一信息保持在例如用來保存所發(fā)送的數(shù)據(jù)分組的狀態(tài)的數(shù)據(jù)結(jié)構(gòu)中。由于該技術(shù)與工業(yè)標(biāo)準(zhǔn)相兼容并且因此很少或不會遇到互操作性的問題,所以該技術(shù)是有益的。然而,該技術(shù)在一些實現(xiàn)中可能要求十個字節(jié)的TCP首部空間,這降低了網(wǎng)絡(luò)上有效吞吐率并且減少了可用于其他TCP選項的空間。在又一個實施例中,分組中的另一個字段,諸如IP ID字段,被用來以與上述TCP 時間戳選項相似的方式來消除二義性。發(fā)送器安排該分組的最初和重傳版本的ID字段值, 以使在IP首部中具有不同的ID字段。在接收器或其代理裝置接收到數(shù)據(jù)分組時,接收器將ACK分組的ID字段設(shè)置為觸發(fā)該ACK的分組的ID字段的函數(shù)。由于該方法不需要發(fā)送額外的數(shù)據(jù),保持了網(wǎng)絡(luò)和TCP首部空間的效率,所以該方法是有益的。所選擇的函數(shù)應(yīng)有極大可能消除二義性。在優(yōu)先實施例中,發(fā)送器選擇IP ID值且將最高有效位設(shè)置為0。當(dāng)接收器響應(yīng)時,IP ID值被設(shè)置為相同的IP ID值,且最高有效位被設(shè)為1。在另一個實施例中,與非模糊性確認(rèn)相關(guān)聯(lián)的傳輸號碼被用來消除模糊確認(rèn)的二義性。該技術(shù)基于這樣的原理由于兩個分組在時間上更接近地傳輸,則對于這兩個分組的確認(rèn)將傾向于時間上更接近地接收。由于對于未被重傳的分組所接收的確認(rèn)可容易地與傳輸號碼相關(guān)聯(lián),所以這樣的分組不會導(dǎo)致模糊性。因此,可以將這些已知的傳輸號碼與所接收的在時間上接近于已知確認(rèn)的模糊確認(rèn)的可能的傳輸號碼相比較。發(fā)送器將模糊確認(rèn)的傳輸號碼與最近已知的所接收的傳輸號碼相比較,選擇對于已知的所接收的傳輸號碼最接近的一個。例如,如果接收到對數(shù)據(jù)分組1的確認(rèn)并且最后所接收的確認(rèn)是針對數(shù)據(jù)分組 5,那么發(fā)送器通過假設(shè)數(shù)據(jù)分組1的第三個實例導(dǎo)致了該確認(rèn)來解決該模糊性。
詵擇件確認(rèn)設(shè)備200或者流控制器220的另一項技術(shù)是實現(xiàn)傳輸控制協(xié)議選擇性確認(rèn)或TCP SACK的實施例以確定已經(jīng)收到哪些分組或沒有收到哪些分組。該技術(shù)允許發(fā)送器明確地確定已經(jīng)由接收器收到的分組的列表以及沒有收到的分組的精確的列表??梢酝ㄟ^修改發(fā)送器和/或接收器或者通過將發(fā)送器側(cè)和接收器側(cè)流控制模塊220插入到發(fā)送器和接收器之間的網(wǎng)絡(luò)路徑中來實現(xiàn)該功能。參考圖IA或者1B,發(fā)送器(例如客戶機102)被配置為通過網(wǎng)絡(luò)104向接收器(例如服務(wù)器106)傳輸數(shù)據(jù)分組。作為響應(yīng),接收器將被稱為SACK 分組的TCP選擇性確認(rèn)選項返回給發(fā)送器。在一個實施例中,盡管此處為了簡便僅討論一個方向的通信,但是該通信是雙向的。接收器保持包含接收器實際已收到的數(shù)據(jù)分組的序列號的一組范圍的列表或者其他適合的數(shù)據(jù)結(jié)構(gòu)。在一些實施例中,該列表根據(jù)序列號以升序或者降序排列。接收器還保持放棄的(left-ofT)指針,其包括對列表的引用并且指示從之前生成的SACK分組的放棄點。當(dāng)接收到數(shù)據(jù)分組時,接收器生成SACK分組并將其傳輸回到發(fā)送器。在一些實施例中,SACK分組包括多個字段,每個字段可以保留序列號的范圍來指示一組已接收的數(shù)據(jù)分組。接收器用包括觸發(fā)SACK分組的正在到達(dá)(landing)分組的序列號的范圍來填充該 SACK分組的第一字段。剩余可用的SACK字段用已收到的分組的列表的序列號的范圍來填充。當(dāng)該列表中的范圍超過可以被載入SACK分組的范圍時,接收器使用放棄指針來確定哪個范圍被載入SACK分組。接收器從有序的列表連續(xù)插入SACK范圍,從指針引用的范圍開始并且沿列表持續(xù)向下,直到消耗完SACK分組的TCP首部中的可用的SACK范圍空間。如果到達(dá)末端,則接收器環(huán)繞到列表的開始。在一些實施例中,兩個或三個附加的SACK范圍可以被添加到SACK范圍信息。一旦接收器生成SACK分組,接收器將確認(rèn)發(fā)送會發(fā)送器。然后,接收器在列表中將放棄的指針前進一個或者多個SACK范圍項。例如,如果接收器插入四個SACK范圍,則放棄指針可以在列表中被推進兩個SACK范圍。當(dāng)所推進的放棄的指針到達(dá)列表的末端,則指針被重置為列表的開始,從而有效地環(huán)繞已知所接收范圍的列表,環(huán)繞該列表使得系統(tǒng)甚至能在SACK分組大量丟失的情況下良好地運行,這是由于一旦列表被環(huán)繞,則由于丟失的 SACK分組導(dǎo)致的未被通信的SACK信息將最終被通信。 因此可以理解,SACK分組可以通信關(guān)于接收器的情況的多個細(xì)節(jié)。首先,SACK分組指示在SACK分組生成時接收器剛剛收到該SACK信息的第一字段中的數(shù)據(jù)分組。其次, SACK信息的第二和隨后的字段指示接收器已經(jīng)收到這些范圍中的數(shù)據(jù)分組。SACK信息還暗示接收器在SACK分組生成時沒有接收落入SACK信息的第二和隨后的字段之間的任何一個數(shù)據(jù)分組。本質(zhì)上,SACK信息中的第二和隨后的字段之間的范圍是所接收的數(shù)據(jù)中的 “孔”,其中的數(shù)據(jù)是已知的未被傳送的數(shù)據(jù)。因此,使用該方法,當(dāng)SACK分組具有足夠空間來包括多余兩個的SACK范圍時,接收器可以向發(fā)送器指示還沒有被接收器接收的數(shù)據(jù)分組的范圍。在另一個實施例中,發(fā)送器使用上述的SACK分組結(jié)合上述重傳技術(shù)來假定哪些數(shù)據(jù)分組已經(jīng)被傳送到接收器。例如,當(dāng)重傳算法(使用傳輸號碼)宣告分組丟失時,發(fā)送器認(rèn)為該分組僅是條件性丟失,因為有可能是識別該分組的接收的SACK分組丟失,而不是數(shù)據(jù)分組本身丟失。發(fā)送器因此將該分組添加到潛在丟失的分組的列表,稱之為假定丟失的列表。每當(dāng)SACK分組到達(dá),將來自SACK分組的數(shù)據(jù)的已知丟失范圍和假定丟失列表中的分組相比較。包括已知丟失的數(shù)據(jù)分組被宣告實際丟失并被隨后重傳。以此方式,組合這兩個方案來將更好的關(guān)于已丟失且需要重傳哪些分組的信息給予發(fā)送器。事務(wù)邊界檢測在一些實施例中,設(shè)備200或流控制器220使用被稱為事務(wù)邊界檢測的技術(shù)。在一個實施例中,該技術(shù)適合于乒乓(ping-pong)表現(xiàn)的連接。在TCP層,乒乓行為是當(dāng)一個通信器(發(fā)送器)發(fā)送數(shù)據(jù)然后等待來自另一個通信器(接收器)的響應(yīng)。乒乓行為的例子包括遠(yuǎn)程程序調(diào)用、HTTP和其他。以上描述的算法使用重傳超時來從與事務(wù)相關(guān)的最后的一個分組或多個的丟棄進行恢復(fù)。由于在一些實施例中,TCP RTO機制極端粗略,例如在所有情況中要求最小1秒的值,在這些情況下可以看到差的應(yīng)用行為。在一個實施例中,數(shù)據(jù)的發(fā)送器或耦合到發(fā)送器的流控制模塊220檢測所發(fā)送的數(shù)據(jù)中的事務(wù)邊界。在檢測到事務(wù)邊界時,發(fā)送器或者流控制器220發(fā)送額外的分組,額外的分組的接收從接收器生成額外的ACK或者SACK響應(yīng)。額外的分組的插入優(yōu)選地限于改善的應(yīng)用響應(yīng)時間和網(wǎng)絡(luò)能力利用之間的平衡。所插入的額外的分組的數(shù)量可以根據(jù)與該連接相關(guān)聯(lián)的當(dāng)前丟失率來進行選擇,對于較高的丟失率的連接選擇更多的分組。檢測事務(wù)邊界的一個方法是基于時間的。如果發(fā)送器已經(jīng)發(fā)送數(shù)據(jù)并停止,則在一段時間之后發(fā)送器或流控制模塊220宣告事務(wù)邊界。這可以和其他技術(shù)相結(jié)合。例如,由發(fā)送器在TCP首部中設(shè)置PSH(TCP推送)位可以指示事務(wù)邊界。因此,將基于時間的方法和這些附加的試探方法相組合可以提供對于事務(wù)邊界的更精確的檢測。在另一個技術(shù)中, 如果發(fā)送器或者流控制模塊220理解應(yīng)用協(xié)議,其可以解析協(xié)議數(shù)據(jù)流并且直接確定事務(wù)邊界。在一些實施例中,可以獨立于任一基于時間的機制使用此最后的行為。響應(yīng)于檢測事務(wù)邊界,發(fā)送器或流控制模塊220向接收器傳輸額外的數(shù)據(jù)分組以便從接收器引發(fā)確認(rèn)。因此,額外的數(shù)據(jù)分組應(yīng)該使得接收器將響應(yīng)于接收數(shù)據(jù)分組來至少產(chǎn)生ACK或SACK。在一個實施例中,簡單地重傳事務(wù)的最后一個或多個分組。相比于僅發(fā)送虛擬的數(shù)據(jù)分組,如果最后一個或多個分組已經(jīng)被丟棄,這就具有重傳所需數(shù)據(jù)的增加的益處。在又一個實施例中,發(fā)送最后一個或多個分組的片段,允許發(fā)送器來消除來自于其最初分組的這些分組到來的二義性。這使接收器避免錯誤的混淆任意重新排序自適應(yīng)算法。在又一個實施例中,任意數(shù)量的公知的前向糾錯技術(shù)可被用來為所插入的分組生成額外的數(shù)據(jù),這允許重新構(gòu)造接收器處丟失的或以其他方式錯過的數(shù)據(jù)。 在一些實施例中,當(dāng)對事務(wù)中的最后的數(shù)據(jù)分組的確認(rèn)被丟棄時,此處描述的邊界檢測技術(shù)有助于避免超時。當(dāng)發(fā)送器或流控制模塊220接收對于這些額外的數(shù)據(jù)分組的確認(rèn)時,發(fā)送器可以從這些額外的確認(rèn)來確定最后的數(shù)據(jù)分組是否已經(jīng)被接收或這需要被重傳,從而避免超時。在一個實施例中,如果最后的分組已經(jīng)被接收但是它們的確認(rèn)被丟棄,則流控制模塊220生成對該數(shù)據(jù)分組的確認(rèn),并且將該確認(rèn)發(fā)送到發(fā)送器,從而告知發(fā)送器該數(shù)據(jù)分組已經(jīng)被傳送。在又一個實施例中,如果沒有收到最后的分組,則流控制模塊 220向發(fā)送器發(fā)送一個分組來使發(fā)送器重傳丟棄的數(shù)據(jù)分組。重新分組在又一個實施例中,設(shè)備200或流控制器220使用重新分組技術(shù)來改善傳輸層網(wǎng)絡(luò)業(yè)務(wù)流。在一些實施例中,TCP性能和分組大小成比例。因此增加分組大小能改進性能, 除非其引起大大增加的分組丟失率或其他非線性效應(yīng),例如IP分片。通常,有線介質(zhì)(諸如銅纜或光纖)具有極低的誤碼率,低到可以忽略不計。對于這些介質(zhì),在分片發(fā)生之前, 最大化分組大小是有益的(通過底層傳輸介質(zhì)的協(xié)議來限制最大化的分組大小)。但是對于具有較高丟失率的傳輸介質(zhì)(例如,諸如WiFi等的無線技術(shù),或者諸如電力線網(wǎng)絡(luò)等高損環(huán)境),增加分組大小可能導(dǎo)致較低的傳輸率,因為介質(zhì)引發(fā)的錯誤導(dǎo)致整個分組被丟棄 (即,介質(zhì)引發(fā)的錯誤超過對于該介質(zhì)的標(biāo)準(zhǔn)糾錯碼的能力),從而增加了分組丟失率。分組丟失率中的顯著大的增加實際上否定了增加的分組大小的任何性能益處。在一些情況中,對于TCP端點來選擇最優(yōu)的分組大小可能是困難的。例如,最優(yōu)的分組大小可以根據(jù)每個鏈路的性質(zhì)在傳輸路徑時發(fā)生變化。通過將設(shè)備200或流控制模塊220插入到傳輸路徑中,流控制器220監(jiān)控鏈路的特征并且根據(jù)所確定的鏈路特征重新分組。在一個實施例中,設(shè)備200或流控制器220將具有連續(xù)數(shù)據(jù)的分組重新分組為少量的較大分組。在又一個實施例中,設(shè)備200或流控制器220通過將一系列大分組分為大量的較小的分組來對分組進行重新分組。在其他實施例中,設(shè)備200或流控制器220監(jiān)控鏈路特征并且通過重新組合來調(diào)整分組大小以提高吞吐量。QoS仍參考圖2A,在一些實施例中,流控制器220可以包括QoS引擎236,(也被稱為 QoS控制器)。在又一個實施例中,例如,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250包括單獨的但與流控制器220通信的QoS引擎236。QoS引擎236包括用于執(zhí)行改善任何網(wǎng)絡(luò)連接的性能、 操作或服務(wù)質(zhì)量的一個或多個服務(wù)質(zhì)量(QoS)技術(shù)的任何邏輯、商業(yè)規(guī)則、功能或操作。在一些實施例中,QoS引擎236包括為不同用戶、應(yīng)用、數(shù)據(jù)流或連接提供不同優(yōu)先級的網(wǎng)絡(luò)業(yè)務(wù)量控制和管理機制。在其他實施例中,QoS引擎236為用戶、應(yīng)用、數(shù)據(jù)流或連接控制、 維持或確保特定水平的性能。在一個實施例中,QoS引擎236為用戶、應(yīng)用、數(shù)據(jù)流或連接控制、維持或確保特定部分的帶寬或網(wǎng)絡(luò)容量。在一些實施例中,QoS引擎236監(jiān)控對應(yīng)于用戶、應(yīng)用、數(shù)據(jù)流或連接的性能或服務(wù)質(zhì)量的所達(dá)到的水平,例如數(shù)據(jù)速率和延遲。響應(yīng)于監(jiān)控,QoS引擎236動態(tài)地控制或調(diào)整網(wǎng)絡(luò)分組的調(diào)度優(yōu)先級來獲得期望水平的性能或服務(wù)質(zhì)量。在一些實施例中,QoS引擎236根據(jù)一個或多個類別或等級的服務(wù)來優(yōu)先排序、調(diào)度和傳輸網(wǎng)絡(luò)分組。在一些實施例中,服務(wù)類別或等級可以包括1)盡最大努力,2)控制的負(fù)載,3)有保證的或者4)定性的。對于盡最大努力類的服務(wù),設(shè)備200作出合理的努力來傳送分組(標(biāo)準(zhǔn)服務(wù)水平)。對于控制的負(fù)載類的服務(wù),設(shè)備200或QoS引擎236近似傳輸介質(zhì)的標(biāo)準(zhǔn) 的分組錯誤丟失或者近似輕度負(fù)載網(wǎng)絡(luò)條件下的盡最大努力服務(wù)的行為。對于有保證類的服務(wù),設(shè)備200或QoS引擎236保證來在連接期間以確定的速率傳輸數(shù)據(jù)的能力。對于定性類的服務(wù),設(shè)備200或QoS引擎236將定性類服務(wù)用于要求或期望優(yōu)先排序的業(yè)務(wù)量的應(yīng)用、用戶、數(shù)據(jù)流或者連接,但不能對資源需求或服務(wù)水平進行定量。在這些情況中,設(shè)備200或QoS引擎236基于QoS引擎236的任意邏輯或配置或者基于商業(yè)規(guī)則或策略來確定服務(wù)類別或優(yōu)先級。例如,在一個實施例中,QoS引擎236根據(jù)策略引擎295、 295’指定的一個或多個策略來優(yōu)先排序、調(diào)度和傳輸網(wǎng)絡(luò)分組。協(xié)議加諫協(xié)議加速器234包括用于優(yōu)化、加速或以其他方式改善一個或多個協(xié)議的性能、 操作或服務(wù)質(zhì)量的任何邏輯、商業(yè)規(guī)則、功能或操作。在一個實施例中,協(xié)議加速器234在網(wǎng)絡(luò)堆棧的層5-7的加速任何應(yīng)用層協(xié)議。在其他實施例中,協(xié)議加速器234加速傳輸層或者層4協(xié)議。在一個實施例中,協(xié)議加速器234加速層2或?qū)?的協(xié)議。在一些實施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計來根據(jù)數(shù)據(jù)類型、協(xié)議的特征和/或行為來優(yōu)化或加速一個或多個協(xié)議的每一個。在又一個實施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計來改善用戶體驗、響應(yīng)時間、網(wǎng)絡(luò)或者計算機負(fù)載,和/或關(guān)于協(xié)議的網(wǎng)絡(luò)或帶寬利用。在一個實施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計來最小化文件系統(tǒng)訪問上的WAN延遲的影響。在一些實施例中,協(xié)議加速器234優(yōu)化或加速CIFS (通用互聯(lián)網(wǎng)文件系統(tǒng))協(xié)議的使用來改善文件系統(tǒng)訪問時間或?qū)?shù)據(jù)和文件的訪問時間。在一些實施例中, 協(xié)議加速器234優(yōu)化或加速NFS(網(wǎng)絡(luò)文件系統(tǒng))協(xié)議的使用。在又一個實施例中,協(xié)議加速器234優(yōu)化或加速文件傳輸協(xié)議(FTP)的使用。在一個實施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計來優(yōu)化或加速承載為有效載荷的或使用任何類型和形式的標(biāo)記語言的協(xié)議。在其他實施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計來優(yōu)化或加速超文本傳輸協(xié)議(HTTP)。在又一個實施例中,協(xié)議加速器234 被配置、構(gòu)建或設(shè)計來優(yōu)化或加速承載有效載荷或以其他方式使用XML (可擴展標(biāo)記語言) 的協(xié)議。透明并且多點部署配置在一些實施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250對于通過諸如WAN鏈路的網(wǎng)絡(luò)連接或鏈路的任何數(shù)據(jù)流是透明的。在一個實施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250 以這樣的方式操作通過WAN的數(shù)據(jù)流是由任何網(wǎng)絡(luò)監(jiān)控、QoS管理或網(wǎng)絡(luò)分析工具可識別的。在一些實施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250不創(chuàng)建用于傳輸可以隱藏、遮掩或以其他方式使網(wǎng)絡(luò)業(yè)務(wù)量不透明的數(shù)據(jù)的任何隧道或流。在其他實施例中,設(shè)備200透明地操作,因為設(shè)備不改變網(wǎng)絡(luò)分組的任何源和/或目標(biāo)地址信息或端口信息,諸如互聯(lián)網(wǎng)協(xié)議地址或端口號。在其他實施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250被認(rèn)為對于網(wǎng)絡(luò)架構(gòu)中的網(wǎng)絡(luò)、應(yīng)用、客戶機、服務(wù)器或其他設(shè)備或計算裝置透明地操作或運轉(zhuǎn)。也就是在一些實施例中,設(shè)備是透明的,因為不必修改網(wǎng)絡(luò)上的任何裝置或設(shè)備的網(wǎng)絡(luò)相關(guān)配置來支持設(shè)備200??梢韵旅娴牟渴鹋渲玫娜魏我粋€來部署設(shè)備200 1)串行業(yè)務(wù)量,2)代理模式,3) 虛擬串行模式。在一些實施例中,設(shè)備200可以與以下的一個或多個串行部署路由器、客戶機、服務(wù)器或者另一個網(wǎng)絡(luò)裝置或設(shè)備。在其他實施例中,設(shè)備200可以與以下的一個或多個并行部署路由器、客戶機、服務(wù)器或者另一個網(wǎng)絡(luò)裝置或設(shè)備。在并行部署中,路由器、客戶機、服務(wù)器或者其他網(wǎng)絡(luò)設(shè)備可以被配置為轉(zhuǎn)發(fā)、轉(zhuǎn)換或通過網(wǎng)絡(luò)至設(shè)備200或者經(jīng)由設(shè)備200轉(zhuǎn)發(fā)、轉(zhuǎn)換或通過網(wǎng)絡(luò)。在串行的實施例中,設(shè)備200與路由器的WAN串行部署。以此方式,來自WAN的所有業(yè)務(wù)量在到達(dá)LAN的目的地之前穿過該設(shè)備。在代理模式的實施例中,設(shè)備200被部署為客戶機和服務(wù)器之間的代理裝置。在一些實施例中,設(shè)備200使客戶機與網(wǎng)絡(luò)上的資源間接連接。例如,客戶機經(jīng)由設(shè)備200連接到資源,并且設(shè)備通過連接到該資源、不同的資源、或者通過從高速緩存供應(yīng)該資源來提供資源。在一些情況中,設(shè)備可以對于不同的目的來改變客戶機請求或者服務(wù)器響應(yīng),諸如對于此處所討論的任何優(yōu)化技術(shù)。在其他實施例中,設(shè)備200通過透明地攔截并轉(zhuǎn)發(fā)到客戶機和/或服務(wù)器的請求和響應(yīng)來作為透明代理運行。不使用客戶機側(cè)配置,設(shè)備200可以將客戶機請求重定向到不同的服務(wù)器或網(wǎng)絡(luò)。在一些實施例中,設(shè)備200可以在穿過該設(shè)備的任何網(wǎng)絡(luò)業(yè)務(wù)量上執(zhí)行任何類型和形式的網(wǎng)絡(luò)地址轉(zhuǎn)換(被稱為NAT)。在一些實施例中,設(shè)備200以虛擬串行模式配置來部署。在該實施例中,具有路由或轉(zhuǎn)換功能的路由器或網(wǎng)絡(luò)裝置被配置為轉(zhuǎn)發(fā)、路由或以其他方式提供發(fā)往網(wǎng)絡(luò)或設(shè)備 200的網(wǎng)絡(luò)分組。設(shè)備200接著在該網(wǎng)絡(luò)分組上執(zhí)行任一期望的處理,諸如此處討論的任一 WAN優(yōu)化技術(shù)。當(dāng)完成處理時,設(shè)備200將經(jīng)處理的網(wǎng)絡(luò)分組轉(zhuǎn)發(fā)到路由器以傳輸?shù)骄W(wǎng)絡(luò)上的目的地。以此方式,設(shè)備200可以并行耦合到路由器,但仍如同設(shè)備200串行一樣操作。該部署模式還提供透明性,因為當(dāng)分組被處理并經(jīng)由設(shè)備通過網(wǎng)絡(luò)傳輸時,保留了源和目標(biāo)地址以及端口信息。端節(jié)點部署盡管在上文網(wǎng)絡(luò)優(yōu)化引擎250總是結(jié)合設(shè)備200來描述,但是網(wǎng)絡(luò)優(yōu)化引擎250 或其任何部分可以被部署、分布或以其他方式操作在諸如客戶機102和/或服務(wù)器106的任一端節(jié)點上。由此,客戶機或服務(wù)器可以提供此處所描述的結(jié)合一個或多個設(shè)備200或者不結(jié)合設(shè)備200的網(wǎng)絡(luò)優(yōu)化引擎250的任何系統(tǒng)和方法。現(xiàn)參考圖2B,描述部署在一個或多個端節(jié)點的網(wǎng)絡(luò)優(yōu)化引擎250的示例實施例。 總的來說,客戶機102可以包括第一網(wǎng)絡(luò)優(yōu)化引擎250’并且服務(wù)器106可以包括第二網(wǎng)絡(luò)優(yōu)化引擎2 50”??蛻魴C102和服務(wù)器106可以建立傳輸層連接并且交換穿過或不穿過設(shè)備 200的通信。在一個實施例中,客戶機102的網(wǎng)絡(luò)優(yōu)化引擎250’執(zhí)行此處描述的技術(shù)來優(yōu)化、 加速或以其他方式改善與服務(wù)器106通信的網(wǎng)絡(luò)業(yè)務(wù)量的性能、操作或服務(wù)質(zhì)量。在又一個實施例中,服務(wù)器106的網(wǎng)絡(luò)優(yōu)化引擎250”執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善與客戶機102通信的網(wǎng)絡(luò)業(yè)務(wù)量的性能、操作或服務(wù)質(zhì)量。在一些實施例中,客戶機102的網(wǎng)絡(luò)優(yōu)化引擎250’和服務(wù)器106的網(wǎng)絡(luò)優(yōu)化引擎250”執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善在客戶機102與服務(wù)器106之間通信的網(wǎng)絡(luò)業(yè)務(wù)量的性能、操作或服務(wù)質(zhì)量。在又一個實施例中,客戶機102的網(wǎng)絡(luò)優(yōu)化引擎250’結(jié)合設(shè)備200執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善與客戶機102通信的網(wǎng)絡(luò)業(yè)務(wù)量的性能、操作或服務(wù)質(zhì)量。在又一個實施例中,服務(wù)器106的網(wǎng)絡(luò)優(yōu)化引擎250”結(jié)合設(shè)備200執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善與服務(wù)器106通信的網(wǎng)絡(luò)業(yè)務(wù)量的性能、操作或服務(wù)質(zhì)量。C、客戶機代理現(xiàn)參考圖3,描述客戶機代理120的實施例??蛻魴C102包括客戶機代理120,用于經(jīng)由網(wǎng)絡(luò)104與設(shè)備200、設(shè)備205和/或服務(wù)器106來建立、交換、管理和控制通信。在一些實施例中,客戶機120 (其也可以被稱為WAN客戶機)加速WAN網(wǎng)絡(luò)通信和/或用于通過網(wǎng)絡(luò)設(shè)備200通信??偟膩碚f,客戶機102在計算裝置100上操作,該計算裝置100擁有帶有內(nèi)核模式302以及用戶模式303的操作系統(tǒng),以及帶有一個或多個層310a-310b的網(wǎng)絡(luò)堆棧沈7??蛻魴C102可以已經(jīng)安裝和/或執(zhí)行一個或多個應(yīng)用。在一些實施例中,一個或多個應(yīng)用可通過網(wǎng)絡(luò)堆棧267與網(wǎng)絡(luò)104通信。所述應(yīng)用之一,諸如web瀏覽器,也可包括第一程序322。例如,可在一些實施例中使用第一程序322來安裝和/或執(zhí)行客戶機代理 120,或其中任何部分??蛻魴C代理120包括攔截機制或者攔截器350,用于從網(wǎng)絡(luò)堆棧267 攔截來自一個或者多個應(yīng)用的網(wǎng)絡(luò)通信。與設(shè)備200 —樣,客戶機102具有網(wǎng)絡(luò)堆棧沈7,其包括任何類型和形式的軟件、或硬件或其組合,用于提供與網(wǎng)絡(luò)104的連接和通信。客戶機102的網(wǎng)絡(luò)堆棧267包括上文結(jié)合設(shè)備200所描述的任何一個網(wǎng)絡(luò)堆棧實施例。在一些實施例中,客戶機代理120或其任何部分被設(shè)計和構(gòu)建為與由客戶機102的操作系統(tǒng)安裝或以其他方式提供的網(wǎng)絡(luò)堆棧267
一起操作或聯(lián)合工作。在進一步的細(xì)節(jié)中,客戶機102或設(shè)備200 (20 的網(wǎng)絡(luò)堆棧267可包括任何類型和形式的接口,用于接收、獲得、提供或以其它方式訪問與客戶機102的網(wǎng)絡(luò)通信相關(guān)的任何信息和數(shù)據(jù)。在一個實施例中,與網(wǎng)絡(luò)堆棧267的接口包括應(yīng)用編程接口(API)。接口也可包括任何函數(shù)調(diào)用、鉤子或過濾機制,事件或回調(diào)機制、或任何類型的接口技術(shù)。網(wǎng)絡(luò)堆棧267通過接口可接收或提供與網(wǎng)絡(luò)堆棧267的功能或操作相關(guān)的任何類型和形式的數(shù)據(jù)結(jié)構(gòu),例如對象。例如,數(shù)據(jù)結(jié)構(gòu)可以包括與網(wǎng)絡(luò)分組相關(guān)的信息和數(shù)據(jù)或者一個或多個網(wǎng)絡(luò)分組。在一些實施例中,數(shù)據(jù)結(jié)構(gòu)包括、引用或識別在網(wǎng)絡(luò)堆棧267的協(xié)議層處理的網(wǎng)絡(luò)分組的一部分,例如傳輸層的網(wǎng)絡(luò)分組。在一些實施例中,數(shù)據(jù)結(jié)構(gòu)325包括內(nèi)核級別數(shù)據(jù)結(jié)構(gòu),而在其他實施例中,數(shù)據(jù)結(jié)構(gòu)325包括用戶模式數(shù)據(jù)結(jié)構(gòu)。內(nèi)核級數(shù)據(jù)結(jié)構(gòu)可以包括獲得的或與在內(nèi)核模式302中操作的網(wǎng)絡(luò)堆棧267的一部分、或者運行在內(nèi)核模式302中的網(wǎng)絡(luò)驅(qū)動程序或其它軟件相關(guān)的數(shù)據(jù)結(jié)構(gòu)、或者由運行或操作在操作系統(tǒng)的內(nèi)核模式的服務(wù)、進程、任務(wù)、線程或其它可執(zhí)行指令獲得或收到的任何數(shù)據(jù)結(jié)構(gòu)。此外,網(wǎng)絡(luò)堆棧267的一些部分可在內(nèi)核模式302執(zhí)行或操作,例如,數(shù)據(jù)鏈路或網(wǎng)絡(luò)層,而其他部分在用戶模式303執(zhí)行或操作,例如網(wǎng)絡(luò)堆棧267的應(yīng)用層。例如,網(wǎng)絡(luò)堆棧的第一部分310a可以給應(yīng)用提供對網(wǎng)絡(luò)堆棧267的用戶模式訪問,而網(wǎng)絡(luò)堆棧267的第二部分310a提供對網(wǎng)絡(luò)的訪問。在一些實施例中,網(wǎng)絡(luò)堆棧的第一部分310a可包括網(wǎng)絡(luò)堆棧267的一個或多個更上層,例如層5-7的任何層。在其它實施例中,網(wǎng)絡(luò)堆棧267的第二部分310b包括一個或多個較低的層,例如層1-4的任何層。網(wǎng)絡(luò)堆棧267的第一部分 310a和第二部分310b的每一個可包括網(wǎng)絡(luò)堆棧267的任何部分,位于任何一個或多個網(wǎng)絡(luò)層,處于用戶模式203、內(nèi)核模式202,或其組合,或在網(wǎng)絡(luò)層的任何部分或者到網(wǎng)絡(luò)層的接口點,或用戶模式203和內(nèi)核模式202的任何部分或到用戶模式203和內(nèi)核模式202的接口點。攔截器350可以包括軟件、硬件、或者軟件和硬件的任何組合。在一個實施例中, 攔截器350在網(wǎng)絡(luò)堆棧267的任一點攔截或以其他方式接收網(wǎng)絡(luò)通信,并且重定向或者傳輸網(wǎng)絡(luò)通信到由攔截器350或者客戶機代理120所期望的、管理的或者控制的目的地。例如,攔截器350可以攔截第一網(wǎng)絡(luò)的網(wǎng)絡(luò)堆棧267的網(wǎng)絡(luò)通信并且傳輸該網(wǎng)絡(luò)通信到設(shè)備 200,用于在第二網(wǎng)絡(luò)104上傳輸。在一些實施例中,攔截器350包括驅(qū)動器或是驅(qū)動器,例如被構(gòu)建和設(shè)計來與網(wǎng)絡(luò)堆棧267對接并一同工作的網(wǎng)絡(luò)驅(qū)動器。在一些實施例中,客戶機代理120和/或攔截器350操作在網(wǎng)絡(luò)堆棧267的一個或者多個層,諸如在傳輸層。在一個實施例中,攔截器350包括過濾器驅(qū)動器、鉤子機制、或者連接到網(wǎng)絡(luò)堆棧的傳輸層的任一形式和類型的合適網(wǎng)絡(luò)驅(qū)動器接口,諸如通過傳輸驅(qū)動器接口(TDI)。在一些實施例中,攔截器350連接到諸如傳輸層的第一協(xié)議層和諸如傳輸協(xié)議層之上的任何層的另一個協(xié)議層,例如,應(yīng)用協(xié)議層。在一個實施例中,攔截器350可以包括遵守網(wǎng)絡(luò)驅(qū)動器接口規(guī)范(NDIQ的驅(qū)動器,或者NDIS驅(qū)動器。在又一個實施例中,攔截器350可以包括微型過濾器或者微端口驅(qū)動器。在一個實施例中,攔截器350或其部分在內(nèi)核模式202中操作。在又一個實施例中,攔截器350或其部分在用戶模式203中操作。在一些實施例中,攔截器350 的一部分在內(nèi)核模式202中操作,而攔截器350的另一部分在用戶模式203中操作。在其它實施例中,客戶機代理120在用戶模式203操作,但通過攔截器350連接到內(nèi)核模式驅(qū)動器、進程、服務(wù)、任務(wù)或者操作系統(tǒng)的部分,諸如以獲取內(nèi)核級數(shù)據(jù)結(jié)構(gòu)225。在其它實施例中,攔截器350為用戶模式應(yīng)用或者程序,諸如應(yīng)用。在一個實施例中,攔截器350攔截或接收任何的傳輸層連接請求。在這些實施例中,攔截器350執(zhí)行傳輸層應(yīng)用編程接口(API)調(diào)用以設(shè)置目的地信息,諸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,攔截器350攔截并重定向傳輸層連接到由攔截器350或客戶機代理120控制或管理的IP地址和端口。在一個實施例中,攔截器350 把該連接的目的地信息設(shè)置為客戶機代理120監(jiān)聽的客戶機102的本地IP地址和端口。例如,客戶機代理120可以包括為重定向的傳輸層通信監(jiān)聽本地IP地址和端口的代理服務(wù)。 在一些實施例中,客戶機代理120隨后將重定向的傳輸層通信傳送到設(shè)備200。在一些實施例中,攔截器350攔截域名服務(wù)(DNS)請求。在一個實施例中,客戶機代理120和/或攔截器350解析DNS請求。在又一個實施例中,攔截器發(fā)送所攔截的DNS 請求到設(shè)備200以進行DNS解析。在一個實施例中,設(shè)備200解析DNS請求并且將DNS響應(yīng)傳送到客戶機代理120。在一些實施例中,設(shè)備200經(jīng)另一個設(shè)備200’或者DNS服務(wù)器 106來解析DNS請求。在又一個實施例中,客戶機代理120可以包括兩個代理120和120’。在一個實施例中,第一代理120可以包括在網(wǎng)絡(luò)堆棧沈7的網(wǎng)絡(luò)層操作的攔截器350。在一些實施例中,第一代理120攔截網(wǎng)絡(luò)層請求,諸如互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)請求(例如,查驗和跟蹤路由)。在其它實施例中,第二代理120’可以在傳輸層操作并且攔截傳輸層通信。在一些實施例中,第一代理120在網(wǎng)絡(luò)堆棧210的一層攔截通信并且與第二代理120’對接或者將所攔截的通信傳送到第二代理120’??蛻魴C代理120和/或攔截器350可以以對網(wǎng)絡(luò)堆棧267的任何其它協(xié)議層透明的方式在協(xié)議層操作或與之對接。例如,在一個實施例中,攔截器350可以以對諸如網(wǎng)絡(luò)層的傳輸層之下的任何協(xié)議層和諸如會話、表示或應(yīng)用層協(xié)議的傳輸層之上的任何協(xié)議層透明的方式在網(wǎng)絡(luò)堆棧267的傳輸層操作或與之對接。這允許網(wǎng)絡(luò)堆棧267的其它協(xié)議層如所期望的進行操作并無需修改以使用攔截器350。這樣,客戶機代理120和/或攔截器350 可以與傳輸層對接以安全、優(yōu)化、加速、路由或者負(fù)載平衡經(jīng)由傳輸層承載的任一協(xié)議提供的任一通信,諸如TCP/IP上的任一應(yīng)用層協(xié)議。此外,客戶機代理120和/或攔截器可以以對任何應(yīng)用、客戶機102的用戶、客戶機102和/或與客戶機102通信的諸如服務(wù)器或設(shè)備200、206的任何其它計算裝置100透明的方式在網(wǎng)絡(luò)堆棧267上操作或與之對接。客戶機代理120和/或攔截器350可以以無需修改應(yīng)用的方式被安裝和/或執(zhí)行在客戶機102上。在一個實施例中,客戶機代理120 或其任何部分被以對客戶機102、設(shè)備200、205或服務(wù)器106的任何網(wǎng)絡(luò)配置透明的方式被安裝和/或執(zhí)行。在一些實施例中,客戶機代理120或其任何部分被以無需修改客戶機 102、設(shè)備200、205或服務(wù)器106的任何網(wǎng)絡(luò)配置的方式被安裝和/或執(zhí)行。在一個實施例中,客戶機102的用戶或者與客戶機102通信的計算裝置未意識到客戶機代理120或其任何部分的存在、執(zhí)行或者操作。同樣,在一些實施例中,相對于應(yīng)用、客戶機102的用戶、客戶機102、諸如服務(wù)器或設(shè)備200、205的另一個計算裝置、或者在由攔截器350連接的協(xié)議層之上和/或之下的任何協(xié)議層透明地來安裝、執(zhí)行和/或操作客戶機代理120和/或攔截器;350??蛻魴C代理120包括流客戶機306、收集代理304、SSL VPN代理308、網(wǎng)絡(luò)優(yōu)化引擎250和/或加速程序302。在一個實施例中,客戶機代理120包括由佛羅里達(dá)州R)rt Lauderdale的Citrix Systems公司開發(fā)的獨立計算架構(gòu)(ICA)客戶機或其任一部分,并且也被稱為ICA客戶機。在一些實施例中,客戶機代理120包括應(yīng)用流客戶機306,用于從服務(wù)器106流式傳輸應(yīng)用到客戶機102。在又一個實施例中,客戶機代理120包括收集代理 304,用于執(zhí)行端點檢測/掃描并且用于為設(shè)備200和/或服務(wù)器106收集端點信息。在一些實施例中,客戶機代理120具有一個或多個網(wǎng)絡(luò)加速或優(yōu)化程序或代理,例如網(wǎng)絡(luò)優(yōu)化引擎250和加速程序302。在一個實施例中,加速程序302加速客戶機102和服務(wù)器106之間的經(jīng)過設(shè)備205’的通信。在一些實施例中,網(wǎng)絡(luò)優(yōu)化引擎250提供此處所討論的WAN優(yōu)化技術(shù)。流客戶機306是應(yīng)用、程序、進程、服務(wù)、任務(wù)或者可執(zhí)行指令集,所述應(yīng)用、程序、 進程、服務(wù)、任務(wù)或者可執(zhí)行指令集用于接收和執(zhí)行從服務(wù)器106所流式傳輸?shù)膽?yīng)用。服務(wù)器106可以流式傳輸一個或者多個應(yīng)用數(shù)據(jù)文件到流客戶機306,用于播放、執(zhí)行或者以其它方式引起客戶機102上的應(yīng)用被執(zhí)行。在一些實施例中,服務(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í)行程序。收集代理304是用于識別、獲取和/或收集關(guān)于客戶機102的信息的應(yīng)用、程序、 進程、服務(wù)、任務(wù)或者可執(zhí)行指令集。在一些實施例中,設(shè)備200發(fā)送收集代理304到客戶機102或者客戶機代理120??梢愿鶕?jù)設(shè)備的策略引擎236的一個或多個策略來配置收集代理304。在其它實施例中,收集代理304發(fā)送在客戶機102上收集的信息到設(shè)備200。在一個實施例中,設(shè)備200的策略引擎236使用所收集的信息來確定和提供客戶機到網(wǎng)絡(luò)104 的連接的訪問、驗證和授權(quán)控制。在一個實施例中,收集代理304包括端點檢測和掃描機制,其識別并且確定客戶機的一個或者多個屬性或者特征。例如,收集代理304可以識別和確定任何一個或多個以下的客戶機側(cè)屬性1)操作系統(tǒng)和/或操作系統(tǒng)的版本,2)操作系統(tǒng)的服務(wù)包,3)運行的服務(wù),4)運行的進程,和幻文件。收集代理304還可以識別并確定客戶機上任何一個或多個以下軟件的存在或版本1)防病毒軟件;幻個人防火墻軟件;3)防垃圾郵件軟件,和4) 互聯(lián)網(wǎng)安全軟件。策略引擎236可以具有基于客戶機或客戶機側(cè)屬性的任何一個或多個屬性或特性的一個或多個策略。SSL VPN代理308是應(yīng)用、程序、進程、服務(wù)、任務(wù)或者可執(zhí)行指令集,所述應(yīng)用、程序、進程、服務(wù)、任務(wù)或者可執(zhí)行指令集用于建立從第一網(wǎng)絡(luò)104到第二網(wǎng)絡(luò)104’、104”的安全套接字層(SSL)虛擬專用網(wǎng)(VPN)連接,或從客戶機102到服務(wù)器106的SSL VPN連接。在一個實施例中,SSLVPN代理308建立從公共網(wǎng)104到專用網(wǎng)104,或104”的SSL VPN 連接。在一些實施例中,SSL VPN代理308和設(shè)備205聯(lián)合工作以提供SSL VPN連接。在一個實施例中,SSL VPN代理308建立與設(shè)備205的第一傳輸層連接。在一些實施例中,設(shè)備205建立與服務(wù)器106的第二傳輸層連接。在又一個實施例中,SSL VPN代理308建立與客戶機上應(yīng)用的第一傳輸層連接,以及與設(shè)備205的第二傳輸層連接。在其他實施例中, SSL VPN代理308和WAN優(yōu)化設(shè)備200聯(lián)合工作以提供SSL VPN連通。在一些實施例中,加速程序302是用于執(zhí)行一個或多個加速技術(shù)的客戶機側(cè)加速程序,以加速、增強或者以其他方式改善客戶機與服務(wù)器106的通信和/或?qū)Ψ?wù)器106的訪問,諸如訪問由服務(wù)器106提供的應(yīng)用。加速程序302的可執(zhí)行指令的邏輯、功能和/或操作可以執(zhí)行一個或多個下列加速技術(shù)1)多協(xié)議壓縮,幻傳輸控制協(xié)議池,幻傳輸控制協(xié)議多路復(fù)用,4)傳輸控制協(xié)議緩沖,以及幻通過高速緩存管理器的高速緩存。另外,加速程序302可執(zhí)行由客戶機102接收和/或發(fā)送的任何通信的加密和/或解密。在一些實施例中,加速程序302以集成的方式或者格式執(zhí)行一個或者多個加速技術(shù)。另外,加速程序302 可以對作為傳輸層協(xié)議的網(wǎng)絡(luò)分組的有效載荷所承載的任一協(xié)議或者多協(xié)議執(zhí)行壓縮。在一個實施例中,加速程序302被設(shè)計、構(gòu)建或配置為與設(shè)備205 —起工作以提供 LAN側(cè)加速或者提供通過設(shè)備205提供的加速技術(shù)。例如,在由Citrix System公司出品的 NetScaler設(shè)備205的一個實施例中,加速程序302包括NetScaler客戶機。在一些實施例中,加速程序302在例如分支機構(gòu)中的遠(yuǎn)程裝置中提供獨立的NetScaler加速技術(shù)。在其他實施例中,加速程序302和一個或多個NetScaler設(shè)備205聯(lián)合工作。在一個實施例中, 加速程序302提供網(wǎng)絡(luò)業(yè)務(wù)量的LAN側(cè)或基于LAN的加速或優(yōu)化。在一些實施例中,網(wǎng)絡(luò)優(yōu)化引擎250可以被設(shè)計、構(gòu)建或配置為與WAN優(yōu)化設(shè)備 200 一起工作。在其他實施例中,網(wǎng)絡(luò)優(yōu)化引擎250可以被設(shè)計、構(gòu)建或配置為用或不用設(shè)備200提供設(shè)備200的WAN優(yōu)化技術(shù)。例如,在由Citrix System公司出品的WANkaler 設(shè)備200的一個實施例中,網(wǎng)絡(luò)優(yōu)化引擎250包括WANkaler客戶機。在一些實施例中,網(wǎng)絡(luò)優(yōu)化引擎250在例如分支機構(gòu)的遠(yuǎn)程位置中提供獨立的WANkaler加速技術(shù)。在其他實施例中,網(wǎng)絡(luò)優(yōu)化引擎250和一個或多個WANkaler設(shè)備200聯(lián)合工作。在又一個實施例中,網(wǎng)絡(luò)優(yōu)化引擎250包括加速程序302、或加速程序302的功能、 操作和邏輯。在一些實施例中,加速程序302包括網(wǎng)絡(luò)優(yōu)化引擎250或網(wǎng)絡(luò)優(yōu)化引擎250的功能、操作和邏輯。在又一個實施例中,網(wǎng)絡(luò)優(yōu)化引擎250作為從加速程序302分開的程序或可執(zhí)行指令集而被提供或安裝。在其他實施例中,網(wǎng)絡(luò)優(yōu)化引擎250和加速程序302可被包括在同一程序或同一可執(zhí)行指令集中。在一些實施例中,仍參見圖3,第一程序322可以用于自動地、靜默地、透明地或者以其它方式安裝和/或執(zhí)行客戶機代理120或其任何部分。在一個實施例中,第一程序322 包括插件組件,例如ActiveX控件或Java控件或腳本,其加載到應(yīng)用并由應(yīng)用執(zhí)行。例如, 第一程序包括由web瀏覽器應(yīng)用加載和運行的ActiveX控件,例如在存儲器空間或應(yīng)用的上下文中。在又一個實施例中,第一程序322包括被例如瀏覽器的應(yīng)用載入并執(zhí)行的可執(zhí)行指令集。在一個實施例中,第一程序322是被設(shè)計和構(gòu)造為安裝客戶機代理120的程序。 在一些實施例中,第一程序322通過網(wǎng)絡(luò)從另一個計算裝置獲得、下載、或接收客戶機代理 120。在又一個實施例中,第一程序322是安裝程序或即插即用管理器,用于在客戶機102 的操作系統(tǒng)上安裝諸如網(wǎng)絡(luò)驅(qū)動和客戶機代理120或其任何部分的程序。在一些實施例中,客戶機代理120的每一或任一部分(流客戶機360、收集代理 304、SSL VPN代理308和攔截代理350)可作為單獨的應(yīng)用、程序、進程、服務(wù)、任務(wù)或可執(zhí)行指令集而被安裝、執(zhí)行、配置或操作。在其他實施例中,客戶機代理120的每一或任一部分可以一起作為單個客戶機代理120而被安裝、執(zhí)行、配置或操作。D、用于對包含消歧能力的遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)進行壓縮的系統(tǒng)和方法現(xiàn)參考圖4A和4B,示出了諸如設(shè)備200的中間設(shè)備的系統(tǒng)和方法的實施例,所述中間設(shè)備對在客戶機和服務(wù)器之間傳遞的、包含消歧能力的遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)進行壓縮。遠(yuǎn)程顯示協(xié)議可以為在服務(wù)器和客戶機之間傳遞的字形或位圖生成基于內(nèi)容的句柄。 對于跨越多個會話和客戶機的同一位圖,該句柄(也被稱為通用內(nèi)容句柄(UCH))可以是相同的。這在中間設(shè)備的壓縮歷史中提供了更多的可重復(fù)的和可壓縮的內(nèi)容。在一些實例中, UCH也可提供不同位圖的句柄之間的沖突。例如,兩個不同的位圖可能被分配相同的UCH。 為了解決這樣的沖突,遠(yuǎn)程顯示協(xié)議可使用消歧能力來區(qū)分具有相同UCH的位圖。以這種方式,遠(yuǎn)程顯示協(xié)議的設(shè)計和構(gòu)造在由于對數(shù)據(jù)的壓縮提供了改善的和加速的WAN加速性能的同時,保持了遠(yuǎn)程顯示客戶機代理顯示期望的輸出的完整性和操作。現(xiàn)參考圖4A,描述了通過遠(yuǎn)程顯示協(xié)議和多個中間設(shè)備通信的客戶機和服務(wù)器的系統(tǒng)的實施例。服務(wù)器可包括用于通過遠(yuǎn)程顯示協(xié)議生成和傳輸數(shù)據(jù)的遠(yuǎn)程顯示協(xié)議引擎??蛻魴C(例如客戶機10 可包括用于接收和顯示來自遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)的遠(yuǎn)程顯示客戶機代理120。遠(yuǎn)程顯示協(xié)議引擎可以為將要被傳遞到遠(yuǎn)程顯示協(xié)議客戶機代理的每個位圖或字形生成UCH。遠(yuǎn)程顯示協(xié)議引擎也可包括消歧記錄生成器,用于確定在不同位圖的通用內(nèi)容句柄之間的沖突的解決并生成消歧記錄。遠(yuǎn)程顯示協(xié)議客戶機代理使用該消歧記錄來在不同位圖的相同句柄之間進行消歧以便從高速緩存識別合適的位圖和/或?qū)⒃摵线m的位圖繪制到客戶機的顯示上。進一步地,WAN中間設(shè)備,也被稱為設(shè)備200A_N(之前已對其實施例進行了描述) 可被部署為提供對在諸如廣域網(wǎng)(WAN)的網(wǎng)絡(luò)上的客戶機和服務(wù)器之間的通信的加速。中間設(shè)備可攔截服務(wù)器和客戶機通信。網(wǎng)絡(luò)優(yōu)化引擎205可包括用于在服務(wù)器和客戶機之間通信的任何一個或多個協(xié)議的協(xié)議解析器。協(xié)議解析器可被設(shè)計和構(gòu)造來解析遠(yuǎn)程顯示協(xié)議。中間設(shè)備可將來自這樣的通信的數(shù)據(jù)存儲到壓縮歷史。這些中間設(shè)備可解析和存儲數(shù)據(jù)到與一個或多個服務(wù)器通信的多個客戶機的多個遠(yuǎn)程顯示協(xié)議會話的壓縮歷史。這些中間設(shè)備可將包括遠(yuǎn)程顯示協(xié)議的命令、位圖和句柄的遠(yuǎn)程顯示協(xié)議幀的任何內(nèi)容存儲到壓縮歷史。中間設(shè)備200使用這些共享的壓縮歷史來壓縮在中間設(shè)備之間傳遞的數(shù)據(jù)。第一設(shè)備200A接收來自服務(wù)器的遠(yuǎn)程顯示協(xié)議通信。第一設(shè)備確定該通信的任何內(nèi)容是否匹配在壓縮歷史中存儲的內(nèi)容。第一設(shè)備生成要向第二設(shè)備發(fā)送的壓縮的數(shù)據(jù)通信。該壓縮的數(shù)據(jù)消息可包括對在中間設(shè)備200之間所共享的壓縮歷史中的所匹配的內(nèi)容的一個或多個標(biāo)識符。例如,該標(biāo)識符可標(biāo)識在壓縮歷史中的內(nèi)容的位置和長度。壓縮的數(shù)據(jù)消息也可包括未被匹配(或該匹配不滿足預(yù)定的標(biāo)準(zhǔn))的內(nèi)容和/或如最初從服務(wù)器的通信接收的內(nèi)容。第二設(shè)備200N接收來自第一設(shè)備200A的壓縮的通信。第二設(shè)備使用所匹配的內(nèi)容的標(biāo)識符來從壓縮歷史獲得該內(nèi)容。第二設(shè)備接著使用來自壓縮歷史的內(nèi)容來重建從服務(wù)器到客戶機的原始通信的副本。第二設(shè)備將該重建的通信傳輸?shù)娇蛻魴C。在進一步的細(xì)節(jié)中,位圖或字形可以是或包括任何類型和形式的圖形數(shù)據(jù)或信息。字形可包括字符的物理和虛擬的表示。字形本身可以與字符的形狀、字體、字號、鮮明度(boldness)和傾斜度相一致??梢越?jīng)由位圖由位的位模式或輪廓來表示字形。在一些實施例中,位圖或字形包括服務(wù)器發(fā)送到客戶機的顯示信息以便在客戶機的屏幕上進行顯示。在一些實施例中,位圖包括用于表示從應(yīng)用輸出的或?qū)⒁伙@示的任何類型和形式的信息、數(shù)據(jù)或信號的任何代碼、任何數(shù)量的字符、數(shù)字或符號的任一組合。通用內(nèi)容句柄(此處也可被稱為句柄或UCH)可以是與位圖或字形關(guān)聯(lián)的或用于識別位圖或字形的任何類型和形式的信息或標(biāo)識符。UCH可包括標(biāo)識位圖或數(shù)據(jù)的任何其他關(guān)聯(lián)部分的數(shù)字和字符的任一組合。在一些實施例中,UCH包括任一方向的多個數(shù)據(jù)位或字符,其用于標(biāo)識位圖、字形或數(shù)據(jù)的任何其他部分,或者與其相關(guān)聯(lián)。UCH引用的字形、 位圖或部分?jǐn)?shù)據(jù)可以被存儲在任何設(shè)備200的壓縮歷史中或者服務(wù)器106或客戶機102的任何高速緩存(例如高速緩存140)中。UCH可被存儲在遠(yuǎn)程顯示協(xié)議幀的任何部分中或與其相關(guān)聯(lián)。在一些實施例中,句柄包括將要被包含在遠(yuǎn)程顯示協(xié)議幀中的預(yù)定的位數(shù)。句柄可使用位的任何配置來指向或標(biāo)識被存儲或?qū)⒁淮鎯υ谠O(shè)備200的壓縮歷史中或者服務(wù)器106或客戶機102的高速緩存中的特定的位圖或數(shù)據(jù)的特定部分。遠(yuǎn)程顯示協(xié)議引擎(也被稱為RDP引擎)可使用任何類型和形式的算法、加密或哈希,以便基于位圖或字形的內(nèi)容或其任何部分來生成通用內(nèi)容句柄。遠(yuǎn)程顯示協(xié)議引擎可使用例如預(yù)定數(shù)目的位作為哈希,例如內(nèi)容或其任何部分的16位的哈希。在一些實施例中,遠(yuǎn)程顯示協(xié)議引擎可使用比預(yù)定數(shù)目的位更長的哈希,然后將該較長的哈希截短至該預(yù)定數(shù)目的位。在一些實施例中,RDP引擎生成用于句柄的預(yù)定數(shù)目的位,例如16、32或64 位。RDP引擎可以將該哈希應(yīng)用到通過遠(yuǎn)程顯示協(xié)議發(fā)送或傳輸?shù)娜魏螖?shù)據(jù)的內(nèi)容。在一些實施例中,RDP引擎可以為一組字節(jié)或字形生成通用內(nèi)容句柄。客戶機102可包括一個或多個遠(yuǎn)程顯示協(xié)議客戶機代理120。遠(yuǎn)程顯示協(xié)議客戶機代理120可以是任何類型和形式的客戶機代理120。遠(yuǎn)程顯示協(xié)議代理可包括任一客戶機代理120的任何功能和特征。遠(yuǎn)程顯示協(xié)議代理120可包括用于使用、處理和顯示從服務(wù)器傳輸?shù)膬?nèi)容的任何類型和形式的軟件、硬件、腳本、應(yīng)用或程序或上述的任一組合。在一些實施例中,遠(yuǎn)程顯示協(xié)議代理120使用位圖和UCH并結(jié)合任何其他指令、數(shù)據(jù)或內(nèi)容來向用戶呈現(xiàn)或顯示預(yù)期的內(nèi)容或顯示。遠(yuǎn)程顯示協(xié)議客戶機120可利用一個或多個通用內(nèi)容句柄來檢索在諸如高速緩存140的高速緩存中存儲的一個或多個位圖。遠(yuǎn)程顯示協(xié)議客戶機120可將指令和命令與句柄和位圖或任何其他的收到的信息組合在一起來以將要在客戶機102上顯示的內(nèi)容格式生成內(nèi)容或重設(shè)內(nèi)容的格式。服務(wù)器106可包括用于與客戶機102通信的一個或多個遠(yuǎn)程顯示協(xié)議引擎。遠(yuǎn)程顯示協(xié)議引擎和/或消歧記錄生成器可生成UCH句柄、識別句柄間的沖突以及生成消歧記錄。消歧記錄可包括任何數(shù)量的文本、字符、符號或數(shù)字以幫助區(qū)別或識別兩個或多個相同或相似的句柄。由于服務(wù)器具有所生成的實際的位圖、字形或數(shù)據(jù)以及為這些位圖、字形或數(shù)據(jù)的每一個所生成的句柄的知識,所以服務(wù)器可使用該知識來生成消歧記錄。消歧記錄可以是任何格式或類型的記錄。消歧記錄可以包括任何數(shù)量的位、數(shù)字或字符。在一些實施例中,消歧記錄包括數(shù)據(jù)結(jié)構(gòu)。在進一步的實施例中,消歧記錄包括數(shù)據(jù)組。在其他實施例中,消歧記錄包括對象。在進一步的實施例中,消歧記錄包括鏈表。消歧記錄可包括用于將該消歧記錄與其他消歧記錄相區(qū)別的唯一標(biāo)識符。消歧記錄可以是將一個UCH與另一 UCH相區(qū)別的任何類型和形式的信息或標(biāo)識符。消歧記錄可包括識別UCH或該UCH標(biāo)識的或與其關(guān)聯(lián)的位圖的數(shù)字和/或字符的任一組合。在一些實施例中,消歧記錄包括任何方向的多個數(shù)據(jù)位或字符,其用于識別UCH或位圖,或者與其相關(guān)聯(lián)。在一些實施例中,消歧記錄包括任何將一個句柄與另一個相同句柄相區(qū)別的任何數(shù)目的位。消歧記錄可基于位圖或字形或其傳輸?shù)呐R時信息、次序、大小或任何其他特征來消除對于不同位圖或字形的相同UCH間的歧義。在一些實施例中,消歧記錄包括對于一個或多個UCH(例如具有相同值的UCH)的基于時間的標(biāo)識符?;跁r間的標(biāo)識符可包括在生成、傳輸、載入或存儲對于UCH的位圖或字形時的時間。在其他實施例中,消歧記錄包括數(shù)字來標(biāo)識沖突的UCH被客戶機代理使用、載入或通過遠(yuǎn)程顯示協(xié)議發(fā)送的次序。這樣的次序可將一個UCH及相應(yīng)的字形/位圖與另一個UCH及相應(yīng)的字形/位圖相區(qū)別。在一些實施例中,消歧記錄可包括額外的哈希值以便將一個UCH的位圖或字形的內(nèi)容從另一 UCH的位圖或字形的內(nèi)容識別出。消歧記錄可被存儲在遠(yuǎn)程顯示協(xié)議幀的任何部分中或通過其攜帶。在一個實施例中,可在遠(yuǎn)程顯示協(xié)議幀的開始處提供消歧記錄。在又一個實施例中,可在遠(yuǎn)程顯示協(xié)議幀的末尾處提供消歧記錄。在一些實施例中,可在所述幀中與另一個UCH相沖突的任一 UCH的之后或開始處提供消歧記錄。在又一個實施例中,消歧記錄可具有遠(yuǎn)程顯示協(xié)議幀中沖突的UCH的其中一個或與其相結(jié)合。在一些實施例中,遠(yuǎn)程顯示協(xié)議幀中的消歧記錄目的在于消除同一幀的沖突的 UCH間的歧義。在其他實施例中,遠(yuǎn)程顯示協(xié)議幀中的消歧記錄目的在于消除同一幀中UCH 和先前通過另一個遠(yuǎn)程顯示協(xié)議幀傳輸?shù)腢CH之間的歧義。在一些實施例中,遠(yuǎn)程顯示協(xié)議幀中的消歧記錄目的在于消除同一幀中UCH和在客戶機的高速緩存中存儲的UCH之間的歧義。在其他實施例中,遠(yuǎn)程顯示協(xié)議幀中的消歧記錄目的在于消除之前由客戶機接收的且未被提供為當(dāng)前的遠(yuǎn)程顯示協(xié)議幀的一部分的UCH之間的歧義。在其他實施例中,在隨后的具有將要被消歧的UCH的遠(yuǎn)程顯示協(xié)議幀之前的第一個遠(yuǎn)程顯示協(xié)議幀中發(fā)送消歧記錄。服務(wù)器和客戶機可使用任何類型或形式的基于服務(wù)器計算的應(yīng)用來通信,所述應(yīng)用可以使用任何類型和形式的遠(yuǎn)程顯示協(xié)議。在一個實施例中,遠(yuǎn)程顯示協(xié)議是Citrix Systems公司的ICA協(xié)議。遠(yuǎn)程顯示協(xié)議客戶機代理可以包括由Citrix Systems公司出品的任一 ICA客戶機代理。服務(wù)器的遠(yuǎn)程顯示協(xié)議引擎可包括Citrix Systems公司的任何一個ICA服務(wù)器軟件。在又一個實施例中,遠(yuǎn)程顯示協(xié)議是Microsoft公司的遠(yuǎn)程桌面協(xié)議。遠(yuǎn)程顯示協(xié)議客戶機代理可以包括由Microsoft公司出品的任一 RDP客戶機代理。服務(wù)器的遠(yuǎn)程顯示協(xié)議引擎可包括Microsoft公司的遠(yuǎn)程顯示協(xié)議軟件和/或終端服務(wù)產(chǎn)品的任何一個。在又一個實施例中,遠(yuǎn)程顯示協(xié)議是遠(yuǎn)程幀緩沖(RFB)協(xié)議并且遠(yuǎn)程顯示協(xié)議引擎和客戶機代理是使用RFB通信的產(chǎn)品或應(yīng)用。遠(yuǎn)程顯示協(xié)議可包括任何格式的頭部、字段或有效載荷。遠(yuǎn)程顯示協(xié)議可包括任何命令和/或用于該命令的數(shù)據(jù)來指導(dǎo)或指示遠(yuǎn)程顯示協(xié)議代理和/或遠(yuǎn)程顯示協(xié)議引擎來執(zhí)行操作。在一些實施例中,遠(yuǎn)程顯示協(xié)議提供繪制位圖的命令。該命令可通過諸如通用內(nèi)容句柄的句柄來標(biāo)識位圖。在一些情況下,該命令可提供位圖。在其他情況下,該命令可提供位圖和句柄。在其他實施例中,該命令可指示遠(yuǎn)程顯示協(xié)議客戶機來將位圖存儲到高速緩存。在一些實施例中,該命令可指示遠(yuǎn)程顯示協(xié)議客戶機來從高速緩存加載位圖。在又一個實施例中,該命令可指示遠(yuǎn)程顯示協(xié)議客戶機將高速緩存中的位圖用于操作。遠(yuǎn)程顯示協(xié)議引擎(此處也可稱為RDP引擎)可生成任何數(shù)量、類型和形式的字形或位圖。RDP引擎可處理、封裝、格式化或修改內(nèi)容,例如來自服務(wù)器給任何數(shù)量的客戶機提供的任何數(shù)量的應(yīng)用的字形或位圖。RDP引擎可以為每個位圖生成句柄或UCH。在一些實施例中,RDP引擎可以為多個位圖生成UCH。在進一步的實施例中,UCH對于每個位圖是唯一的。在進一步的實施例中,不為每個位圖而是僅為一些位圖生成UCH。遠(yuǎn)程顯示協(xié)議引擎可使用任何數(shù)量的規(guī)則或策略來確定哪個位圖可具有關(guān)聯(lián)的UCH以及哪個位圖不具有關(guān)聯(lián)的UCH。在一些實施例中,RDP引擎為例如多個屏幕、將要被顯示的整個屏幕或部分屏幕成批地生成字形和繪制命令。RDP引擎可以格式化、修改或處理將要用于整個屏幕、多個屏幕或屏幕的部分顯示的其他應(yīng)用的字形、位圖和繪制命令。其他實施例中,RDP引擎生成、修改或格式化位圖、字形和繪制命令為基于內(nèi)容的,使得RDP引擎不必知道不同的會話和客戶機。換句話說,RDP引擎可為一個會話或一個客戶機生成或封裝位圖和句柄并且仍能夠?qū)⑼晃粓D和同一句柄用于與不同的客戶機通信。有時,RDP引擎可以具有用于為每個位圖或字形生成唯一 UCH的有限數(shù)量的可用位。在一些實施例中,所產(chǎn)生的位圖和字形的數(shù)量可能超過用于將UCH與其他UCH相區(qū)別的唯一的位配置的數(shù)量。在這樣的實例中, RDP弓丨擎可利用消歧記錄來區(qū)別相同的兩個或多個UCH。消歧記錄生成器可以是用于生成消歧記錄的任何裝置、組件、功能或單元。在一些實施例中,消歧記錄生成器包括用于創(chuàng)建和管理消歧記錄的硬件、軟件或硬件和軟件的任一組合。在一些實施例中,消歧記錄生成器生成消歧記錄來確保UCH結(jié)合消歧記錄提供具有相同通用內(nèi)容句柄的兩個位圖之間的唯一區(qū)別。遠(yuǎn)程顯示協(xié)議幀可以是在客戶機和服務(wù)器之間傳輸?shù)?、?jīng)過一個或多個設(shè)備200 的任意數(shù)據(jù)包或信息包。在一些實施例中,遠(yuǎn)程顯示協(xié)議幀包括從服務(wù)器到客戶機的數(shù)據(jù)。 在進一步的實施例中,遠(yuǎn)程顯示協(xié)議幀包括一個或多個通用內(nèi)容句柄(UCH)。在進一步的實施例中,遠(yuǎn)程顯示協(xié)議幀包括一個或多個位圖、數(shù)據(jù)片或顯示內(nèi)容部分。在進一步的實施例中,遠(yuǎn)程顯示協(xié)議幀包括一個或多個字形、符號、圖形或字符。在進一步的實施例中,遠(yuǎn)程顯示協(xié)議幀包括與UCH關(guān)聯(lián)的高速緩存數(shù)據(jù)。在一些實施例中,遠(yuǎn)程顯示協(xié)議幀包括命令或指令。該命令或指令可以是繪制或檢索與UCH關(guān)聯(lián)的部分?jǐn)?shù)據(jù)的指令。在一些實施例中, 該命令或指令可以是緩存或存儲與UCH關(guān)聯(lián)的部分?jǐn)?shù)據(jù)的指令。在一些實施例中,遠(yuǎn)程顯示協(xié)議幀包括一個或多個消歧記錄。遠(yuǎn)程顯示協(xié)議幀可包括將要被存儲在服務(wù)器106、客戶機102的高速緩存中或者設(shè)備200的壓縮歷史中的一個或多個位圖以及相應(yīng)的UCH。在一些實施例中,遠(yuǎn)程顯示協(xié)議幀包括指向存儲在設(shè)備200的壓縮歷史或服務(wù)器106或客戶機 102的高速緩存中的一個或多個位圖的或與該一個或多個位圖關(guān)聯(lián)的一個或多個UCH。設(shè)備200的優(yōu)化引擎250的協(xié)議解析器可以是設(shè)備200的任何組件、裝置或單元, 用于解析在客戶機和服務(wù)器之間傳輸?shù)慕?jīng)過設(shè)備200的數(shù)據(jù)的分組、幀或包。在一些實施例中,協(xié)議解析器包括用于解析遠(yuǎn)程顯示協(xié)議的任何傳輸?shù)挠布④浖蛴布蛙浖娜我唤M合。在進一步的實施例中,協(xié)議解析器解析在客戶機102和服務(wù)器106之間傳輸?shù)慕?jīng)過設(shè)備200的遠(yuǎn)程顯示協(xié)議的遠(yuǎn)程顯示協(xié)議幀。設(shè)備200的協(xié)議解析器可以包括用于在遠(yuǎn)程顯示協(xié)議幀的任何組件間進行區(qū)別的任何裝置、功能、功能性或特征,所述組件諸如,例如UCH、位圖、繪制命令、緩存命令、消歧記錄或遠(yuǎn)程顯示協(xié)議幀的任何其他組件。在一些實施例中,協(xié)議解析器從同一遠(yuǎn)程顯示協(xié)議幀的指令分離或解析遠(yuǎn)程顯示協(xié)議幀的UCH或位圖。在進一步的實施例中,協(xié)議解析器從該遠(yuǎn)程顯示協(xié)議幀的剩余部分解析UCH。在進一步的實施例中,協(xié)議解析器從該遠(yuǎn)程顯示協(xié)議幀的剩余部分解析位圖。在進一步實施例中,協(xié)議解析器從該遠(yuǎn)程顯示協(xié)議幀的剩余部分解析該遠(yuǎn)程顯示協(xié)議幀的高速緩存數(shù)據(jù)或有效載荷。在進一步實施例中,協(xié)議解析器從該遠(yuǎn)程顯示協(xié)議幀的剩余部分解析命令,例如繪制命令或緩存命令。壓縮歷史可以是來自在客戶機102和服務(wù)器106之間的傳輸或部分傳輸?shù)臄?shù)據(jù)的任何歷史或收集。在一些實施例中,壓縮歷史包括由設(shè)備200攔截和存儲的任何數(shù)量的傳輸或傳輸?shù)娜魏尾糠?。設(shè)備可將在服務(wù)器106和客戶機102之間傳輸?shù)慕?jīng)過設(shè)備200的任何有效載荷數(shù)據(jù)或傳輸存儲到壓縮歷史。設(shè)備可以將遠(yuǎn)程顯示協(xié)議幀的任何部分存儲到壓縮歷史。在一些實施例中,壓縮歷史包括在服務(wù)器106和任何數(shù)量的客戶機102之間傳輸?shù)臄?shù)據(jù)或信息。壓縮歷史可包括該傳輸?shù)娜魏芜x擇的部分,例如位圖。在一些實施例中,壓縮歷史包括位圖和對應(yīng)于該位圖的UCH。壓縮歷史可包括被傳輸?shù)街付ǖ目蛻魴C或者一組客戶機的指定客戶機的任一遠(yuǎn)程顯示協(xié)議幀的位圖和相應(yīng)的UCH。在一些實施例中,壓縮歷史包括服務(wù)器106與任何數(shù)量的客戶機102的多個會話的位圖和相應(yīng)的UCH?,F(xiàn)參考圖4B,使用通用內(nèi)容句柄和消歧記錄來壓縮遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)的方法的實施例。在步驟450,服務(wù)器106為遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)生成通用內(nèi)容句柄(UCH)。在步驟 452,服務(wù)器106確定UCH的任何沖突并為遠(yuǎn)程顯示協(xié)議生成消歧記錄。在步驟454,服務(wù)器 106生成將要被傳輸?shù)娇蛻魴C的、具有消歧記錄的遠(yuǎn)程顯示協(xié)議幀。在步驟460,中間設(shè)備 200攔截遠(yuǎn)程顯示協(xié)議通信、解析并存儲數(shù)據(jù)到壓縮歷史。在步驟462,第一中間設(shè)備200 在壓縮歷史中找到匹配、生成壓縮的通信并將該壓縮的通信發(fā)送到第二中間設(shè)備。在步驟 464,第二中間設(shè)備接收壓縮的通信、在壓縮歷史中找到所識別的匹配并生成到客戶機的遠(yuǎn)程顯示協(xié)議通信。在步驟470,客戶機102從第二中間設(shè)備接收遠(yuǎn)程顯示協(xié)議的解壓縮的幀。在步驟472,客戶機使用消歧記錄確定是否存在消歧并解決該消歧。在步驟474,客戶機依照來自消歧的解決來顯示遠(yuǎn)程顯示客戶機的輸出。在步驟450,服務(wù)器106的遠(yuǎn)程顯示協(xié)議引擎為遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)生成通用內(nèi)容句柄UCH。在進一步的實施例中,服務(wù)器106接收由服務(wù)器106的應(yīng)用產(chǎn)生的數(shù)據(jù)或內(nèi)容并生成對應(yīng)于該內(nèi)容或數(shù)據(jù)的部分的UCH。在一些實施例中,當(dāng)服務(wù)器上的應(yīng)用產(chǎn)生顯示輸出時,遠(yuǎn)程顯示協(xié)議引擎生成、標(biāo)識或以其他方式獲得表示該顯示輸出的變化的位圖或字形。在一些實施例中,服務(wù)器106當(dāng)生成或提供每個位圖或字形時生成UCH。在又一個實施例中,服務(wù)器106為多個位圖或字形成批地生成UCH。在步驟452,例如遠(yuǎn)程顯示協(xié)議引擎的服務(wù)器106的組件確定是否存在UCH的任何沖突并為遠(yuǎn)程顯示協(xié)議生成消歧記錄。在一些實施例中,遠(yuǎn)程顯示協(xié)議引擎將所生成的UCH 與多個之前生成的UCH相匹配以便找到匹配。所匹配的之前生成的UCH可能是與新生成的 UCH相同的。在一些實施例中,所匹配的之前生成的UCH可以包括與新生成的UCH的一部分相同的部分。如果找到了匹配,遠(yuǎn)程顯示協(xié)議引擎確定存在新生成的UCH與之前生成的 UCH的沖突。服務(wù)器的消歧記錄生成器可響應(yīng)于所確定或檢測的沖突來生成消歧記錄。在步驟454,例如遠(yuǎn)程顯示協(xié)議引擎的服務(wù)器106的組件生成具有消歧記錄的遠(yuǎn)程顯示協(xié)議幀并將該遠(yuǎn)程顯示協(xié)議幀傳輸?shù)娇蛻魴C。在一些實施例中,遠(yuǎn)程顯示協(xié)議引擎為包括UCH和/或位圖或字形的一個命令生成幀。在又一個實施例中,遠(yuǎn)程顯示協(xié)議引擎每次生成多個幀。在進一步的實施例中,遠(yuǎn)程顯示協(xié)議引擎生成包括一個或多個消歧記錄的遠(yuǎn)程顯示協(xié)議幀。在一些實施例中,遠(yuǎn)程顯示協(xié)議引擎首先生成幀并且基于所生成的幀確定要進行消歧的UCH。在這些實施例中,遠(yuǎn)程顯示協(xié)議幀接著可以給該幀添加一個或多個消歧記錄。在步驟460,第一中間設(shè)備200攔截遠(yuǎn)程顯示協(xié)議通信、解析該遠(yuǎn)程顯示協(xié)議通信并且將數(shù)據(jù)存儲到壓縮歷史。在一些實施例中,接收來自服務(wù)器106的遠(yuǎn)程顯示協(xié)議幀的設(shè)備200的協(xié)議解析器解析遠(yuǎn)程顯示協(xié)議幀。在一些實施例中,第一中間設(shè)備將遠(yuǎn)程顯示協(xié)議幀的某些解析的部分存儲到壓縮歷史。在其他實施例中,第一中間設(shè)備將遠(yuǎn)程顯示協(xié)議幀的有效載荷存儲到壓縮歷史。同樣地,當(dāng)?shù)诙虚g設(shè)備收到遠(yuǎn)程顯示協(xié)議通信時,第二中間設(shè)備可以解析這樣的通信并將來自遠(yuǎn)程顯示協(xié)議的數(shù)據(jù)存儲到壓縮歷史。這樣,第一和第二中間設(shè)備共享至少一些來自該通信的相同的數(shù)據(jù)以便在中間設(shè)備之間進行壓縮。在步驟462,第一中間設(shè)備200在壓縮歷史中找到匹配、生成壓縮的通信并將該壓縮的通信發(fā)送到第二中間設(shè)備。在一些實施例中,第一中間設(shè)備可在壓縮的消息中使用任何類型和形式的匹配長度和位置標(biāo)識符。匹配長度和位置標(biāo)識符標(biāo)識中間設(shè)備的壓縮歷史之間共享的匹配內(nèi)容。這樣的壓縮的通信可以被轉(zhuǎn)發(fā)或發(fā)送到第二中間設(shè)備200或客戶機 102。步驟464,第二中間設(shè)備或客戶機102從第一中間設(shè)備接收壓縮的通信。第二中間設(shè)備使用匹配長度和位置標(biāo)識符來從壓縮歷史獲得內(nèi)容。第二中間設(shè)備生成或重新構(gòu)建從服務(wù)器發(fā)送的且將要被發(fā)送到客戶機的遠(yuǎn)程顯示協(xié)議通信。第二中間設(shè)備將該重新構(gòu)建的和/或解壓縮的遠(yuǎn)程顯示協(xié)議通信轉(zhuǎn)發(fā)到客戶機。在步驟470,客戶機102的遠(yuǎn)程顯示協(xié)議客戶機代理120接收遠(yuǎn)程顯示協(xié)議的解壓縮的幀。在一些實施例中,遠(yuǎn)程顯示協(xié)議代理120接收由第二中間設(shè)備轉(zhuǎn)發(fā)的遠(yuǎn)程顯示協(xié)議的解壓縮的幀的一部分。在其他實施例中,遠(yuǎn)程顯示協(xié)議代理接收遠(yuǎn)程顯示協(xié)議的多個解壓縮的幀。在又一個實施例中,遠(yuǎn)程顯示協(xié)議代理接收遠(yuǎn)程顯示協(xié)議的壓縮的幀,然后該代理對該幀進行解壓縮。在步驟472,客戶機102通過對消歧記錄的識別和/或識別沖突的UCHS來確定是否存在任何消歧。遠(yuǎn)程顯示協(xié)議代理可使用消歧記錄來解決UCH之間的沖突并識別相應(yīng)的位圖或字形。在一些實施例中,如果在新生成的UCH和之前生成的UCH之間存在沖突,那么客戶機102使用遠(yuǎn)程顯示協(xié)議幀的消歧記錄來解決該沖突并識別遠(yuǎn)程顯示協(xié)議幀的新生成的UCH引用的位圖或部分?jǐn)?shù)據(jù)??蛻魴C102可通過使用UCH、位圖或字形以及任何一個或多個當(dāng)前或先前的消歧記錄的任一組合來解決消歧。在步驟474,客戶機102依照消歧的解決來顯示遠(yuǎn)程顯示客戶機的輸出。在一些實施例中,客戶機102使用利用新生成的UCH并結(jié)合消歧記錄所識別的位圖或部分所存儲的數(shù)據(jù)來顯示該輸出??蛻魴C102可使用所識別的位圖來生成被顯示到客戶機102的輸出。 在一些實施例中,顯示到客戶機102的輸出包括圖形顯示文件。在其他實施例中,由客戶機 102顯示的輸出包括流式傳輸?shù)囊曨l或音頻文件。在進一步的實施例中,由客戶機102顯示的輸出包括網(wǎng)頁或網(wǎng)站。在進一步的實施例中,由客戶機102顯示的輸出包括word文檔、 電子郵件文檔或由服務(wù)器106提供的任何其他類型和形式的應(yīng)用、服務(wù)或資源?,F(xiàn)參考圖5,描述了用于經(jīng)由中間設(shè)備在客戶機和服務(wù)器之間協(xié)商遠(yuǎn)程顯示協(xié)議能力的系統(tǒng)和方法??偟膩碚f,客戶機可經(jīng)由客戶機代理120發(fā)起遠(yuǎn)程顯示協(xié)議的握手事務(wù)以協(xié)商能力。握手事務(wù)可標(biāo)識客戶機是否支持支持消歧的遠(yuǎn)程顯示協(xié)議的版本或支持不支持消歧的遠(yuǎn)程顯示協(xié)議的版本。當(dāng)每個中間設(shè)備200A、200N接收到握手通信時,每個中間設(shè)備可檢查該通信以確定客戶機是否具有遠(yuǎn)程顯示協(xié)議的消歧能力。每個中間設(shè)備可在握手通信中標(biāo)識該中間設(shè)備是否也支持具有消歧能力的遠(yuǎn)程通信顯示協(xié)議。服務(wù)器從中間設(shè)備接收該握手通信并且確定客戶機和/或中間設(shè)備是否支持消歧協(xié)議。如果支持,那么服務(wù)器傳輸響應(yīng),該響應(yīng)標(biāo)識該服務(wù)器支持和將要傳輸具有消歧的遠(yuǎn)程顯示協(xié)議。設(shè)備200A-200N可包括協(xié)議檢查器,其確定通信是否標(biāo)識對具有消歧的遠(yuǎn)程顯示協(xié)議的支持??梢栽谥虚g設(shè)備(或設(shè)備)的任何組件中包含協(xié)議檢查器。在一個實施例中, 網(wǎng)絡(luò)優(yōu)化引擎,或其任一組件包括協(xié)議檢查器。例如,結(jié)合圖2A描述和顯示的流控制器、分組處理引擎、LAN/WAN檢測器、協(xié)議加速器、高速緩存管理器或策略引擎的任何一個可包括協(xié)議檢查器。在一些實施例中,圖4A的協(xié)議解析器包括協(xié)議檢查器。協(xié)議檢查器可包括在設(shè)備200的處理器上或者在運行網(wǎng)絡(luò)優(yōu)化引擎250的任何裝置的處理器上執(zhí)行的任何類型和形式的可執(zhí)行指令。協(xié)議檢查器可包括功能、操作或邏輯以便確定諸如遠(yuǎn)程顯示協(xié)議握手幀的通信是否標(biāo)識、支持或以其他方式符合具有消歧記錄或能力的遠(yuǎn)程顯示協(xié)議。協(xié)議檢查器可確定該通信是否將發(fā)送該通信的客戶機標(biāo)識為支持遠(yuǎn)程顯示協(xié)議的消歧版本。協(xié)議檢查器可確定該通信是否將發(fā)送該通信的服務(wù)器標(biāo)識為支持遠(yuǎn)程顯示協(xié)議的消歧版本。協(xié)議檢查器可確定該通信是否將接收該通信的中間設(shè)備標(biāo)識為具有消歧協(xié)議。協(xié)議檢查器可以將中間設(shè)備的能力添加給該通信。在一些實施例中,協(xié)議檢查器增加或修改該通信以便將中間設(shè)備標(biāo)識為支持遠(yuǎn)程顯示協(xié)議的消歧版本。在其他實施例中,協(xié)議檢查器增加或修改該通信以便將任何一個或多個服務(wù)器、中間設(shè)備或多個中間設(shè)備和客戶機的標(biāo)識為支持遠(yuǎn)程顯示協(xié)議的消歧版本。在又一個實施例中,協(xié)議檢查器修改該通信以便刪除任何一個或多個服務(wù)器、中間設(shè)備或多個中間設(shè)備和客戶機對遠(yuǎn)程顯示協(xié)議的消歧版本的支持的標(biāo)識。概括來講圖示的方法,在步驟505,客戶機102的遠(yuǎn)程顯示協(xié)議客戶機代理120可發(fā)起與服務(wù)器106的遠(yuǎn)程顯示協(xié)議握手??蛻魴C代理120可標(biāo)識對于遠(yuǎn)程顯示協(xié)議的客戶機的能力并且可標(biāo)識客戶機代理120支持或具有此處描述的消歧能力。在步驟510,每個中間設(shè)備檢查來自客戶機的握手通信的能力。如果握手通信將客戶機標(biāo)識為支持遠(yuǎn)程顯示協(xié)議的消歧版本,中間設(shè)備將中間設(shè)備的能力添加到該握手通信。在步驟515,服務(wù)器從中間設(shè)備接收握手通信并確定客戶機和/或中間設(shè)備是否支持消歧。如果從客戶機到服務(wù)器的經(jīng)由中間設(shè)備的會話支持遠(yuǎn)程顯示協(xié)議的消歧版本,那么服務(wù)器響應(yīng)于客戶機的握手通信來使遠(yuǎn)程顯示協(xié)議可由設(shè)備進行壓縮。在步驟525,客戶機接收來自服務(wù)器的響應(yīng)以完成握手事務(wù)和能力的協(xié)商。在進一步的細(xì)節(jié)中,在步驟505,在一些實施例中,諸如ICA客戶機的客戶機代理 120可生成并傳輸一個或多個遠(yuǎn)程顯示協(xié)議幀來發(fā)起或建立與服務(wù)器的會話。客戶機代理可以在客戶機和服務(wù)器之間生成并傳輸一個或多個遠(yuǎn)程顯示協(xié)議幀來標(biāo)識、交換或協(xié)商能力。客戶機代理可以在客戶機代理和服務(wù)器遠(yuǎn)程顯示協(xié)議引擎之間生成并傳輸一個或多個遠(yuǎn)程顯示協(xié)議幀來標(biāo)識、交換或協(xié)商能力??蛻魴C代理可生成并傳輸一個或多個遠(yuǎn)程顯示協(xié)議幀來標(biāo)識、交換或協(xié)商對應(yīng)于或關(guān)于由客戶機代理和/或遠(yuǎn)程顯示協(xié)議引擎使用或支持的遠(yuǎn)程顯示協(xié)議的能力??蛻魴C代理120可以通過遠(yuǎn)程顯示協(xié)議幀的任何部分(例如首部、字段或有效載荷部分)來標(biāo)識或通告一個或多個能力??梢越?jīng)由遠(yuǎn)程顯示協(xié)議使用任何形式或格式來標(biāo)識這些能力,例如名稱-值對和屬性值。客戶機代理可以通過任何類型和形式的預(yù)定值或標(biāo)識符來標(biāo)識該客戶機代理支持消歧。在一些實施例中,客戶機代理可通過標(biāo)識、指定或限定遠(yuǎn)程顯示協(xié)議的版本來標(biāo)識該客戶機代理支持遠(yuǎn)程顯示協(xié)議的消歧版本。在一個實施例中,客戶機代理可標(biāo)識該客戶機代理支持的遠(yuǎn)程顯示協(xié)議的最高版本。在又一個實施例中,客戶機代理可標(biāo)識客戶機向服務(wù)器查詢的遠(yuǎn)程顯示協(xié)議的版本以確定服務(wù)器是否支持這樣的版本。在一些實施例中,客戶機代理120也標(biāo)識中間設(shè)備或設(shè)備(例如客戶機側(cè)設(shè)備)是否支持或識別具有消歧的遠(yuǎn)程顯示協(xié)議。這樣,在一些情況下,客戶機代理標(biāo)識客戶機和中間設(shè)備兩者的消歧能力。在步驟510,中間設(shè)備(例如設(shè)備)接收從客戶機發(fā)送的、向服務(wù)器通告遠(yuǎn)程顯示協(xié)議相關(guān)能力的通信。中間設(shè)備可通過協(xié)議解析器解析該遠(yuǎn)程顯示協(xié)議通信。中間設(shè)備可
46檢查該通信以識別客戶機是否通告了對消歧協(xié)議的支持。中間設(shè)備可檢查該通信以識別客戶機是否通告了由該中間設(shè)備對消歧協(xié)議的支持。中間設(shè)備可修改該通信以標(biāo)識該中間設(shè)備是否支持遠(yuǎn)程顯示協(xié)議的消歧版本。中間設(shè)備也可修改該通信以標(biāo)識客戶機是否支持遠(yuǎn)程顯示協(xié)議的消歧版本。在一些實施例中,當(dāng)該通信已經(jīng)標(biāo)識中間設(shè)備的消歧能力或中間設(shè)備不知道這樣的消歧能力時,中間設(shè)備不修改該通信。在一些實施例中,第一設(shè)備或中間設(shè)備可執(zhí)行該檢查、修改通信并將該通信轉(zhuǎn)發(fā)到第二設(shè)備或中間設(shè)備。第二設(shè)備并可執(zhí)行此處所描述的步驟510的任何實施例。第二設(shè)備向服務(wù)器轉(zhuǎn)發(fā)從第一設(shè)備接收的、由該第二設(shè)備進一步處理的通信。該通信可標(biāo)識客戶機和每個中間設(shè)備的能力。在一些實施例中,該通信可標(biāo)識客戶機和每個中間設(shè)備的消歧能力。在又一個實施例中,該通信可以標(biāo)識客戶機支持遠(yuǎn)程顯示協(xié)議的消歧版本。在其他實施例中,該通信標(biāo)識從服務(wù)器到客戶機的傳輸路徑或會話可以傳輸具有消歧或消歧記錄的遠(yuǎn)程顯示協(xié)議。在一些實施例中,該通信標(biāo)識客戶機或中間設(shè)備的其中一個不支持消歧能力。在又一個實施例中,該通信標(biāo)識由任何一個或多個客戶機和在客戶機和服務(wù)器之間的任一中間設(shè)備所支持的遠(yuǎn)程顯示協(xié)議的版本。在一些實施例中,設(shè)備都支持遠(yuǎn)程顯示協(xié)議的消歧版本。在又一個實施例中,設(shè)備支持不同版本的遠(yuǎn)程顯示協(xié)議。在一些情況下,盡管設(shè)備支持不同版本的遠(yuǎn)程顯示協(xié)議,這些版本可各自支持或具有消歧能力。在其他實施例中,一個設(shè)備支持遠(yuǎn)程顯示協(xié)議的消歧版本而另一個設(shè)備不支持遠(yuǎn)程顯示協(xié)議的消歧版本。在步驟515,服務(wù)器接收由中間設(shè)備轉(zhuǎn)發(fā)的通信。例如,服務(wù)器例如通過遠(yuǎn)程顯示協(xié)議引擎可接收由任何中間設(shè)備檢查和處理的握手遠(yuǎn)程顯示協(xié)議幀。服務(wù)器從該通信確定將哪個版本的遠(yuǎn)程顯示協(xié)議用于該會話或為該版本建立會話。服務(wù)器從對由該通信標(biāo)識的能力的檢查來確定客戶機是否支持或具有消歧能力和/或哪個版本的消歧能力。服務(wù)器從對由該通信標(biāo)識的能力的檢查來確定任何中間設(shè)備是否支持消歧能力。服務(wù)器從對由該通信標(biāo)識的能力的檢查來確定客戶機和每個中間設(shè)備是否支持消歧能力或相同的消歧能力。響應(yīng)于關(guān)于消歧能力的確定,服務(wù)器確定遠(yuǎn)程顯示協(xié)議的版本以用于遠(yuǎn)程顯示協(xié)議會話或向客戶機和/或中間設(shè)備通告該版本。服務(wù)器通過遠(yuǎn)程顯示協(xié)議引擎可生成并向客戶機傳輸對客戶機的握手或協(xié)商能力通信的響應(yīng)。服務(wù)器可標(biāo)識該服務(wù)器支持與由客戶機通告的遠(yuǎn)程顯示協(xié)議的相同的版本。服務(wù)器可確定客戶機或中間設(shè)備不支持消歧能力并響應(yīng)于該確定,服務(wù)器向該客戶機或中間設(shè)備標(biāo)識該服務(wù)器正在使用不支持消歧的遠(yuǎn)程顯示協(xié)議。如果客戶機和中間設(shè)備支持遠(yuǎn)程顯示協(xié)議的消歧版本,對客戶機的服務(wù)器響應(yīng)可提供信息以便標(biāo)識或使中間設(shè)備能對遠(yuǎn)程顯示協(xié)議進行壓縮。服務(wù)器可經(jīng)由該響應(yīng)標(biāo)識該服務(wù)器和客戶機不對遠(yuǎn)程顯示協(xié)議進行壓縮。服務(wù)器可經(jīng)由該響應(yīng)標(biāo)識該服務(wù)器和客戶機不可緩存遠(yuǎn)程顯示協(xié)議。在一些實施例中,盡管中間設(shè)備也可壓縮遠(yuǎn)程顯示協(xié)議的通信,但服務(wù)器和客戶機仍可執(zhí)行壓縮和/或高速緩存。在一些實施例中,雖然中間設(shè)備壓縮遠(yuǎn)程顯示協(xié)議的通信,但服務(wù)器和客戶機可不進行壓縮。在步驟520,客戶機接收來自服務(wù)器的響應(yīng)并使用由該服務(wù)器確定的遠(yuǎn)程顯示協(xié)議的版本。在一些實施例中,如果客戶機、服務(wù)器和中間設(shè)備的每一個支持消歧能力,那么服務(wù)器和客戶機使用具有消歧記錄的遠(yuǎn)程顯示協(xié)議的版本進行通信。在又一個實施例中,如果任何一個或多個客戶機、服務(wù)器或中間設(shè)備不支持消歧協(xié)議,那么客戶機和服務(wù)器使用不支持消歧或不具有消歧記錄的遠(yuǎn)程顯示協(xié)議的版本。在一些實施例中,響應(yīng)于服務(wù)器的握手響應(yīng),客戶機代理不對由客戶機代理產(chǎn)生或傳遞的遠(yuǎn)程顯示協(xié)議通信進行壓縮和/ 或服務(wù)器不對由服務(wù)器傳輸?shù)倪h(yuǎn)程顯示協(xié)議通信進行壓縮。相反,一個或多個中間設(shè)備可以對在客戶機和服務(wù)器之間傳遞的遠(yuǎn)程顯示協(xié)議進行壓縮。
權(quán)利要求
1.一種用于確定使中間設(shè)備對在客戶機和服務(wù)器之間通信的遠(yuǎn)程顯示協(xié)議進行壓縮的方法,所述方法包括a)由客戶機經(jīng)由第一中間設(shè)備和第二中間設(shè)備向服務(wù)器傳輸標(biāo)識客戶機的遠(yuǎn)程顯示協(xié)議能力的通信;b)由服務(wù)器從經(jīng)由第一中間設(shè)備和第二中間設(shè)備轉(zhuǎn)發(fā)的所述通信確定客戶機以及第一中間設(shè)備或第二中間設(shè)備的其中一個的遠(yuǎn)程顯示協(xié)議能力;c)由服務(wù)器響應(yīng)于所述確定來向客戶機傳輸標(biāo)識客戶機和服務(wù)器不對遠(yuǎn)程顯示協(xié)議通信進行壓縮的第二通信;d)由第一中間設(shè)備壓縮由服務(wù)器通過遠(yuǎn)程顯示協(xié)議向客戶機傳遞的數(shù)據(jù),并將所壓縮的數(shù)據(jù)轉(zhuǎn)發(fā)到第二中間設(shè)備;以及e)由第二中間設(shè)備對所壓縮的數(shù)據(jù)進行解壓縮并將解壓縮的數(shù)據(jù)通過遠(yuǎn)程顯示協(xié)議轉(zhuǎn)發(fā)到客戶機。
2.根據(jù)權(quán)利要求1所述的方法,其中步驟a)還包括由服務(wù)器經(jīng)由所述通信發(fā)起遠(yuǎn)程顯示協(xié)議的握手事務(wù)以協(xié)商客戶機和服務(wù)器之間的能力。
3.根據(jù)權(quán)利要求1所述的方法,其中步驟a)還包括由客戶機經(jīng)由所述通信標(biāo)識由該客戶機支持的遠(yuǎn)程顯示協(xié)議的版本。
4.根據(jù)權(quán)利要求1所述的方法,其中步驟b)還包括由第一中間設(shè)備修改所述通信以標(biāo)識由第一中間設(shè)備支持的遠(yuǎn)程顯示協(xié)議的版本。
5.根據(jù)權(quán)利要求1所述的方法,其中步驟c)還包括由第二中間設(shè)備修改所述通信以標(biāo)識由第二中間設(shè)備支持的遠(yuǎn)程顯示協(xié)議的版本。
6.根據(jù)權(quán)利要求1所述的方法,其中步驟c)還包括由服務(wù)器向客戶機傳輸作為遠(yuǎn)程顯示協(xié)議的握手事務(wù)的一部分的第二通信以協(xié)商客戶機和服務(wù)器之間的能力。
7.根據(jù)權(quán)利要求1所述的方法,還包括由第一中間設(shè)備通過在客戶機和服務(wù)器之間的遠(yuǎn)程顯示協(xié)議的第一會話接收數(shù)據(jù)的第一幀并且將第一幀的部分存儲到第一壓縮歷史。
8.根據(jù)權(quán)利要求7所述的方法,還包括由第二中間設(shè)備接收由第一中間設(shè)備轉(zhuǎn)發(fā)的第一幀并將第一幀的部分存儲到第二壓縮歷史,第二壓縮歷史共享第一壓縮歷史的內(nèi)容。
9.根據(jù)權(quán)利要求8所述的方法,還包括由第一中間設(shè)備通過遠(yuǎn)程顯示協(xié)議的第二會話接收數(shù)據(jù)的第二幀并且由第一中間設(shè)備使用在第一壓縮歷史中存儲的第一會話的第一幀的部分?jǐn)?shù)據(jù)來壓縮第二會話的第二幀的部分?jǐn)?shù)據(jù)。
10.根據(jù)權(quán)利要求1所述的方法,其中步驟d)還包括由連接到客戶機的第一網(wǎng)絡(luò)的第一中間設(shè)備通過不同于所述遠(yuǎn)程顯示協(xié)議的第二協(xié)議向連接到客戶機的第二網(wǎng)絡(luò)的第二中間設(shè)備傳遞所壓縮的數(shù)據(jù)。
11.一種用于確定使中間設(shè)備對在客戶機和服務(wù)器之間通信的遠(yuǎn)程顯示協(xié)議進行壓縮的方法,所述方法包括a)由服務(wù)器經(jīng)由第一中間設(shè)備和第二中間設(shè)備向客戶機傳輸標(biāo)識客戶機的遠(yuǎn)程顯示協(xié)議能力的通信;b)由客戶機從經(jīng)由第一中間設(shè)備和第二中間設(shè)備轉(zhuǎn)發(fā)的所述通信確定服務(wù)器以及第一中間設(shè)備或第二中間設(shè)備的其中一個的遠(yuǎn)程顯示協(xié)議能力;c)由客戶機響應(yīng)于所述確定來向服務(wù)器傳輸標(biāo)識客戶機和服務(wù)器不對遠(yuǎn)程顯示協(xié)議通信進行壓縮的第二通信;d)由第一中間設(shè)備壓縮由服務(wù)器通過遠(yuǎn)程顯示協(xié)議向客戶機傳遞的數(shù)據(jù),并將所壓縮的數(shù)據(jù)轉(zhuǎn)發(fā)到第二中間設(shè)備;以及e)由第二中間設(shè)備對所壓縮的數(shù)據(jù)進行解壓縮并將解壓縮的數(shù)據(jù)通過遠(yuǎn)程顯示協(xié)議轉(zhuǎn)發(fā)到客戶機。
12.根據(jù)權(quán)利要求11所述的方法,其中步驟a)還包括由客戶機經(jīng)由所述通信發(fā)起遠(yuǎn)程顯示協(xié)議的握手事務(wù)以協(xié)商客戶機和服務(wù)器之間的能力。
13.根據(jù)權(quán)利要求1所述的方法,其中步驟a)還包括由服務(wù)器經(jīng)由所述通信標(biāo)識由該服務(wù)器支持的遠(yuǎn)程顯示協(xié)議的版本。
14.根據(jù)權(quán)利要求1所述的方法,其中步驟b)還包括由第一中間設(shè)備修改所述通信以標(biāo)識由第一中間設(shè)備支持的遠(yuǎn)程顯示協(xié)議的版本。
15.根據(jù)權(quán)利要求1所述的方法,其中步驟c)還包括由第二中間設(shè)備修改所述通信以標(biāo)識由第二中間設(shè)備支持的遠(yuǎn)程顯示協(xié)議的版本。
16.根據(jù)權(quán)利要求1所述的方法,其中步驟c)還包括由客戶機向服務(wù)器傳輸作為遠(yuǎn)程顯示協(xié)議的握手事務(wù)的一部分的第二通信以協(xié)商客戶機和服務(wù)器之間的能力。
17.根據(jù)權(quán)利要求1所述的方法,還包括由第一中間設(shè)備通過在客戶機和服務(wù)器之間的遠(yuǎn)程顯示協(xié)議的第一會話接收數(shù)據(jù)的第一幀并且將第一幀的部分存儲到第一壓縮歷史。
18.根據(jù)權(quán)利要求7所述的方法,還包括由第二中間設(shè)備接收由第一中間設(shè)備轉(zhuǎn)發(fā)的第一幀并將第一幀的部分存儲到第二壓縮歷史,第二壓縮歷史共享第一壓縮歷史的內(nèi)容。
19.根據(jù)權(quán)利要求8所述的方法,還包括由第一中間設(shè)備經(jīng)由遠(yuǎn)程顯示協(xié)議的第二會話接收數(shù)據(jù)的第二幀并且由第一中間設(shè)備使用在第一壓縮歷史中存儲的第一會話的第一幀的部分?jǐn)?shù)據(jù)來壓縮第二會話的第二幀的部分?jǐn)?shù)據(jù)。
20.根據(jù)權(quán)利要求1所述的方法,其中步驟d)還包括由連接到客戶機的第一網(wǎng)絡(luò)的第一中間設(shè)備通過不同于所述遠(yuǎn)程顯示協(xié)議的第二協(xié)議向連接到客戶機的第二網(wǎng)絡(luò)的第二中間設(shè)備傳遞所壓縮的數(shù)據(jù)。
全文摘要
本發(fā)明自動檢測客戶機、服務(wù)器和/或中間設(shè)備的遠(yuǎn)程顯示協(xié)議能力以便確定是客戶機與服務(wù)器或是中間設(shè)備以及在某些情況下兩者都應(yīng)該壓縮遠(yuǎn)程顯示協(xié)議數(shù)據(jù)。
文檔編號H04L29/08GK102405631SQ201080017344
公開日2012年4月4日 申請日期2010年2月19日 優(yōu)先權(quán)日2009年2月20日
發(fā)明者A·塞繆爾斯, H·柯林斯, J·布拉德, R·詹森 申請人:思杰系統(tǒng)有限公司