CN104054068B - 用于远程桌面协议的改进的带宽优化 - Google Patents
用于远程桌面协议的改进的带宽优化 Download PDFInfo
- Publication number
- CN104054068B CN104054068B CN201280067231.3A CN201280067231A CN104054068B CN 104054068 B CN104054068 B CN 104054068B CN 201280067231 A CN201280067231 A CN 201280067231A CN 104054068 B CN104054068 B CN 104054068B
- Authority
- CN
- China
- Prior art keywords
- rdp
- data
- vda
- pdu
- data flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/765—Media network packet handling intermediate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/38—Flow control; Congestion control by adapting coding or compression rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
所描述的是通过处理第一数据流来产生符合远程桌面协议(RDP)的第二数据流的处理。该操作可以包括:促使将来自第一数据流的第一数据存储在第一数据流中指示的第一索引,促使从第一数据流中包含的第二索引取回第二数据,以及促使产生符合RDP且包含第一和第二数据的第二数据流。此外,还描述了通过处理符合RDP的第三数据流来串流传输第四数据流的处理。该操作包括:促使通过处理第三数据流来识别分组数据单元(PDU),促使存储与PDU相对应的散列值,以及促使产生包含在第四数据流中的替换的PDU,以及包含用于标识在存储器中存储散列值的位置的索引。
Description
技术领域
本公开主要涉及远程桌面协议,且尤其涉及对远程桌面协议提供改进的带宽优化。
背景技术
远程桌面协议(RDP)是一种用于使用图形界面提供远程设备访问的通信协议。例如,在客户机/服务器应用中可以用RDP来为第一计算设备的用户提供一个显示了在远程服务器设备上运行的用户会话桌面环境的图形界面。通常,RDP可用于在通信网络传送大量图像数据(及其他类型的数据),以便以最小的延迟将图形界面从远程设备提供至用户设备,以使用户能与远程设备实时交互。在通信网络带宽受限的环境中,和/或在用户与远程设备的通信遭遇丢包和/或通信延迟的环境中,RDP的性能可能会受到影响。例如,用户有可能遭遇在远程设备上运行的断断续续和/或不完整版本的图形用户界面。为了改善用户体验,有必要提供具有用于减少RDP的带宽使用以及将RDP在有损耗和/或延迟的通信链路上的性能降级减少至最低的系统和方法。
发明内容
在本公开的一个方面中,一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的方法可以包括:促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDU),其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;响应于接收到包含第一分组数据的第一PDU,促使使用解压缩算法来解压缩第一分组数据,以及促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的位置;响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的位置取回第二分组数据;促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流;以及促使将所产生的符合RDP的第二数据流串流传输至本地客户机。
在本公开的一个方面中,一种通过处理符合远程桌面协议的第一数据流来将第二数据流串流传输至远程客户机设备的方法包括:促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDU),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值;对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据;促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU,其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及促使向远程客户机设备传送第二数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU。
在本公开的一个方面中,机器可读介质是用指令编码的,所述指令可以由一个或多个处理器运行,以便执行通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的一个或多个操作。所述一个或多个操作可以包括:促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDU),其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;响应于接收到包含第一分组数据的第一PDU,促使使用解压缩算法来解压缩第一分组数据,以及促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的位置;响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的位置取回第二分组数据;促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流;以及促使将所产生的符合RDP的第二数据流串流传输至本地客户机。
在本公开的一个方面中,机器可读介质是用指令编码的,所述指令可以由一个或多个处理器运行,以便执行通过处理符合远程桌面协议的第一数据流来将第二数据流串流传输至远程客户机设备的一个或多个操作。所述一个或多个操作可以包括:促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDU),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值;对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据;促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU,其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及促使向远程客户机设备传送第二数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU。
在本公开的一个方面中,一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的硬件设备包括:一个或多个模块,所述一个或多个模块被配置成执行一个或多个操作,所述一个或多个操作可以包括:促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDU),其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;响应于接收到包含第一分组数据的第一PDU,促使使用解压缩算法来解压缩第一分组数据,以及促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的位置;响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的位置取回第二分组数据;促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流;以及促使将所产生的符合RDP的第二数据流串流传输至本地客户机。
在本公开的一个方面中,一种通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输至远程客户机设备的硬件设备包括:一个或多个模块,所述一个或多个模块被配置成执行一个或多个操作,所述一个或多个操作可以包括:促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDU),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值;对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值;如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据;促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU,其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及促使向远程客户机设备传送第二数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU。
在本公开的一个方面中,一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的硬件设备可以包括:促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDU)的装置,其中与分组数据关联的每个PDU都包括一个报头,该报头包括一个与分组数据相关且指示存储位置的索引值;响应于接收到包含第一分组数据的第一PDU,促使使用解压缩算法来解压缩第一分组数据,以及促使将解压缩的第一分组数据存入与第一DPU的报头包含的索引值相对应的存储器缓存中的位置的装置;响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值相对应的存储器缓存中的位置取回第二分组数据的装置;促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流的装置;以及促使将所产生的符合RDP的第二数据流串流传输至本地客户机的装置。
在本公开的一个方面中,一种通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输至远程客户机设备的设备包括:促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDU),以及对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值的装置;对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值相匹配的已存储的散列值的装置;在该搜索未能发现与计算得到的散列值相匹配的已存储的散列值的情况下,促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值的装置;在该搜索未能发现与计算得到的散列值相匹配的已存储的散列值的情况下,促使选择性地压缩PDU的分组数据的装置;促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU的装置,其中该替换的PDU包括一个具有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值相匹配的散列值的存储器缓存中的位置,以及其中如果该搜索未能发现与计算得到的散列值相匹配的已存储的散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及促使向远程客户机设备传送第二数据流的装置,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU。
应该理解的是,在本公开中,关于本技术主题的各种配置是作为例证显示和描述的,本领域技术人员很容易从中清楚了解本技术主题的各种配置。此外还应该认识到,本技术主题能够采用其他不同的配置,并且可以在其他不同方面修改其若干细节,所有这些配置和修改均未脱离本技术主题的范围。相应地,发明内容、附图及具体实施方式本质上应被视为说明性而不是限制性的。
附图说明
图1示出根据本技术主题不同方面的系统的简化示图。
图2示出的是根据本技术主题不同方面的虚拟桌面加速器(VDA)系统的简化连接图。
图3示出根据本技术主题不同方面的利用VDA系统执行的处理的简化流程图。
图4示出根据本技术主题不同方面的利用VDA系统执行的处理的简化信号时序图。
图5示出根据本技术主题不同方面的利用VDA客户机执行的处理的流程图。
图6示出根据本技术主题不同方面的利用VDA服务器执行的处理的流程图。
图7是示出了示例计算设备的概念性框图。
图8A和8B中的每一个分别示出根据本技术主题不同方面的客户机设备和服务器的简化框图。
图9A、9B和9C是描述根据本公开的一个方面的通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的方法、用指令编码的机器可读存储介质及设备的示例的框图。
图10A、10B和10C是描述根据本公开的一个方面的通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输到远程客户机设备的方法、用指令编码的机器可读存储介质及设备的示例的框图。
具体实施方式
以下阐述的具体实施方式旨在描述本技术主题的不同配置,而不是描述可以实施本技术主题的唯一配置。这里引入的附图构成了具体实施方式的一部分。该具体实施方式包括用于全面理解本技术主题的具体细节。然而,对本领域技术人员来说,本技术主题显然可以在没有这些具体细节的情况下实施。在一些情况中,为了避免与本技术主题的概念相混淆,众所周知的结构和部件会以框图形式显示。此外,为了便于理解,相同的部件是用相同的部件编号标记的。
远程桌面协议(RDP)是一种利用图形界面提供远程设备访问的通信协议。例如,在客户机/服务器应用中可以使用RDP来为第一计算设备用户提供一个显示了在远程服务器设备上运行的用户会话桌面环境的图形界面。RDP还可用于为第一计算设备用户提供显示了另一个本地或远程计算设备的桌面环境的图形界面。在将客户机设备和客户机终端设计成将大多数重度使用的资源置于集中式服务器这类经由网络与客户机终端相连的远程计算机的客户机/服务器实施方式中,RDP是非常有益的。客户机终端可以具有最低限度的内存、磁盘存储器及处理能力,但是这是在与强大服务器相连的多数用户不需要额外处理能力的前提下设计的。实际上,客户机终端需要的可能仅仅是足以接收RDP数据流、在客户机终端上处理和显示RDP数据、接收用户输入数据以及向服务器传送用户输入数据的处理能力及记忆存储器。对这些客户机终端来说,由于减少了资源,并且可以从服务器集中管理客户机,因此,总的购置成本可被降至最低。
更具体地说,RDP可用于从运行基于Windows操作系统(OS)的设备的RDP客户机设备到RDP服务器的远程连接。此外,RDP还可用于来自运行其他类型的操作系统的RDP客户机设备的连接,例如Linux、UNIX、Android、iOS或其他任何恰当的OS平台。RDP服务器可以发送屏幕图像数据,作为示例,该处理可以通过在逐个屏幕帧发送构成16x16位图图像网格的多个屏幕图像来完成。通常,屏幕图像可以形成使用RDP协议传送的数据的主要部分,并且可以用位图格式传送。作为替换或补充,RDP服务器可以发送其他类型的数据,其中包括文本数据、RDP报头数据、RDP控制数据、二进制数据块等等。通常,在这里可以将那些用RDP协议传输的数据(包括图像、文本、RDP报头、RDP控制以及二进制数据块数据等等)称为分组数据。在一些情况中,在不同屏幕帧中有可能会重复出现一个或多个屏幕图像,或者有可能在不同分组中重复一个或多个其他类型的数据。然而,在不进行任何优化的情况下,即便重复出现一个或多个屏幕数据(或其他类型的数据),RDP协议每次也还是会重传每个帧中的所有屏幕图像(或是每个分组中的其他类型的数据)。为了提高RDP协议效率,提供RDP数据缓存处理的方法和系统可以避免重传每个帧中的所有屏幕图像(和/或重传所有重复分组数据)。例如,存储器缓存可以在客户机上存储RDP服务器发送的图像,如果图像重复,那么RDP服务器可被配置成后续只发送已存储图像的图像索引,在接收到图像索引时,RDP客户机可被配置成在RDP客户机上加载来自存储器缓存的已存储/重复图像。同样,存储器缓存可以在客户机上保存从RDP服务器接收的数据,如果数据重复,那么RDP服务器可被配置成只发送已存储数据的数据索引,RDP客户机则可以被配置成从存储器缓存中加载已存储/重复的数据。由此,通过使用存储器缓存,有助于提高RDP协议效率,以及减少RDP协议的带宽使用。
此外,在RDP协议中,从RDP服务器发送的图像可被压缩,以便进一步提高RDP效率,以及减少RDP的带宽使用。例如,屏幕数据可以用不同的图像压缩算法进行压缩,其示例可以是符合JPEG、TIFF或RLE标准的图像压缩处理。在RDP客户机上存储图像的存储器缓存可以将图像另存为解压缩图像,由此,终端服务器不需要压缩重复图像,终端客户机设备(即运行RDP客户机的设备)也不需要重复地对从存储器缓存加载的图像解压缩的解压缩逻辑。就此而论,由于只需要压缩较少的屏幕图像,RDP数据缓存还可以减小RDP服务器和客户机上的处理负载,从而在重复图像数量增加时进一步改善协议性能。
此外,RDP协议通常会用到行程编码(RLE)图像压缩算法,但该算法未必是最优的图像压缩算法。因此,通过使用压缩比较高的压缩算法来压缩每个屏幕图像,可以进一步改善RDP协议效率,作为示例,此类算法可以是JPEG、TIFF或其他类似的高压缩比图像压缩算法。通过使用压缩比较高的压缩算法,可以将需要通过网络传送的图像数据数量减至最少。
最后,RDP是通过使用符合传输控制协议/网际协议(TCP/IP)的分组而在客户机设备与远程服务器设备之间进行通信的。虽然使用TCP/IP传输协议可以在等待时间很短(例如网络等待时间小于90ms)的网络环境中提供恰当性能,但在网络等待时间增大时(例如大于90-100ms的网络等待时间),在TCP/IP链路上运行的RDP会话的性能有可能会严重降级。在网络等待时间较高(例如90-100ms或更高的等待时间)的网络环境中,通过在客户机设备与远程服务器之间使用用户数据报协议(UDP)或是改进的UDP(UDP+)传输协议来传递RDP分组数据,可以改善RDP性能。
总体系统
图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通信。
作为例证而不是限制,客户机设备102可以代表计算机、移动电话、膝上型计算机、瘦客户机设备、个人数字助理(PDA)、便携式计算设备或是具有处理器的适当设备。在一个示例中,客户机设备102是智能电话(例如iPhone、Android电话、Blackberry等等)。在某些配置中,客户机设备102可以代表出纳设备、音频播放器、游戏机、相机、摄录相机、音频设备、视频设备、多媒体设备或是能够支持与远端服务器的连接的设备。在一个示例中,客户机设备102可以是移动的。在另一个示例中,客户机设备可以是固定的。根据本公开的一个方面,客户机设备102可以是至少具有处理器和存储器的设备,其中客户机设备102的存储器总量可以小于服务器108的存储器总量。在一个示例中,客户机设备102没有硬盘。并且在一个方面,客户机设备102可以包含闪存而不是硬盘。此外,在一个方面中,客户机设备可以包括一个或多个客户机设备。
在一个方面中,客户机设备102是常规的个人计算机(PC)。在另一个方面中,客户机设备102是为特殊目的(并非通用目的)设计的专用客户机。例如,专用客户机设备可以是被设计成百货公司出纳机的客户机设备,被设计成执行专门测试或测量的客户机设备,被设计成执行用于诊断和/或治疗患者的专门医疗应用的客户机设备等等。
在一个方面中,服务器108可以代表计算机、膝上型计算机、计算设备、数据库、内部服务器、存储库服务器、配置应用服务器、域名系统(DNS)服务器、动态主机配置协议(DHCP)服务器、虚拟机(例如虚拟机)、桌面会话(例如Microsoft TerminalServer)、已发布应用(例如Microsoft Terminal Server)、或是具有处理器的适当设备。在一个优选方面中,服务器108是固定的。在另一个方面中,服务器108可以是移动的。在别的方面中,服务器108可以是嵌入式的。在某些配置中,服务器108可以是能够代表客户机设备的任何设备。在一个优选方面中,服务器108并非客户机。此外,在一个方面中,服务器108可以包括一个或多个服务器或是一个或多个服务器功能。
在一个示例中,当第一设备不直接连接到第二设备时,第一设备远离第二设备。在一个示例中,第一远程设备可以经由通信网络连接到第二设备,作为示例,该网络可以是局域网(LAN)、广域网(WAN)和/或用于远程操作的其他网络。
当客户机设备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)名称、域名或其他系统名称,但是并不局限于此。这里示出的是一个设备如何可以远离另一个设备的一些示例。但是本技术主题并不局限于这些示例。
根据本公开的某些方面,相对于客户机设备,术语“服务器”和“远程服务器”通常是以同义方式使用的,单词“远程”可以是指服务器与一个或多个其他设备进行通信,例如经由一个或多个网络连接来进行通信。同样,相对于服务器,术语“客户机设备”和“远程客户机设备”通常也是以同义方式使用的,并且单词“远程”可以是指客户机设备与一个或多个服务器进行通信,例如经由一个或多个网络连接来进行通信。
在本公开的一个方面中,“客户机设备”有时可被称为客户机,反之亦然。同样,“服务器”有时可被称为服务器设备,反之亦然。
在一些方面中,服务器108可以包括RDP服务器104和虚拟桌面加速器(VDA)服务器106。虽然服务器108被显示成包含了所有这些服务器,但是其中一个或所有的两个服务器可以位于服务器108外部。作为替换,RDP和VDA服务器104和106可以是在相同服务器108或不同服务器上运行的部件或应用(例如服务器应用)。服务器108还可以包括各种其他服务器,例如DNS服务器、DHCP服务器和/或应用服务器。在一些方面中,这其中的一个或多个服务器可以共同合并成一个单独服务器。在一些方面中,由于服务器108主要通过操作而在诸如企业网络114之类的私有网络上与客户机102a和102b通信,因此还可以将服务器108称为内部服务器。在一些方面中,客户机设备102c处于相同的域上。
在一些方面中,服务器108的至少一部分是可以从公共网络118访问的。举例来说,如图1所示,RDP和VDA服务器104和106是可以从公共网络118访问的。由此,客户机设备102c可以经由公共网络118来与服务器108(例如RDP服务器104和/或VDA服务器106)通信。
如图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客户机。
根据本技术主题的不同方面,每一个客户机102可以运行基于windows的操作系统,例如Windows嵌入式操作系统族(例如Windows Embedded Compact、Windows EmbeddedStandard、Windows Embedded Enterprise、Windows Embedded POSReady、WindowsEmbedded NAVReady、Windows Embedded Server等等)或其他适当的嵌入式镜像中的任何一个。作为替换,这些客户机还可以运行Linux、UNIX、Android、iOS或是其他任何恰当的操作系统。
虚拟桌面加速器(VDA)系统
图2示出的是根据本技术主题不同方面的VDA系统的简化连接图。该系统可以包括服务器108以及通过一个或多个网络114/118与服务器通信的至少一个客户机设备102。
客户机设备102可以包括一个被配置成与RDP服务器104建立连接,以便接收来自RDP服务器104的RDP流(或RDP数据流)的RDP客户机110。客户机设备102还可以包括一个被配置成与VDA服务器106建立连接,以便接收来自VDA服务器106的VDA流(或VDA数据流)的VDA客户机112。此外,RDP客户机110和VDA客户机112还可以被配置成在客户机设备102上相互通信。
服务器108可以包括被配置成相互通信的RDP服务器104和VDA服务器106。VDA服务器106可被进一步配置成与VDA客户机112进行通信,RDP服务器104则可以被配置成直接(通过一个或多个网络114/118)或间接(通过VDA服务器106、一个或多个网络114/118以及VDA客户机112)与RDP客户机110通信。
VDA系统200包括服务器108的VDA服务器106以及客户机设备102的VDA客户机112。通常,与VDA系统和/或VDA系统部件建立的连接(例如VDA连接和RDP连接)是逻辑连接,例如经由分组交换网络的分组交换通信会话。
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连接用来提升数据传输效率以及减少带宽使用。
在本公开的一个方面中,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连接。
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连接。
如果在VDA客户机112与VDA服务器106之间成功建立连接(例如VDA连接),并且如果在VDA服务器106与RDP服务器104之间成功建立连接(例如RDP连接),那么VDA系统200可以开始路由数据流。例如,VDA系统200可以开始在RDP服务器105与RDP客户机110之间通过VDA连接来路由RDP流,由此提升数据传输效率以及减少此类经由一个或多个网络114/118的传输的带宽使用。
在路由数据流时,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。
在VDA客户机112,VDA流可被解密和批量解压缩,以便重建替换RDP流。然后,VDA客户机112可以对解压缩的数据进行解析,以便识别和取回缓存报头、经过压缩的图像数据和/或其他类型的分组数据。VDA客户机112可以解压缩图像或其他类型的数据,并且可以通过处理缓存报头来构建RDP流。在一个方面中,缓存报头包括用于对存储器缓存113执行操作的命令,例如将接收到的图像数据或其他分组数据存入存储器缓存,从存储器缓存中取回已存储图像或其他分组数据,以及清洗(或清除)存储器缓存。由此,VDA客户机112从VDA流中重建RDP流,并将重建的RDP流传送到RDP客户机110。
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中。
在一个方面中,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响应消息)。
VDA服务器106可以执行的功能包括:与RDP服务器104建立连接;接受来自一个或多个VDA客户机112的连接;理解和解析RDP数据流;以不同格式(例如JPEG、TIFF等等)压缩RDP屏幕图像或者以不同格式(例如ZIP等等)压缩RDP分组数据;保持一个存储散列值的存储器缓存107;存储用于为RDP流中的每个图像或其他分组数据产生唯一散列值/键的散列函数;使用批量压缩算法(例如使用zlib压缩)来压缩数据;以及对压缩数据进行加密,并且将经过加密的数据转发到VDA客户机112。
当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。
VDA系统处理和信令
图3示出的是根据本技术主题不同方面来改善使用VDA系统的通信链路的带宽优化的处理300的简化流程图。该处理可用于提供丰富的用户体验,以及在客户机102与服务器108之间使用RDP协议的通信链路上提供改善的带宽使用。
处理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连接以及应用数据缓存处理(例如对诸如图像数据或其他类型的数据之类的分组数据进行缓存)。
在操作303,VDA客户机112和VDA服务器106协商用于VDA连接的连接参数,并且通过一个或多个网络114/118建立VDA连接。特别地,VDA客户机112可以从被拦截的连接请求中取回RDP服务器104(或服务器108)的网络地址,并且可以尝试与关联于RDP服务器104(或是在服务器108上运行或关联于服务器108)的VDA服务器106建立连接。例如,VDA客户机112可以向服务器108,向与RDP服务器104的网络地址关联的VDA服务器106,或者向其他恰当实体发送一个用于建立连至服务器108(例如连接到服务器108的预定端口,如VDA服务器106侦听的专用VDA端口)的VDA连接的连接请求。
如果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连接。
如果在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连接。
通常,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连接的连接响应。
如果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连接。
操作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相互协作。
在操作305,从RDP服务器104开始串流传输数据。该数据是作为RDP数据流而被从RDP服务器104串流传输至VDA服务器106的。RDP数据流可以遵循作为操作303中的部分连接请求而被传递的RDP协议版本细节。VDA服务器106接收来自RDP服务器104的RDP数据流(或RDP流),并且解析所接收的RDP流。特别地,VDA服务器106可以解析作为RDP流的一部分接收的每一个协议数据单元(PDU),以便识别RDP流中包含的图像内容(通常是分组数据内容)。对于RDP流中包含的被识别的每个图像(或是包含图像数据或数据分组的PDU),VDA服务器106将会取回该图像(或分组数据),并且为该图像(或分组数据)计算一个散列值(例如64位的散列值或是名为散列键的值)。该散列值也可称为散列键、图像散列值、图像散列键、或是图像键。对于计算得到的每个散列值,VDA服务器106会在存储器缓存107中搜索该散列值。然后,VDA服务器106可以基于在存储器缓存107中搜索该散列值的结果来为该散列值执行三种例示操作之一。
第一,如果在存储器缓存107中未找到该散列值,则VDA服务器106会在存储器缓存107中找到一个恰当位置来存储该散列值。例如,该散列值可被保存在一个空的存储位置,或者可以通过存储该散列值来重写先前保存在某个存储位置的数据。在一个方面中,该散列值是用循环链表保存在存储器缓存中的,由此通过存储该散列值来重写最早存储的散列值。在另一个方面中,该散列值是用最近最少使用算法保存的,由此通过存储该散列值来重写未使用时间最长的已存储散列值。在另一个方面中,该散列值是用恰当的缓存替换算法存储的。一旦将散列值存入存储器缓存107,则VDA服务器106将会标识用于指示在存储器缓存107中存储该散列值的位置的索引值。然后,通过使用恰当图像压缩算法,可以对与该散列值对应的图像进行压缩,例如使用具有诸如视觉损耗压缩模式、视觉无损压缩模式或是无损压缩模式之类的选定压缩模式的JPEG或TIFF压缩。作为替换,该数据分组也可以可选地用恰当压缩算法来压缩,例如ZIP压缩。然后,VDA服务器106会创建一个包含处于压缩图像数据(或是被压缩的分组数据)之前的缓存报头的替换RDP协议数据单元(PDU)。该缓存报头包括缓存命令“CACHE_STORE”以及指示了该散列值在存储器缓存107中的存储位置的索引值。
第二,如果在存储器缓存107中找到该散列值,则VDA服务器106取回存储该散列值的存储器位置的索引值。然后,VDA服务器106会创建一个包含缓存报头的替换RDP PDU,其中该缓存报头具有缓存命令“CACHE_FETCH”,其后跟随的是取回的索引值。通常,具有缓存报头命令“CACHE_FETCH”的替换RDP PDU不包括图像数据(或分组数据)或是压缩图像数据(或是经过压缩的分组数据)。
第三,如果VDA服务器106遇到存储器缓存107出错,确定存储器缓存107已被破坏,确定存储器缓存107与相关联的VDA客户机112上的相应存储器缓存113失步,和/或接收到表明存储器缓存113内存不足的差错,则VDA服务器106可以通过发送包含具有缓存命令“CACHE_FLUSH”的缓存报头的替换RDP PDU来禁用数据缓存处理。通常,VDA服务器106会用恰当图像压缩算法来压缩图像数据(或者可选地压缩分组数据),以及创建一个包含缓存报头和压缩图像数据的替换RDP协议数据单元(PDU)。该缓存报头包括缓存命令“CACHE_FLUSH”,其后跟随的是被设置成0的两个字节。
在操作305,VDA服务器106由此接收并解析所接收的RDP数据流,以便创建一个用替换的PDU来替换包含图像数据(或分组数据)的PDU的替换RDP流。该RDP流中不包含图像数据(或分组数据)的部分(例如PDU)可以保持完好无损,并且不会在替换的RDP流中被修改。每一个替换的PDU都包括以下各项之一:缓存命令“CACHE_STORE”、索引值和压缩图像数据(或分组数据);缓存命令“CACHE_FETCH”和索引值;或是缓存命令“CACHE_FLUSH”和压缩图像数据(或分组数据)。
在操作307,VDA服务器106对替换RDP流施加批量压缩处理,例如应用使用了压缩算法或是诸如zlib之类的库的压缩处理,或者应用别的恰当压缩算法或库。然后,VDA服务器106会用恰当的加密算法来加密经过压缩的替换RDP流,以便确保已加密的流的安全性。之后,VDA服务器106可以将经过加密、压缩的替换RDP流作为VDA数据流(或VDA流)传送到VDA客户机112。
在操作309,VDA服务器106通过一个或多个网络114/118而将替换RDP流作为VDA数据流传送到VDA客户机112,并且所述替换的RDP流会被VDA客户机112接收。由于使用了数据缓存处理和压缩处理,由VDA服务器106输出的VDA数据流占用的带宽要远远小于VDA服务器106所接收的RDP数据流。因此,在通过一个或多个网络114/118传送时,与等价RDP数据流所要占用的带宽相比,VDA数据流占用的带宽会大幅减少。
在操作311,接收到经过加密、压缩的替换RDP流(即VDA数据流)的VDA客户机112会解密所接收的数据流,以及批量解压缩经过解密的流。所述解密和解压缩是用与操作307中使用的加密和压缩方法互补的解密和解压缩方法执行的。
然后,在操作313,VDA客户机112继续解析和重建替换RDP流。特别地,VDA客户机112可以解析作为替换RDP流的一部分接收的每一个协议数据单元(PDU),以便识别包含图像内容(或分组数据内容)的PDU。包含图像内容(或分组数据内容)的PDU可以对应于在操作305中创建且各自包含缓存报头的替换的PDU。对于包含在替换RDP流中且包含图像内容的每一个被识别的PDU,VDA客户机112可以取回并处理缓存报头以及任何相关联的图像数据(或分组数据)。所述VDA客户机112可以基于取回的缓存报头来执行三种例示操作之一。
第一,如果缓存报头包含缓存命令“CACHE_STORE”,则VDA客户机112取回PDU中包含的索引值和压缩图像数据(或分组数据)。该VDA客户机112会使用恰当的图像解压缩算法来解压缩图像数据,例如使用具有与在操作305中使用的压缩算法和模式相对应的解压缩模式(例如视觉损耗,视觉无损,或无损)的JPEG或TIFF解压缩。VDA客户机112会将解压缩的图像数据(或分组数据)存入存储器缓存113中与取回的索引值相对应的位置。更进一步,VDA客户机112还会重建包含解压缩图像数据(或分组数据)的RDP PDU。
第二,如果缓存报头包含缓存命令“CACHE_FETCH”,则VDA客户机112取回包含在PDU中的索引值。然后,VDA客户机112从存储器缓存113中取回保存在与取回的索引值相对应的位置的图像数据(或分组数据),并且重建一个包含取回的图像数据(或分组数据)的RDP PDU。
第三,如果缓存报头包含缓存命令“CACHE_FLUSH”,则VDA客户机112清洗(即清空、清除或删除其内容)存储器缓存113。更进一步,VDA客户机112会复位存储器缓存113。该VDA客户机112取回PDU中包含的压缩图像数据(或分组数据),并且使用恰当的解压缩算法来解压缩图像数据。更进一步,VDA客户机112还会重建包含解压缩的图像数据(或分组数据)的RDP PDU。
由此,VDA客户机112可以基于解压缩的替换RDP流以及重建的RDP PDU来重建RDP流。特别地,VDA客户机112可以通过使用解压缩的替换RDP流以及通过用包含解压缩图像数据的重建RDP PDU替换每一个被识别为包含图像数据(或分组数据)的PDU来重建RDP流。
VDA客户机112将重建的RDP流传送到RDP客户机110。为此目的,VDA客户机112可以充当RDP客户机110的代理RDP服务器,并且可以向RDP客户机110传送一个与RDP服务器104传送至VDA服务器106的RDP流基本相同的RDP流。
只要VDA服务器106接收到用于传送至RDP客户机110的RDP数据流,则可以采用基本连续的方式执行操作305到313。作为替换,操作305-313可以是在从RDP服务器104接收到RDP数据的时候重复或间歇执行的。
在操作315,VDA客户机112与VDA服务器106之间的VDA连接将被断连。作为示例,VDA客户机112或VDA服务器106可以是响应于接收到来自RDP客户机110或RDP服务器104的断连请求而被断连的。响应于接收到断连请求,VDA客户机112和/或VDA服务器106断连VDA连接,从存储器缓存113和107中清除所有缓存数据,并且向对方发送断连请求。
如结合操作305所述,VDA服务器106会创建一个替换RDP流,其中在该替换RDP流中,RDP流中的每个包含图像数据(或者更一般地说是分组数据)的PDU都会被修改或变更。例如,VDA服务器106有可能接收如下所示的RDP数据流:
VDA服务器可以解析接收到的RDP数据流,以便产生替换RDP数据流,其中在所述流中,每个包含图像数据(或分组数据)的RDP PDU都会以如下所示的方式被缓存报头以及可选地被图像数据(或分组数据)所取代:
缓存报头的长度可以是3字节,并且缓存报头可以具有如下所示的包含缓存命令(例如“CACHE_STORE”、“CACHE_FETCH”或“CACHE_FLUSH”)和缓存索引的结构:
缓存命令(1字节) | 缓存索引(2字节) |
结果,替换RDP数据流可以依据缓存报头中包含的缓存命令而具有以下任一结构:
处理300会导致存储器缓存107或113分别存储散列值和图像数据(或分组数据)。特别地,存储器缓存107可以只存储散列值,并且通常不存储图像数据(或分组数据)。相反,存储器缓存113可以只存储图像数据(或分组数据),并且通常不存储散列值。存储器缓存107中的每个存储位置都具有相关联的索引值,并且每个索引值都可以在存储器缓存113中具有一个关联(或相应)存储位置。当存储器缓存107和113同步时,存储器缓存107中每一个存储散列值且具有索引值的存储位置都会在存储器缓存113中具有一个带有相同索引值且存储了与已存储的散列值相对应的图像数据(或分组数据)的相应存储位置。
图4示出的是根据本技术主题不同方面的简化信令时间图400。该信令时间图400显示的是在RDP客户机110与RDP服务器104之间建立VDA通信连接会话以及在其间串流传输数据的过程中,在RDP客户机110、VDA客户机112、VDA服务器106以及RDP服务器104之间交换的信号。
信号时间图400以RDP客户机110在操作401中传送关于RDP服务器104的连接请求为开始。在操作403中,VDA客户机112拦截RDP客户机110传送的连接请求,并且响应于拦截到连接请求,VDA客户机112传送一个关于与被拦截的连接请求中标识的RDP服务器104相关联的VDA服务器的连接请求(操作405)。如果定位了与RDP服务器104关联的VDA服务器106,那么在操作407,VDA服务器106和VDA客户机112协商用于建立VDA连接的连接参数,并且建立VDA连接。同时,VDA服务器106可以向在被拦截的连接请求中标识的RDP服务器104发送连接请求(操作409)。如果VDA服务器与RDP服务器104成功建立连接,那么在操作411,RDP服务器向VDA服务器传送连接应答消息。响应于接收到连接应答消息,VDA服务器106向VDA客户机112发送连接应答消息,VDA客户机112则可以转而向RDP客户机110发送一个连接应答消息。
一旦在RDP服务器104与VDA服务器106之间以及在VDA客户机112与RDP客户机110之间建立RDP连接,以及一旦在VDA服务器106与VDA客户机112之间建立VDA连接,则可以开始执行数据串流传输。在操作415,RDP服务器104开始将RDP数据流串流传输到VDA服务器106。在操作417,VDA服务器106接收所述流,并且将接收到的RDP流解析、压缩并加密成VDA流。然后,在操作419,VDA服务器106将VDA流传送到VDA客户机112。在操作421,VDA客户机112解密、解压缩并解析VDA流,以便在操作421中重建RDP流,在操作423,所述RDP流被传送到RDP客户机。
由此,如结合图2、3和4所述,VDA客户机112和VDA服务器106(通常被称为VDA系统200)可以为RDP提供改进的带宽优化处理。
特别地,VDA系统200可以通过使用改进的压缩方法来将通过网络114/118传送包含图像数据(或分组数据)的RDP数据流的带宽使用降至最低限度,其中包括:使用压缩比较高的图像压缩算法(例如JPEG,TIFF)和/或数据压缩算法(例如ZIP);使用具有可以依据预期终端用户体验而被选择以优化图像压缩处理的不同压缩模式的图像压缩算法(例如使用视觉损耗、视觉无损和无损压缩模式);使用批量数据压缩方法、库及算法(例如zlib)来进一步改善被传送数据的整体压缩比等等。通过同时使用多种压缩方法,VDA系统200可以提高系统的总体压缩效率。更进一步,VDA系统200还可以通过使用图像和分组数据缓存处理来减少在VDA服务器106与VDA客户机112之间经由一个或多个网络114/118的重复图像数据(或分组数据)传输。
VDA系统200可以在最小化VDA服务器106和VDA客户机112上的计算负载的同时执行带宽优化处理。例如,VDA系统200会避免重复编码和解码在数据流内部重复出现的图像(或分组数据),取而代之的是,VDA系统200会在VDA服务器106上将每一个图像(或分组数据)只编码一次,将编码图像(或分组数据)传送到VDA客户机112,在VDA客户机112中将该图像(或分组数据)只解码一次,以及将解码图像(或分组数据)存入存储器缓存113,以便可以再次使用该图像(或分组数据),而不需要其他的编码或解码处理,由此减少编码和解码图像(或分组数据)所需要的计算负载。此外,通过将散列值存入VDA服务器106的存储器缓存107,以及将相应图像数据(或分组数据)存入VDA客户机112的存储器缓存113中的相应索引位置,可以在VDA服务器106上只需执行散列值计算处理,由此减少了VDA客户机112上需要的计算量(或CPU循环次数)。
通过用VDA服务器106集中控制分别位于VDA服务器106和VDA客户机112上的存储器缓存107和113,VDA系统200还可以呈现出其他优点。通过由VDA服务器106来集中控制存储器缓存,可以允许VDA客户机112执行从VDA服务器106接收的缓存命令,从而将存储器缓存107和113失步的概率降至最低。VDA系统200还提供了对在一个或多个网络114/118上传输的数据进行加密的处理,以便确保通过所述一个或多个网络传送到RDP客户机110的RDP流数据的安全性。最后,VDA系统200还提供了一种用于改善RDP连接的带宽优化处理且对用户透明的方法。另外,VDA系统200还提供了一种通过拦截和代理正常RDP连接来无缝改善用户体验的方法。
VDA客户机处理
图5示出的是根据本技术主题不同方面来改善使用VDA的通信链路的带宽优化的VDA客户机112中的处理500的流程图。该处理可供VDA客户机112用于发起VDA连接以及向RDP客户机110提供VDA服务。
处理500始于操作503,其中VDA客户机112监视客户机设备102的RDP客户机110,并且等待RDP客户机110传送关于RDP服务器104的连接请求。当RDP客户机110传送连接请求时,VDA客户机112拦截该连接请求。在操作505,VDA客户机112确定是否应该加速与被拦截的连接请求相关联的RDP连接。该确定可以包括从被拦截的连接请求中取回包括RDP服务器104(或服务器108)的IP地址、RDP服务器104(或服务器108)的通信端口标识、RDP协议版本号等等在内的信息。并且该确定可以包括基于取回的信息来确定是否应该加速RDP连接。更进一步,该确定还可以包括确定VDA服务器106是否与该连接请求中标识的RDP服务器(或服务器108)相关联。如果VDA客户机112确定不应该加速RDP连接,那么VDA客户机112在操作511中不加速RDP连接,并且直接将被拦截的连接请求转发到该连接请求中标识的RDP服务器104,以使RDP服务器104可以与RDP客户机110建立直接的RDP连接。
如果VDA客户机112确定应该加速RDP连接,则VDA客户机112开始在操作507中发起针对VDA服务器106的连接。VDA客户机112可以向被确定成与在被拦截的连接请求中标识的RDP服务器104(或服务器108)相关联的VDA服务器106发送一个VDA连接请求。该VDA连接请求可以包括RDP服务器104(或服务器108)的IP地址、RDP服务器通信端口信息等等。更进一步,该VDA连接请求可以包括VDA连接参数,例如存储器缓存大小(例如存储器缓存107和/或113的大小)和/或RDP协议版本(或版本号)或其他细节。如果VDA客户机112无法建立VDA连接(操作509),则VDA客户机112在操作511中不加速RDP连接,并且直接将被拦截的连接请求转发到该连接请求中标识的RDP服务器105,以使RDP服务器104能与RDP客户机110建立直接的RDP连接。然而,如果VDA客户机112能与VDA服务器106建立VDA连接(操作509),则VDA客户机将会继续执行操作513。
在操作513,VDA客户机112等待通过已建立的VDA连接来接收VDA流。一旦VDA客户机112开始从VDA服务器106接收VDA流,则VDA客户机112将会解密和批量解压缩VDA流。在操作514,VDA客户机112进一步解析已解密和未压缩的流,并且在所解析的流中识别(或寻找)图像数据(或是分组数据,例如文本数据、RDP报头或控制分组,或是二进制数据块)和缓存报头。
在操作515,基于被识别的缓存报头来选择一条处理路径。在操作525,将被解析的流中不涉及图像数据(更一般地说是来自VDA流的分组数据)且不具有相关联的缓存报头的任何部分保持在被传送至本地RDP客户机110的流中。然而,对于被解析流中具有缓存报头“CACHE_STORE”的任何部分,VDA客户机112会在操作517中取回伴随该缓存报头的图像数据(或分组数据),并且依照恰当的解压缩方法(例如JPEG、TIFF)和解压缩模式(例如视觉损耗、视觉无损或无损)来解压缩该图像数据。在操作519,VDA客户机112还从缓存报头中取回索引值,并且将解压缩的图像数据(或分组数据)存入存储器缓存113中与取回的索引值相关联的位置。最后,在操作525,VDA客户机112从所述流中移除缓存报头,并且将包含解压缩图像数据(或分组数据)的流馈送到RDP客户机110。
对于被解析流中具有缓存报头“CACHE_FLUSH”的任何部分,在操作521,VDA客户机清洗存储器缓存113和存储位置。然后,在操作522,VDA客户机112取回伴随该缓存报头的图像数据(或分组数据),并且依照恰当的解压缩模式(例如视觉损耗、视觉无损或无损)来解压缩图像数据或者解压缩分组数据。最后,在操作525,VDA客户机112从流中移除缓存报头,并且将包含解压缩图像数据(或分组数据)的流馈送到RDP客户机110。
对于被解析流中具有缓存报头“CACHE_FETCH”的任何部分,在操作523,VDA客户机112从缓存报头中取回索引值,并且从存储器缓存113中取回保存在与被取回的索引值相关联的位置的图像数据(或分组数据)。然后,VDA客户机将取回的图像数据(或分组数据置于数据流中。最后,在操作525,VDA客户机112从所述流中移除缓存报头,并将包含被取回的图像数据或分组数据的流馈送到RDP客户机110。
在操作525之后,VDA客户机确定是否从VDA服务器106断连VDA客户机112(操作527)。如果VDA客户机112与VDA服务器106断连,则操作环回到操作514,以便处理VDA流的下一个部分。作为替换,该操作可以环回到操作513,以便从VDA流中取回更多数据。如果VDA客户机112和VDA服务器106断连,或者如果VDA客户机112接收到来自RDP服务器110或VDA服务器105的断连请求,则VDA客户机112从VDA服务器106以及RDP客户机110断连,并且在操作529,过程500结束。
VDA服务器处理
图6示出的是根据本技术主题不同方面的用于在VDA服务器106中改善使用RDP的通信链路的带宽优化的处理600的流程图。该处理可供VDA服务器106用于处理从RDP服务器104接收的RDP流,以便将其作为VDA流传送到VDA客户机112。
处理600始于操作603,其中VDA服务器106等待来自VDA客户机112的连接。例如,VDA服务器106可以等待从VDA客户机112接收用于建立VDA连接的连接请求。在操作605,当接收到连接请求时,VDA服务器106确定是否应该接受该连接。该VDA连接请求可以包括RDP服务器105(或服务器108)的IP地址、RDP服务器104(或服务器108)的通信端口信息等等。该VDA连接请求还可以包括VDA连接参数,例如存储器缓存大小(例如存储器缓存107和/或113的大小)和/或RDP协议版本(或版本号)或其他细节。VDA服务器106可以基于以下各项来确定是否应该接受该连接:接收到的连接请求所源于的VDA客户机112的身份,该连接请求中包含的RDP服务器的IP地址和端口信息是否对应于与VDA服务器106关联的RDP服务器104(或服务器108),VDA服务器106是否支持该连接请求中包含的RDP协议版本号,VDA服务器106是否具有可在存储器缓存107中提供的足以适应所请求的存储器缓存大小的存储空间,和/或其他恰当判据。在操作607,如果不接受该VDA连接,则VDA服务器106会通过向VDA客户机112传送失败码来拒绝该连接。该失败码可以指示连接被拒原因。
在操作609,如果接受VDA连接,则VDA服务器106开始建立针对所接收的连接请求中指定的RDP服务器104的连接。VDA服务器106可以向处于该连接请求中指示的IP地址和/或端口的RDP服务器104发送一个连接请求消息,该连接请求还指示了从VDA客户机112接收的RDP版本号。如果RDP服务器104不接受该连接(操作611),或者如果出于任何原因无法与RDP服务器104建立连接,那么在操作607,VDA服务器104会向VDA客户机112传送失败码。
一旦与RDP服务器104成功建立连接(操作611),则VDA服务器1076可以开始接收来自RDP服务器104的RDP数据流。在操作614,VDA服务器106接收来自RDP服务器104的RDP流,并且通过解析RDP流来从所述流中识别和取回图像数据(或分组数据)。在RDP流中,不包含图像数据(或分组数据)的任何部分可以在RDP中保持不变,并且可以在操作629中被批量压缩和加密。对于RDP流中含图像数据(或分组数据)的任何部分,在操作615,该图像数据(或分组数据)会被检查,并且会为图像数据中的每个图像(或是分组数据中的数据分组)计算一个散列值(或散列键)。
对于计算得到的每个散列值,在操作617,VDA服务器106在存储器缓存107中搜索该散列值,并且确定在存储器缓存中是否保存了该散列值或者是否可以在存储器缓存中找到该散列值。如果找到该散列值,则VDA服务器106取回(或加载)指示了可以在存储器缓存中找到该散列值的位置的索引值(操作619)。然后,VDA服务器106会将与RDP流中的散列值对应的图像数据(或分组数据)替换成缓存报头“CACHE_FETCH”,其后是被取回的索引值(操作621),由此产生替换RDP流。然后,在操作629,该替换RDP流会被批量压缩,经过压缩的流会被加密,并且经过压缩和加密的流会作为被加速的VDA流而被发送到VDA客户机112。
如果没有在存储器缓存107中发现在操作615中计算得到的散列值,那么在操作623,VDA服务器106确定一个用于在存储器缓存107中存储计算得到的散列值的位置,并且将该散列值存入所确定的位置。然后,在操作625,VDA服务器106使用恰当的压缩方法(例如JPEG或TIFF压缩)和压缩模式(例如视觉损耗,视觉无损,或无损)来压缩图像数据。作为替换,VDA服务器106可以使用恰当的压缩方法来压缩分组数据。然后,在操作615,VDA服务器106会将与RDP流中的散列值对应的图像数据(或分组数据)替换成缓存报头“CACHE_STORE”、指示了用于存储在操作615中计算得到的散列值的存储位置的索引值以及压缩图像数据(或分组数据),以便产生替换RDP流(操作627)。然后,在操作629,该替换RDP流会被批量压缩,经过压缩的流会被加密,并且经过压缩和加密的流会作为被加速的VDA流而被发送到VDA客户机112。
在这里可以为作为RDP流的一部分接收的图像数据中的每个图像(和/或分组数据中的每一个分组)重复执行操作615-629。一旦处理了所有图像数据(和/或分组数据),则VDA服务器106确定是否断连VDA服务器106与VDA客户机112或RDP服务器104(操作631)。如果VDA服务器106与VDA客户机112相连,则该操作环回到操作613,以便继续处理接收到的RDP流。作为替换,该操作可以环回到操作615,以便处理来自所接收的RDP流的更多图像数据(或分组数据)。如果VDA服务器106与VDA客户机112断连,如果VDA服务器106与RDP服务器104断连,或者如果VDA服务器106接收到来自RDP服务器104或VDA客户机112的断连请求,则VDA服务器106从VDA客户机112和RDP服务器104断连,在操作633,过程600结束。
关于性能量度的示例
这里描述的VDA系统可用于为RDP会话提供改进的带宽优化处理。下表显示了在两个不同使用范例中实现的获得的带宽优化量度。
在该表给出的第一使用范例中,通过RDP串流传输的内容是由包含20个幻灯片的Microsoft PowerPoint演示构成的。如果在RDP客户机与RDP服务器之间使用正常RDP连接,那么第一使用范例中的串流传输总计将会传送30.9兆字节数据。然而,如果使用VDA连接,那么在使用视觉损耗压缩时,第一使用范例中的串流传输总计将会是3兆字节(相当于与正常RDP连接相比将带宽使用减少了90%),在使用视觉无损压缩时是10.3兆字节(相当于将带宽使用减少了67%),在使用无损压缩时则是13.3兆字节(相当于将带宽使用减少了57%)。
在该表给出的第二使用范例中,通过RDP串流传输的内容是由来自网站youtube.com并在Firefox网络浏览器中显示的长为2分3秒的全屏视频构成的。如果在RDP客户机与RDP服务器之间使用正常RDP连接,那么第二使用范例中的串流传输总计将会传送62.5兆字节数据。然而,如果使用VDA连接,那么在使用视觉损耗压缩时,第二使用范例中的串流传输总计将会是43.0兆字节(相当于与正常RDP连接相比将带宽使用减少了31%),在使用视觉无损压缩时是61.7兆字节(相当于将带宽使用减少了1.3%),以及在使用无损压缩时是59.9兆字节(相当于将带宽使用减少了4.2%)。虽然第二使用范例中的量度在带宽使用方面显现的改进不太明显,然而与使用正常RDP连接传送的视频相比,使用VDA连接传送的视频很少或者不会出现视频丢帧,并且会展现出更平滑的变换,因此将会改善和丰富第二使用范例中的用户体验。
上表给出的量度是在网络延迟时间为150ms的网络中使用运行MicrosoftWindows XP SP3操作系统的客户机设备102和运行Microsoft Windows Server 2003SP2操作系统的服务器108,以及使用RDP协议版本6.1获取的。由于使用VDA系统200执行的数据压缩和优化处理不会影响传输开销,因此,该表中的量度不包括UDP/TCP、IP和以太网报头之类的传输。该表中的量度可以依靠用于操作的传输协议,其中包括TCP或UDP+协议。该表中报告的正常RDP状况对应于启用(或使能)RDP压缩的RDP传输,而使用VDA的加速RDP流则用到了zlib批量压缩、使用JPEG的图像压缩以及数据缓存处理。
关于计算设备的示例
图7是示出了计算设备示例的概念性框图。
在一个方面中,举例来说,计算设备700可以是客户机设备102、RDP客户机110、VDA客户机112、服务器108、RDP服务器104或VDA服务器106、这些设备的一部分和/或其组合。一个计算设备可以包括一个或多个计算设备。
计算设备700可以包括处理系统702。处理系统702可以包括一个或多个处理器。该处理系统702能够通过总线704或是其他结构或设备来与接收机706及发射机708通信。应该理解的是,除了总线之外,其他通信装置也可以与所公开的配置一起使用。处理系统702可以产生提供给发射机708以进行传递的数据流。此外,在接收机706上可以接收可以由处理系统702来处理数据流。一个处理器可以包括一个或多个处理器。
处理系统702可以包括运行指令的通用处理器或专用处理器,并且还可以包括存储软件程序的数据和/或指令的机器可读介质719。这些指令可以保存在机器可读存储介质710和/或719中,并且可以由处理系统702运行,以便通过不同的网络和通信连接或会话来进行通信,以及提供其他的通信和处理功能。此外,这些指令还可以包括能够由处理系统702为诸如显示器712和数字键盘714之类的不同用户接口设备运行的指令。处理系统702可以包括输入端口722和输出端口724。每一个输入端口722和输出端口724都可以包括一个或多个端口。输入端口722和输出端口724既可以是相同端口(例如双向端口),也可以是不同端口。
处理系统702可以用软件、硬件或是这二者的组合来实施。例如,处理系统702可以是用一个或多个处理器实施的。处理器可以是通用微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、分立的硬件元件和/或其他任何能够执行计算或其他信息操作的适当设备。本领域技术人员将会认识到如何以最佳的方式实施所描述的关于处理系统702的功能。
无论被称为软件、固件、中间件、微代码、硬件描述语言还是其他,软件都应被广义地解释成是指令、数据或其任何组合。指令可以包括代码(例如采用源代码格式、二进制码格式、可执行代码格式或其他任何适当的代码格式)。作为示例,指令可以由计算设备(例如客户机设备或服务器)或处理系统(例如客户机设备或服务器的处理系统)来执行。例如,指令可以是包含代码的计算机程序。
机器可读介质可以是一个或多个机器可读媒体。机器可读媒体(例如710)可以包括位于处理系统外部的存储器,例如随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦写PROM(EPROM)、寄存器、硬盘、可移除磁盘、CD-ROM、DVD或其他任何适当的存储设备。机器可读介质(例如710)可以包括存储器缓存。此外,机器可读介质719还可以具有易失存储器和非易失存储器。机器可读介质719可以包括集成在处理系统中的存储器,这与ASIC的情形是一样的。存储器可以是机器可读介质(例如710或719)或是其一部分。
根据本公开的一个方面,机器可读介质是用指令编码或存储指令的计算机可读介质,并且是定义了指令与能够实现指令功能的系统剩余部分之间的结构和功能方面的相互关系的计算部件。在一个方面中,机器可读介质是非暂时机器可读介质,机器可读存储介质,或非暂时机器可读存储介质。并且在一个方面中,机器可读介质是计算机可读介质,非暂时计算机可读介质,计算机可读存储介质,或非暂时计算机可读存储介质。
接口716可以是任何类型的接口,并且可以驻留在图7所示的任何部件之间。例如,接口716可以是与外部世界的接口(例如因特网网络接口)。收发信机部件707可以代表一个或多个收发信机,并且每一个收发信机都可以包括接收机706和发射机709。在处理系统702中实施的功能可以在接收机706的一部分、发射机708的一部分、机器可读介质710的一部分、显示器712的一部分、数字键盘714的一部分或是接口716的一部分中实施,反之亦然。在一个方面中,计算设备可以只包含图7所示的一些部件或所有部件。计算设备可以包括图7中未显示的其他部件。一个计算设备可以包括一个以上的相同部件。
VDA系统部件
图8A示出的是根据本技术主题不同方面的客户机设备102的简化框图。客户机设备102可以包括以下的一些或所有模块:拦截模块803,解密和解压缩模块805,解析和重建RDP流模块807,VDA连接模块809,接收/发射模块810,断连模块811,RDP客户机模块821,操作系统模块826,以及硬件部件828。在一些方面中,拦截模块803、解密和解压缩模块805、解析和重建RDP流模块807、VDA连接模块809、接收/发射模块810以及断连模块811可以是VDA客户机部件112的一部分。在一些方面中,RDP客户机模块821可以是RDP客户机部件110的一部分。客户机设备102的模块和/或部件可以相互通信。在一些方面中,硬件部件828可以包括各种接口和存储设备,并且客户机设备102的模块进一步经由系统总线来与各种借口和存储设备进行通信。这些接口设备可以包括用户接口设备,例如一个或多个输出设备(例如显示器、扬声器或其他音频、图像或视频输出设备中的一个或多个)以及一个或多个输入设备(例如键盘、鼠标、轨迹球、麦克风、手写笔、触摸屏、触摸板、笔、平板或其他音频、图像或视频输入设备中的一个或多个)。此外,这些模块还可以借助网络连接而与公共网络118或企业网络114进行通信。
在一个优选实施例中,这些模块(例如803-811,821以及826)是用软件(例如子程序和代码)实现的。在另一个实施例中,一些或所有模块可以用硬件(例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、分立的硬件部件或是其他任何适当的设备)和/或这二者的组合实施。在本公开中进一步描述了根据本公开不同方面的这些模块的附加特征和功能。
在一个示例中,专用的VDA客户机设备可以包括操作系统模块826以及以下的一些或所有模块:模块803、805、807、809、810以及811。在另一个示例中,专用的RDP客户机设备可以包括操作系统模块826和RDP客户机模块821。在另一个示例中,客户机设备102可以包括操作系统模块826以及以下的一些或所有模块:模块803、805、807、809、810、811、821和830。
根据一些方法,为了提供虚拟桌面加速服务,客户机设备102有可能需要使用VDA系统200。RDP客户机模块可以发送一个关于RDP服务器的连接请求,并且拦截模块可以拦截该连接请求。VDA连接模块可以尝试与VDA服务器建立连接,并且一旦建立了该连接,则接收模块可以接收VDA数据流。解密和解压缩模块可以解密和解压缩VDA数据流,并且解析和重建RDP流模块可以基于解压缩的VDA数据流来解析和重建RDP流。发射模块可以将重建的RDP流发射到RDP客户机模块。一旦串流传输结束,则断连模块可以关闭与VDA服务器的连接。
图8B示出的是根据本技术主题不同方面的服务器108的简化框图。服务器108可以包括以下的一些或所有模块:VDA连接模块813,接收/发射模块814,断连模块815,解析RDP流模块817,压缩和加密模块819,RDP服务器模块823,操作系统模块826,以及硬件部件828。在一些方面中,VDA连接模块813、接收/发射模块814、断连模块815、解析RDP流模块817以及压缩和加密模块819可以是VDA服务器部件106的一部分。在一些方面中,RDP服务器模块823可以是RDP服务器部件104的一部分。客户机设备102的模块和/或部件可以相互通信。在一些方面中,硬件租价你828可以包括各种借口和存储设备,并且服务器108的模块还会经由系统总线来与不同的接口和存储设备进行通信。此外,这些模块还可以借助网络连接而与公共网络118或企业网络114进行通信。
在一个优选实施例中,这些模块(例如813-819,823以及826)是用软件(例如子程序和代码)实现的。在另一个实施例中,一些或所有模块可以用硬件(例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、分立的硬件部件或是其他任何适当的设备)和/或这二者的组合实施。在本公开中进一步描述了根据本公开不同方面的这些模块的附加特征和功能。
在一个示例中,专用的VDA服务器可以包括操作系统模块826以及以下的一些或所有模块:模块813、814、815、817以及819。在另一个示例中,专用的RDP服务器可以包括操作系统模块826和RDP服务器模块823。在另一个示例中,服务器108可以包括操作系统模块826以及以下的一些或所有模块:模块813、814、815、817、819、823和830。
根据一些方法,为了提供虚拟桌面加速服务,服务器108有可能需要使用VDA系统200。VDA连接模块可以接收关于VDA客户机112的连接请求,并且可以与VDA客户机112建立连接。VDA连接模块可以向RDP服务器模块发送连接请求,并且可以与RDP服务器模块建立连接。接收模块可以接收来自RDP服务器模块的RDP数据流。解析RDP流模块可以解析RDP流,并且可以产生替换的RDP流。压缩和加密模块可以将替换的RDP流压缩和加密成VDA流,并且发射模块可以将VDA流发送到VDA客户机112。一旦串流传输结束,则断连模块可以关闭与VDA客户机112的连接。
作为条款的技术主题例证
关于通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的
第二数据流,或是通过处理符合RDP的第三数据流来将第四数据流串流传输到远程客户机
设备的方法/设备/机器可读存储介质的例证(作为条款描述)
为了方便起见,关于本公开的不同方面的示例是作为带有编号的条款(1,2,3,……)描述的。这些条款是作为示例提供的,其并不对本技术主题构成限制。以下提供的附图标记和参考数字仅作为示例和用于例证目的,这些条款并不受这些标记的限制。
1.一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的方法(相关示例参见图9A中的900-A),该方法包括:
促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDUs)(相关示例参见图9A中的902-A),
其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;
响应于接收到包含第一分组数据的第一PDU,该方法包括:
促使使用解压缩算法来解压缩第一分组数据(相关示例参见图9A中的904-A);以及
促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的一个位置(相关示例参见图9A中的906-A);
响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的一个位置取回第二分组数据(相关示例参见图9A中的908-A);
促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流(相关示例参见图9A中的910-A);以及
促使将所产生的符合RDP的第二数据流串流传输至本地客户机(相关示例参见图9A中的912-A)。
2.如条款1所述的方法,其中在促使处理第一数据流之前,该方法包括:
促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连接请求,该连接请求标识了远程服务器;以及
响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连接,以便从该远程服务器接收第一数据流。
3.如条款1所述的方法,其中第一数据流不符合RDP。
4.如条款14.如条款1所述的方法,其中在促使处理第一数据流之前,该方法包括:
促使解密从远程服务器接收的第一数据流;以及
在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流,
其中促使产生第二数据流包括:促使从已被批量解压缩和解密的第一数据流中产生包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个PDU的第二数据流。
5.如条款1所述的方法,其中第一分组数据是第一图像数据,并且其中促使解压缩第一分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像解压缩算法来解压缩第一图像数据。
6.一种通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输至远程客户机设备的方法(相关示例参见图10A中的1000-A),该方法包括:
促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDUs),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值(相关示例参见图10A中的1002-A);
对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值(相关示例参见图10A中的1004-A);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值(相关示例参见图10A中的1006-A);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据(相关示例参见图10A中的1008-A);
促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU(相关示例参见图10A中的1010-A),
其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及
其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及
促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU(相关示例参见图10A中的1012-A)。
7.如条款6所述的方法,其中在促使处理第一数据流之前,该方法包括:
响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一串流传输连接,
其中该连接请求标识RDP服务器,以及
其中被标识的RDP服务器是本地RDP服务器;以及
响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务器的第二串流传输连接。
8.如条款6所述的方法,其中第二数据流不符合RDP。
9.如条款6所述的方法,其中在促使串流传输第二数据流之前,该方法包括:
促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU,以及不包含分组数据的第一数据流中的至少一个PDU;
促使批量压缩所产生的数据流;以及
促使将经过批量压缩的所产生的数据流加密成第二数据流。
10、如条款6所述的方法,其中促使选择性地压缩分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩分组数据。
11.一种用指令编码的机器可读存储介质(相关示例参见图9B中的900-B),其中所述指令可以由一个或多个处理器执行,以便执行通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的一个或多个操作,所述一个或多个操作包括:
促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDUs)(相关示例参见图9B中的902-B),
其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;
响应于接收到包含第一分组数据的第一PDU,该一个或多个操作包括:
促使使用解压缩算法来解压缩第一分组数据(相关示例参见图9B中的904-B);以及
促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的一个位置(相关示例参见图9B中的906-B);
响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的一个位置取回第二分组数据(相关示例参见图9B中的908-B);
促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流(相关示例参见图9B中的910-B);以及
促使将所产生的符合RDP的第二数据流串流传输至本地客户机(相关示例参见图9B中的912-B)。
12.如条款11所述的机器可读存储介质,其中在促使处理第一数据流之前,所述一个或多个操作还包括:
促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连接请求,该连接请求标识了远程服务器;以及
响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连接,以便从该远程服务器接收第一数据流。
13.如条款11所述的机器可读存储介质,其中第一数据流不符合RDP。
14.如条款11所述的机器可读存储介质,其中在促使处理第一数据流之前,所述一个或多个操作还包括:
促使解密从远程服务器接收的第一数据流;以及
在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流,
其中促使产生第二数据流包括:促使从已被批量解压缩和解密的第一数据流中产生包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个PDU的第二数据流。
15.如条款11所述的机器可读存储介质,其中第一分组数据是第一图像数据,并且其中促使解压缩第一分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像解压缩算法来解压缩第一图像数据。
16.一种用指令编码的机器可读存储介质(相关示例参见图10B中的1000-B),其中所述指令可以由一个或多个处理器执行,以便执行通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输至远程客户机设备的一个或多个操作,所述一个或多个操作包括:
促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDUs),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值(相关示例参见图10B中的1002-B);
对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值(相关示例参见图10B中的1004-B);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值(相关示例参见图10B中的1006-B);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据(相关示例参见图10B中的1008-B);
促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU(相关示例参见图10B中的1010-B),
其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及
其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及
促使向远程客户机设备传送第二数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU(相关示例参见图10B中的1012-B)。
17.如条款16所述的机器可读存储介质,其中在促使处理第一数据流之前,所述一个或多个操作包括:
响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一串流传输连接,
其中该连接请求标识RDP服务器,以及
其中被标识的RDP服务器是本地RDP服务器;以及
响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务器的第二串流传输连接。
18.如条款16所述的机器可读存储介质,其中第二数据流不符合RDP。
19.如条款16所述的机器可读存储介质,其中在促使串流传输第二数据流之前,所述一个或多个操作包括:
促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU,以及不包含分组数据的第一数据流中的至少一个PDU;
促使批量压缩所产生的数据流;以及
促使将经过批量压缩的所产生的数据流加密成第二数据流。
20.如条款16所述的机器可读存储介质,其中促使选择性地压缩分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩分组数据。
21.一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的硬件设备(相关示例参见图9C的900-C),该硬件设备包括:
一个或多个模块,所述一个或多个模块被配置成执行一个或多个操作,所述一个或多个操作可以包括:
促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDUs)(相关示例参见图9C中的902-C),
其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;
响应于接收到包含第一分组数据的第一PDU,该一个或多个操作包括:
促使使用解压缩算法来解压缩第一分组数据(相关示例参见图9C中的904-C);以及
促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的位置(相关示例参见图9C中的906-C);
响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的位置取回第二分组数据(相关示例参见图9C中的908-C);
促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流(相关示例参见图9C中的910-C);以及
促使将所产生的符合RDP的第二数据流串流传输至本地客户机(相关示例参见图9C中的912-C)。
22.如条款21所述的硬件设备,其中在促使处理第一数据流之前,所述一个或多个操作还包括:
促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连接请求,该连接请求标识了远程服务器;以及
响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连接,以便从该远程服务器接收第一数据流。
23.如条款21所述的硬件设备,其中第一数据流不符合RDP。
24.如条款21所述的硬件设备,其中在促使处理第一数据流之前,所述一个或多个操作还包括:
促使解密从远程服务器接收的第一数据流;以及
在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流,
其中促使产生第二数据流包括:促使从已被批量解压缩和解密的第一数据流中产生包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个PDU的第二数据流。
25.如条款21所述的硬件设备,其中第一分组数据是第一图像数据,并且其中促使解压缩第一分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像解压缩算法来解压缩第一图像数据。
26.一种通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输至远程客户机设备的硬件设备(相关示例参见图10C中的1000-C),该硬件设备包括:
一个或多个模块,所述一个或多个模块被配置成执行一个或多个操作,所述一个或多个操作可以包括:
促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDUs),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值(相关示例参见图10C中的1002-C);
对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值(相关示例参见图10C中的1004-C);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值(相关示例参见图10C中的1006-C);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据(相关示例参见图10C中的1008-C);
促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU(相关示例参见图10C中的1010-C),
其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及
其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及
促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU(相关示例参见图10C中的1012-C)。
27.如条款26所述的硬件设备,其中在促使处理第一数据流之前,所述一个或多个操作包括:
响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一串流传输连接,
其中该连接请求标识RDP服务器,以及
其中被标识的RDP服务器是本地RDP服务器;以及
响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务器的第二串流传输连接。
28.如条款26所述的硬件设备,其中第二数据流不符合RDP。
29.如条款26所述的硬件设备,其中在促使串流传输第二数据流之前,所述一个或多个操作包括:
促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU,以及不包含分组数据的第一数据流中的至少一个PDU;
促使批量压缩所产生的数据流;以及
促使将经过批量压缩的所产生的数据流加密成第二数据流。
30.如条款26所述的硬件设备,其中促使选择性地压缩分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩分组数据。
31.一种通过处理从远程服务器接收的第一数据流来产生符合远程桌面协议(RDP)的第二数据流的设备(相关示例参见图9C中的900-C),该设备包括:
促使处理从远程服务器接收的第一数据流,以便取回与分组数据关联的分组数据单元(PDUs)的装置(相关示例参见图9C中的902-C),
其中与分组数据关联的每一个PDU都包括一个报头,该报头包括一个与分组数据相关且指示了存储位置的索引值;
响应于接收到包含第一分组数据的第一PDU来执行包含以下各项的操作的装置:
促使使用解压缩算法来解压缩第一分组数据(相关示例参见图9C中的904-C);以及
促使将解压缩的第一分组数据存入与第一PDU的报头所包含的索引值相对应的存储器缓存中的一个位置(相关示例参见图9C中的906-C);
响应于接收到第二PDU,促使从与包含在第二PDU的报头中的索引值对应的存储器缓存中的一个位置取回第二分组数据的装置(相关示例参见图9C中的908-C);
促使产生符合RDP且包含解压缩的第一分组数据以及取回的第二分组数据的第二数据流的装置(相关示例参见图9C中的910-C);以及
促使将所产生的符合RDP的第二数据流串流传输至本地客户机的装置(相关示例参见图9C中的912-C)。
32.如条款31所述的设备,还包括:
促使拦截从本地客户机传送的用于与远程服务器建立符合RDP的串流传输连接的连接请求的装置,该连接请求标识了远程服务器;以及
响应于促使拦截该连接请求,促使与该连接请求中标识的远程服务器建立串流传输连接,以便从该远程服务器接收第一数据流的装置。
33.如条款31所述的设备,其中第一数据流不符合RDP。
34.如条款31所述的设备,还包括:
用于在促使处理第一数据流之前,促使解密从远程服务器接收的第一数据流的装置;以及
在促使解密了第一数据流之后,促使批量解压缩被解密的第一数据流的装置,
其中促使产生第二数据流的装置包括:促使从已被批量解压缩和解密的第一数据流中产生包含解压缩的第一分组数据、被取回的第二分组数据以及不与分组数据相关联的至少一个PDU的第二数据流的装置。
35.如条款31所述的设备,其中第一分组数据是第一图像数据,并且促使解压缩第一分组数据的装置包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像解压缩算法来解压缩第一图像数据的装置。
36.一种通过处理符合远程桌面协议(RDP)的第一数据流来将第二数据流串流传输至远程客户机设备的设备(相关示例参见图10C中的1000-C),该设备包括:
促使处理符合RDP的第一数据流,以便识别包含分组数据的分组数据单元(PDU),并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值的装置(相关示例参见图10C中的1002-C);
对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值的装置(相关示例参见图10C中的1004-C);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值的装置(相关示例参见图10C中的1006-C);
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使选择性地压缩PDU的分组数据的装置(相关示例参见图10C中的1008-C);
促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU的装置(相关示例参见图10C中的1010-C),
其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及
其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU选择性地包含经过压缩的分组数据;以及
促使向远程客户机设备传送第二数据流的装置,该第二数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU(相关示例参见图10C中的1012-C)。
37.如条款36所述的设备,还包括:
在促使处理第一数据流之前,响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一串流传输连接的装置,
其中该连接请求标识RDP服务器,以及
其中被标识的RDP服务器是本地RDP服务器;以及
响应于接收到来自远程客户机的连接请求,促使建立连至连接请求中标识的RDP服务器的第二串流传输连接的装置。
38.如条款36所述的设备,其中第二数据流不符合RDP。
39.如条款36所述的设备,还包括:
在促使串流传输第二数据流之前,促使产生一个数据流的装置,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU,以及不包含分组数据的第一数据流中的至少一个PDU;
促使批量压缩所产生的数据流的装置;以及
促使将经过批量压缩的所产生的数据流加密成第二数据流的装置。
40.如条款36所述的设备,其中促使选择性地压缩分组数据的装置包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来选择性地压缩分组数据的装置。
其他附注
在一个方面中,这里的任一条款均可从属于任一独立条款或是任一从属条款。并且在一些方面中,任一条款(例如从属或独立条款)都能与其他任一条款(例如从属或独立条款)结合。在一个方面中,权利要求可以包含条款、语句、短语或段落中述及的一些或所有文字(例如步骤,操作,装置或部件)。并且在一个方面中,权利要求可以包括在一个或多个条款、语句、短语或段落中述及的一些或所有文字。在一个方面中,每一个条款、语句、短语或段落中的一些文字都是可移除的。此外,在一个方面中,在条款、语句、短语或段落中还可以添加附加的文字或元素。在一个方面中,本技术主题可以在不使用这里描述的一些部件、元素、功能或操作的情况下实施。此外,在一个方面中,本技术主题还可以用附加的部件、元素、功能或操作来实施。
在一个方面中,在这里描述或是要求保护的任何方法、指令、代码、装置、逻辑、组件、部件、模块等等(例如软件或硬件)都可以用图形(例如流程图,框图)表示,此类图形(无论是否明确显示)在这里作为参考而被显性引入,并且此类图形(如果没有显性显示)可以在不构成新事项的情况下被添加到本公开中。为了简明起见,一些(但是未必所有)条款/描述/权利要求是用图形显性表示的,但是任一条款/描述/权利要求都可以在附图中采用与显性显示的附图相类似的方式来表示。例如,在这里可以为方法的条款、语句或权利要求绘制一个流程图,由此,每一个操作或步骤都通过箭头连接到下一个操作或步骤。在另一个示例中,具有“用于……的装置”的元素(例如用于执行某个行为的装置)的条款、语句或权利要求可被绘制框图,由此可以将每一个用于……的装置的元素表示成是用于该元素的模块(例如用于执行操作的模块)。
本领域技术人员将会了解,这里描述的不同项目、例如不同的说明性部件、模块、元件、组件、方法、操作、步骤和算法(例如客户机设备102、服务器108、RDP客户机110、VDA客户机112、RDP服务器104、VDA服务器106及其内部部件)均可作为硬件、计算机软件或是这二者的组合来实施。
为了例证硬件与软件的可互换性,在这里主要是依照功能来描述诸如不同的说明性部件、模块、元件、组件、方法、操作、步骤和算法之类的项目的。将此类功能作为硬件还是软件实施取决于具体的应用以及施加于整个系统的设计约束条件。技术人员可以采用不同方式来为每一个特定应用实施所描述的功能。
在一个方面中,“装置”、部件、模块、元件、组件或处理器可以是用于执行一个或多个功能或操作的项目(例如部件、模块、元件、组件或处理器中的一个或多个)。在一个方面中,此类项目可以是设备、硬件或是其一部分。作为示例,在一个示例中,项目可以具有用于执行一个或多个功能或是一个或多个操作的一个或多个指令的形式的结构,其中所述一个或多个指令被编码或保存在机器可读介质、别的设备或是其一部分中,并且其中一个或多个指令可以是软件、一个或多个应用、一个或多个子例程或是其一部分。在一个示例中,一个项目可以作为被配置成执行一个或多个功能或是一个或多个操作的一个或多个电路来实施。电路可以包括一个或多个电路和/或逻辑。所述电路可以是模拟和/或数字的。此外,电路也可以是电子和/或光学的。另外,电路还可以包括晶体管。在一个示例中,一个或多个项目可以作为一个处理系统(例如数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等等)来实施。本领域技术人员可以认识到如何实施这些指令、电路和处理系统。
除非特别说明,否则,对于单数形式的部件的引用并不意味着“有且仅有一个”,而是意味着“一个或多个”。例如,一个客户机设备可以是指一个或多个客户机设备,一个连接可以是指一个或多个连接,一个消息、请求、应答或流可以是指一个或多个消息、请求、应答或流。
除非以其他方式具体说明,否则,术语“一些”指的是一个或多个。阳性代词(例如他的)包含了阴性和中性(例如她的和它的),反之亦然。在这里出现的标题和子标题只是为了方便而被使用的,其未对本发明构成限制。
这里使用的单词“例示”指的是“充当示例或例证”。在这里被描述成“例示”的任何方面或设计都不必被理解成是优越或优先于其他方面或设计的。在一个方面中,这里描述的各种替换配置和操作可被认为至少是等价的。
诸如“方面”之类的短语既不暗指此类方面为本技术主题所必需,也不暗指此类方面适用于本技术主题的所有配置。与某个方面关联的公开有可能适用于所有配置,或是适用于一个或多个配置。一个方面可以提供一个或多个示例。诸如方面之类的短语可以是指一个或多个方面,反之亦然。诸如“实施例”之类的短语既不暗指该实施例为本技术主题所必需,也不暗指该实施例适用于本技术主题的所有配置。与一个实施例关联的公开既有可能适用于所有实施例,也有可能适用于一个或多个实施例。一个实施例可以提供一个或多个示例。短语此类实施例可以是指一个或多个实施例,反之亦然。诸如“配置”之类的短语既不暗指该配置为本技术主题所必需,也不暗指该配置适用于本技术主题的所有配置。与一个配置关联的公开既有可能适用于所有配置,也有可能适用于一个或多个配置。一个配置可以提供一个或多个示例。短语“此类配置”可以是指一个或多个配置,反之亦然。
应该理解的是,在本公开的一个方面中,如果将操作或功能描述成由某个项目来执行(例如等待,接收,拦截,连接,协商,建立,解析,压缩,加密,传送,解密,解压缩,重建,产生,断连,搜索,匹配,存储,取回,串流传输,或是其他任何操作或功能),那么此类操作或功能可以由该项目直接或间接执行。在一个方面中,在将模块描述成执行某个操作时,该模块可被理解成直接执行该操作。在同一个方面中,在将某个模块描述成执行某个操作时,该模块可被理解成间接执行该操作,例如通过促使、启用或是导致此类操作来执行。
在一个方面中,除非另外陈述,否则包括以下的权利要求在内的本说明书中阐述的所有量度、数值、等级、位置、幅度、大小及其他规范都是近似而并非精确的。在一个方面中,这么做的目的在于具有与相关联的功能以及所涉及领域的惯例相符的合理范围。
在一个方面,“相连”、“连接”等术语可以是指部件、模块或设备之间经由分组交换网络的逻辑连接。在另一个方面中,“相连”、“连接”等术语可以是指物理或电连接。
在不脱离本技术主题的范围的情况下,不同项目可以按照不同方式排列(例如按照不同顺序排列或以不同方式划分)。在一个示例中,VDA服务器106未必形成服务器108的一部分,而是可以改为与服务器108相关联。在本公开的一个方面中,附加权利要求中述及的元素可以由一个或多个模块或子模块执行。
应该理解的是,所公开的步骤、操作或处理的具体顺序或层级是关于例示方法的例证。此外还应该理解,步骤、操作或处理的具体顺序或层次是可以基于设计偏好而被重排的。一些步骤、操作或处理是可以同时执行的。此外,一些或所有步骤、操作或处理是可以在用户未介入的情况下自动执行的。如果附带有方法权利要求,那么此类权利要求的要素以作为样本的顺序来呈现不同步骤、操作或处理,但这并不意味着将其局限于所呈现的具体顺序或层级。
本公开是为使本领域技术人员能够实现这里描述的不同方面而被提供的。本公开提供了关于本技术主题的不同示例,并且本技术主题并不局限于这些示例。对本领域技术人员来说,针对这些方面的各种修改都是显而易见的,并且在这里定义的通用原理同样也适用于其他方面。
作为参考,在这里显性引入了本领域普通技术人员已知或者以后将会获悉的与本公开描述的不同方面的元件/要素相关的所有结构和功能等价物,并且权利要求旨在包含这些等价物。此外,不管是否在权利要求中明确述及这里公开的内容,都应该将这些公开无偿贡献给公众。除非明确使用了短语“用于……的装置”来表述部件,或者在方法权利要求中使用了短语“用于……的步骤”来表述元件/要素,否则不能根据35U.S.C.&112第6段的规定来解释权利要求中的元素。另外,从使用“包括”、“具有”等术语的意义上讲,与在权利要求中将术语“包含”用作过渡词时所做的解释相似,此类术语同样应该是包含性的。
在本公开中引入了标题、背景技术、发明内容、附图说明以及摘要,并且这些内容是作为本公开的说明性实施例而不是限制性描述提供的。所提交的这些内容应被理解成没有对权利要求的范围或意义进行限制。此外,在具体实施方式中可以看出,所述具体实施方式提供的是说明性示例,并且各种特征被归组在了不同的实施例中,以便简化本公开。本公开的方法不应被解释成是反映了要求保护的主题所需要的特征多于每个权利要求中明确陈述的特征的意图。相反,如后续权利要求所反映的那样,本发明的主题所依赖的特征少于所公开的单个配置或操作中的所有特征。由此,后续权利要求将被引入具体实施方式,并且其中每个权利要求都是作为单独要求保护的主题独立存在的。
这些权利要求并不局限于这里描述的方面,而是与符合文本权利要求的完整范围相一致,并且包含了所有的等同法定效应。然而,所有权利要求都不包含不满足35U.S.C.§101、102或103的需求的主题,并且不应以这种方式来解释权利要求。据此,如果无意中包含了此类主题,那么此类主题将被放弃。
Claims (8)
1.一种通过处理符合远程桌面协议RDP的第一数据流来将第二数据流串流传输至远程客户机设备的方法,该方法包括:
响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一串流传输连接,
其中该连接请求标识RDP服务器,以及
其中被标识的RDP服务器是本地RDP服务器,
响应于接收到来自远程客户机设备的连接请求,促使建立连至连接请求中标识的RDP服务器的第二串流传输连接;
促使处理符合RDP的第一数据流,以便识别包含分组数据的多个分组数据单元PDU,并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值;
对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值;
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使压缩PDU的分组数据;
促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU,
其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及
其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU包含经过压缩的分组数据;以及
促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU。
2.如权利要求1所述的方法,其中第二数据流不符合RDP。
3.如权利要求1所述的方法,其中在促使串流传输第二数据流之前,该方法包括:
促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU,以及不包含分组数据的第一数据流中的至少一个PDU;
促使批量压缩所产生的数据流;以及
促使将经过批量压缩的所产生的数据流加密成第二数据流。
4.如权利要求1所述的方法,其中促使压缩分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来压缩分组数据。
5.一种通过处理符合远程桌面协议RDP的第一数据流来将第二数据流串流传输至远程客户机设备的硬件设备,该硬件设备包括:
一个或多个模块,所述一个或多个模块被配置成执行一个或多个操作,所述一个或多个操作包括:响应于接收到来自远程客户机设备的连接请求,促使建立连至远程客户机设备的第一串流传输连接,
其中该连接请求标识RDP服务器,以及
其中被标识的RDP服务器是本地RDP服务器,
响应于接收到来自远程客户机设备的连接请求,促使建立连至连接请求中标识的RDP服务器的第二串流传输连接;
促使处理符合RDP的第一数据流,以便识别包含分组数据的多个分组数据单元PDU,并且对于每一个包含分组数据的PDU,从该分组数据中计算一个散列值;
对于每一个包含分组数据的PDU,促使在存储散列值的存储器缓存中搜索与从分组数据中计算得到的散列值匹配的已存储散列值;
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使在存储器缓存的一个位置中存储从PDU的分组数据中计算得到的散列值;
如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则促使压缩PDU的分组数据;
促使为包含分组数据的第一数据流中的每个PDU产生一个替换的PDU,
其中该替换的PDU包含一个带有索引值的报头,该索引值指示的是用于存储从分组数据中计算得到的散列值的存储器缓存中的位置,或是用于存储与从分组数据中计算得到的散列值匹配的散列值的存储器缓存中的位置,以及
其中如果该搜索未能发现与计算得到的散列值匹配的已存储散列值,则替换的PDU包含经过压缩的分组数据;以及
促使向远程客户机设备传送第二数据流,该第二数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU。
6.如权利要求5所述的硬件设备,其中第二数据流不符合RDP。
7.如权利要求5所述的硬件设备,其中在促使串流传输第二数据流之前,所述一个或多个操作包括:
促使产生一个数据流,该数据流包括为包含分组数据的第一数据流中的每个PDU产生的替换的PDU,以及不包含分组数据的第一数据流中的至少一个PDU;
促使批量压缩所产生的数据流;以及
促使将经过批量压缩的所产生的数据流加密成第二数据流。
8.如权利要求5所述的硬件设备,其中促使压缩分组数据包括:促使使用具有视觉损耗、视觉无损以及无损压缩模式之一的JPEG图像压缩算法来压缩分组数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/306,804 US8681813B2 (en) | 2011-11-29 | 2011-11-29 | Bandwidth optimization for remote desktop protocol |
US13/306,804 | 2011-11-29 | ||
PCT/US2012/050808 WO2013081677A1 (en) | 2011-11-29 | 2012-08-14 | Improved bandwidth optimization for remote desktop protocol |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104054068A CN104054068A (zh) | 2014-09-17 |
CN104054068B true CN104054068B (zh) | 2018-01-16 |
Family
ID=48466836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280067231.3A Active CN104054068B (zh) | 2011-11-29 | 2012-08-14 | 用于远程桌面协议的改进的带宽优化 |
Country Status (5)
Country | Link |
---|---|
US (3) | US8681813B2 (zh) |
EP (1) | EP2786265B1 (zh) |
CN (1) | CN104054068B (zh) |
IN (1) | IN2014CN04687A (zh) |
WO (1) | WO2013081677A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268517B2 (en) * | 2011-12-07 | 2016-02-23 | Adobe Systems Incorporated | Methods and systems for establishing, hosting and managing a screen sharing session involving a virtual environment |
JP5779085B2 (ja) * | 2011-12-22 | 2015-09-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理装置、画面出力システム、画面出力制御方法およびプログラム |
CA2793154C (en) * | 2012-06-29 | 2021-05-18 | Cyril PERRIN | Methods and systems for bandwidth-efficient remote procedure calls |
JP6221214B2 (ja) * | 2012-09-26 | 2017-11-01 | 富士通株式会社 | システム、端末装置および画像処理方法 |
US9485233B1 (en) | 2012-11-02 | 2016-11-01 | Wyse Technology L.L.C. | Virtual desktop accelerator support for network gateway |
US9374351B1 (en) | 2012-11-02 | 2016-06-21 | Wyse Technology L.L.C. | Virtual desktop accelerator support for network gateway |
US9992185B1 (en) | 2012-11-02 | 2018-06-05 | Wyse Technology L.L.C. | Virtual desktop accelerator support for network gateway |
US8924478B2 (en) * | 2012-12-29 | 2014-12-30 | Futurewei Technologies, Inc. | Virtual desktop infrastructure (VDI) login acceleration |
US20140195516A1 (en) * | 2013-01-09 | 2014-07-10 | Dropbox, Inc. | Systems and methods for presenting content items in a collections view |
CN103944691B (zh) * | 2013-01-17 | 2019-01-15 | 中兴通讯股份有限公司 | 一种协同业务传输中的数据重传方法及接入网网关 |
CN104053015A (zh) * | 2013-03-11 | 2014-09-17 | 中兴通讯股份有限公司 | 一种传输媒体数据的方法及虚拟桌面服务器 |
US9300762B2 (en) | 2013-05-03 | 2016-03-29 | Dell Products L.P. | Virtual desktop accelerator with support for multiple cryptographic contexts |
KR20150061470A (ko) * | 2013-11-27 | 2015-06-04 | 한국전자통신연구원 | 데스크톱 가상화 서비스 제공 시스템 및 방법 |
KR102238590B1 (ko) * | 2013-11-29 | 2021-04-09 | 삼성전자주식회사 | 데이터 패킷 전송의 인증 및 검증 방법, 및 상기 방법을 수행하는 장치들 |
CN105282194A (zh) * | 2014-06-27 | 2016-01-27 | 中兴通讯股份有限公司 | 虚拟桌面的配置、获取方法及装置 |
US10063665B2 (en) | 2015-02-18 | 2018-08-28 | Actmobile Networks, Inc. | System and method to eliminate duplicate byte patterns in network streams |
US10922148B2 (en) * | 2015-04-26 | 2021-02-16 | Intel Corporation | Integrated android and windows device |
US9628111B2 (en) * | 2015-05-11 | 2017-04-18 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor with multiple string match search hash tables each based on different hash size |
WO2017030607A1 (en) * | 2015-08-17 | 2017-02-23 | Five9, Inc. | Systems and methods for establishing a control channel between a virtualization server and a client device |
JP6679303B2 (ja) * | 2015-12-25 | 2020-04-15 | Dynabook株式会社 | 電子機器、方法及びプログラム |
CN105721446A (zh) * | 2016-01-26 | 2016-06-29 | 浪潮电子信息产业股份有限公司 | 一种基于windows操作系统远程桌面防暴破的拦截方法 |
US10419557B2 (en) * | 2016-03-21 | 2019-09-17 | International Business Machines Corporation | Identifying and managing redundant digital content transfers |
US10540136B2 (en) * | 2016-05-24 | 2020-01-21 | Dell Products, L.P. | Faster frame buffer rendering over a network |
JP2017228241A (ja) * | 2016-06-24 | 2017-12-28 | 富士通株式会社 | 画面送信方法、画面送信装置、及びプログラム |
US10652583B2 (en) * | 2016-08-19 | 2020-05-12 | Apple Inc. | Compression of image assets |
CN107786609A (zh) * | 2016-08-30 | 2018-03-09 | 中国科学院声学研究所 | 一种远程桌面协议的采集回放系统及方法 |
CN106502927B (zh) * | 2016-10-26 | 2019-08-13 | 北京德普信科技有限公司 | 终端可信计算及数据静态安全系统及方法 |
US10587713B2 (en) * | 2017-02-14 | 2020-03-10 | Wyse Technology L.L.C. | Proxy for sharing remote desktop sessions |
CN108989205B (zh) * | 2017-06-01 | 2021-08-20 | 阿里巴巴集团控股有限公司 | 身份标识、路由数据生成方法、装置及服务器 |
US10592418B2 (en) | 2017-10-27 | 2020-03-17 | Dell Products, L.P. | Cache sharing in virtual clusters |
CN108196662B (zh) * | 2017-12-28 | 2021-03-30 | 中国科学院计算技术研究所 | 哈希分区加速器 |
CN110401681B (zh) * | 2018-04-20 | 2022-06-24 | 伊姆西Ip控股有限责任公司 | 用于数据传输、数据接收的方法以及电子设备 |
US11271828B2 (en) * | 2018-11-15 | 2022-03-08 | Citrix Systems, Inc. | Real-time scalable virtual session and network analytics |
US11347869B2 (en) | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Secure interface control high-level page management |
US11206128B2 (en) * | 2019-03-08 | 2021-12-21 | International Business Machines Corporation | Secure paging with page change detection |
US11403409B2 (en) | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11722422B2 (en) | 2019-05-20 | 2023-08-08 | Citrix Systems, Inc. | Systems and methods for managing streams of packets via intermediary devices |
CN111290817B (zh) * | 2020-01-21 | 2024-05-14 | 李岗 | 桌面系统的数据装载方法及系统 |
US11601136B2 (en) | 2021-06-30 | 2023-03-07 | Bank Of America Corporation | System for electronic data compression by automated time-dependent compression algorithm |
CN113676727A (zh) * | 2021-08-18 | 2021-11-19 | 深圳市朗强科技有限公司 | 一种基于wifi的超高清视频的发送、接收方法及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7672005B1 (en) * | 2004-06-30 | 2010-03-02 | Teradici Corporation | Methods and apparatus for scan block caching |
CN102148824A (zh) * | 2010-01-22 | 2011-08-10 | 微软公司 | 用于遥控桌面图形的容损协议 |
CN102215265A (zh) * | 2011-06-14 | 2011-10-12 | 杭州思福迪信息技术有限公司 | 实现远程虚拟桌面访问统一管理和监控的系统及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020029285A1 (en) | 2000-05-26 | 2002-03-07 | Henry Collins | Adapting graphical data, processing activity to changing network conditions |
US7966424B2 (en) | 2004-03-15 | 2011-06-21 | Microsoft Corporation | Data compression |
US8156235B2 (en) * | 2009-03-27 | 2012-04-10 | Wyse Technology Inc. | Apparatus and method for determining modes and directing streams in remote communication |
US8588138B2 (en) * | 2009-07-23 | 2013-11-19 | Qualcomm Incorporated | Header compression for relay nodes |
US8965955B2 (en) * | 2009-12-23 | 2015-02-24 | Citrix Systems, Inc. | Systems and methods for policy based integration to horizontally deployed WAN optimization appliances |
US8125357B1 (en) * | 2010-03-23 | 2012-02-28 | Sandia Corporation | Deflate decompressor |
US9235618B2 (en) * | 2013-04-06 | 2016-01-12 | Citrix Systems, Inc. | Systems and methods for caching of SQL responses using integrated caching |
-
2011
- 2011-11-29 US US13/306,804 patent/US8681813B2/en active Active
-
2012
- 2012-08-14 CN CN201280067231.3A patent/CN104054068B/zh active Active
- 2012-08-14 WO PCT/US2012/050808 patent/WO2013081677A1/en unknown
- 2012-08-14 IN IN4687CHN2014 patent/IN2014CN04687A/en unknown
- 2012-08-14 EP EP12854054.9A patent/EP2786265B1/en active Active
-
2014
- 2014-02-26 US US14/190,985 patent/US9094374B2/en active Active
-
2015
- 2015-07-24 US US14/808,771 patent/US9882952B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7672005B1 (en) * | 2004-06-30 | 2010-03-02 | Teradici Corporation | Methods and apparatus for scan block caching |
CN102148824A (zh) * | 2010-01-22 | 2011-08-10 | 微软公司 | 用于遥控桌面图形的容损协议 |
CN102215265A (zh) * | 2011-06-14 | 2011-10-12 | 杭州思福迪信息技术有限公司 | 实现远程虚拟桌面访问统一管理和监控的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20130136125A1 (en) | 2013-05-30 |
US20150334151A1 (en) | 2015-11-19 |
US9882952B2 (en) | 2018-01-30 |
US8681813B2 (en) | 2014-03-25 |
CN104054068A (zh) | 2014-09-17 |
US20140177636A1 (en) | 2014-06-26 |
WO2013081677A1 (en) | 2013-06-06 |
US9094374B2 (en) | 2015-07-28 |
EP2786265A1 (en) | 2014-10-08 |
EP2786265A4 (en) | 2015-07-15 |
EP2786265B1 (en) | 2018-10-03 |
IN2014CN04687A (zh) | 2015-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104054068B (zh) | 用于远程桌面协议的改进的带宽优化 | |
CN104054316B (zh) | 用于对sms中心进行负载平衡和建立虚拟专用网络的系统和方法 | |
US7412541B1 (en) | Tokenized compression of session initiation protocol data | |
CN104580192B (zh) | 应用程序的网络访问请求的处理方法和装置 | |
EP2103079B1 (en) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages | |
JPH11500895A (ja) | クライアント/サーバ通信システム | |
JP2008541643A5 (zh) | ||
EP3163837B1 (en) | Header compression for ccn messages using a static dictionary | |
CN108200165A (zh) | 请求传输系统、方法、装置及存储介质 | |
US20080037509A1 (en) | Method and communications node for creation and transmission of user specific dictionary for compression and decompression of messages | |
CN114513418B (zh) | 一种数据处理方法及相关设备 | |
EP3166277A1 (en) | Bit-aligned header compression for ccn messages using dictionary | |
EP3163838B1 (en) | Header compression for ccn messages using dictionary learning | |
CN104243412B (zh) | 网络数据处理终端及在其中处理网络数据的方法 | |
CN114978427B (zh) | 数据处理方法、装置、程序产品、计算机设备和介质 | |
Shieh et al. | A stateless approach to connection-oriented protocols | |
CN114363301B (zh) | 基于localStorage的多媒体数据离线加载方法 | |
CN113660063B (zh) | 空间音频数据处理方法、装置、存储介质及电子设备 | |
CN107438991A (zh) | 经由多媒体广播多播服务的灵活广播服务的方法和装置 | |
CN117749896A (zh) | 报文处理方法、报文处理装置 | |
CN110516158A (zh) | 一种信息推送方法、装置及计算机可读存储介质 | |
KR20110045931A (ko) | 메시지 압축 처리 시스템 및 메시지 압축 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220526 Address after: Texas, USA Patentee after: DELL marketing Address before: California, USA Patentee before: WYSE TECHNOLOGY Inc. |