用于远程桌面协议的改进的带宽优化的制作方法

文档序号:6497969阅读:312来源:国知局
用于远程桌面协议的改进的带宽优化的制作方法
【专利摘要】所描述的是通过处理第一数据流来产生符合远程桌面协议(RDP)的第二数据流的处理。该操作可以包括:促使将来自第一数据流的第一数据存储在第一数据流中指示的第一索引,促使从第一数据流中包含的第二索引取回第二数据,以及促使产生符合RDP且包含第一和第二数据的第二数据流。此外,还描述了通过处理符合RDP的第三数据流来串流传输第四数据流的处理。该操作包括:促使通过处理第三数据流来识别分组数据单元(PDU),促使存储与PDU相对应的散列值,以及促使产生包含在第四数据流中的替换的PDU,以及包含用于标识在存储器中存储散列值的位置的索引。
【专利说明】用于远程桌面协议的改进的带宽优化

【技术领域】
[0001] 本公开主要涉及远程桌面协议,且尤其涉及对远程桌面协议提供改进的带宽优 化。

【背景技术】
[0002] 远程桌面协议(RDP)是一种用于使用图形界面提供远程设备访问的通信协议。例 如,在客户机/服务器应用中可以用RDP来为第一计算设备的用户提供一个显示了在远程 服务器设备上运行的用户会话桌面环境的图形界面。通常,RDP可用于在通信网络传送大 量图像数据(及其他类型的数据),以便以最小的延迟将图形界面从远程设备提供至用户 设备,以使用户能与远程设备实时交互。在通信网络带宽受限的环境中,和/或在用户与远 程设备的通信遭遇丢包和/或通信延迟的环境中,RDP的性能可能会受到影响。例如,用户 有可能遭遇在远程设备上运行的断断续续和/或不完整版本的图形用户界面。为了改善用 户体验,有必要提供具有用于减少RDP的带宽使用以及将RDP在有损耗和/或延迟的通信 链路上的性能降级减少至最低的系统和方法。


【发明内容】

[0003] 在本公开的一个方面中,一种通过处理从远程服务器接收的第一数据流来产生符 合远程桌面协议(RDP)的第二数据流的方法可以包括:促使处理从远程服务器接收的第一 数据流,以便取回与分组数据关联的分组数据单元(PDU),其中与分组数据关联的每一个 PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;响应 于接收到包含第一分组数据的第一 rou,促使使用解压缩算法来解压缩第一分组数据,以及 促使将解压缩的第一分组数据存入与第一 rou的报头所包含的索引值相对应的存储器缓 存中的位置;响应于接收到第二rou,促使从与包含在第二PDU的报头中的索引值对应的存 储器缓存中的位置取回第二分组数据;促使产生符合RDP且包含解压缩的第一分组数据以 及取回的第二分组数据的第二数据流;以及促使将所产生的符合RDP的第二数据流串流传 输至本地客户机。
[0004] 在本公开的一个方面中,一种通过处理符合远程桌面协议的第一数据流来将第二 数据流串流传输至远程客户机设备的方法包括:促使处理符合RDP的第一数据流,以便识 别包含分组数据的分组数据单元(PDU),并且对于每一个包含分组数据的rou,从该分组数 据中计算一个散列值;对于每一个包含分组数据流的rou,促使在存储散列值的存储器缓 存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;如果该搜索未能发现与 计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储 从rou的分组数据中计算得到的散列值;如果该搜索未能发现与计算得到的散列值匹配的 已存储散列值,则促使选择性地压缩pdu的分组数据;促使为包含分组数据的第一数据流 中的每个PDU产生一个替换的rou,其中该替换的PDU包含一个带有索引值的报头,该索引 值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存 储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及其中如果 该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经 过压缩的分组数据;以及促使向远程客户机设备传送第二数据流,该数据流包括为包含分 组数据的第一数据流中的每个pdu产生的替换的rou。
[0005] 在本公开的一个方面中,机器可读介质是用指令编码的,所述指令可以由一个或 多个处理器运行,以便执行通过处理从远程服务器接收的第一数据流来产生符合远程桌面 协议(RDP)的第二数据流的一个或多个操作。所述一个或多个操作可以包括:促使处理从 远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDU),其中与分 组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储 位置的索引值;响应于接收到包含第一分组数据的第一 rou,促使使用解压缩算法来解压 缩第一分组数据,以及促使将解压缩的第一分组数据存入与第一 rou的报头所包含的索引 值相对应的存储器缓存中的位置;响应于接收到第二rou,促使从与包含在第二pdu的报头 中的索引值对应的存储器缓存中的位置取回第二分组数据;促使产生符合RDP且包含解压 缩的第一分组数据以及取回的第二分组数据的第二数据流;以及促使将所产生的符合RDP 的第二数据流串流传输至本地客户机。
[0006] 在本公开的一个方面中,机器可读介质是用指令编码的,所述指令可以由一个或 多个处理器运行,以便执行通过处理符合远程桌面协议的第一数据流来将第二数据流串流 传输至远程客户机设备的一个或多个操作。所述一个或多个操作可以包括:促使处理符合 RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDU),并且对于每一个包含分 组数据的rou,从该分组数据中计算一个散列值;对于每一个包含分组数据流的rou,促使 在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列 值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存 储器缓存的一个位置中存储从rou的分组数据中计算得到的散列值;如果该搜索未能发现 与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩pdu的分组数据;促使为 包含分组数据的第一数据流中的每个rou产生一个替换的rou,其中该替换的rou包含一个 带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器 缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓 存中的位置,以及其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则 替换的pdu选择性地包含经过压缩的分组数据;以及促使向远程客户机设备传送第二数据 流,该数据流包括为包含分组数据的第一数据流中的每个pdu产生的替换的rou。
[0007] 在本公开的一个方面中,一种通过处理从远程服务器接收的第一数据流来产生符 合远程桌面协议(RDP)的第二数据流的硬件设备包括:被配置成执行一个或多个操作的一 个或多个模块。所述一个或多个操作可以包括:促使处理从远程服务器接收的第一数据流, 以便取回与分组数据关联的分组数据单元(PDU),其中与分组数据关联的每一个PDU都包 括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;响应于接收到 包含第一分组数据的第一 rou,促使使用解压缩算法来解压缩第一分组数据,以及促使将解 压缩的第一分组数据存入与第一 rou的报头所包含的索引值相对应的存储器缓存中的位 置;响应于接收到第二rou,促使从与包含在第二pdu的报头中的索引值对应的存储器缓存 中的位置取回第二分组数据;促使产生符合RDP且包含解压缩的第一分组数据以及取回的 第二分组数据的第二数据流;以及促使将所产生的符合RDP的第二数据流串流传输至本地 客户机。
[0008] 在本公开的一个方面中,一种通过处理符合远程桌面协议(RDP)的第一数据流来 将第二数据流串流传输至远程客户机设备的硬件设备包括:被配置成执行一个或多个操作 的一个或多个模块。所述一个或多个操作可以包括:促使处理符合RDP的第一数据流,以便 识别包含分组数据的分组数据单元(pdu),并且对于每一个包含分组数据的rou,从该分组 数据中计算一个散列值;对于每一个包含分组数据流的rou,促使在存储散列值的存储器 缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;如果该搜索未能发现 与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存 储从rou的分组数据中计算得到的散列值;如果该搜索未能发现与计算得到的散列值匹配 的已存储散列值,则促使选择性地压缩rou的分组数据;促使为包含分组数据的第一数据 流中的每个pdu产生一个替换的rou,其中该替换的pdu包含一个带有索引值的报头,该索 引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于 存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及其中如 果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含 经过压缩的分组数据;以及促使向远程客户机设备传送第二数据流,该数据流包括为包含 分组数据的第一数据流中的每个pdu产生的替换的rou。
[0009] 在本公开的一个方面中,一种通过处理从远程服务器接收的第一数据流来产生符 合远程桌面协议(RDP)的第二数据流的硬件设备可以包括:促使处理从远程服务器接收 的第一数据流,以便取回与分组数据关联的分组数据单元(PDU)的装置,其中与分组数据 关联的每个PDU都包括一个报头,该报头包括一个与分组数据相关且指示存储位置的索引 值;响应于接收到包含第一分组数据的第一 rou,促使使用解压缩算法来解压缩第一分组 数据,以及促使将解压缩的第一分组数据存入与第一 DPU的报头包含的索引值相对应的存 储器缓存中的位置的装置;响应于接收到第二rou,促使从与包含在第二pdu的报头中的索 引值相对应的存储器缓存中的位置取回第二分组数据的装置;促使产生符合RDP且包含解 压缩的第一分组数据以及取回的第二分组数据的第二数据流的装置;以及促使将所产生的 符合RDP的第二数据流串流传输至本地客户机的装置。
[0010] 在本公开的一个方面中,一种通过处理符合远程桌面协议(RDP)的第一数据流来 将第二数据流串流传输至远程客户机设备的设备包括:促使处理符合RDP的第一数据流, 以便识别包含分组数据的分组数据单元(PDU),以及对于每一个包含分组数据的rou,从该 分组数据中计算一个散列值的装置;对于每一个包含分组数据流的rou,促使在存储散列 值的存储器缓存中搜索与从分组数据中计算得到的散列值相匹配的已存储的散列值的装 置;在该搜索未能发现与计算得到的散列值相匹配的已存储的散列值的情况下,促使选择 性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值的装置;在该 搜索未能发现与计算得到的散列值相匹配的已存储的散列值的情况下,促使选择性地压缩 PDU的分组数据的装置;促使为包含分组数据的第一数据流中的每个PDU产生一个替换的 PDU的装置,其中该替换的PDU包括一个具有索引值的报头,该索引值指示的是用于存储从 分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算 得到的散列值相匹配的散列值的存储器缓存中的位置,以及其中如果该搜索未能发现与计 算得到的散列值相匹配的已存储的散列值,则替换的PDU选择性地包含经过压缩的分组数 据;以及促使向远程客户机设备传送第二数据流的装置,该数据流包括为包含分组数据的 第一数据流中的每个PDU产生的替换的rou。
[0011] 应该理解的是,在本公开中,关于本技术主题的各种配置是作为例证显示和描述 的,本领域技术人员很容易从中清楚了解本技术主题的各种配置。此外还应该认识到,本技 术主题能够采用其他不同的配置,并且可以在其他不同方面修改其若干细节,所有这些配 置和修改均未脱离本技术主题的范围。相应地,
【发明内容】
、附图及【具体实施方式】本质上应被 视为说明性而不是限制性的。

【专利附图】

【附图说明】
[0012] 图1示出根据本技术主题不同方面的系统的简化示图。
[0013] 图2示出的是根据本技术主题不同方面的虚拟桌面加速器(VDA)系统的简化连接 图。
[0014] 图3示出根据本技术主题不同方面的利用VDA系统执行的处理的简化流程图。
[0015] 图4示出根据本技术主题不同方面的利用VDA系统执行的处理的简化信号时序 图。
[0016] 图5示出根据本技术主题不同方面的利用VDA客户机执行的处理的流程图。
[0017] 图6示出根据本技术主题不同方面的利用VDA服务器执行的处理的流程图。
[0018] 图7是示出了示例计算设备的概念性框图。
[0019] 图8A和8B中的每一个分别示出根据本技术主题不同方面的客户机设备和服务器 的简化框图。
[0020] 图9A、9B和9C是描述根据本公开的一个方面的通过处理从远程服务器接收的第 一数据流来产生符合远程桌面协议(RDP)的第二数据流的方法、用指令编码的机器可读存 储介质及设备的示例的框图。
[0021] 图10A、10B和10C是描述根据本公开的一个方面的通过处理符合远程桌面协议 (RDP)的第一数据流来将第二数据流串流传输到远程客户机设备的方法、用指令编码的机 器可读存储介质及设备的示例的框图。

【具体实施方式】
[0022] 以下阐述的【具体实施方式】旨在描述本技术主题的不同配置,而不是描述可以实施 本技术主题的唯一配置。这里引入的附图构成了【具体实施方式】的一部分。该【具体实施方式】 包括用于全面理解本技术主题的具体细节。然而,对本领域技术人员来说,本技术主题显然 可以在没有这些具体细节的情况下实施。在一些情况中,为了避免与本技术主题的概念相 混淆,众所周知的结构和部件会以框图形式显示。此外,为了便于理解,相同的部件是用相 同的部件编号标记的。
[0023] 远程桌面协议(RDP)是一种利用图形界面提供远程设备访问的通信协议。例如, 在客户机/服务器应用中可以使用RDP来为第一计算设备用户提供一个显示了在远程服务 器设备上运行的用户会话桌面环境的图形界面。RDP还可用于为第一计算设备用户提供显 示了另一个本地或远程计算设备的桌面环境的图形界面。在将客户机设备和客户机终端设 计成将大多数重度使用的资源置于集中式服务器这类经由网络与客户机终端相连的远程 计算机的客户机/服务器实施方式中,RDP是非常有益的。客户机终端可以具有最低限度 的内存、磁盘存储器及处理能力,但是这是在与强大服务器相连的多数用户不需要额外处 理能力的前提下设计的。实际上,客户机终端需要的可能仅仅是足以接收RDP数据流、在客 户机终端上处理和显示RDP数据、接收用户输入数据以及向服务器传送用户输入数据的处 理能力及记忆存储器。对这些客户机终端来说,由于减少了资源,并且可以从服务器集中管 理客户机,因此,总的购置成本可被降至最低。
[0024] 更具体地说,RDP可用于从运行基于Windows操作系统(0S)的设备的RDP客户机 设备到RDP服务器的远程连接。此外,RDP还可用于来自运行其他类型的操作系统的RDP客 户机设备的连接,例如Linux、UNIX、Android、iOS或其他任何恰当的0S平台。RDP服务器 可以发送屏幕图像数据,作为示例,该处理可以通过在逐个屏幕帧发送构成16x16位图图 像网格的多个屏幕图像来完成。通常,屏幕图像可以形成使用RDP协议传送的数据的主要 部分,并且可以用位图格式传送。作为替换或补充,RDP服务器可以发送其他类型的数据, 其中包括文本数据、RDP报头数据、RDP控制数据、二进制数据块等等。通常,在这里可以将 那些用RDP协议传输的数据(包括图像、文本、RDP报头、RDP控制以及二进制数据块数据 等等)称为分组数据。在一些情况中,在不同屏幕帧中有可能会重复出现一个或多个屏幕 图像,或者有可能在不同分组中重复一个或多个其他类型的数据。然而,在不进行任何优化 的情况下,即便重复出现一个或多个屏幕数据(或其他类型的数据),RDP协议每次也还是 会重传每个帧中的所有屏幕图像(或是每个分组中的其他类型的数据)。为了提高RDP协 议效率,提供RDP数据缓存处理的方法和系统可以避免重传每个帧中的所有屏幕图像(和 /或重传所有重复分组数据)。例如,存储器缓存可以在客户机上存储RDP服务器发送的图 像,如果图像重复,那么RDP服务器可被配置成后续只发送已存储图像的图像索引,在接收 到图像索引时,RDP客户机可被配置成在RDP客户机上加载来自存储器缓存的已存储/重 复图像。同样,存储器缓存可以在客户机上保存从RDP服务器接收的数据,如果数据重复, 那么RDP服务器可被配置成只发送已存储数据的数据索引,RDP客户机则可以被配置成从 存储器缓存中加载已存储/重复的数据。由此,通过使用存储器缓存,有助于提高RDP协议 效率,以及减少RDP协议的带宽使用。
[0025] 此外,在RDP协议中,从RDP服务器发送的图像可被压缩,以便进一步提高RDP效 率,以及减少RDP的带宽使用。例如,屏幕数据可以用不同的图像压缩算法进行压缩,其示 例可以是符合JPEG、TIFF或RLE标准的图像压缩处理。在RDP客户机上存储图像的存储器 缓存可以将图像另存为解压缩图像,由此,终端服务器不需要压缩重复图像,终端客户机设 备(即运行RDP客户机的设备)也不需要重复地对从存储器缓存加载的图像解压缩的解压 缩逻辑。就此而论,由于只需要压缩较少的屏幕图像,RDP数据缓存还可以减小RDP服务器 和客户机上的处理负载,从而在重复图像数量增加时进一步改善协议性能。
[0026] 此外,RDP协议通常会用到行程编码(RLE)图像压缩算法,但该算法未必是最优的 图像压缩算法。因此,通过使用压缩比较高的压缩算法来压缩每个屏幕图像,可以进一步改 善RDP协议效率,作为示例,此类算法可以是JPEG、TIFF或其他类似的高压缩比图像压缩算 法。通过使用压缩比较高的压缩算法,可以将需要通过网络传送的图像数据数量减至最少。
[0027] 最后,RDP是通过使用符合传输控制协议/网际协议(TCP/IP)的分组而在客户机 设备与远程服务器设备之间进行通信的。虽然使用TCP/IP传输协议可以在等待时间很短 (例如网络等待时间小于90ms)的网络环境中提供恰当性能,但在网络等待时间增大时(例 如大于90-100ms的网络等待时间),在TCP/IP链路上运行的RDP会话的性能有可能会严重 降级。在网络等待时间较高(例如90-100ms或更高的等待时间)的网络环境中,通过在客 户机设备与远程服务器之间使用用户数据报协议(UDP)或是改进的UDP(UDP+)传输协议来 传递RDP分组数据,可以改善RDP性能。
[0028] 总体系统
[0029] 图1示出的是根据本技术主题不同方面的系统100的简化图示。系统100可以包 括经由公共网络118或企业网络114与服务器计算设备108 (服务器)通信的一个或多个 客户机计算设备102 (例如被统称为客户机设备102的客户机设备102a、102b以及102c)。 在一些方面中,服务器108被配置成允许执行远程会话(例如远程桌面会话),在该会话 中,用户可以通过从客户机设备102登录到服务器108来访问服务器108上的应用和文件。 此类连接可以采用数种众所周知的技术中的任一技术建立,例如处于运行某个操作系统的 服务器上的远程桌面协议(RDP),并且所述操作系统基于或者兼容于包括Windows、Linux、 UNIX、Android、iOS或其他操作系统平台在内的操作系统。在一些方面中,客户机设备102 可以用文件传输协议(FTP)、超文本传输协议(HTTP)、超文本传输协议安全(HTTPS)或其他 适当协议来与服务器108通信。
[0030] 作为例证而不是限制,客户机设备102可以代表计算机、移动电话、膝上型计算 机、瘦客户机设备、个人数字助理(PDA)、便携式计算设备或是具有处理器的适当设备。在一 个示例中,客户机设备102是智能电话(例如iPhone、Android电话、Blackberry等等)。在 某些配置中,客户机设备102可以代表出纳设备、音频播放器、游戏机、相机、摄录相机、音 频设备、视频设备、多媒体设备或是能够支持与远端服务器的连接的设备。在一个示例中, 客户机设备102可以是移动的。在另一个示例中,客户机设备可以是固定的。根据本公开 的一个方面,客户机设备102可以是至少具有处理器和存储器的设备,其中客户机设备102 的存储器总量可以小于服务器108的存储器总量。在一个示例中,客户机设备102没有硬 盘。并且在一个方面,客户机设备102可以包含闪存而不是硬盘。此外,在一个方面中,客 户机设备可以包括一个或多个客户机设备。
[0031] 在一个方面中,客户机设备102是常规的个人计算机(PC)。在另一个方面中,客 户机设备102是为特殊目的(并非通用目的)设计的专用客户机。例如,专用客户机设备 可以是被设计成百货公司出纳机的客户机设备,被设计成执行专门测试或测量的客户机设 备,被设计成执行用于诊断和/或治疗患者的专门医疗应用的客户机设备等等。
[0032] 在一个方面中,服务器108可以代表计算机、膝上型计算机、计算设备、数据库、 内部服务器、存储库服务器、配置应用服务器、域名系统(DNS)服务器、动态主机配置协议 (DHCP)服务器、虚拟机(例如VMware?虚拟机)、桌面会话(例如Microsoft Terminal Server)、已发布应用(例如Microsoft Terminal Server)、或是具有处理器的适当设备。在 一个优选方面中,服务器108是固定的。在另一个方面中,服务器108可以是移动的。在别 的方面中,服务器108可以是嵌入式的。在某些配置中,服务器108可以是能够代表客户机 设备的任何设备。在一个优选方面中,服务器108并非客户机。此外,在一个方面中,服务 器108可以包括一个或多个服务器或是一个或多个服务器功能。
[0033] 在一个示例中,当第一设备不直接连接到第二设备时,第一设备远离第二设备。在 一个示例中,第一远程设备可以经由通信网络连接到第二设备,作为示例,该网络可以是局 域网(LAN)、广域网(WAN)和/或用于远程操作的其他网络。
[0034] 当客户机设备102与服务器108相互远离时,客户机设备102可以经由公共网络 118和/或企业网络114连接到服务器108,作为示例,该连接可以借助于调制解调器连接, 包含以太网的LAN连接,包含DSL、电缆、T1、T3、光纤、WiFi的宽带WAN连接,包含GSM、GRPS、 3G、WiMAX或其他远程网络连接的移动网络连接。公共网络118或企业网络114可以是LAN 网络、WAN网络、无线网络、因特网、内部网或其他远程网络。在一个方面中,公共网络118 或企业网络114可以包括用于在客户机设备和/或服务器之间路由数据的一个或多个路由 器。网络上的远程设备(例如客户机设备,服务器)可以用相应网络地址定址,例如网际协 议(IP)地址、网际名称、Windows网际名称服务(WINS)名称、域名或其他系统名称,但是并 不局限于此。这里示出的是一个设备如何可以远离另一个设备的一些示例。但是本技术主 题并不局限于这些示例。
[0035] 根据本公开的某些方面,相对于客户机设备,术语"服务器"和"远程服务器"通常 是以同义方式使用的,单词"远程"可以是指服务器与一个或多个其他设备进行通信,例如 经由一个或多个网络连接来进行通信。同样,相对于服务器,术语"客户机设备"和"远程客 户机设备"通常也是以同义方式使用的,并且单词"远程"可以是指客户机设备与一个或多 个服务器进行通信,例如经由一个或多个网络连接来进行通信。
[0036] 在本公开的一个方面中,"客户机设备"有时可被称为客户机,反之亦然。同样,"服 务器"有时可被称为服务器设备,反之亦然。
[0037] 在一些方面中,服务器108可以包括RDP服务器104和虚拟桌面加速器(VDA)服 务器106。虽然服务器108被显示成包含了所有这些服务器,但是其中一个或所有的两个服 务器可以位于服务器108外部。作为替换,RDP和VDA服务器104和106可以是在相同服 务器108或不同服务器上运行的部件或应用(例如服务器应用)。服务器108还可以包括 各种其他服务器,例如DNS服务器、DHCP服务器和/或应用服务器。在一些方面中,这其中 的一个或多个服务器可以共同合并成一个单独服务器。在一些方面中,由于服务器108主 要通过操作而在诸如企业网络114之类的私有网络上与客户机102a和102b通信,因此还 可以将服务器108称为内部服务器。在一些方面中,客户机设备102c处于相同的域上。
[0038] 在一些方面中,服务器108的至少一部分是可以从公共网络118访问的。举例来 说,如图1所示,RDP和VDA服务器104和106是可以从公共网络118访问的。由此,客户 机设备l〇2c可以经由公共网络118来与服务器108 (例如RDP服务器104和/或VDA服务 器106)通信。
[0039] 如图1所示,每一个客户机设备102可以包括一个RDP客户机和/或VDA客户机。 在一个方面中,RDP客户机是在客户机设备102上运行的应用或部件。该RDP客户机可被 配置成通过网络(114或118)连接到RDP服务器104,以便接收来自RDP服务器104的RDP 数据流,在客户机设备102上显示接收到的RDP数据,以及将用户输入数据反向传送到RDP 服务器104。同样,VDA客户机(也被称为VDA客户机部件)是在客户机设备102上运行的 应用或部件。该VDA客户机可被配置成通过网络(114或118)连接到VDA服务器106,以便 接收来自VDA服务器106的VDA数据流,通过处理所接收的VDA数据来产生相应的RDP数 据流,以及将所产生的RDP数据流传送或串流传输到客户机设备102上的RDP客户机。
[0040] 根据本技术主题的不同方面,每一个客户机102可以运行基于windows的操作系 统,例如 Windows 嵌入式操作系统族(例如 Windows Embedded Compact、Windows Embedded Standard、Windows Embedded Enterprise、Windows Embedded POSReady、Windows Embedded NAVReady、Windows Embedded Server等等)或其他适当的嵌入式镜像中的任何一个。作为 替换,这些客户机还可以运行Linux、UNIX、Android、iOS或是其他任何恰当的操作系统。
[0041] 虚拟桌面加谏器(VDA)系统
[0042] 图2示出的是根据本技术主题不同方面的VDA系统的简化连接图。该系统可以包 括服务器108以及通过一个或多个网络114/118与服务器通信的至少一个客户机设备102。
[0043] 客户机设备102可以包括一个被配置成与RDP服务器104建立连接,以便接收来 自RDP服务器104的RDP流(或RDP数据流)的RDP客户机110。客户机设备102还可以 包括一个被配置成与VDA服务器106建立连接,以便接收来自VDA服务器106的VDA流(或 VDA数据流)的VDA客户机112。此外,RDP客户机110和VDA客户机112还可以被配置成 在客户机设备102上相互通信。
[0044] 服务器108可以包括被配置成相互通信的RDP服务器104和VDA服务器106。VDA 服务器106可被进一步配置成与VDA客户机112进行通信,RDP服务器104则可以被配置 成直接(通过一个或多个网络114/118)或间接(通过VDA服务器106、一个或多个网络 114/118以及VDA客户机112)与RDP客户机110通信。
[0045] VDA系统200包括服务器108的VDA服务器106以及客户机设备102的VDA客户 机112。通常,与VDA系统和/或VDA系统部件建立的连接(例如VDA连接和RDP连接)是 逻辑连接,例如经由分组交换网络的分组交换通信会话。
[0046] VDA客户机112和VDA服务器106可用于提升RDP客户机110与RDP服务器104 之间的RDP连接的效率。特别地,VDA、客户机112可被配置成拦截RDP客户机110传送至 RDP服务器104的RDP连接请求,以及与VDA服务器106建立VDA连接,从而在RDP客户机 110与RDP服务器104之间建立虚拟RDP连接,其中该连接是通过VDA客户机112、所建立 的VDA连接以及VDA服务器106路由(或传递)的。VDA客户机112和服务器106中的每 一个都可以包括相应的存储器缓存113和107,其中该缓存可供VDA连接用来提升数据传输 效率以及减少带宽使用。
[0047] 在本公开的一个方面中,VDA客户机112被配置成拦截RDP客户机110向服务器 108发送的关于RDP服务器104 (或是RDP服务器部件)的连接请求,以及基于被拦截的连 接请求来与服务器108的VDA服务器106 (或VDA服务器部件)建立连接。如果VDA客户机 112成功识别或定位服务器108上的VDA服务器106,并且与VDA服务器106成功建立VDA 连接,那么VDA客户机112会通过VDA客户机112、所建立的VDA连接以及VDA服务器106 而在RDP客户机110与RDP服务器104之间路由RDP连接。由此,VDA客户机可以通过接 收来自RDP客户机110的RDP请求以及向RDP客户机110传送RDP数据流来充当RDP客户 机110的代理RDP服务器。同样,VDA服务器106可以通过向RDP服务器104传送RDP请求 以及接收来自RDP服务器104的RDP数据流来充当RDP服务器104的代理RDP客户机。然 而,如果VDA客户机112无法识别或定位服务器108上的VDA服务器,或者无法与VDA服务 器106建立VDA连接,那么VDA客户机112可以将拦截自RDP客户机110的连接请求转发 到RDP服务器104,以便能在RDP客户机110与RDP服务器104之间建立直接的RDP连接。
[0048] VDA客户机112拦截的连接请求通常包括RDP客户机110尝试连接的RDP服务器 104的网际协议(IP)地址,以及RDP服务器104的通信端口信息和所使用的RDP协议的版 本号。作为与VDA服务器106建立VDA连接的处理的一部分,VDA客户机112通常会向VDA 服务器106发送包含以下的一项或多项的连接信息:从被拦截的连接请求中取回的RDP服 务器104的网际协议(IP)地址,从被拦截的连接请求中取回的RDP服务器104的通信端口 信息,以及关于VDA客户机112所能支持的用以存储屏幕图像或其他数据的缓冲存储器缓 存(例如存储器缓存113)的最大数量和/或大小的信息。响应于接收到了连接请求,VDA 服务器106基于该连接信息来确定是否应与VDA客户机112建立VDA连接。此外,VDA服 务器106还可以通过向RDP服务器104发送连接请求来尝试与RDP服务器104建立RDP连 接。
[0049] 如果在VDA客户机112与VDA服务器106之间成功建立连接(例如VDA连接),并 且如果在VDA服务器106与RDP服务器104之间成功建立连接(例如RDP连接),那么VDA 系统200可以开始路由数据流。例如,VDA系统200可以开始在RDP服务器105与RDP客 户机110之间通过VDA连接来路由RDP流,由此提升数据传输效率以及减少此类经由一个 或多个网络114/118的传输的带宽使用。
[0050] 在路由数据流时,VDA系统200被配置成在VDA服务器106上接收来自RDP服务器 106的RDP数据流。VDA服务器106通过处理所接收的RDP数据流来创建一个传输至VDA 客户机112的VDA数据流。特别地,VDA服务器106可以解析包含RDP内容的RDP流,识别 RDP流中包含的图像数据或其他类型的数据(通常被称为分组数据),并且通过向图像数 据(或其他类型的分组数据)中添加缓存报头,压缩图像数据(例如使用JPEG或TIFF图 像压缩)或分组数据(例如使用ZIP压缩)以及移除重复的图像或其他类型的分组数据来 产生替换RDP流。此外,VDA服务器106还可以批量压缩(例如通过使用zlib之类的压缩 应用)和加密所述替换RDP流(包含图像数据和/或其他类型的分组数据),以便创建VDA 流。然后,VDA流会通过一个或多个网络114/118传送至VDA客户机112。
[0051] 在VDA客户机112, VDA流可被解密和批量解压缩,以便重建替换RDP流。然后, VDA客户机112可以对解压缩的数据进行解析,以便识别和取回缓存报头、经过压缩的图像 数据和/或其他类型的分组数据。VDA客户机112可以解压缩图像或其他类型的数据,并 且可以通过处理缓存报头来构建RDP流。在一个方面中,缓存报头包括用于对存储器缓存 113执行操作的命令,例如将接收到的图像数据或其他分组数据存入存储器缓存,从存储器 缓存中取回已存储图像或其他分组数据,以及清洗(或清除)存储器缓存。由此,VDA客户 机112从VDA流中重建RDP流,并将重建的RDP流传送到RDP客户机110。
[0052] VDA客户机112可以是在运行RDP客户机110的客户机设备102上运行的应用或 部件。作为替换,VDA客户机112可以是在路由器、中间服务器或是位于RDP客户机110附 近(并且远离RDP服务器104)的其他计算设备上运行的应用或部件,并且可用于在RDP客 户机110与RDP服务器104之间传输RDP连接请求。VDA客户机112可以执行包含以下各 项的功能:在RDP客户机110与RDP服务器104之间拦截连接请求;连接到服务器108上的 VDA服务器106 (或VDA服务器部件)或是RDP服务器104的设备;理解和解析VDA流;对 从VDA服务器106接收的数据分组进行解密;对从VDA服务器接收的压缩数据(例如使用 zlib压缩算法压缩的数据)进行解压缩;将以不同格式和模式(例如JPEG、TIFF等等)接 收的RDP屏幕图像解压缩;以及将未压缩(或解压缩)的图像或其他分组数据缓存到存储 器缓存113中。
[0053] 在一个方面中,VDA服务器106可以是独立服务器,或者可以是在服务器106或 RDP服务器104上运行的应用或服务器部件。在另一个方面中,VDA服务器106可以是一 个独立服务器,或者可以是一个在路由器、中间服务器或是位于RDP服务器104附近(且远 离RDP客户机110)的其他计算设备上运行的应用或部件,并且可以用于在RDP客户机110 与RDP服务器104之间传输RDP连接请求。VDA服务器106通常是在远离客户机102的机 器(例如服务器104、106或108)上活动的,并且所述VDA服务器106侦听来自一个或多个 VDA客户机112的连接。响应于接收到来自VDA客户机112和/或与VDA客户机112建立 VDA连接的连接请求,VDA服务器106可以尝试连接到位于在接收自VDA客户机112的连接 请求中提供的IP地址和端口的RDP服务器104。在与RDP服务器104建立连接的过程中, VDA服务器106可以充当RDP服务器104的RDP客户机(即代理RDP客户机)。如果成功 连接到RDP服务器104,则VDA服务器106可以向VDA客户机112返回一个成功响应(例如 连接应答ACK响应消息);否则,VDA服务器106可以向VDA客户机112发送一个失败响应 (例如连接NACK响应消息)。
[0054] VDA服务器106可以执行的功能包括:与RDP服务器104建立连接;接受来自一个 或多个VDA客户机112的连接;理解和解析RDP数据流;以不同格式(例如JPEG、TIFF等 等)压缩RDP屏幕图像或者以不同格式(例如ZIP等等)压缩RDP分组数据;保持一个存 储散列值的存储器缓存107 ;存储用于为RDP流中的每个图像或其他分组数据产生唯一散 列值/键的散列函数;使用批量压缩算法(例如使用zlib压缩)来压缩数据;以及对压缩 数据进行加密,并且将经过加密的数据转发到VDA客户机112。
[0055] 当VDA服务器106解析作为RDP数据流的一部分接收的RDP内容时,VDA服务器 106可以从RDP数据流中包含的已识别的每个图像或是已识别的每个数据分组中计算一个 散列值或散列键(例如64位的散列值/键)。然后,VDA服务器106可以在VDA服务器106 的存储器缓存107中搜索该计算得到的散列值,以便确定是否在存储器缓存107中保存了 任何匹配散列值。如果发现匹配散列值,则VDA服务器106确定先前已经将与该散列值对 应的图像或其他分组数据传送至VDA客户机112,并且所述图像数据或其他分组数据已经 保存在了 VDA客户机112的存储器缓存113中与发现该匹配散列值的位置的索引值相对应 的位置。然后,VDA服务器106会产生一个替换RDP数据流,该数据流包括用于已识别的每 个图像或数据分组的缓存报头,并且可选地包括经过压缩的图像数据或分组数据。如果在 存储器缓存107中发现与计算得到的散列值匹配的散列值,那么VDA服务器106会在替换 数据流中包含一个缓存报头,所述缓存报头包括缓存命令"CACHE_FETCH",其后是该散列值 在存储器缓存107中所在位置的索引值。如果没有在存储器缓存107中发现匹配散列值, 那么VDA服务器106会将计算得到的散列值存入与存储器缓存107中的索引值对应的位 置,并且可选地压缩图像数据(例如使用JPEG或TIFF压缩算法)或分组数据(例如使用 ZIP压缩算法),以及在替换数据流中包含一个缓存报头,所述缓存报头包括命令"CACHE_ STORE",其后则是索引值和经过压缩的图像数据或分组数据。最后,VDA服务器106还会批 量压缩替换RDP流(例如使用zlib压缩算法),通过加密经过压缩的流来形成VDA数据流, 以及将VDA数据流发送到VDA客户机112。
[0056] VDA系统处理和信今
[0057] 图3示出的是根据本技术主题不同方面来改善使用VDA系统的通信链路的带宽优 化的处理300的简化流程图。该处理可用于提供丰富的用户体验,以及在客户机102与服 务器108之间使用RDP协议的通信链路上提供改善的带宽使用。
[0058] 处理300始于操作301,在该操作中,VDA客户机112拦截RDP客户机110与RDP 服务器104之间的连接。特别地,VDA客户机112可以拦截RDP客户机110传送的关于RDP 服务器104的连接请求。该连接请求可以包括RDP服务器104(或服务器108)的网络地 址,例如IP地址和RDP服务器104的通信端口标识。所述VDA客户机112可以以RDP客户 机110用以建立RDP通信的标准端口(例如RDP端口)为目标来拦截RDP客户机110发起 的连接请求。通过拦截该连接请求,可以防止在RDP客户机110与RDP服务器104之间建 立直接的RDP连接。更进一步,通过拦截该连接请求,还能使VDA客户机112通过VDA客户 机112和VDA服务器106来路由RDP客户机110与RDP服务器104之间的通信,由此在用 户(或RDP客户机110)不知情的情况下透明地代理RDP连接以及应用数据缓存处理(例 如对诸如图像数据或其他类型的数据之类的分组数据进行缓存)。
[0059] 在操作303, VDA客户机112和VDA服务器106协商用于VDA连接的连接参数,并 且通过一个或多个网络114/118建立VDA连接。特别地,VDA客户机112可以从被拦截的 连接请求中取回RDP服务器1〇4(或服务器108)的网络地址,并且可以尝试与关联于RDP 服务器104 (或是在服务器108上运行或关联于服务器108)的VDA服务器106建立连接。 例如,VDA客户机112可以向服务器108,向与RDP服务器104的网络地址关联的VDA服务 器106,或者向其他恰当实体发送一个用于建立连至服务器108 (例如连接到服务器108的 预定端口,如VDA服务器106侦听的专用VDA端口)的VDA连接的连接请求。
[0060] 如果VDA端口上没有与RDP服务器104关联和/或在服务器108上运行的VDA服 务器106,那么VDA客户机112无法与VDA服务器建立VDA连接。在这种情况下,VDA客户 机112有可能接收一个包含失败的连接响应消息(例如NACK消息),或者有可能在指定时 段中未接收到连接响应消息。所述VDA客户机112可以确定不能建立VDA连接,并且可以 将被拦截的连接请求消息从RDP客户机110转发到RDP服务器104,以便能在RDP客户机 110与RDP服务器104之间建立直接的RDP连接。
[0061] 如果在VDA端口上存在与RDP服务器104关联和/或在服务器108上运行的VDA 服务器106,那么VDA服务器106可以向VDA客户机112发送连接响应消息(例如连接应答 ACK)。VDA客户机112和VDA服务器106可以继续协商用于在彼此之间建立VDA连接的连 接参数。这些连接参数可以包括存储器缓存大小(例如存储器缓存107和113的大小)和 /或RDP协议版本(或版本号)或其他详细信息。一旦协定了用于VDA连接的连接参数,则 在VDA客户机112与VDA服务器106之间建立VDA连接。
[0062] 通常,VDA服务器106会接受来自VDA客户机112的连接请求,并且可以存储与VDA 客户机112的VDA连接的连接参数(例如存储器缓存大小以及RDP协议版本细节)。响应 于与VDA客户机112建立VDA连接,VDA服务器106可以从VDA客户机112接收包含在被拦 截的连接请求中的RDP连接细节,其中包括RDP服务器104的网络地址和/或RDP服务器 104的通信端口信息。VDA服务器106可以在所指示的地址或端口向RDP服务器104发送 连接请求。该连接请求可以包括VDA客户机提供的连接细节,包括RDP协议版本细节。如 果RDP服务器104验证了该连接请求(例如,如果包含在该请求中的连接参数有效和/或 兼容RDP服务器104),则RDP服务器104可以与VDA服务器106建立RDP连接,并且可以 向VDA服务器1065发送连接应答消息。然后,VDA服务器106可以与RDP服务器104具有 活动的RDP连接,并且能够连接到RDP服务器104。所述VDA服务器106可以向VDA客户机 112发送一个表明已经与RDP服务器104建立RDP连接的连接应答,VDA客户机112则可以 转而向RDP客户机110发送一个表明已经建立RDP连接的连接响应。
[0063] 如果VDA服务器无法与RDP服务器104建立RDP连接,则VDA服务器可以向VDA 客户机112发送失败响应消息(例如NACK消息)。响应于接收到NACK消息,VDA客户机 112可以向RDP客户机110发送连接NACK消息,或者VDA客户机112可以将接收自RDP客 户机110的被拦截的连接请求转发到RDP服务器103,以便能在RDP客户机110与RDP服务 器104之间建立直接的RDP连接。
[0064] 操作303可以以在RDP客户机110与VDA客户机112以及在VDA服务器106和RDP 服务器104之间建立RDP连接为结束,并且可以以在VDA客户机112与VDA服务器106之 间建立VDA连接为结束。特别地,如果成功建立RDP连接和VDA连接,那么VDA客户机112 可以充当RDP客户机110的代理RDP服务器,VDA服务器106可以充当RDP服务器104的 代理RDP客户机。然而,如果无法建立RDP连接或VDA连接中的任一连接,则可以在RDP客 户机110与RDP服务器104之间建立直接的RDP连接。就此而论,在无法建立恰当的VDA 和RDP连接中的任一连接时,VDA客户机112可以通过允许在RDP客户机110与RDP服务 器104之间建立RDP连接来与不具有VDA服务器106的服务器106相互协作。
[0065] 在操作305,从RDP服务器104开始串流传输数据。该数据是作为RDP数据流而 被从RDP服务器104串流传输至VDA服务器106的。RDP数据流可以遵循作为操作303中 的部分连接请求而被传递的RDP协议版本细节。VDA服务器106接收来自RDP服务器104 的RDP数据流(或RDP流),并且解析所接收的RDP流。特别地,VDA服务器106可以解析 作为RDP流的一部分接收的每一个协议数据单元(PDU),以便识别RDP流中包含的图像内容 (通常是分组数据内容)。对于RDP流中包含的被识别的每个图像(或是包含图像数据或 数据分组的H)U),VDA服务器106将会取回该图像(或分组数据),并且为该图像(或分组 数据)计算一个散列值(例如64位的散列值或是名为散列键的值)。该散列值也可称为散 列键、图像散列值、图像散列键、或是图像键。对于计算得到的每个散列值,VDA服务器106 会在存储器缓存107中搜索该散列值。然后,VDA服务器106可以基于在存储器缓存107中 搜索该散列值的结果来为该散列值执行三种例示操作之一。
[0066] 第一,如果在存储器缓存107中未找到该散列值,则VDA服务器106会在存储器缓 存107中找到一个恰当位置来存储该散列值。例如,该散列值可被保存在一个空的存储位 置,或者可以通过存储该散列值来重写先前保存在某个存储位置的数据。在一个方面中,该 散列值是用循环链表保存在存储器缓存中的,由此通过存储该散列值来重写最早存储的散 列值。在另一个方面中,该散列值是用最近最少使用算法保存的,由此通过存储该散列值来 重写未使用时间最长的已存储散列值。在另一个方面中,该散列值是用恰当的缓存替换算 法存储的。一旦将散列值存入存储器缓存107,则VDA服务器106将会标识用于指示在存储 器缓存107中存储该散列值的位置的索引值。然后,通过使用恰当图像压缩算法,可以对与 该散列值对应的图像进行压缩,例如使用具有诸如视觉损耗压缩模式、视觉无损压缩模式 或是无损压缩模式之类的选定压缩模式的JPEG或TIFF压缩。作为替换,该数据分组也可以 可选地用恰当压缩算法来压缩,例如ZIP压缩。然后,VDA服务器106会创建一个包含处于 压缩图像数据(或是被压缩的分组数据)之前的缓存报头的替换RDP协议数据单元(PDU)。 该缓存报头包括缓存命令"CACHE_STORE"以及指示了该散列值在存储器缓存107中的存储 位置的索引值。
[0067] 第二,如果在存储器缓存107中找到该散列值,则VDA服务器106取回存储该散列 值的存储器位置的索引值。然后,VDA服务器106会创建一个包含缓存报头的替换RDP H)U, 其中该缓存报头具有缓存命令"CACHE_FETCH",其后跟随的是取回的索引值。通常,具有缓 存报头命令"CACHE_FETCH"的替换RDP PDU不包括图像数据(或分组数据)或是压缩图像 数据(或是经过压缩的分组数据)。
[0068] 第三,如果VDA服务器106遇到存储器缓存107出错,确定存储器缓存107已被破 坏,确定存储器缓存107与相关联的VDA客户机112上的相应存储器缓存113失步,和/或 接收到表明存储器缓存113内存不足的差错,则VDA服务器106可以通过发送包含具有缓 存命令"CACHE_FLUSH"的缓存报头的替换RDP PDU来禁用数据缓存处理。通常,VDA服务 器106会用恰当图像压缩算法来压缩图像数据(或者可选地压缩分组数据),以及创建一个 包含缓存报头和压缩图像数据的替换RDP协议数据单元(PDU)。该缓存报头包括缓存命令 "CACHE_FLUSH",其后跟随的是被设置成0的两个字节。
[0069] 在操作305, VDA服务器106由此接收并解析所接收的RDP数据流,以便创建一个 用替换的PDU来替换包含图像数据(或分组数据)的PDU的替换RDP流。该RDP流中不包 含图像数据(或分组数据)的部分(例如rou)可以保持完好无损,并且不会在替换的RDP 流中被修改。每一个替换的PDU都包括以下各项之一:缓存命令"CACHE_ST0RE"、索引值和 压缩图像数据(或分组数据);缓存命令"CACHE_FETCH"和索引值;或是缓存命令"CACHE_ FLUSH"和压缩图像数据(或分组数据)。
[0070] 在操作307, VDA服务器106对替换RDP流施加批量压缩处理,例如应用使用了压 缩算法或是诸如zlib之类的库的压缩处理,或者应用别的恰当压缩算法或库。然后,VDA 服务器106会用恰当的加密算法来加密经过压缩的替换RDP流,以便确保已加密的流的安 全性。之后,VDA服务器106可以将经过加密、压缩的替换RDP流作为VDA数据流(或VDA 流)传送到VDA客户机112。
[0071] 在操作309, VDA服务器106通过一个或多个网络114/118而将替换RDP流作为 VDA数据流传送到VDA客户机112,并且所述替换的RDP流会被VDA客户机112接收。由于 使用了数据缓存处理和压缩处理,由VDA服务器106输出的VDA数据流占用的带宽要远远 小于VDA服务器106所接收的RDP数据流。因此,在通过一个或多个网络114/118传送时, 与等价RDP数据流所要占用的带宽相比,VDA数据流占用的带宽会大幅减少。
[0072] 在操作311,接收到经过加密、压缩的替换RDP流(即VDA数据流)的VDA客户机 112会解密所接收的数据流,以及批量解压缩经过解密的流。所述解密和解压缩是用与操作 307中使用的加密和压缩方法互补的解密和解压缩方法执行的。
[0073] 然后,在操作313,VDA客户机112继续解析和重建替换RDP流。特别地,VDA客户 机112可以解析作为替换RDP流的一部分接收的每一个协议数据单元(PDU),以便识别包含 图像内容(或分组数据内容)的rou。包含图像内容(或分组数据内容)的pdu可以对应 于在操作305中创建且各自包含缓存报头的替换的rou。对于包含在替换RDP流中且包含 图像内容的每一个被识别的rou,VDA客户机112可以取回并处理缓存报头以及任何相关联 的图像数据(或分组数据)。所述VDA客户机112可以基于取回的缓存报头来执行三种例 示操作之一。
[0074] 第一,如果缓存报头包含缓存命令"CACHE_ST0RE",则VDA客户机112取回PDU中 包含的索引值和压缩图像数据(或分组数据)。该VDA客户机112会使用恰当的图像解压 缩算法来解压缩图像数据,例如使用具有与在操作305中使用的压缩算法和模式相对应的 解压缩模式(例如视觉损耗,视觉无损,或无损)的JPEG或TIFF解压缩。VDA客户机112 会将解压缩的图像数据(或分组数据)存入存储器缓存113中与取回的索引值相对应的位 置。更进一步,VDA客户机112还会重建包含解压缩图像数据(或分组数据)的RDP H)U。
[0075] 第二,如果缓存报头包含缓存命令"CACHE_FETCH",则VDA客户机112取回包含在 PDU中的索引值。然后,VDA客户机112从存储器缓存113中取回保存在与取回的索引值相 对应的位置的图像数据(或分组数据),并且重建一个包含取回的图像数据(或分组数据) 的 RDP PDU。
[0076] 第三,如果缓存报头包含缓存命令"CACHE_FLUSH",则VDA客户机112清洗(即 清空、清除或删除其内容)存储器缓存113。更进一步,VDA客户机112会复位存储器缓存 113。该VDA客户机112取回PDU中包含的压缩图像数据(或分组数据),并且使用恰当的 解压缩算法来解压缩图像数据。更进一步,VDA客户机112还会重建包含解压缩的图像数 据(或分组数据)的RDP rou。
[0077] 由此,VDA客户机112可以基于解压缩的替换RDP流以及重建的RDP PDU来重建 RDP流。特别地,VDA客户机112可以通过使用解压缩的替换RDP流以及通过用包含解压缩 图像数据的重建RDPPDU替换每一个被识别为包含图像数据(或分组数据)的PDU来重建 RDP 流。
[0078] VDA客户机112将重建的RDP流传送到RDP客户机110。为此目的,VDA客户机112 可以充当RDP客户机110的代理RDP服务器,并且可以向RDP客户机110传送一个与RDP 服务器104传送至VDA服务器106的RDP流基本相同的RDP流。
[0079] 只要VDA服务器106接收到用于传送至RDP客户机110的RDP数据流,则可以采 用基本连续的方式执行操作305到313。作为替换,操作305-313可以是在从RDP服务器 104接收到RDP数据的时候重复或间歇执行的。
[0080] 在操作315, VDA客户机112与VDA服务器106之间的VDA连接将被断连。作为示 例,VDA客户机112或VDA服务器106可以是响应于接收到来自RDP客户机110或RDP服 务器104的断连请求而被断连的。响应于接收到断连请求,VDA客户机112和/或VDA服 务器106断连VDA连接,从存储器缓存113和107中清除所有缓存数据,并且向对方发送断 连请求。
[0081] 如结合操作305所述,VDA服务器106会创建一个替换RDP流,其中在该替换RDP 流中,RDP流中的每个包含图像数据(或者更一般地说是分组数据)的PDU都会被修改或 变更。例如,VDA服务器106有可能接收如下所示的RDP数据流 :
[0082]

【权利要求】
1. 一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议RDP的第 二数据流的方法,该方法包括: 促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元 PDUs, 其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关 且指示了存储位置的索引值; 响应于接收到包含第一分组数据的第一 rou,该方法包括: 促使使用解压缩算法来解压缩第一分组数据;以及 促使将解压缩的第一分组数据存入与第一 rou的报头所包含的索引值相对应的存储 器缓存中的一个位置; 响应于接收到第二rou,促使从与包含在第二rou的报头中的索引值对应的存储器缓 存中的一个位置取回第二分组数据; 促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数 据流;以及 促使将所产生的符合RDP的第二数据流串流传输至本地客户机。
2. 如权利要求1所述的方法,其中在促使处理第一数据流之前,该方法包括: 促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连 接请求,该连接请求标识了远程服务器;以及 响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连 接,以便从该远程服务器接收第一数据流。
3. 如权利要求1所述的方法,其中第一数据流不符合RDP。
4. 如权利要求1所述的方法,其中在促使处理第一数据流之前,该方法包括: 促使解密从远程服务器接收的第一数据流;以及 在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流, 其中促使产生第二数据流包括:促使从已被批量解压缩和解密的第一数据流中产生 包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个 PDU的第二数据流。
5. 如权利要求1所述的方法,其中第一分组数据是第一图像数据,并且其中促使解压 缩第一分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图 像解压缩算法来解压缩第一图像数据。
6. -种通过处理符合远程桌面协议RDP的第一数据流来将第二数据流串流传输至远 程客户机设备的方法,该方法包括: 促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元rous,并且 对于每一个包含分组数据的rou,从该分组数据中计算一个散列值; 对于每一个包含分组数据流的rou,促使在存储散列值的存储器缓存中搜索与从分组 数据中计算得到的散列值匹配的已存储散列值; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存 储器缓存的一个位置中存储从rou的分组数据中计算得到的散列值; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩 PDU的分组数据; 促使为包含分组数据的第一数据流中的每个PDU产生一个替换的rou, 其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数 据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的 散列值匹配的散列值的存储器缓存中的位置,以及 其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选 择性地包含经过压缩的分组数据;以及 促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数 据流中的每个pdu产生的替换的rou。
7. 如权利要求6所述的方法,其中在促使处理第一数据流之前,该方法包括: 响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一 串流传输连接, 其中该连接请求标识RDP服务器,以及 其中被标识的RDP服务器是本地RDP服务器;以及 响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务 器的第二串流传输连接。
8. 如权利要求6所述的方法,其中第二数据流不符合RDP。
9. 如权利要求6所述的方法,其中在促使串流传输第二数据流之前,该方法包括: 促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生 的替换的rou,以及不包含分组数据的第一数据流中的至少一个rou; 促使批量压缩所产生的数据流;以及 促使将经过批量压缩的所产生的数据流加密成第二数据流。 ?ο.如权利要求6所述的方法,其中促使选择性地压缩分组数据包括:促使使用具有视 觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩分组数据。
11. 一种用指令编码的机器可读存储介质,其中所述指令可以由一个或多个处理器执 行,以便执行通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议RDP的第 二数据流的一个或多个操作,所述一个或多个操作包括: 促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元 PDUs, 其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关 且指示了存储位置的索引值; 响应于接收到包含第一分组数据的第一 rou,该一个或多个操作包括: 促使使用解压缩算法来解压缩第一分组数据;以及 促使将解压缩的第一分组数据存入与第一 rou的报头所包含的索引值相对应的存储 器缓存中的一个位置; 响应于接收到第二rou,促使从与包含在第二rou的报头中的索引值对应的存储器缓 存中的一个位置取回第二分组数据; 促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数 据流;以及 促使将所产生的符合RDP的第二数据流串流传输至本地客户机。
12. 如权利要求11所述的机器可读存储介质,其中在促使处理第一数据流之前,所述 一个或多个操作还包括: 促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连 接请求,该连接请求标识了远程服务器;以及 响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连 接,以便从该远程服务器接收第一数据流。
13. 如权利要求11所述的机器可读存储介质,其中第一数据流不符合RDP。
14. 如权利要求11所述的机器可读存储介质,其中在促使处理第一数据流之前,所述 一个或多个操作还包括: 促使解密从远程服务器接收的第一数据流;以及 在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流, 其中促使产生第二数据流包括:促使从已被批量解压缩和解密的第一数据流中产生 包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个 PDU的第二数据流。
15. 如权利要求11所述的机器可读存储介质,其中第一分组数据是第一图像数据,并 且其中促使解压缩第一分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模 式之一的JPEG图像解压缩算法来解压缩第一图像数据。
16. -种用指令编码的机器可读存储介质,其中所述指令可以由一个或多个处理器执 行,以便执行通过处理符合远程桌面协议RDP的第一数据流来将第二数据流串流传输至远 程客户机设备的一个或多个操作,所述一个或多个操作包括: 促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元rous,并且 对于每一个包含分组数据的rou,从该分组数据中计算一个散列值; 对于每一个包含分组数据流的rou,促使在存储散列值的存储器缓存中搜索与从分组 数据中计算得到的散列值匹配的已存储散列值; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存 储器缓存的一个位置中存储从rou的分组数据中计算得到的散列值; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩 pdu的分组数据; 促使为包含分组数据的第一数据流中的每个PDU产生一个替换的rou, 其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数 据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的 散列值匹配的散列值的存储器缓存中的位置,以及 其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选 择性地包含经过压缩的分组数据;以及 促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数 据流中的每个pdu产生的替换的rou。
17. 如权利要求16所述的机器可读存储介质,其中在促使处理第一数据流之前,所述 一个或多个操作包括: 响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一 串流传输连接, 其中该连接请求标识RDP服务器,以及 其中被标识的RDP服务器是本地RDP服务器;以及 响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务 器的第二串流传输连接。
18. 如权利要求16所述的机器可读存储介质,其中第二数据流不符合RDP。
19. 如权利要求16所述的机器可读存储介质,其中在促使串流传输第二数据流之前, 所述一个或多个操作包括: 促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生 的替换的rou,以及不包含分组数据的第一数据流中的至少一个rou; 促使批量压缩所产生的数据流;以及 促使将经过批量压缩的所产生的数据流加密成第二数据流。
20. 如权利要求16所述的机器可读存储介质,其中促使选择性地压缩分组数据包括: 促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性 地压缩分组数据。
21. -种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议RDP的第 二数据流的硬件设备,该硬件设备包括: 被配置成执行一个或多个操作的一个或多个模块,所述一个或多个操作包括: 促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元 PDUs, 其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关 且指示了存储位置的索引值; 响应于接收到包含第一分组数据的第一 rou,该一个或多个操作包括: 促使使用解压缩算法来解压缩第一分组数据;以及 促使将解压缩的第一分组数据存入与第一 rou的报头所包含的索引值相对应的存储 器缓存中的一个位置; 响应于接收到第二rou,促使从与包含在第二rou的报头中的索引值对应的存储器缓 存中的一个位置取回第二分组数据; 促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数 据流;以及 促使将所产生的符合RDP的第二数据流串流传输至本地客户机。
22. 如权利要求21所述的硬件设备,其中在促使处理第一数据流之前,所述一个或多 个操作还包括: 促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连 接请求,该连接请求标识了远程服务器;以及 响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连 接,以便从该远程服务器接收第一数据流。
23. 如权利要求21所述的硬件设备,其中第一数据流不符合RDP。
24. 如权利要求21所述的硬件设备,其中在促使处理第一数据流之前,所述一个或多 个操作还包括: 促使解密从远程服务器接收的第一数据流;以及 在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流, 其中促使产生第二数据流包括:促使从已被批量解压缩和解密的第一数据流中产生 包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个 PDU的第二数据流。
25. 如权利要求21所述的硬件设备,其中第一分组数据是第一图像数据,并且其中促 使解压缩第一分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的 JPEG图像解压缩算法来解压缩第一图像数据。
26. -种通过处理符合远程桌面协议RDP的第一数据流来将第二数据流串流传输至远 程客户机设备的硬件设备,该硬件设备包括: 被配置成执行一个或多个操作的一个或多个模块,所述一个或多个操作可以包括: 促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元rous,并且 对于每一个包含分组数据的rou,从该分组数据中计算一个散列值; 对于每一个包含分组数据流的rou,促使在存储散列值的存储器缓存中搜索与从分组 数据中计算得到的散列值匹配的已存储散列值; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存 储器缓存的一个位置中存储从rou的分组数据中计算得到的散列值; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩 PDU的分组数据; 促使为包含分组数据的第一数据流中的每个pdu产生一个替换的rou, 其中该替换的pdu包含一个带有索引值的报头,该索引值指示的是用于存储从分组数 据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的 散列值匹配的散列值的存储器缓存中的位置,以及 其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选 择性地包含经过压缩的分组数据;以及 促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数 据流中的每个pdu产生的替换的rou。
27. 如权利要求26所述的硬件设备,其中在促使处理第一数据流之前,所述一个或多 个操作包括: 响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一 串流传输连接, 其中该连接请求标识RDP服务器,以及 其中被标识的RDP服务器是本地RDP服务器;以及 响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务 器的第二串流传输连接。
28. 如权利要求26所述的硬件设备,其中第二数据流不符合RDP。
29. 如权利要求26所述的硬件设备,其中在促使串流传输第二数据流之前,所述一个 或多个操作包括: 促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生 的替换的rou,以及不包含分组数据的第一数据流中的至少一个rou; 促使批量压缩所产生的数据流;以及 促使将经过批量压缩的所产生的数据流加密成第二数据流。
30. 如权利要求26所述的硬件设备,其中促使选择性地压缩分组数据包括:促使使用 具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩分 组数据。
31. -种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议RDP的第 二数据流的设备,该设备包括: 促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元 PDUs的装置, 其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关 且指示了存储位置的索引值; 响应于接收到包含第一分组数据的第一 PDU来执行包含以下各项的操作的装置: 促使使用解压缩算法来解压缩第一分组数据;以及 促使将解压缩的第一分组数据存入与第一 rou的报头所包含的索引值相对应的存储 器缓存中的一个位置; 响应于接收到第二rou,促使从与包含在第二rou的报头中的索引值对应的存储器缓 存中的一个位置取回第二分组数据的装置; 促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数 据流的装置;以及 促使将所产生的符合RDP的第二数据流串流传输至本地客户机的装置。
32. 如权利要求31所述的设备,还包括: 促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连 接请求的装置,该连接请求标识了远程服务器;以及 响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连 接,以便从该远程服务器接收第一数据流的装置。
33. 如权利要求31所述的设备,其中第一数据流不符合RDP。
34. 如权利要求31所述的设备,还包括: 用于在促使处理第一数据流之前,促使解密从远程服务器接收的第一数据流的装置; 以及 在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流的装置, 其中促使产生第二数据流的装置包括:促使从已被批量解压缩和解密的第一数据流中 产生包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少 一个rou的第二数据流的装置。
35. 如权利要求31所述的设备,其中第一分组数据是第一图像数据,并且促使解压 缩第一分组数据的装置包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的 JPEG图像解压缩算法来解压缩第一图像数据的装置。
36. -种通过处理符合远程桌面协议RDP的第一数据流来将第二数据流串流传输至远 程客户机设备的设备,该设备包括: 促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元rous,并且 对于每一个包含分组数据的rou,从该分组数据中计算一个散列值的装置; 对于每一个包含分组数据流的rou,促使在存储散列值的存储器缓存中搜索与从分组 数据中计算得到的散列值匹配的已存储散列值的装置; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存 储器缓存的一个位置中存储从rou的分组数据中计算得到的散列值的装置; 如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩 PDU的分组数据的装置; 促使为包含分组数据的第一数据流中的每个PDU产生一个替换的rou的装置, 其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数 据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的 散列值匹配的散列值的存储器缓存中的位置,以及 其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选 择性地包含经过压缩的分组数据;以及 促使向远程客户机设备传送第二数据流的装置,该第二数据流包括为包含分组数据的 第一数据流中的每个PDU产生的替换的rou。
37. 如权利要求36所述的设备,还包括: 在促使处理第一数据流之前,响应于接收到来自远程客户机设备的连接请求,促使建 立连至远程客户机设备的第一串流传输连接的装置, 其中该连接请求标识RDP服务器,以及 其中被标识的RDP服务器是本地RDP服务器;以及 响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务 器的第二串流传输连接的装置。
38. 如权利要求36所述的设备,其中第二数据流不符合RDP。
39. 如权利要求36所述的设备,还包括: 在促使串流传输第二数据流之前,促使产生一个数据流的装置,该数据流包括为包含 分组数据的第一数据流中的每个PDU产生的替换的rou,以及不包含分组数据的第一数据 流中的至少一个rou; 促使批量压缩所产生的数据流的装置;以及 促使将经过批量压缩的所产生的数据流加密成第二数据流的装置。
40. 如权利要求36所述的设备,其中促使选择性地压缩分组数据的装置包括:促使使 用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩 分组数据的装置。
【文档编号】G06F15/16GK104054068SQ201280067231
【公开日】2014年9月17日 申请日期:2012年8月14日 优先权日:2011年11月29日
【发明者】G·V·杰恩, P·R·K·巴莎, P·德赛 申请人:韦斯技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1