用于遠(yuǎn)程桌面協(xié)議的改進(jìn)的帶寬優(yōu)化的制作方法
【專利摘要】所描述的是通過(guò)處理第一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面協(xié)議(RDP)的第二數(shù)據(jù)流的處理。該操作可以包括:促使將來(lái)自第一數(shù)據(jù)流的第一數(shù)據(jù)存儲(chǔ)在第一數(shù)據(jù)流中指示的第一索引,促使從第一數(shù)據(jù)流中包含的第二索引取回第二數(shù)據(jù),以及促使產(chǎn)生符合RDP且包含第一和第二數(shù)據(jù)的第二數(shù)據(jù)流。此外,還描述了通過(guò)處理符合RDP的第三數(shù)據(jù)流來(lái)串流傳輸?shù)谒臄?shù)據(jù)流的處理。該操作包括:促使通過(guò)處理第三數(shù)據(jù)流來(lái)識(shí)別分組數(shù)據(jù)單元(PDU),促使存儲(chǔ)與PDU相對(duì)應(yīng)的散列值,以及促使產(chǎn)生包含在第四數(shù)據(jù)流中的替換的PDU,以及包含用于標(biāo)識(shí)在存儲(chǔ)器中存儲(chǔ)散列值的位置的索引。
【專利說(shuō)明】用于遠(yuǎn)程桌面協(xié)議的改進(jìn)的帶寬優(yōu)化
【技術(shù)領(lǐng)域】
[0001] 本公開(kāi)主要涉及遠(yuǎn)程桌面協(xié)議,且尤其涉及對(duì)遠(yuǎn)程桌面協(xié)議提供改進(jìn)的帶寬優(yōu) 化。
【背景技術(shù)】
[0002] 遠(yuǎn)程桌面協(xié)議(RDP)是一種用于使用圖形界面提供遠(yuǎn)程設(shè)備訪問(wèn)的通信協(xié)議。例 如,在客戶機(jī)/服務(wù)器應(yīng)用中可以用RDP來(lái)為第一計(jì)算設(shè)備的用戶提供一個(gè)顯示了在遠(yuǎn)程 服務(wù)器設(shè)備上運(yùn)行的用戶會(huì)話桌面環(huán)境的圖形界面。通常,RDP可用于在通信網(wǎng)絡(luò)傳送大 量圖像數(shù)據(jù)(及其他類型的數(shù)據(jù)),以便以最小的延遲將圖形界面從遠(yuǎn)程設(shè)備提供至用戶 設(shè)備,以使用戶能與遠(yuǎn)程設(shè)備實(shí)時(shí)交互。在通信網(wǎng)絡(luò)帶寬受限的環(huán)境中,和/或在用戶與遠(yuǎn) 程設(shè)備的通信遭遇丟包和/或通信延遲的環(huán)境中,RDP的性能可能會(huì)受到影響。例如,用戶 有可能遭遇在遠(yuǎn)程設(shè)備上運(yùn)行的斷斷續(xù)續(xù)和/或不完整版本的圖形用戶界面。為了改善用 戶體驗(yàn),有必要提供具有用于減少RDP的帶寬使用以及將RDP在有損耗和/或延遲的通信 鏈路上的性能降級(jí)減少至最低的系統(tǒng)和方法。
【發(fā)明內(nèi)容】
[0003] 在本公開(kāi)的一個(gè)方面中,一種通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符 合遠(yuǎn)程桌面協(xié)議(RDP)的第二數(shù)據(jù)流的方法可以包括:促使處理從遠(yuǎn)程服務(wù)器接收的第一 數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元(PDU),其中與分組數(shù)據(jù)關(guān)聯(lián)的每一個(gè) PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān)且指示了存儲(chǔ)位置的索引值;響應(yīng) 于接收到包含第一分組數(shù)據(jù)的第一 rou,促使使用解壓縮算法來(lái)解壓縮第一分組數(shù)據(jù),以及 促使將解壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引值相對(duì)應(yīng)的存儲(chǔ)器緩 存中的位置;響應(yīng)于接收到第二rou,促使從與包含在第二PDU的報(bào)頭中的索引值對(duì)應(yīng)的存 儲(chǔ)器緩存中的位置取回第二分組數(shù)據(jù);促使產(chǎn)生符合RDP且包含解壓縮的第一分組數(shù)據(jù)以 及取回的第二分組數(shù)據(jù)的第二數(shù)據(jù)流;以及促使將所產(chǎn)生的符合RDP的第二數(shù)據(jù)流串流傳 輸至本地客戶機(jī)。
[0004] 在本公開(kāi)的一個(gè)方面中,一種通過(guò)處理符合遠(yuǎn)程桌面協(xié)議的第一數(shù)據(jù)流來(lái)將第二 數(shù)據(jù)流串流傳輸至遠(yuǎn)程客戶機(jī)設(shè)備的方法包括:促使處理符合RDP的第一數(shù)據(jù)流,以便識(shí) 別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元(PDU),并且對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該分組數(shù) 據(jù)中計(jì)算一個(gè)散列值;對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列值的存儲(chǔ)器緩 存中搜索與從分組數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列值;如果該搜索未能發(fā)現(xiàn)與 計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ) 從rou的分組數(shù)據(jù)中計(jì)算得到的散列值;如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的 已存儲(chǔ)散列值,則促使選擇性地壓縮pdu的分組數(shù)據(jù);促使為包含分組數(shù)據(jù)的第一數(shù)據(jù)流 中的每個(gè)PDU產(chǎn)生一個(gè)替換的rou,其中該替換的PDU包含一個(gè)帶有索引值的報(bào)頭,該索引 值指示的是用于存儲(chǔ)從分組數(shù)據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于存 儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的散列值匹配的散列值的存儲(chǔ)器緩存中的位置,以及其中如果 該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則替換的PDU選擇性地包含經(jīng) 過(guò)壓縮的分組數(shù)據(jù);以及促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流,該數(shù)據(jù)流包括為包含分 組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)pdu產(chǎn)生的替換的rou。
[0005] 在本公開(kāi)的一個(gè)方面中,機(jī)器可讀介質(zhì)是用指令編碼的,所述指令可以由一個(gè)或 多個(gè)處理器運(yùn)行,以便執(zhí)行通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面 協(xié)議(RDP)的第二數(shù)據(jù)流的一個(gè)或多個(gè)操作。所述一個(gè)或多個(gè)操作可以包括:促使處理從 遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元(PDU),其中與分 組數(shù)據(jù)關(guān)聯(lián)的每一個(gè)PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān)且指示了存儲(chǔ) 位置的索引值;響應(yīng)于接收到包含第一分組數(shù)據(jù)的第一 rou,促使使用解壓縮算法來(lái)解壓 縮第一分組數(shù)據(jù),以及促使將解壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引 值相對(duì)應(yīng)的存儲(chǔ)器緩存中的位置;響應(yīng)于接收到第二rou,促使從與包含在第二pdu的報(bào)頭 中的索引值對(duì)應(yīng)的存儲(chǔ)器緩存中的位置取回第二分組數(shù)據(jù);促使產(chǎn)生符合RDP且包含解壓 縮的第一分組數(shù)據(jù)以及取回的第二分組數(shù)據(jù)的第二數(shù)據(jù)流;以及促使將所產(chǎn)生的符合RDP 的第二數(shù)據(jù)流串流傳輸至本地客戶機(jī)。
[0006] 在本公開(kāi)的一個(gè)方面中,機(jī)器可讀介質(zhì)是用指令編碼的,所述指令可以由一個(gè)或 多個(gè)處理器運(yùn)行,以便執(zhí)行通過(guò)處理符合遠(yuǎn)程桌面協(xié)議的第一數(shù)據(jù)流來(lái)將第二數(shù)據(jù)流串流 傳輸至遠(yuǎn)程客戶機(jī)設(shè)備的一個(gè)或多個(gè)操作。所述一個(gè)或多個(gè)操作可以包括:促使處理符合 RDP的第一數(shù)據(jù)流,以便識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元(PDU),并且對(duì)于每一個(gè)包含分 組數(shù)據(jù)的rou,從該分組數(shù)據(jù)中計(jì)算一個(gè)散列值;對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使 在存儲(chǔ)散列值的存儲(chǔ)器緩存中搜索與從分組數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列 值;如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存 儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ)從rou的分組數(shù)據(jù)中計(jì)算得到的散列值;如果該搜索未能發(fā)現(xiàn) 與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地壓縮pdu的分組數(shù)據(jù);促使為 包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)rou產(chǎn)生一個(gè)替換的rou,其中該替換的rou包含一個(gè) 帶有索引值的報(bào)頭,該索引值指示的是用于存儲(chǔ)從分組數(shù)據(jù)中計(jì)算得到的散列值的存儲(chǔ)器 緩存中的位置,或是用于存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的散列值匹配的散列值的存儲(chǔ)器緩 存中的位置,以及其中如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則 替換的pdu選擇性地包含經(jīng)過(guò)壓縮的分組數(shù)據(jù);以及促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù) 流,該數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)pdu產(chǎn)生的替換的rou。
[0007] 在本公開(kāi)的一個(gè)方面中,一種通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符 合遠(yuǎn)程桌面協(xié)議(RDP)的第二數(shù)據(jù)流的硬件設(shè)備包括:被配置成執(zhí)行一個(gè)或多個(gè)操作的一 個(gè)或多個(gè)模塊。所述一個(gè)或多個(gè)操作可以包括:促使處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流, 以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元(PDU),其中與分組數(shù)據(jù)關(guān)聯(lián)的每一個(gè)PDU都包 括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān)且指示了存儲(chǔ)位置的索引值;響應(yīng)于接收到 包含第一分組數(shù)據(jù)的第一 rou,促使使用解壓縮算法來(lái)解壓縮第一分組數(shù)據(jù),以及促使將解 壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引值相對(duì)應(yīng)的存儲(chǔ)器緩存中的位 置;響應(yīng)于接收到第二rou,促使從與包含在第二pdu的報(bào)頭中的索引值對(duì)應(yīng)的存儲(chǔ)器緩存 中的位置取回第二分組數(shù)據(jù);促使產(chǎn)生符合RDP且包含解壓縮的第一分組數(shù)據(jù)以及取回的 第二分組數(shù)據(jù)的第二數(shù)據(jù)流;以及促使將所產(chǎn)生的符合RDP的第二數(shù)據(jù)流串流傳輸至本地 客戶機(jī)。
[0008] 在本公開(kāi)的一個(gè)方面中,一種通過(guò)處理符合遠(yuǎn)程桌面協(xié)議(RDP)的第一數(shù)據(jù)流來(lái) 將第二數(shù)據(jù)流串流傳輸至遠(yuǎn)程客戶機(jī)設(shè)備的硬件設(shè)備包括:被配置成執(zhí)行一個(gè)或多個(gè)操作 的一個(gè)或多個(gè)模塊。所述一個(gè)或多個(gè)操作可以包括:促使處理符合RDP的第一數(shù)據(jù)流,以便 識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元(pdu),并且對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該分組 數(shù)據(jù)中計(jì)算一個(gè)散列值;對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列值的存儲(chǔ)器 緩存中搜索與從分組數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列值;如果該搜索未能發(fā)現(xiàn) 與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存儲(chǔ)器緩存的一個(gè)位置中存 儲(chǔ)從rou的分組數(shù)據(jù)中計(jì)算得到的散列值;如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配 的已存儲(chǔ)散列值,則促使選擇性地壓縮rou的分組數(shù)據(jù);促使為包含分組數(shù)據(jù)的第一數(shù)據(jù) 流中的每個(gè)pdu產(chǎn)生一個(gè)替換的rou,其中該替換的pdu包含一個(gè)帶有索引值的報(bào)頭,該索 引值指示的是用于存儲(chǔ)從分組數(shù)據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于 存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的散列值匹配的散列值的存儲(chǔ)器緩存中的位置,以及其中如 果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則替換的PDU選擇性地包含 經(jīng)過(guò)壓縮的分組數(shù)據(jù);以及促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流,該數(shù)據(jù)流包括為包含 分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)pdu產(chǎn)生的替換的rou。
[0009] 在本公開(kāi)的一個(gè)方面中,一種通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符 合遠(yuǎn)程桌面協(xié)議(RDP)的第二數(shù)據(jù)流的硬件設(shè)備可以包括:促使處理從遠(yuǎn)程服務(wù)器接收 的第一數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元(PDU)的裝置,其中與分組數(shù)據(jù) 關(guān)聯(lián)的每個(gè)PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān)且指示存儲(chǔ)位置的索引 值;響應(yīng)于接收到包含第一分組數(shù)據(jù)的第一 rou,促使使用解壓縮算法來(lái)解壓縮第一分組 數(shù)據(jù),以及促使將解壓縮的第一分組數(shù)據(jù)存入與第一 DPU的報(bào)頭包含的索引值相對(duì)應(yīng)的存 儲(chǔ)器緩存中的位置的裝置;響應(yīng)于接收到第二rou,促使從與包含在第二pdu的報(bào)頭中的索 引值相對(duì)應(yīng)的存儲(chǔ)器緩存中的位置取回第二分組數(shù)據(jù)的裝置;促使產(chǎn)生符合RDP且包含解 壓縮的第一分組數(shù)據(jù)以及取回的第二分組數(shù)據(jù)的第二數(shù)據(jù)流的裝置;以及促使將所產(chǎn)生的 符合RDP的第二數(shù)據(jù)流串流傳輸至本地客戶機(jī)的裝置。
[0010] 在本公開(kāi)的一個(gè)方面中,一種通過(guò)處理符合遠(yuǎn)程桌面協(xié)議(RDP)的第一數(shù)據(jù)流來(lái) 將第二數(shù)據(jù)流串流傳輸至遠(yuǎn)程客戶機(jī)設(shè)備的設(shè)備包括:促使處理符合RDP的第一數(shù)據(jù)流, 以便識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元(PDU),以及對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該 分組數(shù)據(jù)中計(jì)算一個(gè)散列值的裝置;對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列 值的存儲(chǔ)器緩存中搜索與從分組數(shù)據(jù)中計(jì)算得到的散列值相匹配的已存儲(chǔ)的散列值的裝 置;在該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值相匹配的已存儲(chǔ)的散列值的情況下,促使選擇 性地在存儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ)從PDU的分組數(shù)據(jù)中計(jì)算得到的散列值的裝置;在該 搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值相匹配的已存儲(chǔ)的散列值的情況下,促使選擇性地壓縮 PDU的分組數(shù)據(jù)的裝置;促使為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生一個(gè)替換的 PDU的裝置,其中該替換的PDU包括一個(gè)具有索引值的報(bào)頭,該索引值指示的是用于存儲(chǔ)從 分組數(shù)據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算 得到的散列值相匹配的散列值的存儲(chǔ)器緩存中的位置,以及其中如果該搜索未能發(fā)現(xiàn)與計(jì) 算得到的散列值相匹配的已存儲(chǔ)的散列值,則替換的PDU選擇性地包含經(jīng)過(guò)壓縮的分組數(shù) 據(jù);以及促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流的裝置,該數(shù)據(jù)流包括為包含分組數(shù)據(jù)的 第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生的替換的rou。
[0011] 應(yīng)該理解的是,在本公開(kāi)中,關(guān)于本技術(shù)主題的各種配置是作為例證顯示和描述 的,本領(lǐng)域技術(shù)人員很容易從中清楚了解本技術(shù)主題的各種配置。此外還應(yīng)該認(rèn)識(shí)到,本技 術(shù)主題能夠采用其他不同的配置,并且可以在其他不同方面修改其若干細(xì)節(jié),所有這些配 置和修改均未脫離本技術(shù)主題的范圍。相應(yīng)地,
【發(fā)明內(nèi)容】
、附圖及【具體實(shí)施方式】本質(zhì)上應(yīng)被 視為說(shuō)明性而不是限制性的。
【專利附圖】
【附圖說(shuō)明】
[0012] 圖1示出根據(jù)本技術(shù)主題不同方面的系統(tǒng)的簡(jiǎn)化示圖。
[0013] 圖2示出的是根據(jù)本技術(shù)主題不同方面的虛擬桌面加速器(VDA)系統(tǒng)的簡(jiǎn)化連接 圖。
[0014] 圖3示出根據(jù)本技術(shù)主題不同方面的利用VDA系統(tǒng)執(zhí)行的處理的簡(jiǎn)化流程圖。
[0015] 圖4示出根據(jù)本技術(shù)主題不同方面的利用VDA系統(tǒng)執(zhí)行的處理的簡(jiǎn)化信號(hào)時(shí)序 圖。
[0016] 圖5示出根據(jù)本技術(shù)主題不同方面的利用VDA客戶機(jī)執(zhí)行的處理的流程圖。
[0017] 圖6示出根據(jù)本技術(shù)主題不同方面的利用VDA服務(wù)器執(zhí)行的處理的流程圖。
[0018] 圖7是示出了示例計(jì)算設(shè)備的概念性框圖。
[0019] 圖8A和8B中的每一個(gè)分別示出根據(jù)本技術(shù)主題不同方面的客戶機(jī)設(shè)備和服務(wù)器 的簡(jiǎn)化框圖。
[0020] 圖9A、9B和9C是描述根據(jù)本公開(kāi)的一個(gè)方面的通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第 一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面協(xié)議(RDP)的第二數(shù)據(jù)流的方法、用指令編碼的機(jī)器可讀存 儲(chǔ)介質(zhì)及設(shè)備的示例的框圖。
[0021] 圖10A、10B和10C是描述根據(jù)本公開(kāi)的一個(gè)方面的通過(guò)處理符合遠(yuǎn)程桌面協(xié)議 (RDP)的第一數(shù)據(jù)流來(lái)將第二數(shù)據(jù)流串流傳輸?shù)竭h(yuǎn)程客戶機(jī)設(shè)備的方法、用指令編碼的機(jī) 器可讀存儲(chǔ)介質(zhì)及設(shè)備的示例的框圖。
【具體實(shí)施方式】
[0022] 以下闡述的【具體實(shí)施方式】旨在描述本技術(shù)主題的不同配置,而不是描述可以實(shí)施 本技術(shù)主題的唯一配置。這里引入的附圖構(gòu)成了【具體實(shí)施方式】的一部分。該【具體實(shí)施方式】 包括用于全面理解本技術(shù)主題的具體細(xì)節(jié)。然而,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),本技術(shù)主題顯然 可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)施。在一些情況中,為了避免與本技術(shù)主題的概念相 混淆,眾所周知的結(jié)構(gòu)和部件會(huì)以框圖形式顯示。此外,為了便于理解,相同的部件是用相 同的部件編號(hào)標(biāo)記的。
[0023] 遠(yuǎn)程桌面協(xié)議(RDP)是一種利用圖形界面提供遠(yuǎn)程設(shè)備訪問(wèn)的通信協(xié)議。例如, 在客戶機(jī)/服務(wù)器應(yīng)用中可以使用RDP來(lái)為第一計(jì)算設(shè)備用戶提供一個(gè)顯示了在遠(yuǎn)程服務(wù) 器設(shè)備上運(yùn)行的用戶會(huì)話桌面環(huán)境的圖形界面。RDP還可用于為第一計(jì)算設(shè)備用戶提供顯 示了另一個(gè)本地或遠(yuǎn)程計(jì)算設(shè)備的桌面環(huán)境的圖形界面。在將客戶機(jī)設(shè)備和客戶機(jī)終端設(shè) 計(jì)成將大多數(shù)重度使用的資源置于集中式服務(wù)器這類經(jīng)由網(wǎng)絡(luò)與客戶機(jī)終端相連的遠(yuǎn)程 計(jì)算機(jī)的客戶機(jī)/服務(wù)器實(shí)施方式中,RDP是非常有益的??蛻魴C(jī)終端可以具有最低限度 的內(nèi)存、磁盤存儲(chǔ)器及處理能力,但是這是在與強(qiáng)大服務(wù)器相連的多數(shù)用戶不需要額外處 理能力的前提下設(shè)計(jì)的。實(shí)際上,客戶機(jī)終端需要的可能僅僅是足以接收RDP數(shù)據(jù)流、在客 戶機(jī)終端上處理和顯示RDP數(shù)據(jù)、接收用戶輸入數(shù)據(jù)以及向服務(wù)器傳送用戶輸入數(shù)據(jù)的處 理能力及記憶存儲(chǔ)器。對(duì)這些客戶機(jī)終端來(lái)說(shuō),由于減少了資源,并且可以從服務(wù)器集中管 理客戶機(jī),因此,總的購(gòu)置成本可被降至最低。
[0024] 更具體地說(shuō),RDP可用于從運(yùn)行基于Windows操作系統(tǒng)(0S)的設(shè)備的RDP客戶機(jī) 設(shè)備到RDP服務(wù)器的遠(yuǎn)程連接。此外,RDP還可用于來(lái)自運(yùn)行其他類型的操作系統(tǒng)的RDP客 戶機(jī)設(shè)備的連接,例如Linux、UNIX、Android、iOS或其他任何恰當(dāng)?shù)?S平臺(tái)。RDP服務(wù)器 可以發(fā)送屏幕圖像數(shù)據(jù),作為示例,該處理可以通過(guò)在逐個(gè)屏幕幀發(fā)送構(gòu)成16x16位圖圖 像網(wǎng)格的多個(gè)屏幕圖像來(lái)完成。通常,屏幕圖像可以形成使用RDP協(xié)議傳送的數(shù)據(jù)的主要 部分,并且可以用位圖格式傳送。作為替換或補(bǔ)充,RDP服務(wù)器可以發(fā)送其他類型的數(shù)據(jù), 其中包括文本數(shù)據(jù)、RDP報(bào)頭數(shù)據(jù)、RDP控制數(shù)據(jù)、二進(jìn)制數(shù)據(jù)塊等等。通常,在這里可以將 那些用RDP協(xié)議傳輸?shù)臄?shù)據(jù)(包括圖像、文本、RDP報(bào)頭、RDP控制以及二進(jìn)制數(shù)據(jù)塊數(shù)據(jù) 等等)稱為分組數(shù)據(jù)。在一些情況中,在不同屏幕幀中有可能會(huì)重復(fù)出現(xiàn)一個(gè)或多個(gè)屏幕 圖像,或者有可能在不同分組中重復(fù)一個(gè)或多個(gè)其他類型的數(shù)據(jù)。然而,在不進(jìn)行任何優(yōu)化 的情況下,即便重復(fù)出現(xiàn)一個(gè)或多個(gè)屏幕數(shù)據(jù)(或其他類型的數(shù)據(jù)),RDP協(xié)議每次也還是 會(huì)重傳每個(gè)幀中的所有屏幕圖像(或是每個(gè)分組中的其他類型的數(shù)據(jù))。為了提高RDP協(xié) 議效率,提供RDP數(shù)據(jù)緩存處理的方法和系統(tǒng)可以避免重傳每個(gè)幀中的所有屏幕圖像(和 /或重傳所有重復(fù)分組數(shù)據(jù))。例如,存儲(chǔ)器緩存可以在客戶機(jī)上存儲(chǔ)RDP服務(wù)器發(fā)送的圖 像,如果圖像重復(fù),那么RDP服務(wù)器可被配置成后續(xù)只發(fā)送已存儲(chǔ)圖像的圖像索引,在接收 到圖像索引時(shí),RDP客戶機(jī)可被配置成在RDP客戶機(jī)上加載來(lái)自存儲(chǔ)器緩存的已存儲(chǔ)/重 復(fù)圖像。同樣,存儲(chǔ)器緩存可以在客戶機(jī)上保存從RDP服務(wù)器接收的數(shù)據(jù),如果數(shù)據(jù)重復(fù), 那么RDP服務(wù)器可被配置成只發(fā)送已存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)索引,RDP客戶機(jī)則可以被配置成從 存儲(chǔ)器緩存中加載已存儲(chǔ)/重復(fù)的數(shù)據(jù)。由此,通過(guò)使用存儲(chǔ)器緩存,有助于提高RDP協(xié)議 效率,以及減少RDP協(xié)議的帶寬使用。
[0025] 此外,在RDP協(xié)議中,從RDP服務(wù)器發(fā)送的圖像可被壓縮,以便進(jìn)一步提高RDP效 率,以及減少RDP的帶寬使用。例如,屏幕數(shù)據(jù)可以用不同的圖像壓縮算法進(jìn)行壓縮,其示 例可以是符合JPEG、TIFF或RLE標(biāo)準(zhǔn)的圖像壓縮處理。在RDP客戶機(jī)上存儲(chǔ)圖像的存儲(chǔ)器 緩存可以將圖像另存為解壓縮圖像,由此,終端服務(wù)器不需要壓縮重復(fù)圖像,終端客戶機(jī)設(shè) 備(即運(yùn)行RDP客戶機(jī)的設(shè)備)也不需要重復(fù)地對(duì)從存儲(chǔ)器緩存加載的圖像解壓縮的解壓 縮邏輯。就此而論,由于只需要壓縮較少的屏幕圖像,RDP數(shù)據(jù)緩存還可以減小RDP服務(wù)器 和客戶機(jī)上的處理負(fù)載,從而在重復(fù)圖像數(shù)量增加時(shí)進(jìn)一步改善協(xié)議性能。
[0026] 此外,RDP協(xié)議通常會(huì)用到行程編碼(RLE)圖像壓縮算法,但該算法未必是最優(yōu)的 圖像壓縮算法。因此,通過(guò)使用壓縮比較高的壓縮算法來(lái)壓縮每個(gè)屏幕圖像,可以進(jìn)一步改 善RDP協(xié)議效率,作為示例,此類算法可以是JPEG、TIFF或其他類似的高壓縮比圖像壓縮算 法。通過(guò)使用壓縮比較高的壓縮算法,可以將需要通過(guò)網(wǎng)絡(luò)傳送的圖像數(shù)據(jù)數(shù)量減至最少。
[0027] 最后,RDP是通過(guò)使用符合傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)的分組而在客戶機(jī) 設(shè)備與遠(yuǎn)程服務(wù)器設(shè)備之間進(jìn)行通信的。雖然使用TCP/IP傳輸協(xié)議可以在等待時(shí)間很短 (例如網(wǎng)絡(luò)等待時(shí)間小于90ms)的網(wǎng)絡(luò)環(huán)境中提供恰當(dāng)性能,但在網(wǎng)絡(luò)等待時(shí)間增大時(shí)(例 如大于90-100ms的網(wǎng)絡(luò)等待時(shí)間),在TCP/IP鏈路上運(yùn)行的RDP會(huì)話的性能有可能會(huì)嚴(yán)重 降級(jí)。在網(wǎng)絡(luò)等待時(shí)間較高(例如90-100ms或更高的等待時(shí)間)的網(wǎng)絡(luò)環(huán)境中,通過(guò)在客 戶機(jī)設(shè)備與遠(yuǎn)程服務(wù)器之間使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP)或是改進(jìn)的UDP(UDP+)傳輸協(xié)議來(lái) 傳遞RDP分組數(shù)據(jù),可以改善RDP性能。
[0028] 總體系統(tǒng)
[0029] 圖1示出的是根據(jù)本技術(shù)主題不同方面的系統(tǒng)100的簡(jiǎn)化圖示。系統(tǒng)100可以包 括經(jīng)由公共網(wǎng)絡(luò)118或企業(yè)網(wǎng)絡(luò)114與服務(wù)器計(jì)算設(shè)備108 (服務(wù)器)通信的一個(gè)或多個(gè) 客戶機(jī)計(jì)算設(shè)備102 (例如被統(tǒng)稱為客戶機(jī)設(shè)備102的客戶機(jī)設(shè)備102a、102b以及102c)。 在一些方面中,服務(wù)器108被配置成允許執(zhí)行遠(yuǎn)程會(huì)話(例如遠(yuǎn)程桌面會(huì)話),在該會(huì)話 中,用戶可以通過(guò)從客戶機(jī)設(shè)備102登錄到服務(wù)器108來(lái)訪問(wèn)服務(wù)器108上的應(yīng)用和文件。 此類連接可以采用數(shù)種眾所周知的技術(shù)中的任一技術(shù)建立,例如處于運(yùn)行某個(gè)操作系統(tǒng)的 服務(wù)器上的遠(yuǎn)程桌面協(xié)議(RDP),并且所述操作系統(tǒng)基于或者兼容于包括Windows、Linux、 UNIX、Android、iOS或其他操作系統(tǒng)平臺(tái)在內(nèi)的操作系統(tǒng)。在一些方面中,客戶機(jī)設(shè)備102 可以用文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、超文本傳輸協(xié)議安全(HTTPS)或其他 適當(dāng)協(xié)議來(lái)與服務(wù)器108通信。
[0030] 作為例證而不是限制,客戶機(jī)設(shè)備102可以代表計(jì)算機(jī)、移動(dòng)電話、膝上型計(jì)算 機(jī)、瘦客戶機(jī)設(shè)備、個(gè)人數(shù)字助理(PDA)、便攜式計(jì)算設(shè)備或是具有處理器的適當(dāng)設(shè)備。在一 個(gè)示例中,客戶機(jī)設(shè)備102是智能電話(例如iPhone、Android電話、Blackberry等等)。在 某些配置中,客戶機(jī)設(shè)備102可以代表出納設(shè)備、音頻播放器、游戲機(jī)、相機(jī)、攝錄相機(jī)、音 頻設(shè)備、視頻設(shè)備、多媒體設(shè)備或是能夠支持與遠(yuǎn)端服務(wù)器的連接的設(shè)備。在一個(gè)示例中, 客戶機(jī)設(shè)備102可以是移動(dòng)的。在另一個(gè)示例中,客戶機(jī)設(shè)備可以是固定的。根據(jù)本公開(kāi) 的一個(gè)方面,客戶機(jī)設(shè)備102可以是至少具有處理器和存儲(chǔ)器的設(shè)備,其中客戶機(jī)設(shè)備102 的存儲(chǔ)器總量可以小于服務(wù)器108的存儲(chǔ)器總量。在一個(gè)示例中,客戶機(jī)設(shè)備102沒(méi)有硬 盤。并且在一個(gè)方面,客戶機(jī)設(shè)備102可以包含閃存而不是硬盤。此外,在一個(gè)方面中,客 戶機(jī)設(shè)備可以包括一個(gè)或多個(gè)客戶機(jī)設(shè)備。
[0031] 在一個(gè)方面中,客戶機(jī)設(shè)備102是常規(guī)的個(gè)人計(jì)算機(jī)(PC)。在另一個(gè)方面中,客 戶機(jī)設(shè)備102是為特殊目的(并非通用目的)設(shè)計(jì)的專用客戶機(jī)。例如,專用客戶機(jī)設(shè)備 可以是被設(shè)計(jì)成百貨公司出納機(jī)的客戶機(jī)設(shè)備,被設(shè)計(jì)成執(zhí)行專門測(cè)試或測(cè)量的客戶機(jī)設(shè) 備,被設(shè)計(jì)成執(zhí)行用于診斷和/或治療患者的專門醫(yī)療應(yīng)用的客戶機(jī)設(shè)備等等。
[0032] 在一個(gè)方面中,服務(wù)器108可以代表計(jì)算機(jī)、膝上型計(jì)算機(jī)、計(jì)算設(shè)備、數(shù)據(jù)庫(kù)、 內(nèi)部服務(wù)器、存儲(chǔ)庫(kù)服務(wù)器、配置應(yīng)用服務(wù)器、域名系統(tǒng)(DNS)服務(wù)器、動(dòng)態(tài)主機(jī)配置協(xié)議 (DHCP)服務(wù)器、虛擬機(jī)(例如VMware?虛擬機(jī))、桌面會(huì)話(例如Microsoft Terminal Server)、已發(fā)布應(yīng)用(例如Microsoft Terminal Server)、或是具有處理器的適當(dāng)設(shè)備。在 一個(gè)優(yōu)選方面中,服務(wù)器108是固定的。在另一個(gè)方面中,服務(wù)器108可以是移動(dòng)的。在別 的方面中,服務(wù)器108可以是嵌入式的。在某些配置中,服務(wù)器108可以是能夠代表客戶機(jī) 設(shè)備的任何設(shè)備。在一個(gè)優(yōu)選方面中,服務(wù)器108并非客戶機(jī)。此外,在一個(gè)方面中,服務(wù) 器108可以包括一個(gè)或多個(gè)服務(wù)器或是一個(gè)或多個(gè)服務(wù)器功能。
[0033] 在一個(gè)示例中,當(dāng)?shù)谝辉O(shè)備不直接連接到第二設(shè)備時(shí),第一設(shè)備遠(yuǎn)離第二設(shè)備。在 一個(gè)示例中,第一遠(yuǎn)程設(shè)備可以經(jīng)由通信網(wǎng)絡(luò)連接到第二設(shè)備,作為示例,該網(wǎng)絡(luò)可以是局 域網(wǎng)(LAN)、廣域網(wǎng)(WAN)和/或用于遠(yuǎn)程操作的其他網(wǎng)絡(luò)。
[0034] 當(dāng)客戶機(jī)設(shè)備102與服務(wù)器108相互遠(yuǎn)離時(shí),客戶機(jī)設(shè)備102可以經(jīng)由公共網(wǎng)絡(luò) 118和/或企業(yè)網(wǎng)絡(luò)114連接到服務(wù)器108,作為示例,該連接可以借助于調(diào)制解調(diào)器連接, 包含以太網(wǎng)的LAN連接,包含DSL、電纜、T1、T3、光纖、WiFi的寬帶WAN連接,包含GSM、GRPS、 3G、WiMAX或其他遠(yuǎn)程網(wǎng)絡(luò)連接的移動(dòng)網(wǎng)絡(luò)連接。公共網(wǎng)絡(luò)118或企業(yè)網(wǎng)絡(luò)114可以是LAN 網(wǎng)絡(luò)、WAN網(wǎng)絡(luò)、無(wú)線網(wǎng)絡(luò)、因特網(wǎng)、內(nèi)部網(wǎng)或其他遠(yuǎn)程網(wǎng)絡(luò)。在一個(gè)方面中,公共網(wǎng)絡(luò)118 或企業(yè)網(wǎng)絡(luò)114可以包括用于在客戶機(jī)設(shè)備和/或服務(wù)器之間路由數(shù)據(jù)的一個(gè)或多個(gè)路由 器。網(wǎng)絡(luò)上的遠(yuǎn)程設(shè)備(例如客戶機(jī)設(shè)備,服務(wù)器)可以用相應(yīng)網(wǎng)絡(luò)地址定址,例如網(wǎng)際協(xié) 議(IP)地址、網(wǎng)際名稱、Windows網(wǎng)際名稱服務(wù)(WINS)名稱、域名或其他系統(tǒng)名稱,但是并 不局限于此。這里示出的是一個(gè)設(shè)備如何可以遠(yuǎn)離另一個(gè)設(shè)備的一些示例。但是本技術(shù)主 題并不局限于這些示例。
[0035] 根據(jù)本公開(kāi)的某些方面,相對(duì)于客戶機(jī)設(shè)備,術(shù)語(yǔ)"服務(wù)器"和"遠(yuǎn)程服務(wù)器"通常 是以同義方式使用的,單詞"遠(yuǎn)程"可以是指服務(wù)器與一個(gè)或多個(gè)其他設(shè)備進(jìn)行通信,例如 經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)連接來(lái)進(jìn)行通信。同樣,相對(duì)于服務(wù)器,術(shù)語(yǔ)"客戶機(jī)設(shè)備"和"遠(yuǎn)程客 戶機(jī)設(shè)備"通常也是以同義方式使用的,并且單詞"遠(yuǎn)程"可以是指客戶機(jī)設(shè)備與一個(gè)或多 個(gè)服務(wù)器進(jìn)行通信,例如經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)連接來(lái)進(jìn)行通信。
[0036] 在本公開(kāi)的一個(gè)方面中,"客戶機(jī)設(shè)備"有時(shí)可被稱為客戶機(jī),反之亦然。同樣,"服 務(wù)器"有時(shí)可被稱為服務(wù)器設(shè)備,反之亦然。
[0037] 在一些方面中,服務(wù)器108可以包括RDP服務(wù)器104和虛擬桌面加速器(VDA)服 務(wù)器106。雖然服務(wù)器108被顯示成包含了所有這些服務(wù)器,但是其中一個(gè)或所有的兩個(gè)服 務(wù)器可以位于服務(wù)器108外部。作為替換,RDP和VDA服務(wù)器104和106可以是在相同服 務(wù)器108或不同服務(wù)器上運(yùn)行的部件或應(yīng)用(例如服務(wù)器應(yīng)用)。服務(wù)器108還可以包括 各種其他服務(wù)器,例如DNS服務(wù)器、DHCP服務(wù)器和/或應(yīng)用服務(wù)器。在一些方面中,這其中 的一個(gè)或多個(gè)服務(wù)器可以共同合并成一個(gè)單獨(dú)服務(wù)器。在一些方面中,由于服務(wù)器108主 要通過(guò)操作而在諸如企業(yè)網(wǎng)絡(luò)114之類的私有網(wǎng)絡(luò)上與客戶機(jī)102a和102b通信,因此還 可以將服務(wù)器108稱為內(nèi)部服務(wù)器。在一些方面中,客戶機(jī)設(shè)備102c處于相同的域上。
[0038] 在一些方面中,服務(wù)器108的至少一部分是可以從公共網(wǎng)絡(luò)118訪問(wèn)的。舉例來(lái) 說(shuō),如圖1所示,RDP和VDA服務(wù)器104和106是可以從公共網(wǎng)絡(luò)118訪問(wèn)的。由此,客戶 機(jī)設(shè)備l〇2c可以經(jīng)由公共網(wǎng)絡(luò)118來(lái)與服務(wù)器108 (例如RDP服務(wù)器104和/或VDA服務(wù) 器106)通信。
[0039] 如圖1所示,每一個(gè)客戶機(jī)設(shè)備102可以包括一個(gè)RDP客戶機(jī)和/或VDA客戶機(jī)。 在一個(gè)方面中,RDP客戶機(jī)是在客戶機(jī)設(shè)備102上運(yùn)行的應(yīng)用或部件。該RDP客戶機(jī)可被 配置成通過(guò)網(wǎng)絡(luò)(114或118)連接到RDP服務(wù)器104,以便接收來(lái)自RDP服務(wù)器104的RDP 數(shù)據(jù)流,在客戶機(jī)設(shè)備102上顯示接收到的RDP數(shù)據(jù),以及將用戶輸入數(shù)據(jù)反向傳送到RDP 服務(wù)器104。同樣,VDA客戶機(jī)(也被稱為VDA客戶機(jī)部件)是在客戶機(jī)設(shè)備102上運(yùn)行的 應(yīng)用或部件。該VDA客戶機(jī)可被配置成通過(guò)網(wǎng)絡(luò)(114或118)連接到VDA服務(wù)器106,以便 接收來(lái)自VDA服務(wù)器106的VDA數(shù)據(jù)流,通過(guò)處理所接收的VDA數(shù)據(jù)來(lái)產(chǎn)生相應(yīng)的RDP數(shù) 據(jù)流,以及將所產(chǎn)生的RDP數(shù)據(jù)流傳送或串流傳輸?shù)娇蛻魴C(jī)設(shè)備102上的RDP客戶機(jī)。
[0040] 根據(jù)本技術(shù)主題的不同方面,每一個(gè)客戶機(jī)102可以運(yùn)行基于windows的操作系 統(tǒng),例如 Windows 嵌入式操作系統(tǒng)族(例如 Windows Embedded Compact、Windows Embedded Standard、Windows Embedded Enterprise、Windows Embedded POSReady、Windows Embedded NAVReady、Windows Embedded Server等等)或其他適當(dāng)?shù)那度胧界R像中的任何一個(gè)。作為 替換,這些客戶機(jī)還可以運(yùn)行Linux、UNIX、Android、iOS或是其他任何恰當(dāng)?shù)牟僮飨到y(tǒng)。
[0041] 虛擬桌面加諫器(VDA)系統(tǒng)
[0042] 圖2示出的是根據(jù)本技術(shù)主題不同方面的VDA系統(tǒng)的簡(jiǎn)化連接圖。該系統(tǒng)可以包 括服務(wù)器108以及通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114/118與服務(wù)器通信的至少一個(gè)客戶機(jī)設(shè)備102。
[0043] 客戶機(jī)設(shè)備102可以包括一個(gè)被配置成與RDP服務(wù)器104建立連接,以便接收來(lái) 自RDP服務(wù)器104的RDP流(或RDP數(shù)據(jù)流)的RDP客戶機(jī)110??蛻魴C(jī)設(shè)備102還可以 包括一個(gè)被配置成與VDA服務(wù)器106建立連接,以便接收來(lái)自VDA服務(wù)器106的VDA流(或 VDA數(shù)據(jù)流)的VDA客戶機(jī)112。此外,RDP客戶機(jī)110和VDA客戶機(jī)112還可以被配置成 在客戶機(jī)設(shè)備102上相互通信。
[0044] 服務(wù)器108可以包括被配置成相互通信的RDP服務(wù)器104和VDA服務(wù)器106。VDA 服務(wù)器106可被進(jìn)一步配置成與VDA客戶機(jī)112進(jìn)行通信,RDP服務(wù)器104則可以被配置 成直接(通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114/118)或間接(通過(guò)VDA服務(wù)器106、一個(gè)或多個(gè)網(wǎng)絡(luò) 114/118以及VDA客戶機(jī)112)與RDP客戶機(jī)110通信。
[0045] VDA系統(tǒng)200包括服務(wù)器108的VDA服務(wù)器106以及客戶機(jī)設(shè)備102的VDA客戶 機(jī)112。通常,與VDA系統(tǒng)和/或VDA系統(tǒng)部件建立的連接(例如VDA連接和RDP連接)是 邏輯連接,例如經(jīng)由分組交換網(wǎng)絡(luò)的分組交換通信會(huì)話。
[0046] VDA客戶機(jī)112和VDA服務(wù)器106可用于提升RDP客戶機(jī)110與RDP服務(wù)器104 之間的RDP連接的效率。特別地,VDA、客戶機(jī)112可被配置成攔截RDP客戶機(jī)110傳送至 RDP服務(wù)器104的RDP連接請(qǐng)求,以及與VDA服務(wù)器106建立VDA連接,從而在RDP客戶機(jī) 110與RDP服務(wù)器104之間建立虛擬RDP連接,其中該連接是通過(guò)VDA客戶機(jī)112、所建立 的VDA連接以及VDA服務(wù)器106路由(或傳遞)的。VDA客戶機(jī)112和服務(wù)器106中的每 一個(gè)都可以包括相應(yīng)的存儲(chǔ)器緩存113和107,其中該緩存可供VDA連接用來(lái)提升數(shù)據(jù)傳輸 效率以及減少帶寬使用。
[0047] 在本公開(kāi)的一個(gè)方面中,VDA客戶機(jī)112被配置成攔截RDP客戶機(jī)110向服務(wù)器 108發(fā)送的關(guān)于RDP服務(wù)器104 (或是RDP服務(wù)器部件)的連接請(qǐng)求,以及基于被攔截的連 接請(qǐng)求來(lái)與服務(wù)器108的VDA服務(wù)器106 (或VDA服務(wù)器部件)建立連接。如果VDA客戶機(jī) 112成功識(shí)別或定位服務(wù)器108上的VDA服務(wù)器106,并且與VDA服務(wù)器106成功建立VDA 連接,那么VDA客戶機(jī)112會(huì)通過(guò)VDA客戶機(jī)112、所建立的VDA連接以及VDA服務(wù)器106 而在RDP客戶機(jī)110與RDP服務(wù)器104之間路由RDP連接。由此,VDA客戶機(jī)可以通過(guò)接 收來(lái)自RDP客戶機(jī)110的RDP請(qǐng)求以及向RDP客戶機(jī)110傳送RDP數(shù)據(jù)流來(lái)充當(dāng)RDP客戶 機(jī)110的代理RDP服務(wù)器。同樣,VDA服務(wù)器106可以通過(guò)向RDP服務(wù)器104傳送RDP請(qǐng)求 以及接收來(lái)自RDP服務(wù)器104的RDP數(shù)據(jù)流來(lái)充當(dāng)RDP服務(wù)器104的代理RDP客戶機(jī)。然 而,如果VDA客戶機(jī)112無(wú)法識(shí)別或定位服務(wù)器108上的VDA服務(wù)器,或者無(wú)法與VDA服務(wù) 器106建立VDA連接,那么VDA客戶機(jī)112可以將攔截自RDP客戶機(jī)110的連接請(qǐng)求轉(zhuǎn)發(fā) 到RDP服務(wù)器104,以便能在RDP客戶機(jī)110與RDP服務(wù)器104之間建立直接的RDP連接。
[0048] VDA客戶機(jī)112攔截的連接請(qǐng)求通常包括RDP客戶機(jī)110嘗試連接的RDP服務(wù)器 104的網(wǎng)際協(xié)議(IP)地址,以及RDP服務(wù)器104的通信端口信息和所使用的RDP協(xié)議的版 本號(hào)。作為與VDA服務(wù)器106建立VDA連接的處理的一部分,VDA客戶機(jī)112通常會(huì)向VDA 服務(wù)器106發(fā)送包含以下的一項(xiàng)或多項(xiàng)的連接信息:從被攔截的連接請(qǐng)求中取回的RDP服 務(wù)器104的網(wǎng)際協(xié)議(IP)地址,從被攔截的連接請(qǐng)求中取回的RDP服務(wù)器104的通信端口 信息,以及關(guān)于VDA客戶機(jī)112所能支持的用以存儲(chǔ)屏幕圖像或其他數(shù)據(jù)的緩沖存儲(chǔ)器緩 存(例如存儲(chǔ)器緩存113)的最大數(shù)量和/或大小的信息。響應(yīng)于接收到了連接請(qǐng)求,VDA 服務(wù)器106基于該連接信息來(lái)確定是否應(yīng)與VDA客戶機(jī)112建立VDA連接。此外,VDA服 務(wù)器106還可以通過(guò)向RDP服務(wù)器104發(fā)送連接請(qǐng)求來(lái)嘗試與RDP服務(wù)器104建立RDP連 接。
[0049] 如果在VDA客戶機(jī)112與VDA服務(wù)器106之間成功建立連接(例如VDA連接),并 且如果在VDA服務(wù)器106與RDP服務(wù)器104之間成功建立連接(例如RDP連接),那么VDA 系統(tǒng)200可以開(kāi)始路由數(shù)據(jù)流。例如,VDA系統(tǒng)200可以開(kāi)始在RDP服務(wù)器105與RDP客 戶機(jī)110之間通過(guò)VDA連接來(lái)路由RDP流,由此提升數(shù)據(jù)傳輸效率以及減少此類經(jīng)由一個(gè) 或多個(gè)網(wǎng)絡(luò)114/118的傳輸?shù)膸捠褂谩?br>
[0050] 在路由數(shù)據(jù)流時(shí),VDA系統(tǒng)200被配置成在VDA服務(wù)器106上接收來(lái)自RDP服務(wù)器 106的RDP數(shù)據(jù)流。VDA服務(wù)器106通過(guò)處理所接收的RDP數(shù)據(jù)流來(lái)創(chuàng)建一個(gè)傳輸至VDA 客戶機(jī)112的VDA數(shù)據(jù)流。特別地,VDA服務(wù)器106可以解析包含RDP內(nèi)容的RDP流,識(shí)別 RDP流中包含的圖像數(shù)據(jù)或其他類型的數(shù)據(jù)(通常被稱為分組數(shù)據(jù)),并且通過(guò)向圖像數(shù) 據(jù)(或其他類型的分組數(shù)據(jù))中添加緩存報(bào)頭,壓縮圖像數(shù)據(jù)(例如使用JPEG或TIFF圖 像壓縮)或分組數(shù)據(jù)(例如使用ZIP壓縮)以及移除重復(fù)的圖像或其他類型的分組數(shù)據(jù)來(lái) 產(chǎn)生替換RDP流。此外,VDA服務(wù)器106還可以批量壓縮(例如通過(guò)使用zlib之類的壓縮 應(yīng)用)和加密所述替換RDP流(包含圖像數(shù)據(jù)和/或其他類型的分組數(shù)據(jù)),以便創(chuàng)建VDA 流。然后,VDA流會(huì)通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114/118傳送至VDA客戶機(jī)112。
[0051] 在VDA客戶機(jī)112, VDA流可被解密和批量解壓縮,以便重建替換RDP流。然后, VDA客戶機(jī)112可以對(duì)解壓縮的數(shù)據(jù)進(jìn)行解析,以便識(shí)別和取回緩存報(bào)頭、經(jīng)過(guò)壓縮的圖像 數(shù)據(jù)和/或其他類型的分組數(shù)據(jù)。VDA客戶機(jī)112可以解壓縮圖像或其他類型的數(shù)據(jù),并 且可以通過(guò)處理緩存報(bào)頭來(lái)構(gòu)建RDP流。在一個(gè)方面中,緩存報(bào)頭包括用于對(duì)存儲(chǔ)器緩存 113執(zhí)行操作的命令,例如將接收到的圖像數(shù)據(jù)或其他分組數(shù)據(jù)存入存儲(chǔ)器緩存,從存儲(chǔ)器 緩存中取回已存儲(chǔ)圖像或其他分組數(shù)據(jù),以及清洗(或清除)存儲(chǔ)器緩存。由此,VDA客戶 機(jī)112從VDA流中重建RDP流,并將重建的RDP流傳送到RDP客戶機(jī)110。
[0052] VDA客戶機(jī)112可以是在運(yùn)行RDP客戶機(jī)110的客戶機(jī)設(shè)備102上運(yùn)行的應(yīng)用或 部件。作為替換,VDA客戶機(jī)112可以是在路由器、中間服務(wù)器或是位于RDP客戶機(jī)110附 近(并且遠(yuǎn)離RDP服務(wù)器104)的其他計(jì)算設(shè)備上運(yùn)行的應(yīng)用或部件,并且可用于在RDP客 戶機(jī)110與RDP服務(wù)器104之間傳輸RDP連接請(qǐng)求。VDA客戶機(jī)112可以執(zhí)行包含以下各 項(xiàng)的功能:在RDP客戶機(jī)110與RDP服務(wù)器104之間攔截連接請(qǐng)求;連接到服務(wù)器108上的 VDA服務(wù)器106 (或VDA服務(wù)器部件)或是RDP服務(wù)器104的設(shè)備;理解和解析VDA流;對(duì) 從VDA服務(wù)器106接收的數(shù)據(jù)分組進(jìn)行解密;對(duì)從VDA服務(wù)器接收的壓縮數(shù)據(jù)(例如使用 zlib壓縮算法壓縮的數(shù)據(jù))進(jìn)行解壓縮;將以不同格式和模式(例如JPEG、TIFF等等)接 收的RDP屏幕圖像解壓縮;以及將未壓縮(或解壓縮)的圖像或其他分組數(shù)據(jù)緩存到存儲(chǔ) 器緩存113中。
[0053] 在一個(gè)方面中,VDA服務(wù)器106可以是獨(dú)立服務(wù)器,或者可以是在服務(wù)器106或 RDP服務(wù)器104上運(yùn)行的應(yīng)用或服務(wù)器部件。在另一個(gè)方面中,VDA服務(wù)器106可以是一 個(gè)獨(dú)立服務(wù)器,或者可以是一個(gè)在路由器、中間服務(wù)器或是位于RDP服務(wù)器104附近(且遠(yuǎn) 離RDP客戶機(jī)110)的其他計(jì)算設(shè)備上運(yùn)行的應(yīng)用或部件,并且可以用于在RDP客戶機(jī)110 與RDP服務(wù)器104之間傳輸RDP連接請(qǐng)求。VDA服務(wù)器106通常是在遠(yuǎn)離客戶機(jī)102的機(jī) 器(例如服務(wù)器104、106或108)上活動(dòng)的,并且所述VDA服務(wù)器106偵聽(tīng)來(lái)自一個(gè)或多個(gè) VDA客戶機(jī)112的連接。響應(yīng)于接收到來(lái)自VDA客戶機(jī)112和/或與VDA客戶機(jī)112建立 VDA連接的連接請(qǐng)求,VDA服務(wù)器106可以嘗試連接到位于在接收自VDA客戶機(jī)112的連接 請(qǐng)求中提供的IP地址和端口的RDP服務(wù)器104。在與RDP服務(wù)器104建立連接的過(guò)程中, VDA服務(wù)器106可以充當(dāng)RDP服務(wù)器104的RDP客戶機(jī)(即代理RDP客戶機(jī))。如果成功 連接到RDP服務(wù)器104,則VDA服務(wù)器106可以向VDA客戶機(jī)112返回一個(gè)成功響應(yīng)(例如 連接應(yīng)答ACK響應(yīng)消息);否則,VDA服務(wù)器106可以向VDA客戶機(jī)112發(fā)送一個(gè)失敗響應(yīng) (例如連接NACK響應(yīng)消息)。
[0054] VDA服務(wù)器106可以執(zhí)行的功能包括:與RDP服務(wù)器104建立連接;接受來(lái)自一個(gè) 或多個(gè)VDA客戶機(jī)112的連接;理解和解析RDP數(shù)據(jù)流;以不同格式(例如JPEG、TIFF等 等)壓縮RDP屏幕圖像或者以不同格式(例如ZIP等等)壓縮RDP分組數(shù)據(jù);保持一個(gè)存 儲(chǔ)散列值的存儲(chǔ)器緩存107 ;存儲(chǔ)用于為RDP流中的每個(gè)圖像或其他分組數(shù)據(jù)產(chǎn)生唯一散 列值/鍵的散列函數(shù);使用批量壓縮算法(例如使用zlib壓縮)來(lái)壓縮數(shù)據(jù);以及對(duì)壓縮 數(shù)據(jù)進(jìn)行加密,并且將經(jīng)過(guò)加密的數(shù)據(jù)轉(zhuǎn)發(fā)到VDA客戶機(jī)112。
[0055] 當(dāng)VDA服務(wù)器106解析作為RDP數(shù)據(jù)流的一部分接收的RDP內(nèi)容時(shí),VDA服務(wù)器 106可以從RDP數(shù)據(jù)流中包含的已識(shí)別的每個(gè)圖像或是已識(shí)別的每個(gè)數(shù)據(jù)分組中計(jì)算一個(gè) 散列值或散列鍵(例如64位的散列值/鍵)。然后,VDA服務(wù)器106可以在VDA服務(wù)器106 的存儲(chǔ)器緩存107中搜索該計(jì)算得到的散列值,以便確定是否在存儲(chǔ)器緩存107中保存了 任何匹配散列值。如果發(fā)現(xiàn)匹配散列值,則VDA服務(wù)器106確定先前已經(jīng)將與該散列值對(duì) 應(yīng)的圖像或其他分組數(shù)據(jù)傳送至VDA客戶機(jī)112,并且所述圖像數(shù)據(jù)或其他分組數(shù)據(jù)已經(jīng) 保存在了 VDA客戶機(jī)112的存儲(chǔ)器緩存113中與發(fā)現(xiàn)該匹配散列值的位置的索引值相對(duì)應(yīng) 的位置。然后,VDA服務(wù)器106會(huì)產(chǎn)生一個(gè)替換RDP數(shù)據(jù)流,該數(shù)據(jù)流包括用于已識(shí)別的每 個(gè)圖像或數(shù)據(jù)分組的緩存報(bào)頭,并且可選地包括經(jīng)過(guò)壓縮的圖像數(shù)據(jù)或分組數(shù)據(jù)。如果在 存儲(chǔ)器緩存107中發(fā)現(xiàn)與計(jì)算得到的散列值匹配的散列值,那么VDA服務(wù)器106會(huì)在替換 數(shù)據(jù)流中包含一個(gè)緩存報(bào)頭,所述緩存報(bào)頭包括緩存命令"CACHE_FETCH",其后是該散列值 在存儲(chǔ)器緩存107中所在位置的索引值。如果沒(méi)有在存儲(chǔ)器緩存107中發(fā)現(xiàn)匹配散列值, 那么VDA服務(wù)器106會(huì)將計(jì)算得到的散列值存入與存儲(chǔ)器緩存107中的索引值對(duì)應(yīng)的位 置,并且可選地壓縮圖像數(shù)據(jù)(例如使用JPEG或TIFF壓縮算法)或分組數(shù)據(jù)(例如使用 ZIP壓縮算法),以及在替換數(shù)據(jù)流中包含一個(gè)緩存報(bào)頭,所述緩存報(bào)頭包括命令"CACHE_ STORE",其后則是索引值和經(jīng)過(guò)壓縮的圖像數(shù)據(jù)或分組數(shù)據(jù)。最后,VDA服務(wù)器106還會(huì)批 量壓縮替換RDP流(例如使用zlib壓縮算法),通過(guò)加密經(jīng)過(guò)壓縮的流來(lái)形成VDA數(shù)據(jù)流, 以及將VDA數(shù)據(jù)流發(fā)送到VDA客戶機(jī)112。
[0056] VDA系統(tǒng)處理和信今
[0057] 圖3示出的是根據(jù)本技術(shù)主題不同方面來(lái)改善使用VDA系統(tǒng)的通信鏈路的帶寬優(yōu) 化的處理300的簡(jiǎn)化流程圖。該處理可用于提供豐富的用戶體驗(yàn),以及在客戶機(jī)102與服 務(wù)器108之間使用RDP協(xié)議的通信鏈路上提供改善的帶寬使用。
[0058] 處理300始于操作301,在該操作中,VDA客戶機(jī)112攔截RDP客戶機(jī)110與RDP 服務(wù)器104之間的連接。特別地,VDA客戶機(jī)112可以攔截RDP客戶機(jī)110傳送的關(guān)于RDP 服務(wù)器104的連接請(qǐng)求。該連接請(qǐng)求可以包括RDP服務(wù)器104(或服務(wù)器108)的網(wǎng)絡(luò)地 址,例如IP地址和RDP服務(wù)器104的通信端口標(biāo)識(shí)。所述VDA客戶機(jī)112可以以RDP客戶 機(jī)110用以建立RDP通信的標(biāo)準(zhǔn)端口(例如RDP端口)為目標(biāo)來(lái)攔截RDP客戶機(jī)110發(fā)起 的連接請(qǐng)求。通過(guò)攔截該連接請(qǐng)求,可以防止在RDP客戶機(jī)110與RDP服務(wù)器104之間建 立直接的RDP連接。更進(jìn)一步,通過(guò)攔截該連接請(qǐng)求,還能使VDA客戶機(jī)112通過(guò)VDA客戶 機(jī)112和VDA服務(wù)器106來(lái)路由RDP客戶機(jī)110與RDP服務(wù)器104之間的通信,由此在用 戶(或RDP客戶機(jī)110)不知情的情況下透明地代理RDP連接以及應(yīng)用數(shù)據(jù)緩存處理(例 如對(duì)諸如圖像數(shù)據(jù)或其他類型的數(shù)據(jù)之類的分組數(shù)據(jù)進(jìn)行緩存)。
[0059] 在操作303, VDA客戶機(jī)112和VDA服務(wù)器106協(xié)商用于VDA連接的連接參數(shù),并 且通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114/118建立VDA連接。特別地,VDA客戶機(jī)112可以從被攔截的 連接請(qǐng)求中取回RDP服務(wù)器1〇4(或服務(wù)器108)的網(wǎng)絡(luò)地址,并且可以嘗試與關(guān)聯(lián)于RDP 服務(wù)器104 (或是在服務(wù)器108上運(yùn)行或關(guān)聯(lián)于服務(wù)器108)的VDA服務(wù)器106建立連接。 例如,VDA客戶機(jī)112可以向服務(wù)器108,向與RDP服務(wù)器104的網(wǎng)絡(luò)地址關(guān)聯(lián)的VDA服務(wù) 器106,或者向其他恰當(dāng)實(shí)體發(fā)送一個(gè)用于建立連至服務(wù)器108 (例如連接到服務(wù)器108的 預(yù)定端口,如VDA服務(wù)器106偵聽(tīng)的專用VDA端口)的VDA連接的連接請(qǐng)求。
[0060] 如果VDA端口上沒(méi)有與RDP服務(wù)器104關(guān)聯(lián)和/或在服務(wù)器108上運(yùn)行的VDA服 務(wù)器106,那么VDA客戶機(jī)112無(wú)法與VDA服務(wù)器建立VDA連接。在這種情況下,VDA客戶 機(jī)112有可能接收一個(gè)包含失敗的連接響應(yīng)消息(例如NACK消息),或者有可能在指定時(shí) 段中未接收到連接響應(yīng)消息。所述VDA客戶機(jī)112可以確定不能建立VDA連接,并且可以 將被攔截的連接請(qǐng)求消息從RDP客戶機(jī)110轉(zhuǎn)發(fā)到RDP服務(wù)器104,以便能在RDP客戶機(jī) 110與RDP服務(wù)器104之間建立直接的RDP連接。
[0061] 如果在VDA端口上存在與RDP服務(wù)器104關(guān)聯(lián)和/或在服務(wù)器108上運(yùn)行的VDA 服務(wù)器106,那么VDA服務(wù)器106可以向VDA客戶機(jī)112發(fā)送連接響應(yīng)消息(例如連接應(yīng)答 ACK)。VDA客戶機(jī)112和VDA服務(wù)器106可以繼續(xù)協(xié)商用于在彼此之間建立VDA連接的連 接參數(shù)。這些連接參數(shù)可以包括存儲(chǔ)器緩存大小(例如存儲(chǔ)器緩存107和113的大?。┖?/或RDP協(xié)議版本(或版本號(hào))或其他詳細(xì)信息。一旦協(xié)定了用于VDA連接的連接參數(shù),則 在VDA客戶機(jī)112與VDA服務(wù)器106之間建立VDA連接。
[0062] 通常,VDA服務(wù)器106會(huì)接受來(lái)自VDA客戶機(jī)112的連接請(qǐng)求,并且可以存儲(chǔ)與VDA 客戶機(jī)112的VDA連接的連接參數(shù)(例如存儲(chǔ)器緩存大小以及RDP協(xié)議版本細(xì)節(jié))。響應(yīng) 于與VDA客戶機(jī)112建立VDA連接,VDA服務(wù)器106可以從VDA客戶機(jī)112接收包含在被攔 截的連接請(qǐng)求中的RDP連接細(xì)節(jié),其中包括RDP服務(wù)器104的網(wǎng)絡(luò)地址和/或RDP服務(wù)器 104的通信端口信息。VDA服務(wù)器106可以在所指示的地址或端口向RDP服務(wù)器104發(fā)送 連接請(qǐng)求。該連接請(qǐng)求可以包括VDA客戶機(jī)提供的連接細(xì)節(jié),包括RDP協(xié)議版本細(xì)節(jié)。如 果RDP服務(wù)器104驗(yàn)證了該連接請(qǐng)求(例如,如果包含在該請(qǐng)求中的連接參數(shù)有效和/或 兼容RDP服務(wù)器104),則RDP服務(wù)器104可以與VDA服務(wù)器106建立RDP連接,并且可以 向VDA服務(wù)器1065發(fā)送連接應(yīng)答消息。然后,VDA服務(wù)器106可以與RDP服務(wù)器104具有 活動(dòng)的RDP連接,并且能夠連接到RDP服務(wù)器104。所述VDA服務(wù)器106可以向VDA客戶機(jī) 112發(fā)送一個(gè)表明已經(jīng)與RDP服務(wù)器104建立RDP連接的連接應(yīng)答,VDA客戶機(jī)112則可以 轉(zhuǎn)而向RDP客戶機(jī)110發(fā)送一個(gè)表明已經(jīng)建立RDP連接的連接響應(yīng)。
[0063] 如果VDA服務(wù)器無(wú)法與RDP服務(wù)器104建立RDP連接,則VDA服務(wù)器可以向VDA 客戶機(jī)112發(fā)送失敗響應(yīng)消息(例如NACK消息)。響應(yīng)于接收到NACK消息,VDA客戶機(jī) 112可以向RDP客戶機(jī)110發(fā)送連接NACK消息,或者VDA客戶機(jī)112可以將接收自RDP客 戶機(jī)110的被攔截的連接請(qǐng)求轉(zhuǎn)發(fā)到RDP服務(wù)器103,以便能在RDP客戶機(jī)110與RDP服務(wù) 器104之間建立直接的RDP連接。
[0064] 操作303可以以在RDP客戶機(jī)110與VDA客戶機(jī)112以及在VDA服務(wù)器106和RDP 服務(wù)器104之間建立RDP連接為結(jié)束,并且可以以在VDA客戶機(jī)112與VDA服務(wù)器106之 間建立VDA連接為結(jié)束。特別地,如果成功建立RDP連接和VDA連接,那么VDA客戶機(jī)112 可以充當(dāng)RDP客戶機(jī)110的代理RDP服務(wù)器,VDA服務(wù)器106可以充當(dāng)RDP服務(wù)器104的 代理RDP客戶機(jī)。然而,如果無(wú)法建立RDP連接或VDA連接中的任一連接,則可以在RDP客 戶機(jī)110與RDP服務(wù)器104之間建立直接的RDP連接。就此而論,在無(wú)法建立恰當(dāng)?shù)腣DA 和RDP連接中的任一連接時(shí),VDA客戶機(jī)112可以通過(guò)允許在RDP客戶機(jī)110與RDP服務(wù) 器104之間建立RDP連接來(lái)與不具有VDA服務(wù)器106的服務(wù)器106相互協(xié)作。
[0065] 在操作305,從RDP服務(wù)器104開(kāi)始串流傳輸數(shù)據(jù)。該數(shù)據(jù)是作為RDP數(shù)據(jù)流而 被從RDP服務(wù)器104串流傳輸至VDA服務(wù)器106的。RDP數(shù)據(jù)流可以遵循作為操作303中 的部分連接請(qǐng)求而被傳遞的RDP協(xié)議版本細(xì)節(jié)。VDA服務(wù)器106接收來(lái)自RDP服務(wù)器104 的RDP數(shù)據(jù)流(或RDP流),并且解析所接收的RDP流。特別地,VDA服務(wù)器106可以解析 作為RDP流的一部分接收的每一個(gè)協(xié)議數(shù)據(jù)單元(PDU),以便識(shí)別RDP流中包含的圖像內(nèi)容 (通常是分組數(shù)據(jù)內(nèi)容)。對(duì)于RDP流中包含的被識(shí)別的每個(gè)圖像(或是包含圖像數(shù)據(jù)或 數(shù)據(jù)分組的H)U),VDA服務(wù)器106將會(huì)取回該圖像(或分組數(shù)據(jù)),并且為該圖像(或分組 數(shù)據(jù))計(jì)算一個(gè)散列值(例如64位的散列值或是名為散列鍵的值)。該散列值也可稱為散 列鍵、圖像散列值、圖像散列鍵、或是圖像鍵。對(duì)于計(jì)算得到的每個(gè)散列值,VDA服務(wù)器106 會(huì)在存儲(chǔ)器緩存107中搜索該散列值。然后,VDA服務(wù)器106可以基于在存儲(chǔ)器緩存107中 搜索該散列值的結(jié)果來(lái)為該散列值執(zhí)行三種例示操作之一。
[0066] 第一,如果在存儲(chǔ)器緩存107中未找到該散列值,則VDA服務(wù)器106會(huì)在存儲(chǔ)器緩 存107中找到一個(gè)恰當(dāng)位置來(lái)存儲(chǔ)該散列值。例如,該散列值可被保存在一個(gè)空的存儲(chǔ)位 置,或者可以通過(guò)存儲(chǔ)該散列值來(lái)重寫先前保存在某個(gè)存儲(chǔ)位置的數(shù)據(jù)。在一個(gè)方面中,該 散列值是用循環(huán)鏈表保存在存儲(chǔ)器緩存中的,由此通過(guò)存儲(chǔ)該散列值來(lái)重寫最早存儲(chǔ)的散 列值。在另一個(gè)方面中,該散列值是用最近最少使用算法保存的,由此通過(guò)存儲(chǔ)該散列值來(lái) 重寫未使用時(shí)間最長(zhǎng)的已存儲(chǔ)散列值。在另一個(gè)方面中,該散列值是用恰當(dāng)?shù)木彺嫣鎿Q算 法存儲(chǔ)的。一旦將散列值存入存儲(chǔ)器緩存107,則VDA服務(wù)器106將會(huì)標(biāo)識(shí)用于指示在存儲(chǔ) 器緩存107中存儲(chǔ)該散列值的位置的索引值。然后,通過(guò)使用恰當(dāng)圖像壓縮算法,可以對(duì)與 該散列值對(duì)應(yīng)的圖像進(jìn)行壓縮,例如使用具有諸如視覺(jué)損耗壓縮模式、視覺(jué)無(wú)損壓縮模式 或是無(wú)損壓縮模式之類的選定壓縮模式的JPEG或TIFF壓縮。作為替換,該數(shù)據(jù)分組也可以 可選地用恰當(dāng)壓縮算法來(lái)壓縮,例如ZIP壓縮。然后,VDA服務(wù)器106會(huì)創(chuàng)建一個(gè)包含處于 壓縮圖像數(shù)據(jù)(或是被壓縮的分組數(shù)據(jù))之前的緩存報(bào)頭的替換RDP協(xié)議數(shù)據(jù)單元(PDU)。 該緩存報(bào)頭包括緩存命令"CACHE_STORE"以及指示了該散列值在存儲(chǔ)器緩存107中的存儲(chǔ) 位置的索引值。
[0067] 第二,如果在存儲(chǔ)器緩存107中找到該散列值,則VDA服務(wù)器106取回存儲(chǔ)該散列 值的存儲(chǔ)器位置的索引值。然后,VDA服務(wù)器106會(huì)創(chuàng)建一個(gè)包含緩存報(bào)頭的替換RDP H)U, 其中該緩存報(bào)頭具有緩存命令"CACHE_FETCH",其后跟隨的是取回的索引值。通常,具有緩 存報(bào)頭命令"CACHE_FETCH"的替換RDP PDU不包括圖像數(shù)據(jù)(或分組數(shù)據(jù))或是壓縮圖像 數(shù)據(jù)(或是經(jīng)過(guò)壓縮的分組數(shù)據(jù))。
[0068] 第三,如果VDA服務(wù)器106遇到存儲(chǔ)器緩存107出錯(cuò),確定存儲(chǔ)器緩存107已被破 壞,確定存儲(chǔ)器緩存107與相關(guān)聯(lián)的VDA客戶機(jī)112上的相應(yīng)存儲(chǔ)器緩存113失步,和/或 接收到表明存儲(chǔ)器緩存113內(nèi)存不足的差錯(cuò),則VDA服務(wù)器106可以通過(guò)發(fā)送包含具有緩 存命令"CACHE_FLUSH"的緩存報(bào)頭的替換RDP PDU來(lái)禁用數(shù)據(jù)緩存處理。通常,VDA服務(wù) 器106會(huì)用恰當(dāng)圖像壓縮算法來(lái)壓縮圖像數(shù)據(jù)(或者可選地壓縮分組數(shù)據(jù)),以及創(chuàng)建一個(gè) 包含緩存報(bào)頭和壓縮圖像數(shù)據(jù)的替換RDP協(xié)議數(shù)據(jù)單元(PDU)。該緩存報(bào)頭包括緩存命令 "CACHE_FLUSH",其后跟隨的是被設(shè)置成0的兩個(gè)字節(jié)。
[0069] 在操作305, VDA服務(wù)器106由此接收并解析所接收的RDP數(shù)據(jù)流,以便創(chuàng)建一個(gè) 用替換的PDU來(lái)替換包含圖像數(shù)據(jù)(或分組數(shù)據(jù))的PDU的替換RDP流。該RDP流中不包 含圖像數(shù)據(jù)(或分組數(shù)據(jù))的部分(例如rou)可以保持完好無(wú)損,并且不會(huì)在替換的RDP 流中被修改。每一個(gè)替換的PDU都包括以下各項(xiàng)之一:緩存命令"CACHE_ST0RE"、索引值和 壓縮圖像數(shù)據(jù)(或分組數(shù)據(jù));緩存命令"CACHE_FETCH"和索引值;或是緩存命令"CACHE_ FLUSH"和壓縮圖像數(shù)據(jù)(或分組數(shù)據(jù))。
[0070] 在操作307, VDA服務(wù)器106對(duì)替換RDP流施加批量壓縮處理,例如應(yīng)用使用了壓 縮算法或是諸如zlib之類的庫(kù)的壓縮處理,或者應(yīng)用別的恰當(dāng)壓縮算法或庫(kù)。然后,VDA 服務(wù)器106會(huì)用恰當(dāng)?shù)募用芩惴▉?lái)加密經(jīng)過(guò)壓縮的替換RDP流,以便確保已加密的流的安 全性。之后,VDA服務(wù)器106可以將經(jīng)過(guò)加密、壓縮的替換RDP流作為VDA數(shù)據(jù)流(或VDA 流)傳送到VDA客戶機(jī)112。
[0071] 在操作309, VDA服務(wù)器106通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114/118而將替換RDP流作為 VDA數(shù)據(jù)流傳送到VDA客戶機(jī)112,并且所述替換的RDP流會(huì)被VDA客戶機(jī)112接收。由于 使用了數(shù)據(jù)緩存處理和壓縮處理,由VDA服務(wù)器106輸出的VDA數(shù)據(jù)流占用的帶寬要遠(yuǎn)遠(yuǎn) 小于VDA服務(wù)器106所接收的RDP數(shù)據(jù)流。因此,在通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114/118傳送時(shí), 與等價(jià)RDP數(shù)據(jù)流所要占用的帶寬相比,VDA數(shù)據(jù)流占用的帶寬會(huì)大幅減少。
[0072] 在操作311,接收到經(jīng)過(guò)加密、壓縮的替換RDP流(即VDA數(shù)據(jù)流)的VDA客戶機(jī) 112會(huì)解密所接收的數(shù)據(jù)流,以及批量解壓縮經(jīng)過(guò)解密的流。所述解密和解壓縮是用與操作 307中使用的加密和壓縮方法互補(bǔ)的解密和解壓縮方法執(zhí)行的。
[0073] 然后,在操作313,VDA客戶機(jī)112繼續(xù)解析和重建替換RDP流。特別地,VDA客戶 機(jī)112可以解析作為替換RDP流的一部分接收的每一個(gè)協(xié)議數(shù)據(jù)單元(PDU),以便識(shí)別包含 圖像內(nèi)容(或分組數(shù)據(jù)內(nèi)容)的rou。包含圖像內(nèi)容(或分組數(shù)據(jù)內(nèi)容)的pdu可以對(duì)應(yīng) 于在操作305中創(chuàng)建且各自包含緩存報(bào)頭的替換的rou。對(duì)于包含在替換RDP流中且包含 圖像內(nèi)容的每一個(gè)被識(shí)別的rou,VDA客戶機(jī)112可以取回并處理緩存報(bào)頭以及任何相關(guān)聯(lián) 的圖像數(shù)據(jù)(或分組數(shù)據(jù))。所述VDA客戶機(jī)112可以基于取回的緩存報(bào)頭來(lái)執(zhí)行三種例 示操作之一。
[0074] 第一,如果緩存報(bào)頭包含緩存命令"CACHE_ST0RE",則VDA客戶機(jī)112取回PDU中 包含的索引值和壓縮圖像數(shù)據(jù)(或分組數(shù)據(jù))。該VDA客戶機(jī)112會(huì)使用恰當(dāng)?shù)膱D像解壓 縮算法來(lái)解壓縮圖像數(shù)據(jù),例如使用具有與在操作305中使用的壓縮算法和模式相對(duì)應(yīng)的 解壓縮模式(例如視覺(jué)損耗,視覺(jué)無(wú)損,或無(wú)損)的JPEG或TIFF解壓縮。VDA客戶機(jī)112 會(huì)將解壓縮的圖像數(shù)據(jù)(或分組數(shù)據(jù))存入存儲(chǔ)器緩存113中與取回的索引值相對(duì)應(yīng)的位 置。更進(jìn)一步,VDA客戶機(jī)112還會(huì)重建包含解壓縮圖像數(shù)據(jù)(或分組數(shù)據(jù))的RDP H)U。
[0075] 第二,如果緩存報(bào)頭包含緩存命令"CACHE_FETCH",則VDA客戶機(jī)112取回包含在 PDU中的索引值。然后,VDA客戶機(jī)112從存儲(chǔ)器緩存113中取回保存在與取回的索引值相 對(duì)應(yīng)的位置的圖像數(shù)據(jù)(或分組數(shù)據(jù)),并且重建一個(gè)包含取回的圖像數(shù)據(jù)(或分組數(shù)據(jù)) 的 RDP PDU。
[0076] 第三,如果緩存報(bào)頭包含緩存命令"CACHE_FLUSH",則VDA客戶機(jī)112清洗(即 清空、清除或刪除其內(nèi)容)存儲(chǔ)器緩存113。更進(jìn)一步,VDA客戶機(jī)112會(huì)復(fù)位存儲(chǔ)器緩存 113。該VDA客戶機(jī)112取回PDU中包含的壓縮圖像數(shù)據(jù)(或分組數(shù)據(jù)),并且使用恰當(dāng)?shù)?解壓縮算法來(lái)解壓縮圖像數(shù)據(jù)。更進(jìn)一步,VDA客戶機(jī)112還會(huì)重建包含解壓縮的圖像數(shù) 據(jù)(或分組數(shù)據(jù))的RDP rou。
[0077] 由此,VDA客戶機(jī)112可以基于解壓縮的替換RDP流以及重建的RDP PDU來(lái)重建 RDP流。特別地,VDA客戶機(jī)112可以通過(guò)使用解壓縮的替換RDP流以及通過(guò)用包含解壓縮 圖像數(shù)據(jù)的重建RDPPDU替換每一個(gè)被識(shí)別為包含圖像數(shù)據(jù)(或分組數(shù)據(jù))的PDU來(lái)重建 RDP 流。
[0078] VDA客戶機(jī)112將重建的RDP流傳送到RDP客戶機(jī)110。為此目的,VDA客戶機(jī)112 可以充當(dāng)RDP客戶機(jī)110的代理RDP服務(wù)器,并且可以向RDP客戶機(jī)110傳送一個(gè)與RDP 服務(wù)器104傳送至VDA服務(wù)器106的RDP流基本相同的RDP流。
[0079] 只要VDA服務(wù)器106接收到用于傳送至RDP客戶機(jī)110的RDP數(shù)據(jù)流,則可以采 用基本連續(xù)的方式執(zhí)行操作305到313。作為替換,操作305-313可以是在從RDP服務(wù)器 104接收到RDP數(shù)據(jù)的時(shí)候重復(fù)或間歇執(zhí)行的。
[0080] 在操作315, VDA客戶機(jī)112與VDA服務(wù)器106之間的VDA連接將被斷連。作為示 例,VDA客戶機(jī)112或VDA服務(wù)器106可以是響應(yīng)于接收到來(lái)自RDP客戶機(jī)110或RDP服 務(wù)器104的斷連請(qǐng)求而被斷連的。響應(yīng)于接收到斷連請(qǐng)求,VDA客戶機(jī)112和/或VDA服 務(wù)器106斷連VDA連接,從存儲(chǔ)器緩存113和107中清除所有緩存數(shù)據(jù),并且向?qū)Ψ桨l(fā)送斷 連請(qǐng)求。
[0081] 如結(jié)合操作305所述,VDA服務(wù)器106會(huì)創(chuàng)建一個(gè)替換RDP流,其中在該替換RDP 流中,RDP流中的每個(gè)包含圖像數(shù)據(jù)(或者更一般地說(shuō)是分組數(shù)據(jù))的PDU都會(huì)被修改或 變更。例如,VDA服務(wù)器106有可能接收如下所示的RDP數(shù)據(jù)流 :
[0082]
【權(quán)利要求】
1. 一種通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面協(xié)議RDP的第 二數(shù)據(jù)流的方法,該方法包括: 促使處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元 PDUs, 其中與分組數(shù)據(jù)關(guān)聯(lián)的每一個(gè)PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān) 且指示了存儲(chǔ)位置的索引值; 響應(yīng)于接收到包含第一分組數(shù)據(jù)的第一 rou,該方法包括: 促使使用解壓縮算法來(lái)解壓縮第一分組數(shù)據(jù);以及 促使將解壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引值相對(duì)應(yīng)的存儲(chǔ) 器緩存中的一個(gè)位置; 響應(yīng)于接收到第二rou,促使從與包含在第二rou的報(bào)頭中的索引值對(duì)應(yīng)的存儲(chǔ)器緩 存中的一個(gè)位置取回第二分組數(shù)據(jù); 促使產(chǎn)生符合RDP且包含解壓縮的第一分組數(shù)據(jù)以及取回的第二分組數(shù)據(jù)的第二數(shù) 據(jù)流;以及 促使將所產(chǎn)生的符合RDP的第二數(shù)據(jù)流串流傳輸至本地客戶機(jī)。
2. 如權(quán)利要求1所述的方法,其中在促使處理第一數(shù)據(jù)流之前,該方法包括: 促使攔截從本地客戶機(jī)傳送的用于與遠(yuǎn)程服務(wù)器建立符合RDP的串流傳輸連接的連 接請(qǐng)求,該連接請(qǐng)求標(biāo)識(shí)了遠(yuǎn)程服務(wù)器;以及 響應(yīng)于促使攔截該連接請(qǐng)求,促使與該連接請(qǐng)求中標(biāo)識(shí)的遠(yuǎn)程服務(wù)器建立串流傳輸連 接,以便從該遠(yuǎn)程服務(wù)器接收第一數(shù)據(jù)流。
3. 如權(quán)利要求1所述的方法,其中第一數(shù)據(jù)流不符合RDP。
4. 如權(quán)利要求1所述的方法,其中在促使處理第一數(shù)據(jù)流之前,該方法包括: 促使解密從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流;以及 在促使解密了第一數(shù)據(jù)流之后,促使批量解壓縮被解密的第一數(shù)據(jù)流, 其中促使產(chǎn)生第二數(shù)據(jù)流包括:促使從已被批量解壓縮和解密的第一數(shù)據(jù)流中產(chǎn)生 包含解壓縮的第一分組數(shù)據(jù)、被取回的第二分組數(shù)據(jù)以及不與分組數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè) PDU的第二數(shù)據(jù)流。
5. 如權(quán)利要求1所述的方法,其中第一分組數(shù)據(jù)是第一圖像數(shù)據(jù),并且其中促使解壓 縮第一分組數(shù)據(jù)包括:促使使用具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的JPEG圖 像解壓縮算法來(lái)解壓縮第一圖像數(shù)據(jù)。
6. -種通過(guò)處理符合遠(yuǎn)程桌面協(xié)議RDP的第一數(shù)據(jù)流來(lái)將第二數(shù)據(jù)流串流傳輸至遠(yuǎn) 程客戶機(jī)設(shè)備的方法,該方法包括: 促使處理符合RDP的第一數(shù)據(jù)流,以便識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元rous,并且 對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該分組數(shù)據(jù)中計(jì)算一個(gè)散列值; 對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列值的存儲(chǔ)器緩存中搜索與從分組 數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列值; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存 儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ)從rou的分組數(shù)據(jù)中計(jì)算得到的散列值; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地壓縮 PDU的分組數(shù)據(jù); 促使為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生一個(gè)替換的rou, 其中該替換的PDU包含一個(gè)帶有索引值的報(bào)頭,該索引值指示的是用于存儲(chǔ)從分組數(shù) 據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的 散列值匹配的散列值的存儲(chǔ)器緩存中的位置,以及 其中如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則替換的PDU選 擇性地包含經(jīng)過(guò)壓縮的分組數(shù)據(jù);以及 促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流,該第二數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù) 據(jù)流中的每個(gè)pdu產(chǎn)生的替換的rou。
7. 如權(quán)利要求6所述的方法,其中在促使處理第一數(shù)據(jù)流之前,該方法包括: 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)設(shè)備的連接請(qǐng)求,促使建立連至遠(yuǎn)程客戶機(jī)設(shè)備的第一 串流傳輸連接, 其中該連接請(qǐng)求標(biāo)識(shí)RDP服務(wù)器,以及 其中被標(biāo)識(shí)的RDP服務(wù)器是本地RDP服務(wù)器;以及 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)的連接請(qǐng)求,促使建立連至連接請(qǐng)求中標(biāo)識(shí)的RDP服務(wù) 器的第二串流傳輸連接。
8. 如權(quán)利要求6所述的方法,其中第二數(shù)據(jù)流不符合RDP。
9. 如權(quán)利要求6所述的方法,其中在促使串流傳輸?shù)诙?shù)據(jù)流之前,該方法包括: 促使產(chǎn)生一個(gè)數(shù)據(jù)流,該數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生 的替換的rou,以及不包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的至少一個(gè)rou; 促使批量壓縮所產(chǎn)生的數(shù)據(jù)流;以及 促使將經(jīng)過(guò)批量壓縮的所產(chǎn)生的數(shù)據(jù)流加密成第二數(shù)據(jù)流。 ?ο.如權(quán)利要求6所述的方法,其中促使選擇性地壓縮分組數(shù)據(jù)包括:促使使用具有視 覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的JPEG圖像壓縮算法來(lái)選擇性地壓縮分組數(shù)據(jù)。
11. 一種用指令編碼的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述指令可以由一個(gè)或多個(gè)處理器執(zhí) 行,以便執(zhí)行通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面協(xié)議RDP的第 二數(shù)據(jù)流的一個(gè)或多個(gè)操作,所述一個(gè)或多個(gè)操作包括: 促使處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元 PDUs, 其中與分組數(shù)據(jù)關(guān)聯(lián)的每一個(gè)PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān) 且指示了存儲(chǔ)位置的索引值; 響應(yīng)于接收到包含第一分組數(shù)據(jù)的第一 rou,該一個(gè)或多個(gè)操作包括: 促使使用解壓縮算法來(lái)解壓縮第一分組數(shù)據(jù);以及 促使將解壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引值相對(duì)應(yīng)的存儲(chǔ) 器緩存中的一個(gè)位置; 響應(yīng)于接收到第二rou,促使從與包含在第二rou的報(bào)頭中的索引值對(duì)應(yīng)的存儲(chǔ)器緩 存中的一個(gè)位置取回第二分組數(shù)據(jù); 促使產(chǎn)生符合RDP且包含解壓縮的第一分組數(shù)據(jù)以及取回的第二分組數(shù)據(jù)的第二數(shù) 據(jù)流;以及 促使將所產(chǎn)生的符合RDP的第二數(shù)據(jù)流串流傳輸至本地客戶機(jī)。
12. 如權(quán)利要求11所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中在促使處理第一數(shù)據(jù)流之前,所述 一個(gè)或多個(gè)操作還包括: 促使攔截從本地客戶機(jī)傳送的用于與遠(yuǎn)程服務(wù)器建立符合RDP的串流傳輸連接的連 接請(qǐng)求,該連接請(qǐng)求標(biāo)識(shí)了遠(yuǎn)程服務(wù)器;以及 響應(yīng)于促使攔截該連接請(qǐng)求,促使與該連接請(qǐng)求中標(biāo)識(shí)的遠(yuǎn)程服務(wù)器建立串流傳輸連 接,以便從該遠(yuǎn)程服務(wù)器接收第一數(shù)據(jù)流。
13. 如權(quán)利要求11所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中第一數(shù)據(jù)流不符合RDP。
14. 如權(quán)利要求11所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中在促使處理第一數(shù)據(jù)流之前,所述 一個(gè)或多個(gè)操作還包括: 促使解密從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流;以及 在促使解密了第一數(shù)據(jù)流之后,促使批量解壓縮被解密的第一數(shù)據(jù)流, 其中促使產(chǎn)生第二數(shù)據(jù)流包括:促使從已被批量解壓縮和解密的第一數(shù)據(jù)流中產(chǎn)生 包含解壓縮的第一分組數(shù)據(jù)、被取回的第二分組數(shù)據(jù)以及不與分組數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè) PDU的第二數(shù)據(jù)流。
15. 如權(quán)利要求11所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中第一分組數(shù)據(jù)是第一圖像數(shù)據(jù),并 且其中促使解壓縮第一分組數(shù)據(jù)包括:促使使用具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模 式之一的JPEG圖像解壓縮算法來(lái)解壓縮第一圖像數(shù)據(jù)。
16. -種用指令編碼的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述指令可以由一個(gè)或多個(gè)處理器執(zhí) 行,以便執(zhí)行通過(guò)處理符合遠(yuǎn)程桌面協(xié)議RDP的第一數(shù)據(jù)流來(lái)將第二數(shù)據(jù)流串流傳輸至遠(yuǎn) 程客戶機(jī)設(shè)備的一個(gè)或多個(gè)操作,所述一個(gè)或多個(gè)操作包括: 促使處理符合RDP的第一數(shù)據(jù)流,以便識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元rous,并且 對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該分組數(shù)據(jù)中計(jì)算一個(gè)散列值; 對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列值的存儲(chǔ)器緩存中搜索與從分組 數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列值; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存 儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ)從rou的分組數(shù)據(jù)中計(jì)算得到的散列值; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地壓縮 pdu的分組數(shù)據(jù); 促使為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生一個(gè)替換的rou, 其中該替換的PDU包含一個(gè)帶有索引值的報(bào)頭,該索引值指示的是用于存儲(chǔ)從分組數(shù) 據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的 散列值匹配的散列值的存儲(chǔ)器緩存中的位置,以及 其中如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則替換的PDU選 擇性地包含經(jīng)過(guò)壓縮的分組數(shù)據(jù);以及 促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流,該第二數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù) 據(jù)流中的每個(gè)pdu產(chǎn)生的替換的rou。
17. 如權(quán)利要求16所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中在促使處理第一數(shù)據(jù)流之前,所述 一個(gè)或多個(gè)操作包括: 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)設(shè)備的連接請(qǐng)求,促使建立連至遠(yuǎn)程客戶機(jī)設(shè)備的第一 串流傳輸連接, 其中該連接請(qǐng)求標(biāo)識(shí)RDP服務(wù)器,以及 其中被標(biāo)識(shí)的RDP服務(wù)器是本地RDP服務(wù)器;以及 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)的連接請(qǐng)求,促使建立連至連接請(qǐng)求中標(biāo)識(shí)的RDP服務(wù) 器的第二串流傳輸連接。
18. 如權(quán)利要求16所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中第二數(shù)據(jù)流不符合RDP。
19. 如權(quán)利要求16所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中在促使串流傳輸?shù)诙?shù)據(jù)流之前, 所述一個(gè)或多個(gè)操作包括: 促使產(chǎn)生一個(gè)數(shù)據(jù)流,該數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生 的替換的rou,以及不包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的至少一個(gè)rou; 促使批量壓縮所產(chǎn)生的數(shù)據(jù)流;以及 促使將經(jīng)過(guò)批量壓縮的所產(chǎn)生的數(shù)據(jù)流加密成第二數(shù)據(jù)流。
20. 如權(quán)利要求16所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中促使選擇性地壓縮分組數(shù)據(jù)包括: 促使使用具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的JPEG圖像壓縮算法來(lái)選擇性 地壓縮分組數(shù)據(jù)。
21. -種通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面協(xié)議RDP的第 二數(shù)據(jù)流的硬件設(shè)備,該硬件設(shè)備包括: 被配置成執(zhí)行一個(gè)或多個(gè)操作的一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)操作包括: 促使處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元 PDUs, 其中與分組數(shù)據(jù)關(guān)聯(lián)的每一個(gè)PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān) 且指示了存儲(chǔ)位置的索引值; 響應(yīng)于接收到包含第一分組數(shù)據(jù)的第一 rou,該一個(gè)或多個(gè)操作包括: 促使使用解壓縮算法來(lái)解壓縮第一分組數(shù)據(jù);以及 促使將解壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引值相對(duì)應(yīng)的存儲(chǔ) 器緩存中的一個(gè)位置; 響應(yīng)于接收到第二rou,促使從與包含在第二rou的報(bào)頭中的索引值對(duì)應(yīng)的存儲(chǔ)器緩 存中的一個(gè)位置取回第二分組數(shù)據(jù); 促使產(chǎn)生符合RDP且包含解壓縮的第一分組數(shù)據(jù)以及取回的第二分組數(shù)據(jù)的第二數(shù) 據(jù)流;以及 促使將所產(chǎn)生的符合RDP的第二數(shù)據(jù)流串流傳輸至本地客戶機(jī)。
22. 如權(quán)利要求21所述的硬件設(shè)備,其中在促使處理第一數(shù)據(jù)流之前,所述一個(gè)或多 個(gè)操作還包括: 促使攔截從本地客戶機(jī)傳送的用于與遠(yuǎn)程服務(wù)器建立符合RDP的串流傳輸連接的連 接請(qǐng)求,該連接請(qǐng)求標(biāo)識(shí)了遠(yuǎn)程服務(wù)器;以及 響應(yīng)于促使攔截該連接請(qǐng)求,促使與該連接請(qǐng)求中標(biāo)識(shí)的遠(yuǎn)程服務(wù)器建立串流傳輸連 接,以便從該遠(yuǎn)程服務(wù)器接收第一數(shù)據(jù)流。
23. 如權(quán)利要求21所述的硬件設(shè)備,其中第一數(shù)據(jù)流不符合RDP。
24. 如權(quán)利要求21所述的硬件設(shè)備,其中在促使處理第一數(shù)據(jù)流之前,所述一個(gè)或多 個(gè)操作還包括: 促使解密從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流;以及 在促使解密了第一數(shù)據(jù)流之后,促使批量解壓縮被解密的第一數(shù)據(jù)流, 其中促使產(chǎn)生第二數(shù)據(jù)流包括:促使從已被批量解壓縮和解密的第一數(shù)據(jù)流中產(chǎn)生 包含解壓縮的第一分組數(shù)據(jù)、被取回的第二分組數(shù)據(jù)以及不與分組數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè) PDU的第二數(shù)據(jù)流。
25. 如權(quán)利要求21所述的硬件設(shè)備,其中第一分組數(shù)據(jù)是第一圖像數(shù)據(jù),并且其中促 使解壓縮第一分組數(shù)據(jù)包括:促使使用具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的 JPEG圖像解壓縮算法來(lái)解壓縮第一圖像數(shù)據(jù)。
26. -種通過(guò)處理符合遠(yuǎn)程桌面協(xié)議RDP的第一數(shù)據(jù)流來(lái)將第二數(shù)據(jù)流串流傳輸至遠(yuǎn) 程客戶機(jī)設(shè)備的硬件設(shè)備,該硬件設(shè)備包括: 被配置成執(zhí)行一個(gè)或多個(gè)操作的一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)操作可以包括: 促使處理符合RDP的第一數(shù)據(jù)流,以便識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元rous,并且 對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該分組數(shù)據(jù)中計(jì)算一個(gè)散列值; 對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列值的存儲(chǔ)器緩存中搜索與從分組 數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列值; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存 儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ)從rou的分組數(shù)據(jù)中計(jì)算得到的散列值; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地壓縮 PDU的分組數(shù)據(jù); 促使為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)pdu產(chǎn)生一個(gè)替換的rou, 其中該替換的pdu包含一個(gè)帶有索引值的報(bào)頭,該索引值指示的是用于存儲(chǔ)從分組數(shù) 據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的 散列值匹配的散列值的存儲(chǔ)器緩存中的位置,以及 其中如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則替換的PDU選 擇性地包含經(jīng)過(guò)壓縮的分組數(shù)據(jù);以及 促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流,該第二數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù) 據(jù)流中的每個(gè)pdu產(chǎn)生的替換的rou。
27. 如權(quán)利要求26所述的硬件設(shè)備,其中在促使處理第一數(shù)據(jù)流之前,所述一個(gè)或多 個(gè)操作包括: 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)設(shè)備的連接請(qǐng)求,促使建立連至遠(yuǎn)程客戶機(jī)設(shè)備的第一 串流傳輸連接, 其中該連接請(qǐng)求標(biāo)識(shí)RDP服務(wù)器,以及 其中被標(biāo)識(shí)的RDP服務(wù)器是本地RDP服務(wù)器;以及 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)的連接請(qǐng)求,促使建立連至連接請(qǐng)求中標(biāo)識(shí)的RDP服務(wù) 器的第二串流傳輸連接。
28. 如權(quán)利要求26所述的硬件設(shè)備,其中第二數(shù)據(jù)流不符合RDP。
29. 如權(quán)利要求26所述的硬件設(shè)備,其中在促使串流傳輸?shù)诙?shù)據(jù)流之前,所述一個(gè) 或多個(gè)操作包括: 促使產(chǎn)生一個(gè)數(shù)據(jù)流,該數(shù)據(jù)流包括為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生 的替換的rou,以及不包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的至少一個(gè)rou; 促使批量壓縮所產(chǎn)生的數(shù)據(jù)流;以及 促使將經(jīng)過(guò)批量壓縮的所產(chǎn)生的數(shù)據(jù)流加密成第二數(shù)據(jù)流。
30. 如權(quán)利要求26所述的硬件設(shè)備,其中促使選擇性地壓縮分組數(shù)據(jù)包括:促使使用 具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的JPEG圖像壓縮算法來(lái)選擇性地壓縮分 組數(shù)據(jù)。
31. -種通過(guò)處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流來(lái)產(chǎn)生符合遠(yuǎn)程桌面協(xié)議RDP的第 二數(shù)據(jù)流的設(shè)備,該設(shè)備包括: 促使處理從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流,以便取回與分組數(shù)據(jù)關(guān)聯(lián)的分組數(shù)據(jù)單元 PDUs的裝置, 其中與分組數(shù)據(jù)關(guān)聯(lián)的每一個(gè)PDU都包括一個(gè)報(bào)頭,該報(bào)頭包括一個(gè)與分組數(shù)據(jù)相關(guān) 且指示了存儲(chǔ)位置的索引值; 響應(yīng)于接收到包含第一分組數(shù)據(jù)的第一 PDU來(lái)執(zhí)行包含以下各項(xiàng)的操作的裝置: 促使使用解壓縮算法來(lái)解壓縮第一分組數(shù)據(jù);以及 促使將解壓縮的第一分組數(shù)據(jù)存入與第一 rou的報(bào)頭所包含的索引值相對(duì)應(yīng)的存儲(chǔ) 器緩存中的一個(gè)位置; 響應(yīng)于接收到第二rou,促使從與包含在第二rou的報(bào)頭中的索引值對(duì)應(yīng)的存儲(chǔ)器緩 存中的一個(gè)位置取回第二分組數(shù)據(jù)的裝置; 促使產(chǎn)生符合RDP且包含解壓縮的第一分組數(shù)據(jù)以及取回的第二分組數(shù)據(jù)的第二數(shù) 據(jù)流的裝置;以及 促使將所產(chǎn)生的符合RDP的第二數(shù)據(jù)流串流傳輸至本地客戶機(jī)的裝置。
32. 如權(quán)利要求31所述的設(shè)備,還包括: 促使攔截從本地客戶機(jī)傳送的用于與遠(yuǎn)程服務(wù)器建立符合RDP的串流傳輸連接的連 接請(qǐng)求的裝置,該連接請(qǐng)求標(biāo)識(shí)了遠(yuǎn)程服務(wù)器;以及 響應(yīng)于促使攔截該連接請(qǐng)求,促使與該連接請(qǐng)求中標(biāo)識(shí)的遠(yuǎn)程服務(wù)器建立串流傳輸連 接,以便從該遠(yuǎn)程服務(wù)器接收第一數(shù)據(jù)流的裝置。
33. 如權(quán)利要求31所述的設(shè)備,其中第一數(shù)據(jù)流不符合RDP。
34. 如權(quán)利要求31所述的設(shè)備,還包括: 用于在促使處理第一數(shù)據(jù)流之前,促使解密從遠(yuǎn)程服務(wù)器接收的第一數(shù)據(jù)流的裝置; 以及 在促使解密了第一數(shù)據(jù)流之后,促使批量解壓縮被解密的第一數(shù)據(jù)流的裝置, 其中促使產(chǎn)生第二數(shù)據(jù)流的裝置包括:促使從已被批量解壓縮和解密的第一數(shù)據(jù)流中 產(chǎn)生包含解壓縮的第一分組數(shù)據(jù)、被取回的第二分組數(shù)據(jù)以及不與分組數(shù)據(jù)相關(guān)聯(lián)的至少 一個(gè)rou的第二數(shù)據(jù)流的裝置。
35. 如權(quán)利要求31所述的設(shè)備,其中第一分組數(shù)據(jù)是第一圖像數(shù)據(jù),并且促使解壓 縮第一分組數(shù)據(jù)的裝置包括:促使使用具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的 JPEG圖像解壓縮算法來(lái)解壓縮第一圖像數(shù)據(jù)的裝置。
36. -種通過(guò)處理符合遠(yuǎn)程桌面協(xié)議RDP的第一數(shù)據(jù)流來(lái)將第二數(shù)據(jù)流串流傳輸至遠(yuǎn) 程客戶機(jī)設(shè)備的設(shè)備,該設(shè)備包括: 促使處理符合RDP的第一數(shù)據(jù)流,以便識(shí)別包含分組數(shù)據(jù)的分組數(shù)據(jù)單元rous,并且 對(duì)于每一個(gè)包含分組數(shù)據(jù)的rou,從該分組數(shù)據(jù)中計(jì)算一個(gè)散列值的裝置; 對(duì)于每一個(gè)包含分組數(shù)據(jù)流的rou,促使在存儲(chǔ)散列值的存儲(chǔ)器緩存中搜索與從分組 數(shù)據(jù)中計(jì)算得到的散列值匹配的已存儲(chǔ)散列值的裝置; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地在存 儲(chǔ)器緩存的一個(gè)位置中存儲(chǔ)從rou的分組數(shù)據(jù)中計(jì)算得到的散列值的裝置; 如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則促使選擇性地壓縮 PDU的分組數(shù)據(jù)的裝置; 促使為包含分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生一個(gè)替換的rou的裝置, 其中該替換的PDU包含一個(gè)帶有索引值的報(bào)頭,該索引值指示的是用于存儲(chǔ)從分組數(shù) 據(jù)中計(jì)算得到的散列值的存儲(chǔ)器緩存中的位置,或是用于存儲(chǔ)與從分組數(shù)據(jù)中計(jì)算得到的 散列值匹配的散列值的存儲(chǔ)器緩存中的位置,以及 其中如果該搜索未能發(fā)現(xiàn)與計(jì)算得到的散列值匹配的已存儲(chǔ)散列值,則替換的PDU選 擇性地包含經(jīng)過(guò)壓縮的分組數(shù)據(jù);以及 促使向遠(yuǎn)程客戶機(jī)設(shè)備傳送第二數(shù)據(jù)流的裝置,該第二數(shù)據(jù)流包括為包含分組數(shù)據(jù)的 第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生的替換的rou。
37. 如權(quán)利要求36所述的設(shè)備,還包括: 在促使處理第一數(shù)據(jù)流之前,響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)設(shè)備的連接請(qǐng)求,促使建 立連至遠(yuǎn)程客戶機(jī)設(shè)備的第一串流傳輸連接的裝置, 其中該連接請(qǐng)求標(biāo)識(shí)RDP服務(wù)器,以及 其中被標(biāo)識(shí)的RDP服務(wù)器是本地RDP服務(wù)器;以及 響應(yīng)于接收到來(lái)自遠(yuǎn)程客戶機(jī)的連接請(qǐng)求,促使建立連至連接請(qǐng)求中標(biāo)識(shí)的RDP服務(wù) 器的第二串流傳輸連接的裝置。
38. 如權(quán)利要求36所述的設(shè)備,其中第二數(shù)據(jù)流不符合RDP。
39. 如權(quán)利要求36所述的設(shè)備,還包括: 在促使串流傳輸?shù)诙?shù)據(jù)流之前,促使產(chǎn)生一個(gè)數(shù)據(jù)流的裝置,該數(shù)據(jù)流包括為包含 分組數(shù)據(jù)的第一數(shù)據(jù)流中的每個(gè)PDU產(chǎn)生的替換的rou,以及不包含分組數(shù)據(jù)的第一數(shù)據(jù) 流中的至少一個(gè)rou; 促使批量壓縮所產(chǎn)生的數(shù)據(jù)流的裝置;以及 促使將經(jīng)過(guò)批量壓縮的所產(chǎn)生的數(shù)據(jù)流加密成第二數(shù)據(jù)流的裝置。
40. 如權(quán)利要求36所述的設(shè)備,其中促使選擇性地壓縮分組數(shù)據(jù)的裝置包括:促使使 用具有視覺(jué)損耗、視覺(jué)無(wú)損以及無(wú)損壓縮模式之一的JPEG圖像壓縮算法來(lái)選擇性地壓縮 分組數(shù)據(jù)的裝置。
【文檔編號(hào)】G06F15/16GK104054068SQ201280067231
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2012年8月14日 優(yōu)先權(quán)日:2011年11月29日
【發(fā)明者】G·V·杰恩, P·R·K·巴莎, P·德賽 申請(qǐng)人:韋斯技術(shù)有限公司