用于中间设备压缩通过远程显示协议传递的数据的系统和方法

文档序号:7910787阅读:605来源:国知局
专利名称:用于中间设备压缩通过远程显示协议传递的数据的系统和方法
技术领域
本发明总的涉及数据通信网络。具体而言,本发明涉及用于改善中间设备压缩效率的系统和方法以便压缩通过远程显示协议传输的数据。
背景技术
在基于服务器的计算环境中,服务器可以向客户机传递在服务器上运行的应用的输出中的变化。服务器可以通过远程显示协议传递这些变化。在一些情况下,服务器通过远程显示协议传递绘图或绘制命令。例如,服务器可以将由应用造成的显示上的变化作为一系列在客户机的屏幕上绘制这些变化的命令来进行传递。服务器可以给客户机发送在客户机的屏幕上绘制所识别的字形或位图的命令。在这种方式中,服务器仅仅发送通过一系列绘画命令改变的显示部分,而不是将服务器应用的整个输出传输到客户机。当客户机收到绘制命令和将要被绘制的数据时,客户机可以缓存这样的数据以用于随后的绘制命令。服务器为这样的数据提供高速缓存句柄以便引用在该高速缓存中存储的数据而不是在收到随后的绘制命令时重新传输该数据。例如,服务器可以通过远程显示协议发送绘制位图的命令。该命令可识别绘制命令并使用高速缓存句柄来识别要绘制的位图。当客户机收到绘制命令时,该客户机使用对应的高速缓存句柄来从其高速缓存中检索要绘制的位图。服务器可以使用随机的高速缓存句柄生成方案。当生成绘制命令和/或对于该绘制命令的位图时,服务器可以分配一个唯一的高速缓存标识符。例如,服务器可使用顺序计数器来简单地给将要被缓存的下一个位图分配下一个可用的标识符。对于在服务器和多个客户机之间的不同会话,高速缓存可能不仅包括不同的位图,而且服务器可能为同一位图生成不同的高速缓存句柄。

发明内容
本发明针对远程显示协议中的变化来改善由在服务器和多个客户机之间的一个或多个中间设备进行压缩的效率。在一个示例部署中,多个服务器106可通过广域网(WAN) 给多个客户机102提供应用。一个或多个WAN加速中间设备(例如WAN设备或设备200)可被部署在服务器(例如服务器106)和客户机(例如客户机102)之间。例如,一个WAN设备可被部署在提供服务器的数据中心的企业专用网上。该WAN设备200可连接到或连线到从数据中心的专用网的服务器106到WAN或公共网的连接。第二 WAN设备可内联地部署在从客户机的LAN到WAN或公共网的客户机侧局域网(LAN)上。这些WAN设备200可共享压缩历史并且传递压缩的数据以改善在服务器和客户机之间的通信的带宽和性能。服务器可通过代表客户机在服务器上执行应用来给多个客户机提供基于远程的计算。服务器可通过远程显示协议向客户机传输在执行在服务器上的应用的输出中的变化。基于WAN的中间设备(例如设备200)可拦截这样的通信并对数据进行压缩。在不提供高速缓存句柄和在多个客户机会话间的更多可重复的内容的远程显示协议版本的情况下,WAN加速器200不能根据需求加速这样的远程显示协议数据。在一些情况下,这些远程显示协议对于跨越会话的同一位图或字形使用不同的高速缓存句柄。例如,服务器将具有第一句柄的第一位图传递给第一客户机而对于第二客户机,服务器传递具有不同于第一句柄的第二句柄的第一位图。对于相同的位图内容使用不同的高速缓存句柄,如果跨越会话的高速缓存句柄是相同的,WAN加速器的压缩历史没有那么多可重复的和可压缩的数据。一方面,本发明自动检测客户机、服务器和/或中间设备的远程显示协议能力以便确定是客户机和服务器还是中间设备应该压缩远程显示协议数据,以及在一些情况下都应进行压缩。在一个方面,本发明涉及用于确定使中间设备对在客户机和服务器之间通信的远程显示协议进行压缩的方法。该方法可包括由客户机向服务器经由第一中间设备和第二中间设备传输标识客户机的远程显示协议能力的通信。服务器可从经由第一中间设备和第二中间设备转发的通信确定客户机和第一中间设备和/或第二中间设备的远程显示协议能力。服务器可响应于所述确定来向客户机传输标识客户机和服务器不对远程显示协议通信进行压缩的第二通信。在这些实施例中,中间设备进行压缩。第一中间设备可对由服务器通过远程显示协议向客户机传递的数据进行压缩,并将所压缩的数据转发到第二中间设备。第二中间设备可对所压缩的数据进行解压缩并将解压缩的数据通过远程显示协议转发到客户机。在一些实施例中,服务器可发起远程显示协议的握手事务以便协商客户机和服务器之间的能力。客户机可经由该通信标识该客户机支持的远程显示协议的版本。第一中间设备和第二中间设备可各自修改该通信来标识它们各自支持的远程显示协议的版本。服务器可以向客户机传输作为远程显示协议的握手事务的一部分的第二通信以协商客户机和服务器之间的能力。第一中间设备通过在客户机和服务器之间的远程显示协议的第一会话接收数据的第一帧并且将第一帧的一部分存储到第一压缩历史。第二中间设备可接收由第一中间设备转发的第一帧并将第一帧的部分存储到第二压缩历史。第二压缩历史共享第一压缩历史的内容。第一中间设备可以通过远程显示协议的第二会话接收数据的第二帧并且使用在第一压缩历史中存储的第一会话的第一帧的部分数据来压缩第二会话的第二帧的部分数据。 连接到客户机的第一网络的第一中间设备通过不同于所述远程显示协议的第二协议向连接到客户机的第二网络的第二中间设备传递所压缩的数据。在又一个方面,本发明涉及用于确定使中间设备对在客户机和服务器之间通信的远程显示协议进行压缩的方法。该方法可包括由服务器经由第一中间设备和第二中间设备向客户机传输标识客户机的远程显示协议能力的通信。客户机可从经由第一中间设备和第二中间设备转发的通信确定服务器以及第一中间设备和/或第二中间设备的其中一个的远程显示协议能力。客户机可响应于所述确定来向服务器传输标识客户机和服务器不对远程显示协议通信进行压缩的第二通信。在这些实施例中,中间设备而不是客户机和服务器可对远程显示协议进行压缩。第一中间设备可对由服务器向客户机通过远程显示协议传递的数据进行压缩,并将所压缩的数据转发到第二中间设备。第二中间设备可对所压缩的数据进行解压缩并将解压缩的数据通过远程显示协议转发到客户机。在一些实施例中,客户机可经由该通信发起远程显示协议的握手事务以便协商客户机和服务器之间的能力。服务器可经由该通信标识由服务器支持的远程显示协议的版本。第一中间设备和/或第二中间设备可修改所述通信以标识由中间设备各自支持的远程显示协议的版本。客户机可以向服务器传输作为远程显示协议的握手事务的一部分的第二通信以协商客户机和服务器之间的能力。在一些方面,本发明使用基于内容的句柄生成机制(称为通用句柄)来为跨越远程显示协议会话的诸如位图的内容生成相同的句柄。例如,服务器106可将预定的哈希 (hash)或算法应用于位图的内容。这样,相同的位图将具有相同的句柄。然而,远程显示协议可支持预定的位数以表示和存储高速缓存句柄。例如,可以为高速缓存句柄分配2个字节或16位。使用有限的位数和由远程显示协议使用的大量字形或位图,对于句柄的基于内容的机制将导致冲突。也就是说,使用16位的句柄,尽管位图是不同的,但第一位图和第二位图可能会具有相同的所生成的句柄。这样,尽管基于内容的句柄有助于改善WAN加速器的压缩效率,但由于基于句柄区分位图,它妨碍远程显示协议机制。在本发明中,远程显示协议包括消歧能力以保持在跨越远程显示会话和客户机的可压缩内容的改善的可重复性,同时允许客户机在具有相同句柄的位图之间进行区别。由于服务器了解该服务器为其生成句柄的位图,所以该服务器可给客户机提供消歧向量或记录。远程显示协议可在帧或首部的任何部分包含消歧记录。客户机可使用该消歧记录来在相同的但代表不同位图的句柄间进行区别。用对远程显示协议的修改来支持通用内容句柄(UCH)和消歧,WAN中间设备可提供更好的压缩性能同时保持服务器和客户机的操作以将合适的变化显示到客户机的远程显示。远程显示协议中对消歧记录的支持增加了该协议的开销。然而,在部署中可存在于多个会话和多个客户机之间可压缩数据的增加,改善了在客户机和服务器之间的WAN链路上的压缩,从而克服了该开销。在附图和下文的描述中详细阐述本发明的各种实施例的细节。


通过参考下述结合附图的描述,本发明的前述和其它目的、方面、特征和优点,将会更加明显并更易于理解,其中图IA是客户机通过一个或多个网络优化设备访问服务器的网络环境的实施例的框图;图IB是客户机通过一个或多个网络优化设备连同其他网络设备访问服务器的网络环境的又一个实施例的框图;图IC是客户机通过单独部署的或者与其他网络设备一起部署的单个网络优化设备访问服务器的网络环境的又一个实施例的框图IE到IF是计算装置的实施例的框图;图2A是用于处理客户机和服务器之间的通信的设备的实施例的框图;图2B是部署设备的网络优化特征的客户机和/或服务器的又一个实施例的框图;图3是使用网络优化特征与服务器通信的客户机的实施例的框图;图4A是使用通用内容句柄和消歧记录处理远程显示协议的通信的中间设备的实施例的框图;图4B是使用通用内容句柄和消歧记录压缩远程显示协议提供的数据的方法的实施例的流程图;图5是协商在客户机和服务器之间经由多个中间设备的远程显示协议的消歧能力的系统和方法的实施例的框图。从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常表示相同的、功能上相似的和/或结构上相似的元素。
具体实施例方式为了阅读下述各种具体实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的-A部分描述有益于实施本发明的实施例的网络环境和计算环境;-B部分描述用于向远程用户加速传送计算环境的系统和设备架构的实施例;-C部分描述用于加速客户机和服务器之间的通信的客户机代理的实施例;以及-D部分描述用于压缩包括消歧能力的远程显示协议的数据的系统和方法的实施例。A、网络和计算环境在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可在其中部署这样的实施例的网络和计算环境是有帮助的。现在参见图1A,描述了网络环境的实施例。概括来讲,网络环境包括经由一个或多个网络104、104’、104”与一个或多个服务器106a-106n(同样总的称为服务器106,或远程机器106)通信的一个或多个客户机 10加-10211(同样总的称为本地机器102,或客户机10 。在一些实施例中,客户机102经由一个或多个网络优化设备200、200’(总的称为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计为、配置为或适合于优化广域网(WAN)网络业务量。在一些实施例中,第一设备200与第二设备200’结合或协同工作来优化网络业务量。例如,第一设备200可位于分支机构和WAN连接之间而第二设备200’位于WAN和公司局域网(LAN) 之间。设备200、200’可一起工作以优化在分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网络业务量。虽然图IA示出了在客户机102和服务器106之间的网络104、网络104,和网络 104” (总的称为网络104),但客户机102和服务器106可以位于同一个的网络104上。网络104、104’、104”可以是相同类型的网络或不同类型的网络。网络104可为局域网(LAN) (例如公司内网),城域网(MAN),或者广域网(WAN)(例如互联网或万维网)。网络104、104’、104”可为专用网络或公网。在一个实施例中,网络104’和网络104”可为专用网而网络104可为公网。在一些实施例中,网络104可为专用网而网络104’和/或网络104”可为公网。在又一个实施例中,网络104、104’、104”可都为专用网。在一些实施例中,客户机 102可位于公司企业的分支机构中,经由网络104上的WAN连接与位于公司数据中心中的公司LAN上的服务器106进行通信。网络104可以是任何类型和/或形式的网络,并且可包括任何下列任何一种网络 点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET (同步光纤网络)网络,SDH (同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或者卫星频带的无线链路。网络104 的拓扑可为总线型、星型或环型网络拓扑。网络104以及网络拓扑可以是本领域普通技术人员所知的能够支持此处描述的操作的任何这样的网络或网络拓扑。如图IA所示,第一网络优化设备200被显示在网络104和104’之间,并且第二网络优化设备200’也在网络104’和104”之间。在一些实施例中,设备200可位于网络104 上。例如,公司企业可在分支机构中部署设备200。在其它实施例中,设备200可以位于网络104’上。在一些实施例中,设备200可以位于网络104’或网络104”上。例如,设备200 可位于公司的数据中心。在一个实施例中,设备200和200’在同一网络上,在又一个实施例中,设备200和200’在不同的网络上。在一个实施例中,设备200是用于加速、优化或者以其他方式改善任何类型和形式的网络业务量的性能、操作或服务质量的装置。在一些实施例中,设备200是一个性能增强代理。在其它实施例中,设备200是任何类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备200是由位于佛罗里达州Ft. Lauderdale的 Citrix Systems公司出品的被称为WANkaler的产品实施例中的任何一种。在其它实施例中,设备200包括由位于华盛顿州kattle的F5Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任何一种。在又一个实施例中,设备200包括由位于加利福尼亚州Sunnyvale的Juniper Netfforks公司出品的WX和WXC WAN加速装置平台中的任何一种。在一些实施例中,设备200包括由加利福尼亚州San Francisco的Riverbed "Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任何一种。在其它实施例中,设备200包括由位于新泽西州Roseland的Expand Networks公司出品的WAN相关装置中的任何一种。在一个实施例中,设备200包括由位于加利福尼亚州Cupertino的 Packeteer公司出品的任何一种WAN相关设备,例如由Packeteer提供的PacketShaper、 iShared和SkyX产品实施例。在又一个实施例中,设备200包括由位于加利福尼亚州San Jose的Cisco Systems公司出品的任何WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网弓I擎设备。在一些实施例中,设备200为分支机构或远程办公室提供应用和数据加速业务。 在一个实施例中,设备200包括广域文件服务(WAR5)的优化。在又一个实施例中,设备200 加速文件的传送,例如经由通用互联网文件系统(CIFS)协议。在其它实施例中,设备200 在存储器和/或存储装置中提供高速缓存来加速应用和数据的传送。在一个实施例中,设备200在任何级别的网络堆栈或在任何的协议或网络层中提供网络业务量的压缩。在又一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的传送。例如,在一个实施例中,设备200提供传输控制协议(TCP) 优化。在其它实施例中,设备200提供对于任何会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下文的B部分中讨论设备200的架构、操作和优化技术的进一步的细节。仍参考图1A,网络环境可包括多个逻辑分组的服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的一些中,服务器106可为地理上分散的。在一些情况中,群38可以作为单个实体被管理。在其它实施例中,服务器群38包括多个服务器群38。在一个实施例中,服务器群代表一个或多个客户机102执行一个或多个应用程序。在每个群38中的服务器106可为不同种类。一个或多个服务器106可根据一种类型的操作系统平台(例如,由华盛顿州Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux) 操作。每个群38的服务器106不需要与同一群38内的另一个服务器106物理上接近。因此,被逻辑分组为群38的服务器106组可使用广域网(WAN)连接或城域网(MAN)连接互联。例如,群38可包括物理上位于不同大陆或大陆的不同区域、国家、州、城市、校园或房间的服务器106。如果使用局域网(LAN)连接或一些直连形式来连接服务器106,则可增加群 38中的服务器106间的数据传送速度。服务器106可指文件服务器、应用服务器、web服务器、代理服务器或者网关服务器。在一些实施例中,服务器106可以有作为应用服务器或者作为主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目录。客户端102也可称为客户端节点或端点。在一些实施例中,客户机102可以有作为客户机节点寻求访问服务器上的应用的能力, 也可以有作为应用服务器为其它客户机10加-10211提供对寄载的应用的访问的能力。在一些实施例中,客户端102与服务器106通信。在一个实施例中,客户端102可与群38中的服务器106的其中一个直接通信。在又一个实施例中,客户端102执行程序邻近应用(program neighborhood application)以与群38内的服务器106通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户端102通过网络104与群 38中的服务器106通信。通过网络104,客户机102例如可以请求执行由群38中的服务器 106a-106n寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供识别和提供与寄载所请求的应用的服务器106’相关的地址信息所需的功能。在一个实施例中,服务器106提供web服务器的功能。在又一个实施例中,服务器 106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自服务器106b 对该请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与由该应用的列举所识别的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户端102直接与服务器106通信以访问所识别的应用。在又一个实施例中,客户机102接收由执行服务器106上所识别的应用而产生的诸如显示数据的应用输出数据。与其他设备一起部署现在参考图1B,描述了网络环境的又一个实施例,在其中,网络优化设备200和诸如网关、防火墙或加速设备的一个或多个其他设备205、205’ (总的称为设备205或第二设备20 部署在一起。例如,在一个实施例中,设备205是防火墙或安全设备,而设备205’ 是LAN加速设备。在一些实施例中,客户机102可通过一个或多个第一设备200和一个或多个第二设备205与服务器106通信。一个或多个设备200和205可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,第二设备205可与第一设备200位于同一网络104上。在其他实施例中,第二设备205可位于与第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在同一网络上,例如网络104,而第一设备 200,和第二设备205,在同一网络上,例如网络104,。在一个实施例中,第二设备205包括任何类型和形式的传输控制协议或传输后终止装置,例如网关或防火墙装置。在一个实施例中,设备205通过与客户机建立第一传输控制协议连接并且与第二设备或服务器建立第二传输控制协议连接来终止传输控制协议。在又一个实施例中,设备205通过改变、管理或控制在客户机和服务器或第二设备之间的传输控制协议连接的行为来终止传输控制协议。例如,设备205可以改变、排队、转发或传输网络分组以有效地终止传输控制协议连接或者起到终止该连接的作用或模拟为终止该连接。在一些实施例中,第二设备205是性能增强代理。在一个实施例中,设备205提供虚拟专用网(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN (SSL VPN)连接。 在其他实施例中,设备205提供基于Ipsec(互联网协议安全)的VPN连接。在一些实施例中,设备205提供任何一个或多个下列功能压缩、加速、负载平衡、交换/路由、缓存和传输控制协议(TCP)加速。在一个实施例中,设备205是由位于佛罗里达州Ft. Lauderdale的Citrix Systems公司出品的被称为访问网关、应用防火墙、应用网关或NetScaler的产品实施例中的任何一种。这样,在一些实施例中,设备200包括执行诸如SSL VPN连通、SSL卸载、交换 /负载平衡、域名服务解析、LAN加速和应用防火墙的服务或功能的任何逻辑、功能、规则或操作。在一些实施例中,设备205提供在客户机102和服务器106之间的SSL VPN连接。 例如,第一网络104上的客户端102请求建立到第二网络104’上的服务器106的连接。在一些实施例中,第二网络104”是不能从第一网络104路由的。在其它实施例中,客户端102 位于公用网络104上,而服务器106位于专用网络104’上,例如公司网。在一个实施例中, 客户机代理拦截第一网络104上的客户机102的通信,加密该通信,并且经第一传输层连接发送该通信到设备205。设备205将第一网络104上的第一传输层连接与到第二网络104 上的服务器106的第二传输层连接相关联。设备205接收来自客户端代理的被拦截的通信, 解密该通信,并且经第二传输层连接发送该通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。在一个实施例中,设备205为在两个网络104和104’之间的客户机102提供端到端安全传输层连接。在一个实施例中,设备205寄载虚拟专用网络104上的客户机102的内部网互联网协议或者htranetIP地址。客户机102具有本地网络标识符,诸如第一网络104上的互联网协议(IP)地址和/或主机名称。当经由设备205连接到第二网络104’时,设备205在第二网络104’上为客户机102建立、分配或者以其它方式提供htranetn^内部网IP), 其是诸如IP地址和/或主机名称的网络标识符。使用客户机的所建立的htranetIP,设备 205在第二或专用网104’上监听并接收指向该客户机102的任何通信。在一个实施例中, 设备205在第二专用网络104上用作或者代表客户机102。在一些实施例中,设备205具有加密引擎,所述加密引擎提供用于操控诸如SSL或 TLS的任何安全相关协议或其中涉及的任何功能的处理的逻辑、商业规则、功能或操作。例如,加密引擎加密并解密通过设备205传输的网络分组,或其任何部分。加密引擎也可代表客户机10加-10211、服务器106a-106n或设备200、205来设置或建立SSL或TLS连接。因此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧道协议来提供在客户机102a-102n和服务器106a-106n间的虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其它实施例中,加密引擎包括运行在加密处理器260上的可执行指令。在一些实施例中,设备205为在客户机102和服务器106之间的通信提供下列一个或多个加速技术1)压缩、幻解压缩、幻传输控制协议池、4)传输控制协议多路复用、5) 传输控制协议缓冲、以及6)高速缓存。在一个实施例中,设备200通过打开与每一服务器 106的一个或者多个传输层连接并且维持这些连接以允许由客户机经由互联网的重复数据访问,来为服务器106缓解由重复打开和关闭到客户机102的传输层连接所造成的大量处理负载。该技术此处称为“连接池”。在一些实施例中,为了经由池化的传输层连接无缝拼接从客户机102到服务器 106的通信,设备205通过在传输层协议级修改序列号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在到来的分组(即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备205的输出端口的网络地址,而目的网络地址被改为目的服务器的网络地址。在发出的分组(即, 自服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备205的输出端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客户机102的网络地址。分组的序列号和确认号也被转换为到客户机102的设备205的传输层连接上的由客户机102所期待的序列号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以计及这些转换。在又一个实施例中,设备205为客户机102和服务器106之间的通信提供交换或负载平衡功能。在一些实施例中,设备205根据层4有效载荷或应用层请求数据来分配业务量并将客户机请求定向到服务器106。在一个实施例中,尽管网络分组的网络层或者层2 标识了目的服务器106,但设备205利用承载为传输层分组的有效载荷的数据和应用信息来确定服务器106以便分发网络分组。在一个实施例中,设备205的健康监控程序监控服务器的健康来确定分发客户机请求到哪个服务器106。在一些实施例中,如果设备205检测到某个服务器106不可用或者具有超过预定阈值的负载,设备205可以将客户机请求定向或者分发到另一个服务器106。在一些实施例中,设备205用作域名服务(DNS)解析器或以其他方式提供对来自客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。 在一个实施例中,设备205以设备205的IP地址或其所寄载的IP地址来响应客户机的DNS 请求。在此实施例中,客户机102把用于该域名的网络通信发送到设备200。在又一个实施例中,设备200以第二设备200’的或其所寄载的IP地址来响应客户机的DNS请求。在一些实施例中,设备205使用由设备200确定的服务器106的IP地址来响应客户机的DNS请求。在又一个实施例中,设备205为客户机102和服务器106之间的通信提供应用防火墙功能。在一个实施例中,策略引擎四5’提供用于检测和阻断非法请求的规则。在一些实施例中,应用防火墙防御拒绝服务(DoS)攻击。在其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一些实施例中,规则/策略引擎包括用于提供对多个种类和类型的基于web或互联网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个1)缓冲区泄出,2) CGI-BIN参数操纵,幻表单/隐藏字段操纵,4)强制浏览,5)C00kie或会话中毒,6)被破坏的访问控制列表(ACLs)或弱密码,7) 跨站脚本处理(XSS),8)命令注入,9) SQL注入,10)错误触发敏感信息泄露,11)对加密的不安全使用,12)服务器错误配置,13)后门和调试选项,14)网站涂改,15)平台或操作系统弱点,和16)零天攻击。在一个实施例中,对下列情况的一种或多种,设备的防火墙以检查或分析网络通信的形式来提供HTML格式字段的保护1)返回所需的字段,幻不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,设备205的应用防火墙确保cookie不被修改。在其它实施例中,设备205通过执行合法的URL来防御强制浏览。在另一些实施例中,应用防火墙设备205保护在网络通信中包含的任何机密信息。设备205可以根据策略引擎的规则或策略来检查或分析任一网络通信以识别在网络分组的任一字段中的任一机密信息。在一些实施例中,应用防火墙在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。基于这些出现,在一个实施例中,应用防火墙可以对网络通信采取策略行动,诸如阻止发送网络通信。在又一个实施例中,应用防火墙可以重写、移动或者以其它方式掩盖该所识别的出现或者机密信息。尽管总的称为网络优化或第一设备200和第二设备205,但第一设备200和第二设备205可以是相同类型和形式的设备。在一个实施例中,第二设备205可执行与第一设备200相同的功能,或部分相同的功能,反之亦然。例如,第一设备200和第二设备205都可以提供加速技术。在一个实施例中,第一设备200可执行LAN加速而第二设备205执行 WAN加速,或者反之亦然。在又一个实施例中,第一设备200也可以与第二设备205 —样是传输控制协议终止装置。而且,尽管设备200和205被显示为在网络上单独的装置,但设备 200和/或设备205可以是客户机102或服务器106的一部分。现在参考图1C,描述了用于部署设备200的网络环境的其他实施例。在如图IC的上部所描述的又一个实施例中,设备200可以部署为网络104上单个设备或单个代理。例如,设备200可以被设计、构建或调整来执行此处所讨论的WAN优化技术,而不需要第二协同设备200’。在如图IC的下部所描述的其他实施例中,可以将单个设备200与一个或多个第二设备205部署在一起。例如,诸如Citrix WANkaler设备的WAN加速第一设备200可以与LAN加速或应用防火墙第二设备205(例如Citrix NetScaler)部署在一起。计算装置客户机102、服务器106和设备200和205可以被部署为和/或执行在任何类型和形式的计算装置上,诸如能够在任何类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图IC和ID描述了可用于实施客户机102、服务器106或设备 200的实施例的计算装置100的框图。如图IC和ID所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图IC所示,计算装置100可以包括可视显示装置124、键盘1 和/或诸如鼠标的指示装置127。每个计算装置100也可包括其它可选元件,例如一个或多个输入/输出装置130a-130b (总的使用附图标记130表示),以及与中央处理单元 101通信的高速缓存存储器140。中央处理单元101是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如由加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;由纽约州 White Plains 的 hternational Business Machines 公司制造的 RS/6000 处理器; 或者由加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任何一种,或者能够按照这里所说明的那样运行的任何其它处理器。主存储器单元122可以是能够存储数据并允许微处理器101直接访问任何存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM (BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM (FPM DRAM)、增强型 DRAM (EDRAM)、扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DRAM)、突发式扩展数据输出 DRAM (BED0 DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PClOO SDRAM、双数据速率 SDRAM (DDR SDRAM)、增强型 SRAM (ESDRAM)、同步链路 DRAM (SLDRAM)、直接Rambus DRAM (DRDRAM)或铁电RAM (FRAM)。主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图IC中所示的实施例中,处理器101通过系统总线150 (在下面进行更详细的描述)与主存储器122进行通信。图IC描述了在其中处理器通过存储器端口 103直接与主存储器122通信的计算装置 100的实施例。例如,在图ID中,主存储器122可以是DRDRAM。图ID描述了在其中主处理器101通过第二总线与高速缓存存储器140直接通信的实施例,第二总线有时也称为背侧总线。其他实施例中,主处理器101使用系统总线150 和高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图IF中所示的实施例中,处理器101通过本地系统总线150与多个1/0装置130进行通信。可以使用各种不同的总线将中央处理单元101连接到任何1/0装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于1/0装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)与显示器IM通信。图ID 说明了主处理器101通过超传输(HyperTransport)、快速1/0或者InfiniBand直接与1/0 装置130通信的计算机100的一个实施例。图ID还描述了在其中混合本地总线和直接通信的实施例处理器101使用本地互连总线与1/0装置130进行通信,同时直接与1/0装置 130进行通信。计算装置100可以支持任何适当的安装装置116,例如用于接收像3. 5英寸、5. 25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM 驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任何客户机代理120 或其部分的软件和程序的任何其它装置。计算装置100还可以包括存储装置128,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任何程序的应用软件程序。或者,可以使用安装装置116 的任何一种作为存储装置128。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如KNOPPIX ,一种用于GNU/Linux的可引导⑶,该可引导⑶可自knoppix. net作为GNU/Linux分发获得。此外,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或互联网的网络接口 118,所述多种连接包括但不限于标准电话线路、LAN或WAN链路(例如 802.11,Tl,T3、56kb、X. 25)、宽带连接(如ISDN、帧中继、ATM)、无线连接、或上述任何或所有连接的一些组合。网络接口 118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置 100接口到能够通信并执行这里所说明的操作的任何类型的网络的任何其它设备。计算装置100中可以包括各种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图IC所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘1 和指示装置127 (如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储装置1 和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接以接收手持USB存储装置,例如由位于加利福尼亚州Los Alamitos,的Twintech Industry公司生产的设备的USB闪存驱动器线。在一些实施例中,计算装置100可以包括多个显示装置1对『12如或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任何一种I/O装置130a-130n 和/或I/O控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置12如-1对11。例如, 计算装置100可以包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置1对『12如接口、通信、连接或以其他方式使用显示装置。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置1对『12如接口。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置12如-1对11中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器12如-1对11。在其它实施例中,显示装置12^-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如例如通过网络与计算装置100连接的计算装置IOOa和100b。 这些实施例可以包括被设计和构造为将另一个计算机的显示装置用作计算装置100的第二显示装置12 的任一类型的软件。本领域的普通技术人员会认识和理解可以将计算装置100配置成具有多个显示装置12如-1对11的各种方法和实施例。在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、 Fireffire总线、Fireffire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线。图IC和ID中描述的那类计算装置100通常在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任何操作系统,如Microsoft Windows操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的MAC OS ,任何嵌入式操作系统,任何实时操作系统,任何开源操作系统,任何专有操作系统,任何用于移动计算装置的操作系统,或者任何其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括WIND0WS 3. x.ffINDOffS 95,WINDOWS 98,WINDOWS 2000, WINDOWS NT 3. 51、WINDOWS NT 4. 0、WINDOWS CE 禾口 WINDOWS XP,所有这些均由位于华盛顿州Redmond的微软公司出品;由位于加利福尼亚州Cupertino的苹果计算机出品的MacOS ;由位于纽约州Armonk的国际商业机器公司出品的OS/2 ;以及由位于犹他州Mlt Lake City的Caldera公司发布的可免费使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。在其它实施例中,计算装置100可以有符合该装置的不同的处理器、操作系统和输入设备。例如,在一个实施例中,计算机100是由I^alm公司出品的Treo 180、270、1060、600 或650智能电话。在该实施例中,Treo智能电话在I3aImOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任何工作站、桌面计算机、 膝上型或笔记本计算机、服务器、手持计算机、移动电话、任何其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。B、系统和设备架构现在参考图2A,描述了用于传送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于向一个或多个客户机102 传送计算环境或应用和/或数据文件的应用传送系统四0。总的来说,客户机102经由网络 104和设备200与服务器106通信。例如,客户机102可驻留在公司的远程办公室里,例如分支机构,而服务器106可驻留在公司数据中心。客户机102包括客户机代理120以及计算环境215。计算环境215可执行或操作用于访问、处理或使用数据文件的应用。可经由设备200和/或服务器106传送计算环境215、应用和/或数据文件。在一些实施例中,设备200向客户机102加速传送计算环境215或者其任何部分。 在一个实施例中,设备200通过应用传送系统290加速计算环境15的传送。例如,可使用此处描述的实施例来加速从公司中央数据中心到远程用户位置(例如公司的分支机构)的流应用(streaming application)及该应用可处理的数据文件的传送。在又一个实施例中, 设备200加速客户机102和服务器106之间的传输层业务量。在又一个实施例中,设备200 控制、管理、或调整传输层协议以便加速计算环境的传送。在一些实施例中,设备200使用缓存和/或压缩技术来加速计算环境的传输。在一些实施例中,基于多个执行方法并且基于通过策略引擎295所应用的任一验证和授权策略,应用传送管理系统290提供将计算环境传送到远程的或者其它的用户的桌面的应用传送技术。使用这些技术,远程用户可以从任何网络连接装置100获取计算环境并且访问存储应用和数据文件的服务器。在一个实施例中,应用传送系统290可驻留在服务器106上或在其上执行。在又一个实施例中,应用传送系统290可驻留在多个服务器 106a-106n上或在其上执行。在一些实施例中,应用传送系统290可在服务器群38内执行。在一个实施例中,执行应用传送系统290的服务器106也可存储或提供应用和数据文件。在又一个实施例中,一个或多个服务器106的第一组可执行应用传送系统四0,而不同的服务器106η可存储或提供应用和数据文件。在一些实施例中,应用传送系统四0、应用和数据文件中的每一个可驻留或位于不同的服务器。在又一个实施例中,应用传送系统四0的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。客户机102可包括用于执行使用或处理数据文件的应用的计算环境215。客户机 102可通过网络104、104’和设备200请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以将来自客户机102的请求转发到服务器106。例如,客户机102可能不具有本地存储或者本地可访问的应用和数据文件。响应于请求,应用传送系统290和/或服务器106可以传送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以把应用作为应用流来传输,以在客户机102上的计算环境215中操作。在一些实施例中,应用传送系统290包括Citrix Systems公司的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微软公司开发的Microsoft Windows终端服务中的任何一个。在一个实施例中,应用传送系统290 可以通过远程显示协议或者以其它方式通过基于远程计算或者基于服务器计算来传送一个或者多个应用到客户机102或者用户。在又一个实施例中,应用传送系统290可以通过应用流来传送一个或者多个应用到客户机或者用户。在一个实施例中,应用传送系统290包括策略引擎四5,其用于控制和管理对应用的访问、应用执行方法的选择以及应用的传送。在一些实施例中,策略引擎295确定用户或者客户机102可以访问的一个或者多个应用。在又一个实施例中,策略引擎295确定应用应该如何被传送到用户或者客户机102,例如执行的方法。在一些实施例中,应用传送系统 290提供多个传送技术,从中选择应用执行的方法,例如基于服务器的计算、本地流式传输或传送应用给客户机120以用于本地执行。在一个实施例中,客户机102请求应用程序的执行而包括服务器106的应用传送系统290选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。 在又一个实施例中,服务器106从客户机102接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的接收,应用传送系统290列举对于客户机102可用的多个应用程序。应用传送系统290接收执行所列举的应用的请求。应用传送系统290选择预定数量的方法之一来执行所列举的应用,例如响应策略引擎的策略。应用传送系统290可以选择执行应用的方法,使得客户机102接收通过执行服务器106上的应用程序所产生的应用输出数据。应用传送系统290可以选择执行应用的方法,使得本地机器102在检索包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用传送系统290可以选择执行应用的方法,以通过网络104流式传输应用到客户机102。客户机102可以执行、操作或者以其它方式提供应用,所述应用可为任何类型和/ 或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java程序、或者可以在客户机102上执行的任何其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任何瘦-客户端或远程显示协议来显示输出到客户机102,所述瘦-客户端或远程显示协议例如由位于佛罗里达州Ft. Lauderdale的Citrix Systems 公司出品的独立计算架构(ICA)协议或由位于华盛顿州Redmond的微软公司出品的远程桌面协议(RDP)。应用可使用任何类型的协议,并且它可为,例如,HTTP客户机、FTP客户机、 Oscar客户机或Telnet客户机。在其它实施例中,应用包括和VoIP通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。在一些实施例中,服务器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群38 作为一个应用来执行Citrix Systems Inc.的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微软公司开发的Microsoft Windows终端服务中的任何一个。在一个实施例中,该应用是位于佛罗里达州R)rt Lauderdale的Citrix Systems Inc.开发的ICA客户机。在其它实施例中,该应用包括由位于华盛顿州Redmond的Microsoft公司开发的远程桌面(RDP)客户机。另外,服务器106 可以运行一个应用,例如,其可以是提供电子邮件服务的应用服务器,例如由位于华盛顿州 Redmond 的 Microsoft 公司制造的 Microsoft Exchange, web 或 Internet 月艮务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括任一类型的所寄载的服务或产品,例如位于加利福尼亚州Santa Barbara的Citrix Online Division提供的 Go^ToMeeting ,位于加利福尼亚州Santa Clara的WebEx Inc.提供的WebEx ,或者位于华盛顿州 Redmond 的 Microsoft 公司提供的 Microsoft Office Live Meeting。示例设备架构图2A也示出设备200的示例实施例。仅通过示例来提供图2A的设备200的架构并且不意于以任一方式受限。设备200可包括任何类型和形式的计算装置100,例如上文结合图ID和IE所讨论的任何元件或部分。概括来讲,设备200具有用于经由网络104接收和/或传输通信的一个或多个网络堆栈^7A-267N和一个或多个网络端口 ^6A-266N。设备200还具有用于优化、加速或以其他方式改善经过设备200的任何网络业务量或通信的质量、操作或性能。设备200包括操作系统或在操作系统的控制之下。设备200的操作系统可以是任何类型和/或形式的Unix操作系统,尽管本发明并未这样限制。这样,设备200可以运行任何操作系统,如任何版本的Microsoft Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任何版本的Mac OS 、任何的嵌入式操作系统、任何的网络操作系统、任何的实时操作系统、任何的开放源操作系统、任何的专用操作系统、用于移动计算装置或网络装置的任何操作系统、或者能够运行在设备200上并执行此处所描述的操作的任何其它操作系统。设备200的操作系统分配、管理或以其他方式将可用的系统存储器分离到被称为内核或系统空间和用户或应用空间中。通常保留内核空间用于运行内核,所述内核包括任何设备驱动器,内核扩展或其他内核相关软件。就像本领域技术人员所知的,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200 的实施例,内核空间也包括与网络优化引擎250或其任何部分协同工作的多个网络服务或进程。另外,内核的实施例将依赖于通过设备200安装、配置或以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或以其他方式运行于用户模式的程序所使用的操作系统的存储区域或部分。用户模式应用不能直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或应用空间来执行或运行应用以及供应用户级程序、服务、进程和/或任务。设备200具有一个或多个网络端口沈6,用于通过网络104传输和接收数据。网络端口 266提供在计算装置和网络104或另一个装置100之间的物理和/或逻辑接口,用于传输和接收网络通信。网络端口 266的类型和形式取决于网络的类型和形式以及用于连接到网络的介质的类型。而且,网络端口 266和网络堆栈沈7的、为其供应的或者其使用的任何软件可运行在内核空间或用户空间。在一个实施例中,设备200具有一个网络堆栈沈7,例如基于TCP/IP的堆栈,用于在网络105上与客户机102和/或服务器106通信。在一个实施例中,网络堆栈267用于与诸如网络104第一网络以及第二网络104’通信。在又一个实施例中,设备200可具有两个或多个网络堆栈,例如第一网络堆栈和第二网络堆栈267N。第一网络堆栈可与第一网络端口联合使用以在第一网络104上通信。第二网络堆栈可与第二网络端口 联合使用以在第二网络104’上通信。在一个实施例中,网络堆栈267包括用于为由设备200产生的一个或多个网络分组进行排队的一个或多个缓冲器。网络堆栈267可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈267包括用于网络协议组的软件实现。网络堆栈267可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联 (OSI)通信模型的任何网络层。这样,网络堆栈267可包括用于下列OSI模型的任何一层的任何类型和形式的协议1)物理链路层;2)数据链路层;3)网络层;4)传输层;5)会话层);6)表示层,以及7)应用层。在一个实施例中,网络堆栈267可包括在互联网协议(IP) 的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在以太网协议上承载TCP/IP协议,所述以太网协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802. 3覆盖的这些协议。在一些实施例中,网络堆栈267包括任何类型和形式的无线协议,例如IEEE 802. 11和/或移动互联网协议。考虑到基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI) (email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统 (CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议 (WAP)、移动IP协议,以及IP语音(VoIP)协议。在又一个实施例中,网络堆栈267包括任何类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP (T/TCP),带有选择确认的TCP (TCP-SACK),带有大窗口的TCP (TCP-Lff),例如TCP-Vegas协议的拥塞预测协议, 以及TCP欺骗协议。在其他实施例中,网络堆栈267可使用诸如IP上UDP的任何类型和形式的用户数据报协议(UDP),例如用于语音通信或实时数据通信。另外,网络堆栈267可包括支持一个或多个层的一个或多个网络驱动器,例如TCP 驱动器或网络层驱动器。网络层驱动器可作为计算装置100的操作系统的一部分或者作为计算装置100的任何网络接口卡或其它网络访问组件的一部分被包括。在一些实施例中, 网络堆栈267的任何网络驱动器可被定制、修改或调整以提供支持此处描述的任何技术网络堆栈267的定制或修改部分。
在一个实施例中,设备200使用单个网络堆栈267来提供或维持在客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或控制在客户机和服务器之间的传输控制协议连接的行为来有效地终止传输层连接。在这些实施例中, 设备200可使用单个网络堆栈沈7。在其他实施例中,设备200终止第一传输层连接,例如客户机102的TCP连接,并建立客户机102使用的或代表客户机102的到服务器106的第二传输层连接,例如,终止在设备200和服务器106的第二传输层连接。可通过单个网络堆栈267建立第一和第二传输层连接。在其他实施例中,设备200可使用多个网络堆栈,例如 267A和^7N。在这些实施例中,在第一网络堆栈267k可建立或终止第一传输层连接,且在第二网络堆栈 7N可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和传输网络分组,并且另一个网络堆栈可用于在第二网络上接收和传输网络分组。如图2A所示,网络优化引擎250包括一个或多个下列元件、组件或模块网络分组处理引擎250、LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎 238、高速缓存管理器232和策略引擎四5’。网络优化引擎250或其任何部分可包括软件、 硬件或软件和硬件的任何组合。而且网络引擎250的、为其供应的或由其使用的任何软件可运行在内核空间或用户空间。例如,在一个实施例中,网络优化引擎250可运行在内核空间。在又一个实施例中,网络优化引擎250可运行在用户空间。在又一个实施例中,网络优化引擎250的第一部分可运行在内核空间而网络优化引擎250的第二部分可运行在用户空间。网络分组处理引擎网络分组引擎M0,通常也称为分组处理引擎,或分组引擎,负责控制和管理对由设备200通过网络端口 266和网络堆栈267接收和传输的分组的处理。网络分组引擎240 可操作在网络堆栈267的任一层。在一个实施例中,网络分组引擎240操作在网络堆栈沈7 的层2和层3.在一些实施例中,分组引擎240在网络层(例如,TCP/IP实施例中的IP层) 拦截或以其他方式接收分组。在又一个实施例中,分组引擎240操作在网络堆栈沈7的层 4。例如,在一些实施例中,分组引擎240在传输层拦截或以其他方式接收分组,例如在TCP/ IP实施例中的TCP层拦截分组。在其他实施例中,分组引擎240操作在层4之上的任何会话或应用层。例如,在一个实施例中,分组引擎240在传输层协议层之上拦截或以其他方式接收的网络分组,例如在TCP实施例中的TCP分组的有效载荷。分组引擎240可包括用于在例如接收网络分组或者传输网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,分组引擎240与一个或多个网络堆栈沈7通信以通过网络端口 266发送和接收网络分组。分组引擎240包括分组处理定时器。在一个实施例中,分组处理定时器提供一个或多个时间间隔以触发输入的(即,接收的)或输出的(即, 传输的)网络分组的处理。在一些实施例中,分组引擎240响应于定时器来处理网络分组。 分组处理定时器向分组引擎240提供任何类型和形式的信号以通知、触发或传输时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器以毫秒级操作,例如100ms、50ms、 25msλIOmsλ5ms 或 Ims0在操作期间,分组引擎240可与诸如LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎四5’的网络优化引擎250的任一部分接口、集成或通信。因此,可响应于分组处理定时器和/或分组引擎240来执行LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎 238、高速缓存管理器232和策略引擎四5’的任何逻辑、功能或操作。在一些实施例中,在由分组处理定时器提供的时间间隔粒度(例如,少于或等于IOms的时间间隔),可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩引擎238的任何逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可响应于集成分组引擎240和/或分组处理定时器242来执行任何高速缓存的对象的终止。在又一个实施例中,高速缓存的对象的终止或无效时间被设定为与分组处理定时器的时间间隔相同的粒度级,例如每10ms。高谏缓存管理器高速缓存管理器232可包括软件、硬件或软件和硬件的任何组合,以将数据、信息和对象存储到在存储器或存储中的高速缓存、提供高速缓存访问以及控制和管理高速缓存。由高速缓存管理器232处理和存储的数据、对象或内容可包括任何格式(例如标记语言)的数据,或者通过任何协议的通信的任何类型的数据。在一些实施例中,高速缓存管理器232复制存储在其他地方的原始数据或先前计算、生成或传输的数据,其中相对于读高速缓存存储器或存储元件,需要更长的访问时间以取得、计算或以其他方式得到原始数据。 一旦数据被存储在高速缓存中,通过访问高速缓存的副本而不是重新获得或重新计算原始数据即可进行后续操作,因此而减少了访问时间。在一些实施例中,高速缓存可以包括设备 200的存储器中的数据对象。在又一个实施例中,高速缓存可以包括设备200的任一类型和形式的存储元件,诸如硬盘的一部分。在一些实施例中,装置的处理单元可提供由高速缓存管理器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存储区或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。另外,高速缓存管理器232包括用于执行设备200的任何高速缓存技术的任何逻辑、功能、规则或操作。在一些实施例中,高速缓存管理器232可作为应用、库、程序、服务、 进程、线程或任务而操作。在一些实施例中,高速缓存管理器232可包括任何类型的通用处理器(GPP),或者任何其他类型的集成电路,例如现场可编程门阵列(FPGA),可编程逻辑设备(PLD),或者专用集成电路(ASIC)。策略引擎策略引擎四5’包括用于提供和应用一个或多个策略或规则到设备200的任一部分的功能、操作或配置的任何逻辑、功能或操作。策略引擎四5’可包括例如智能统计引擎或其它可编程应用。在一个实施例中,策略引擎四5’提供配置机制以允许用户识别、指定、 定义或配置用于网络优化引擎250或其任何部分的策略。例如,策略引擎四5’可提供用于缓存哪些数据、何时缓存该数据、为谁缓存该数据、何时终止高速缓存中的对象或刷新高速缓存的策略。在其他实施例中,除了对安全、网络业务量、网络访问、压缩或由设备200执行的任何其它功能或操作的访问、控制和管理之外,策略引擎236可包括任何逻辑、规则、功能或操作以确定和提供对设备200所高速缓存的对象、数据、或内容的访问、控制和管理。在一些实施例中,策略引擎四5’可基于下列的任何一个或多个来提供和应用一个或多个策略用户、客户机的标识、服务器的标识、连接的类型、连接的时间、网络的类型或网络业务量的内容。在一个实施例中,策略引擎四5’基于网络分组的任何协议层的字段或首部来提供和应用策略。在又一个实施例中,策略引擎四5’基于网络分组的任一有效载荷来提供和应用策略。例如,在一个实施例中,策略引擎四5’基于对被承载为传输层分组的有效载荷的应用层协议内容的特定部分的识别来应用策略。在又一个实施例中,策略引擎四5’基于由客户机、服务器或用户证书识别的任何信息来应用策略。在又一个实施例中,策略引擎四5’基于例如通过任何类型和形式的端点检测(参见下面所描述的客户机代理的收集代理示例)所获得的关于客户机102的任何属性或特征来应用策略。在一个实施例中,策略引擎四5’和应用传送系统四0的策略引擎295联合或协同工作。在一些实施例中,策略引擎四5’是应用传送系统四0的策略引擎四5的一个分布式的部分。在又一个实施例中,应用传送系统290的策略引擎295被部署于或执行在设备200 上。在一些实施例中,策略引擎四5、四5’都操作在设备200上。在又一个实施例中,设备 200的策略引擎四5’或其一部分操作在服务器106上。多协议和多层压缩引擎压缩引擎238包括用于压缩一个或多个协议的网络分组(例如由设备200的网络堆栈267使用的任何协议)的任何逻辑、商业规则、功能或操作。压缩引擎238也可被称为多协议压缩引擎238,这是由于其可以被设计、构建为或能够压缩多个协议。在一个实施例中,压缩引擎238使用对上下文不敏感的压缩,其可在不了解数据类型的情况下对数据进行压缩。在又一个实施例中,压缩引擎238使用对上下文敏感的压缩。在该实施例中,压缩引擎238利用数据类型的知识来从一系列合适的算法中选择特定的压缩算法。在一些实施例中,使用特定协议的知识来执行上下文敏感的压缩。在一个实施例中,设备200或压缩引擎238可使用端口号(例如,公知端口),以及来自连接本身的数据来确定要使用的合适的压缩算法。一些协议仅使用一种类型的数据,仅要求当连接建立时可被选择的单个压缩算法。其他协议在不同的时间包含不同类型的数据。例如,POP、IMSP、SMTP和HTTP都移动夹杂其他协议数据的任意类型的文件。在一个实施例中,压缩引擎238使用增量型压缩算法。在又一个实施例中,压缩引擎238使用首地点压缩以及搜索在高速缓存、存储器或盘中存储的数据间的重复模式。在一些实施例中,压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎238使用有损压缩算法。在一些情况下,数据类型的知识和有时来自用户的许可被要求使用有损压缩算法。压缩不限于协议的有效载荷。协议本身的控制字段也可以被压缩。在一些实施例中, 压缩引擎238使用与用于有效载荷的算法不同的算法。在一些实施例中,压缩引擎238在网络堆栈267的一个或多个层进行压缩。在一个实施例中,压缩引擎238在传输层协议处进行压缩。在又一个实施例中,压缩引擎238在应用层协议处进行压缩。在一些实施例中,压缩引擎238在层2-4协议处进行压缩。在其他实施例中,压缩引擎238在层5-7协议处进行压缩。在又一个实施例中,压缩引擎238压缩传输层协议和应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7协议。在一些实施例中,压缩引擎238使用基于存储器的压缩、基于高速缓存的压缩或基于盘的压缩或上述的任一组合。这样,压缩引擎238也可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用在存储器(例如RAM)中存储的数据历史。在又一个实施例中,压缩引擎238使用在高速缓存(例如处理器的L2高速缓存)中存储的数据历史。在其他实施例中,压缩引擎238使用存储到盘或存储单元的数据历史。在一些实施例中,压缩引擎238使用基于高速缓存的、基于存储器的和基于盘的数据历史的分层结构。压缩引擎238 可首先使用基于高速缓存的数据来确定用于压缩的一个或多个数据匹配,然后可检查基于存储器的数据以确定用于压缩的一个或多个数据匹配。在另一种情况下,压缩引擎238可在检查基于高速缓存的和/或基于存储器的数据历史之后检查盘存储来找出用于压缩的数据匹配。在一个实施例中,多协议压缩引擎238双向压缩在客户机102a-102n和服务器 106a-106n间任一基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(Cire)协议(文件传输)、 独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议以及 IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言 (HTML)的协议的压缩,并且在一些实施例中,提供任何标记语言的压缩,例如可扩展标记语言(XML)。在一个实施例中,多协议压缩引擎238提供任何高性能协议的压缩,例如设计用于设备200到设备200通信的任何协议。在又一个实施例中,多协议压缩引擎238使用修改的传输控制协议来压缩任何通信的任何载荷或任何通信,例如事务TCP(T/TCP)、带有选择确认的TCP (TCP-SACK)、带有大窗口的TCP (TCP-Lff)、诸如TCP-Vegas协议的拥塞预报协议以及 TCP 欺骗协议(TCP spoofing protocol)。同样的,多协议压缩引擎238为用户加速经由桌面客户机以及甚至移动客户机访问应用的性能。所述桌面客户机例如Micosoft Outlook和非web瘦客户机,例如由像 Oracle, SAP和Siebel的通用企业应用所启动的任何客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络堆栈267的分组处理引擎240集成,多协议压缩引擎能够压缩由传输层协议携带的任何协议,例如任何应用层协议。LAN/WAN 检测器LAN/WAN检测器238包括用于自动检测慢速侧连接(例如,诸如内部网的广域网 (WAN)连接)和关联端口沈7,以及快速侧连接(例如,局域网(LAN)连接)和关联端口 267 的任何逻辑、商业规则、功能或操作。在一些实施例中,LAN/WAN检测器238监控设备200 的网络端口 267上的网络业务量以便检测同步分组(有时被称为“加标记的”网络分组)。 同步分组识别网络业务量的类型或速度。在一个实施例中,同步分组识别WAN的速度或WAN 类型的连接。LAN/WAN检测器238也识别对加标记的同步分组的确认分组的接收以及其在哪个端口上被接收。接着,设备200将自身配置为操作所识别的、加标记的同步分组到达的端口以使得该端口上的速度被设置为与连接到该端口的网络相关联的速度。那么,另一个端口被设置为与连接到该端口的网络相关联的速度。为了此处讨论的方便,“快速”侧可参考关于与广域网(WAN)(例如,互联网)的连接,并且以该WAN的网络速度操作。类似地,“慢速”侧可参考关于与局域网(LAN)的连接并且以LAN的网络速度操作。然而,应指出网络的“快速”和“慢速”侧可以在每连接的基础上改变并且是对于网络连接的速度或者网络拓扑类型的相关术语。这样的配置可以用在复杂的网络拓扑中,其中网络仅在与相邻网络比较时是“快速”或“慢速”,而不是绝对的“快速” 或“慢速”。在一个实施例中,LAN/WAN检测器238可用于使设备200自动发现其所连接的网络。在又一个实施例中,LAN/WAN检测器238可用于检测在网络104中部署的第二设备200 ’的存在或在场。例如,根据图IA的操作中的自动发现机制起到以下作用将设备200和 200’置于与链接客户机102和服务器106的连接在一条线上。设备200和200’处于连接两个LAN的低速链路(例如,互联网)的端点处。在一个示例实施例中,设备200和200’ 各自包括两个端口,一个端口与“较低”速度的链路连接而另一个端口与“较高”速度的链路(例如,LAN)连接。到达一个端口的任一分组被复制到另一个端口。因此,设备200和 200’各自被配置为充当两个网络104之间的桥。当诸如客户机102的端节点打开与诸如服务器106的另一个端节点的新的TCP连接时,客户机102向服务器106发送具有同步(SYN)首部位组的TCP分组或SYN分组。在本例中,客户机102打开到服务器106的传输层连接。当SYN分组穿过设备200时,设备 200给该分组插入、附加或以其他方式提供特有的TCP首部选项,以宣告其存在。如果该分组穿过第二设备(在该示例中设备200’),第二设备记录该SYN分组中的首部选项。服务器106用同步确认(SYN-ACK)分组来响应该SYN分组。当SYN-ACK分组穿过设备200’时, TCP首部选项被标记(例如,附加、插入或添加)到该SYN-ACK分组以便向设备200宣告设备200’的存在。当设备200收到该分组时,设备200,200’此时互相察觉并且该连接可以被适当地加速。关于LAN/WAN检测器238的操作,描述了使用SYN分组来检测网络的“快速”侧和 “慢速”侧的方法或过程。在客户机102和服务器106之间建立传输层连接的期间,设备200 通过LAN/WAN检测器238确定SYN分组是否被加了确认(ACK)标记。如果其被加了标记, 设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前ACK标记从该分组删除。如果 LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。设备200接着给该SYN分组加上ACK标记并将该分组复制到另一个端□。 在又一个实施例中,LAN/WAN检测器238使用SYN-ACK分组来检测网络的快速侧和慢速侧。设备200通过LAN/WAN检测器238确定SYN-ACK分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前从该分组删除ACK标记。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。LAN/WAN检测器238确定SYN分组是否被加了标记。如果该SYN分组没有被加标记,那么设备200将该分组复制到另一个端口。如果该SYN分组被加了标记,那么该设备在将该分组拷贝到另一个端口之前给SYN-ACK分组加标记。设备200、200’可以添加、插入、修改、附加或以其他方式提供TCP选项首部中的任
何信息或数据,以提供关于网络连接、网络业务流或者设备200的配置或操作的任何信息、 数据或特征。在这种方式中,设备200不仅向另一个设备200’宣告其存在或者标记较高或较低速度的连接,该设备200还通过TCP选项首部提供关于该设备或该连接的其他信息和数据。TCP选项首部信息可能是对设备有用的或由设备用于控制、管理、优化、加速或改善经过设备200的网络业务流,或者以其他方式配置其自身或网络端口的操作。尽管通常LAN/WAN检测器238被结合检测网络连接的速度或设备的存在来描述,但LAN/WAN检测器238可被用于将设备200的任何类型的功能、逻辑或操作应用到网络业务量的端口、连接或流。更具体地,每当设备在不同的端口执行不同的功能时都可以自动分配端口,其中给任务分配端口可以在该单元操作期间,和/或每个端口的网络段的性质可被设备200发现。流控制 流控制器220包括用于优化、加速或以其他方式改善网络分组的传输层通信的性能、操作或服务质量或者在传输层的分组的发送的任何逻辑、商业规则、功能或操作。流控制器(有时也被称为流控制模块)调节、管理和控制数据传输速率。在一些实施例中,流控制器220被部署在或连接在网络104中的带宽瓶颈处。在一个实施例中,流控制器220有效地调节、管理和控制带宽的使用或利用。在其他实施例中,流控制模块也可以被部署在延迟转换(从低延迟到高延迟)的网络上的位置和具有介质损失的链路(例如无线或卫星链路)上的位置。在一些实施例中,流控制器220可包括用于控制网络传输的接收速率的接收器侧流控制模块和用于控制网络分组的传输速率的发送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧流控制模块并且第二流控制器220’包括发送器侧流控制模块。在一些实施例中,第一流控制器220被部署在第一设备200上并且第二流控制器220’ 被部署在第二设备200’上。同样,在一些实施例中,第一设备200控制接收器侧上的数据流而第二设备200'控制来自发送器侧的数据流。在又一个实施例中,单个设备200包括用于经过设备200的网络通信的接收器侧和发送器侧的流控制。在一个实施例中,配置流控制模块220以使瓶颈处的带宽被更充分地利用,以及在一些实施例中,配置流控制模块220以使瓶颈处的带宽不被过度利用。在一些实施例中, 流控制模块220透明地缓冲(或者重新缓冲例如发送器已经缓冲的数据)经过具有相关联的流控制模块220的节点间的网络会话。当会话经过两个或多个流控制模块220时,一个或多个流控制模块控制会话的速率。在一个实施例中,用有关瓶颈带宽的预定数据来配置流控制模块200。在又一个实施例中,流控制模块220可被配置为检测瓶颈带宽或与其关联的数据。与诸如TCP的传统网络协议不同,接收器侧流控制模块220控制数据传输速率。接收器侧流控制模块220 通过将传输速率限制转发到发送器侧流控制模块220来控制发送器侧流控制模块(例如, 220)的数据传输速率。在一个实施例中,接收器侧流控制模块220在由接收器(例如服务器106)向发送器(例如客户机102)发送的确认(ACK)分组(或信号)上捎带这些传输速率限制。接收器侧流控制模块220响应于由发送器侧流控制模块220'发送的速率控制请求来执行这一工作。可以在由发送器106发送的数据分组上捎带来自发送器侧流控制模块 220’的请求。在一些实施例中,流控制器220操纵、调整、模拟、改变、改进或以其他方式修改传输层协议的行为以便提供传输层的传送、数据速率和/或带宽利用的改善的性能或操作。 流控制器220可在传输层实现多个数据流控制技术,包括但不限于1)预确认,2)窗口虚拟化,3)重新拥塞技术,3)本地重传技术,4)波前检测和消除二义性,5)传输控制协议选择性确认,6)事务边界检测技术和7)重新分组。尽管此处通常将发送器描述为客户机102,将接收器描述为服务器106,但发送器可以是诸如网络104上任一计算装置100或者服务器106的任一端点。同样地,接收器可以是客户机102或者网络104上的任何其他计算装置。预确认 概括来讲预确认流控制技术,在一些实施例中,流控制器220处理确认并为发送器重传确认,有效地终止发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的,设备200在网络架构中的一个可能的部署。在该示例实施例中,发送计算机或者客户机102在网络104上例如经由交换机传输数据,其确定该数据发往VPN设备205。由于所选择的网络拓扑,发往VPN设备205的所有数据穿过设备200,使得设备200可以将任一必要的算法应用到该数据。进一步在该示例中,客户机102传输由设备200接收的分组。当设备200接收从客户机102向接收者传输的经过VPN设备205的分组时,设备200保留分组的副本并且将该分组向下游转发到VPN设备205。设备200接着生成确认分组(ACK)并且将ACK分组发送回客户机102或者发送端点。该ACK(即预确认)使发送器102相信分组已经被成功传输、释放发送器的资源用于后续的处理。在要求重传分组的事件中,设备200保留该分组的副本, 使得发送器102不必处理数据的重传。提前生成确认可以被称为“提前确认(preack)”。如果要求重传分组,设备200将分组重传到发送器。设备200可以确定当发送器处于传统系统中时是否需要重传,例如,在预定时间段之后对于该分组如果没有接收到确认则确定分组丢失。为此,设备200监控由例如服务器106 (或者任何其他下游网络实体) 的接收端点生成的确认,以便其可以确定是否已经成功传送分组或者需要重传分组。如果设备200确定分组已经被成功传送,则设备200能够自由地丢弃所保存的分组数据。设备 200还可以禁止转发对已经由发送端点接收的分组的确认。在上述实施例中,设备200经由流控制器220通过预确认(也称为“提取确认”) 的传送来控制发送器102,如同设备200是接收端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设备200包括用于给发送端点提供溢出控制的机制。如果没有溢出机制,设备200将耗尽存储器,因为设备200存储已经向发送端点提取确认的但还没有被确认为由接收端点接收的分组。因此,在发送器102传输分组到设备200快于设备200 向下游转发分组的情况下,设备200中可用于存储未被确认的分组数据的存储器将迅速填满。用于溢出控制的机制允许设备200控制来自发送器的分组的传输以避免该问题。在一个实施例中,设备200或者流控制器220包括固有的“自同步 (self-clocking)”溢出控制机制。该自同步归因于这样的顺序,其中设备200可以被设计为向下游传输分组并向发送器102或者106发送ACK。在一些实施例中,设备200直到其向下游传输分组后为才提前确认分组。以此方式,发送器102将以设备200能够传输分组的速率而不是以设备200从发送器100接收分组的速率来接收ACK。这有助于调节来自发送器102的分组的传输。窗口虚拟化设备200可以实现的另一个溢出控制机制是使用TCP窗口大小参数,其告知发送器接收器允许该发送器填满多少缓冲区。预确认中的非零窗口大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继续向设备传输数据,而零窗口大小禁止进一步的数据传输。相应地,设备200可以例如当设备200的缓冲区变满时通过适当地设置每一预确认中的TCP窗口大小来调节来自发送器的分组的流量。

另一项用来降低该附加开销的技术是应用滞后作用(hysteresis)。当设备200将数据传送到较慢侧时,设备299中的溢出控制机制可以在向发送器发送非零窗口通告之前要求可用的最小数量的空间。在一个实施例中,设备200在发送非零窗口分组(例如,四个分组的窗口大小)之前进行等待直到存在最小的预定数量的分组(诸如四个分组)的可用空间为止。由于对于四个数据分组的每个组仅发送两个ACK分组,而不是对于四个数据分组要发送八个ACK分组,因此这将开销降低到大约原来的四分之一。设备200或流控制器220可用于溢出控制的另一技术是TCP延迟ACK机制,其跳过 ACK来降低网络业务量。TCP延迟ACK自动延迟ACK的发送,直到接收到两个分组或直到发生固定的超时为止。该机制单独导致开销减半,而且,通过将分组的数量增加到两个以上, 降低了附加的开销。但是仅延迟ACK本身不足以控制溢出,并且设备200还可以使用在ACK 上的通告窗口机制来控制发送器。当这样做时,在一个实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。在一个实施例中,流控制器220不对一组分组的最后一个分组进行提取确认。通过不提取确认最后一个分组或者该组中分组的至少一个,设备避免对一组分组的错误确认。例如,如果设备将发送对最后一个分组的预确认而该分组随后丢失,那么发送器在分组没有被传送时已经欺骗认为其被传送。考虑到分组已被传送,发送器将丢弃该数据。如果设备也丢失该分组,那么不能将该分组重传到接收者。通过不对一组分组的最后一个分组进行提前确认,发送器直到该分组被传送时才将其丢弃。在又一个实施例中,流控制器220可以使用窗口虚拟化技术来控制网络连接的带宽利用或者流速。虽然根据检查诸如RFC1323的传统文献其可能不是直接明显的,但是用于诸如TCP的传输层协议的发送窗口是有效的。由于发送窗口消耗缓冲区空间(尽管在发送器上),所以发送窗口类似于接收窗口。发送器的发送窗口包括还没有被接收器确认的、 由应用发送的所有数据。在要求重传的情况下,必须在存储器中保留该数据。由于存储器是共享资源,所以一些TCP堆栈的实现限制了该数据的大小。当发送窗口满时,应用程序尝试发送更多的数据导致阻塞应用程序直到空间可用为止。随后接收的确认将释放发送窗口存储器并且不再阻塞应用程序。在一些实施例中,该窗口大小就是一些TCP实现中的套接字缓冲区大小。在一个实施例中,流控制模块220被配置为提供对增加的窗口(或缓冲区)大小的访问。该配置还可以被称为窗口虚拟化。在作为传输层协议的TCP的实施例中,TCP首部可以包括对应窗口比例(window scale)的位串。在一个实施例中,“窗口”可以在发送、 接收或二者的上下文中提及。窗口虚拟化的一个实施例是将预确认设备200插入到TCP会话中。参考图IA和 IB的任何一个环境,建立例如客户机102 (为讨论方便,现称为源节点102)的源节点与例如服务器106(为讨论方便,现称之为目标节点106)的目标节点之间数据通信会话的初始化。 对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。尽管具有例如16k字节的小缓冲区大小的端节点,但设备200经由流控制模块220提供窗口(或缓冲区)来允许提高会话内的数据缓冲能力。然而,RFC1323要求对大于 64k字节的任何缓冲区大小进行窗口缩放(window scaling),其必须在会话初始化(SYN、 SYN-ACK信号)时设置。此外,窗口缩放对应于数据路径中的最小公分母,经常是具有小的缓冲区大小的端节点。该窗口比例通常是0或1的比例,其对应于高达64k或者128k字节的缓冲区大小。注意到,由于窗口大小被限定为每一分组中的、随窗口比例改变的窗口字段,窗口比例建立缓冲区的上限,但并不保证该缓冲区实际上就那么大。每个分组在窗口字段中指示接收器处当前可用的缓冲区空间。在使用窗口虚拟化技术进行缩放的一个实施例中,在连接建立(即,会话初始化) 期间,当第一流控制模块220从源节点102接收SYN信号(或者分组)时,流控制模块220 源节点102(其是之前的节点)的窗口比例或者如果之前的节点的比例丢失则为窗口比例存储0。第一流控制模块220还在SYN-FCM信号中修改该比例,例如将该比例从0或者1增加到4。当第二流控制模块220接收 SYN信号时,其存储来自第一流控制信号的增加的比例并且将该SYN信号中的比例重置为源节点103的比例值以用于到目标节点106的传输。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其存储来自目标节点106 的比例(例如,0或1)的比例并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。 第一流控制节点220接收并且记录所接收的窗口比例并且将被发回源节点102的窗口比例修订为降回到初始比例(例如0或者1)。基于上面在连接建立期间的窗口变换对话,会话的每个后续分组(例如TCP分组)的中的窗口字段必须随窗口变换对话而改变。如上所述,窗口比例表示出大于64k的缓冲区大小,并且可以不需要窗口虚拟化。 因此,窗口比例的变换可以用于表示在每个流控制模块220中的增加的缓冲区容量。该缓冲区容量的增加可作为窗口(或缓冲区)虚拟化而被提及。该缓冲区大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲区大小典型地以字节表示, 但是为了讨论的方便,由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。通过举例描述由流控制器220执行的窗口(或缓存区)虚拟化。在该示例中,源节点102和目标节点106被配置为与具有16k字节的有限的缓存区容量的传统端节点相似,其大约等于10个数据分组。通常,端节点102、106在能够传输下一组分组之前必须进行等待,直到该分组被传输并且收到确认为止。在一个实施例中,使用在流控制模块220中的增加的缓冲区容量,当源节点103传输其数据分组时,第一流控制模块220接收该分组, 将该分组存储在其较大容量的缓存区(例如512个分组容量)中,并且立即将指示分组接收的确认信号(“REC-ACK”)发送回到源节点102。源节点102接着可以“刷新”其当前缓冲区,将10个新的数据分组载入到缓存区,并且将这些传输到第一流控制模块220上。再次,第一流控制模块220将REC-ACK信号发送回到源节点102,并且源节点102刷新其缓冲区并且对其载入10个更新的分组用于传输。当第一流控制模块220接收到来自源节点的数据分组时,其相应地将该数据分组载入到缓冲区中。当其准备好时,第一流控制模块220可以开始将数据分组传输到第二流控制模块230,其也具有增加的缓存区大小,例如以便接收512个分组。第二流控制模块 220’接收数据分组并且开始每次传输10个分组到目标节点106。在第二流控制节点220处接收的、来自目标节点106的每个REC-ACK致使又有10个分组被传输到目标节点106,直到所有的数据分组被传送为止。因此,本发明能够通过利用装置之间的流控制模块220、220’的较大的缓冲区来增加在源节点(发送器)102和目标节点(接收器)106之间的数据传输
吞吐量。注意到通过之前描述的“预 220、220’处于缺乏大窗口的节点(例如,源节点102或者目标节点106) 附近时,该技术是有效的。重新拥塞流控制器220的另一个技术或者算法被称为重新拥塞。众所周知标准的TCP拥塞避免算法在面对特定网络条件(包括大的RTT(往返时间)、高分组丢失率,以及其它)时性能低下。当设备200检测到诸如长的往返时间或者高的分组丢失的拥塞条件时,设备200 插入、代入更适合该特定网络调节的替代的拥塞避免算法。在一个实施例中,重新拥塞算法使用预确认来有效地终止发送器和接收器之间的连接。设备200接着使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算法可以依赖于TCP连接的特征。设备200 监控每个TCP连接,在不同的维度将其特征化,选择适合用于当前特征的重新拥塞算法。在一个实施例中,当检测到由往返时间(RTT)限制的TCP连接时,应用表现为多个 TCP连接的重新拥塞算法。每个TCP连接操作在其自身性能限度内,但是聚合带宽获得了更高的性能水平。该机制中的一个参数是所应用的并行连接的数量(N)。N值过大则连接束获得超过其合理份额的带宽。N值过小则连接束获得低于其合理份额的带宽。建立“N”的一个方法依赖于设备200监控实际连接的分组大小、RTT和分组丢失率。将这些数字插入 TCP响应曲线方程来提供本配置中单个TCP连接的性能的上限。如果连接束中每个连接正获得与计算出的上限性能基本相同的性能,则应用额外的并行连接。如果当前束正获得低于上限的性能,则减少并行连接的数量。依次方式,由于单独的连接束包含的并行性不比消除协议自身所强加的限制所需的并行性更多,所以维持了系统的整体公平性。进一步,每个单独的连接保留TCP兼容性。建立“N”的另一个方法是使用并行流控制算法,例如TCP “Vegas”算法或者其改进版本“稳定的Vegas”。在该方法中,与连接束中的连接相关联的网络信息(例如,RTT、丢失率、平均分组大小等等)被聚集并且被应用到替代的流控制算法。该算法的结果进而被分布到控制其数量(即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP拥塞避免算法。在又一个实施例中,并行束中的单独的连接被虚拟化,即不建立实际的单独的TCP 连接。事实上拥塞避免算法被修改为表现得就好像存在N个并行连接一样。该方法的优点在于对于经过多个网络节点而言就如同单个连接一样。因此重新拥塞算法不影响这些节点的Q0S、安全性和其他监控方法。在又一个实施例中,并行束中的单独的连接是真实存在的, 即独立的。为束中的并行连接的每一个建立TCP连接。不必修改用于每个TCP连接的拥塞避免算法。m^在一些实施例中,流控制器220可以使用本地重传技术。实施预确认的一个原因是为经过高损的链路(例如无线)作准备。在这些实施例中,预确认设备200或者流控制模块220最好位于无线链路“之前”。这使得要进行的重传更接近于高损链路,免去了网络的剩余部分的重传负担。设备200可提供本地重传,在这种情形中,由于链路错误而丢弃的分组由设备200直接重传。由于这消除了在端节点(诸如服务器106)和任一网络104的基础设施上的重传负担,所以这是有益的。利用设备200提供本地重传,丢弃的分组可以被重传通过高损链路而不必由端节点重传且不会引起端节点的数据传输率的对应下降。实施预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,即使是成功接收传输中的较大百分比的分组,但仍存在多种情况导致RT0。使用标准TCP算法,在一个RTT窗口中丢弃不只一个分组有可能会导致超时。此外,如果重传的分组被丢弃,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组丢失率也会导致频繁的重传超时(RTO)。在一个实施例中,设备200使用重传和超时算法来避免过早的 RTO0设备200或者流控制器220基于每一分组来维持重传的计数。每传输一个分组,将计数加一,然后设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传预定的次数后才宣告RT0。
波前检测和消除二义件在一些实施例中,设备200或者流控制器220在管理和控制网络业务流中使用波前检测和消除二义性技术。在该技术中,流控制器220使用传输标识符或者号码来确定是否需要重传特定数据分组。举例来说,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例与一个传输号码相关联。可以理解,分组的传输号码与分组的序列号不相同,因为序列号标记分组中的数据,而传输号码标记该数据的传输的实例。传输号码可以是对于该目的可用的任意信息,包括与分组相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。因为数据段可以被重传,所以不同的传输号码可以与特定的序列号相关联。由于发送器传输数据分组,所以发送器保持被确认的数据分组传输的实例的数据结构。数据分组传输的每个实例由其序列号和传输号码标记。通过保持对于每个分组的传输号码,发送器保留数据分组的传输顺序。当发送器接收到ACK或者SACK时,发送器确定与接收器(在所接收的确认中)指示的已经接收的分组相关联的最高的传输号码。具有较低传输号码的任何未完成的未经确认的分组被假设为已丢失。在一些实施例中,当到达分组已经被重传时,发送器呈现出模糊的情形标准的 ACK/SACK没有包含足够的信息来使发送器确定该到达分组的哪个传输触发了该确认。从而,在接收到模糊确认之后,发送器消除该确认二义性以将其与传输号码相关联。在不同的实施例中,多个技术的其中之一或者组合可以被用来解决该模糊性。在一个实施例中,发送器在所传输的数据分组中包含标识符,然后,接收器在确认中返回该标识符或者该标识符的函数。该标识符可以是时间戳(例如在RFC1323中描述的 TCP时间戳)、序列号、可以被用来在分组传输的两个或多个实例之间进行解析的任何其他信息。在TCP时间戳选项被用来消除确认的二义性的实施例中,使用高达32位唯一的信息来标记每个分组。接收到数据分组时,接收器通过确认将该唯一信息回送到发送器。发送器确保最初发送的分组和其重传的一个或者多个版本包含对于时间戳选项的不同值,这允许其明确地消除ACK的模糊性。发送器可以将该唯一信息保持在例如用来保存所发送的数据分组的状态的数据结构中。由于该技术与工业标准相兼容并且因此很少或不会遇到互操作性的问题,所以该技术是有益的。然而,该技术在一些实现中可能要求十个字节的TCP首部空间,这降低了网络上有效吞吐率并且减少了可用于其他TCP选项的空间。在又一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP 时间戳选项相似的方式来消除二义性。发送器安排该分组的最初和重传版本的ID字段值, 以使在IP首部中具有不同的ID字段。在接收器或其代理装置接收到数据分组时,接收器将ACK分组的ID字段设置为触发该ACK的分组的ID字段的函数。由于该方法不需要发送额外的数据,保持了网络和TCP首部空间的效率,所以该方法是有益的。所选择的函数应有极大可能消除二义性。在优先实施例中,发送器选择IP ID值且将最高有效位设置为0。当接收器响应时,IP ID值被设置为相同的IP ID值,且最高有效位被设为1。在另一个实施例中,与非模糊性确认相关联的传输号码被用来消除模糊确认的二义性。该技术基于这样的原理由于两个分组在时间上更接近地传输,则对于这两个分组的确认将倾向于时间上更接近地接收。由于对于未被重传的分组所接收的确认可容易地与传输号码相关联,所以这样的分组不会导致模糊性。因此,可以将这些已知的传输号码与所接收的在时间上接近于已知确认的模糊确认的可能的传输号码相比较。发送器将模糊确认的传输号码与最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到对数据分组1的确认并且最后所接收的确认是针对数据分组 5,那么发送器通过假设数据分组1的第三个实例导致了该确认来解决该模糊性。

诜择件确认设备200或者流控制器220的另一项技术是实现传输控制协议选择性确认或TCP SACK的实施例以确定已经收到哪些分组或没有收到哪些分组。该技术允许发送器明确地确定已经由接收器收到的分组的列表以及没有收到的分组的精确的列表。可以通过修改发送器和/或接收器或者通过将发送器侧和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图IA或者1B,发送器(例如客户机102)被配置为通过网络104向接收器(例如服务器106)传输数据分组。作为响应,接收器将被称为SACK 分组的TCP选择性确认选项返回给发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持包含接收器实际已收到的数据分组的序列号的一组范围的列表或者其他适合的数据结构。在一些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放弃的(left-ofT)指针,其包括对列表的引用并且指示从之前生成的SACK分组的放弃点。当接收到数据分组时,接收器生成SACK分组并将其传输回到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保留序列号的范围来指示一组已接收的数据分组。接收器用包括触发SACK分组的正在到达(landing)分组的序列号的范围来填充该 SACK分组的第一字段。剩余可用的SACK字段用已收到的分组的列表的序列号的范围来填充。当该列表中的范围超过可以被载入SACK分组的范围时,接收器使用放弃指针来确定哪个范围被载入SACK分组。接收器从有序的列表连续插入SACK范围,从指针引用的范围开始并且沿列表持续向下,直到消耗完SACK分组的TCP首部中的可用的SACK范围空间。如果到达末端,则接收器环绕到列表的开始。在一些实施例中,两个或三个附加的SACK范围可以被添加到SACK范围信息。一旦接收器生成SACK分组,接收器将确认发送会发送器。然后,接收器在列表中将放弃的指针前进一个或者多个SACK范围项。例如,如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个SACK范围。当所推进的放弃的指针到达列表的末端,则指针被重置为列表的开始,从而有效地环绕已知所接收范围的列表,环绕该列表使得系统甚至能在SACK分组大量丢失的情况下良好地运行,这是由于一旦列表被环绕,则由于丢失的 SACK分组导致的未被通信的SACK信息将最终被通信。 因此可以理解,SACK分组可以通信关于接收器的情况的多个细节。首先,SACK分组指示在SACK分组生成时接收器刚刚收到该SACK信息的第一字段中的数据分组。其次, SACK信息的第二和随后的字段指示接收器已经收到这些范围中的数据分组。SACK信息还暗示接收器在SACK分组生成时没有接收落入SACK信息的第二和随后的字段之间的任何一个数据分组。本质上,SACK信息中的第二和随后的字段之间的范围是所接收的数据中的 “孔”,其中的数据是已知的未被传送的数据。因此,使用该方法,当SACK分组具有足够空间来包括多余两个的SACK范围时,接收器可以向发送器指示还没有被接收器接收的数据分组的范围。在另一个实施例中,发送器使用上述的SACK分组结合上述重传技术来假定哪些数据分组已经被传送到接收器。例如,当重传算法(使用传输号码)宣告分组丢失时,发送器认为该分组仅是条件性丢失,因为有可能是识别该分组的接收的SACK分组丢失,而不是数据分组本身丢失。发送器因此将该分组添加到潜在丢失的分组的列表,称之为假定丢失的列表。每当SACK分组到达,将来自SACK分组的数据的已知丢失范围和假定丢失列表中的分组相比较。包括已知丢失的数据分组被宣告实际丢失并被随后重传。以此方式,组合这两个方案来将更好的关于已丢失且需要重传哪些分组的信息给予发送器。事务边界检测在一些实施例中,设备200或流控制器220使用被称为事务边界检测的技术。在一个实施例中,该技术适合于乒乓(ping-pong)表现的连接。在TCP层,乒乓行为是当一个通信器(发送器)发送数据然后等待来自另一个通信器(接收器)的响应。乒乓行为的例子包括远程程序调用、HTTP和其他。以上描述的算法使用重传超时来从与事务相关的最后的一个分组或多个的丢弃进行恢复。由于在一些实施例中,TCP RTO机制极端粗略,例如在所有情况中要求最小1秒的值,在这些情况下可以看到差的应用行为。在一个实施例中,数据的发送器或耦合到发送器的流控制模块220检测所发送的数据中的事务边界。在检测到事务边界时,发送器或者流控制器220发送额外的分组,额外的分组的接收从接收器生成额外的ACK或者SACK响应。额外的分组的插入优选地限于改善的应用响应时间和网络能力利用之间的平衡。所插入的额外的分组的数量可以根据与该连接相关联的当前丢失率来进行选择,对于较高的丢失率的连接选择更多的分组。检测事务边界的一个方法是基于时间的。如果发送器已经发送数据并停止,则在一段时间之后发送器或流控制模块220宣告事务边界。这可以和其他技术相结合。例如,由发送器在TCP首部中设置PSH(TCP推送)位可以指示事务边界。因此,将基于时间的方法和这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在另一个技术中, 如果发送器或者流控制模块220理解应用协议,其可以解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于任一基于时间的机制使用此最后的行为。响应于检测事务边界,发送器或流控制模块220向接收器传输额外的数据分组以便从接收器引发确认。因此,额外的数据分组应该使得接收器将响应于接收数据分组来至少产生ACK或SACK。在一个实施例中,简单地重传事务的最后一个或多个分组。相比于仅发送虚拟的数据分组,如果最后一个或多个分组已经被丢弃,这就具有重传所需数据的增加的益处。在又一个实施例中,发送最后一个或多个分组的片段,允许发送器来消除来自于其最初分组的这些分组到来的二义性。这使接收器避免错误的混淆任意重新排序自适应算法。在又一个实施例中,任意数量的公知的前向纠错技术可被用来为所插入的分组生成额外的数据,这允许重新构造接收器处丢失的或以其他方式错过的数据。 在一些实施例中,当对事务中的最后的数据分组的确认被丢弃时,此处描述的边界检测技术有助于避免超时。当发送器或流控制模块220接收对于这些额外的数据分组的确认时,发送器可以从这些额外的确认来确定最后的数据分组是否已经被接收或这需要被重传,从而避免超时。在一个实施例中,如果最后的分组已经被接收但是它们的确认被丢弃,则流控制模块220生成对该数据分组的确认,并且将该确认发送到发送器,从而告知发送器该数据分组已经被传送。在又一个实施例中,如果没有收到最后的分组,则流控制模块 220向发送器发送一个分组来使发送器重传丢弃的数据分组。重新分组在又一个实施例中,设备200或流控制器220使用重新分组技术来改善传输层网络业务流。在一些实施例中,TCP性能和分组大小成比例。因此增加分组大小能改进性能, 除非其引起大大增加的分组丢失率或其他非线性效应,例如IP分片。通常,有线介质(诸如铜缆或光纤)具有极低的误码率,低到可以忽略不计。对于这些介质,在分片发生之前, 最大化分组大小是有益的(通过底层传输介质的协议来限制最大化的分组大小)。但是对于具有较高丢失率的传输介质(例如,诸如WiFi等的无线技术,或者诸如电力线网络等高损环境),增加分组大小可能导致较低的传输率,因为介质引发的错误导致整个分组被丢弃 (即,介质引发的错误超过对于该介质的标准纠错码的能力),从而增加了分组丢失率。分组丢失率中的显著大的增加实际上否定了增加的分组大小的任何性能益处。在一些情况中,对于TCP端点来选择最优的分组大小可能是困难的。例如,最优的分组大小可以根据每个链路的性质在传输路径时发生变化。通过将设备200或流控制模块220插入到传输路径中,流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在一个实施例中,设备200或流控制器220将具有连续数据的分组重新分组为少量的较大分组。在又一个实施例中,设备200或流控制器220通过将一系列大分组分为大量的较小的分组来对分组进行重新分组。在其他实施例中,设备200或流控制器220监控链路特征并且通过重新组合来调整分组大小以提高吞吐量。QoS仍参考图2A,在一些实施例中,流控制器220可以包括QoS引擎236,(也被称为 QoS控制器)。在又一个实施例中,例如,设备200和/或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。QoS引擎236包括用于执行改善任何网络连接的性能、 操作或服务质量的一个或多个服务质量(QoS)技术的任何逻辑、商业规则、功能或操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或连接提供不同优先级的网络业务量控制和管理机制。在其他实施例中,QoS引擎236为用户、应用、数据流或连接控制、 维持或确保特定水平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定部分的带宽或网络容量。在一些实施例中,QoS引擎236监控对应于用户、应用、数据流或连接的性能或服务质量的所达到的水平,例如数据速率和延迟。响应于监控,QoS引擎236动态地控制或调整网络分组的调度优先级来获得期望水平的性能或服务质量。在一些实施例中,QoS引擎236根据一个或多个类别或等级的服务来优先排序、调度和传输网络分组。在一些实施例中,服务类别或等级可以包括1)尽最大努力,2)控制的负载,3)有保证的或者4)定性的。对于尽最大努力类的服务,设备200作出合理的努力来传送分组(标准服务水平)。对于控制的负载类的服务,设备200或QoS引擎236近似传输介质的标准 的分组错误丢失或者近似轻度负载网络条件下的尽最大努力服务的行为。对于有保证类的服务,设备200或QoS引擎236保证来在连接期间以确定的速率传输数据的能力。对于定性类的服务,设备200或QoS引擎236将定性类服务用于要求或期望优先排序的业务量的应用、用户、数据流或者连接,但不能对资源需求或服务水平进行定量。在这些情况中,设备200或QoS引擎236基于QoS引擎236的任意逻辑或配置或者基于商业规则或策略来确定服务类别或优先级。例如,在一个实施例中,QoS引擎236根据策略引擎295、 295’指定的一个或多个策略来优先排序、调度和传输网络分组。协议加谏协议加速器234包括用于优化、加速或以其他方式改善一个或多个协议的性能、 操作或服务质量的任何逻辑、商业规则、功能或操作。在一个实施例中,协议加速器234在网络堆栈的层5-7的加速任何应用层协议。在其他实施例中,协议加速器234加速传输层或者层4协议。在一个实施例中,协议加速器234加速层2或层3的协议。在一些实施例中,协议加速器234被配置、构建或设计来根据数据类型、协议的特征和/或行为来优化或加速一个或多个协议的每一个。在又一个实施例中,协议加速器234被配置、构建或设计来改善用户体验、响应时间、网络或者计算机负载,和/或关于协议的网络或带宽利用。在一个实施例中,协议加速器234被配置、构建或设计来最小化文件系统访问上的WAN延迟的影响。在一些实施例中,协议加速器234优化或加速CIFS (通用互联网文件系统)协议的使用来改善文件系统访问时间或对数据和文件的访问时间。在一些实施例中, 协议加速器234优化或加速NFS(网络文件系统)协议的使用。在又一个实施例中,协议加速器234优化或加速文件传输协议(FTP)的使用。在一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载为有效载荷的或使用任何类型和形式的标记语言的协议。在其他实施例中,协议加速器234被配置、构建或设计来优化或加速超文本传输协议(HTTP)。在又一个实施例中,协议加速器234 被配置、构建或设计来优化或加速承载有效载荷或以其他方式使用XML (可扩展标记语言) 的协议。透明并且多点部署配置在一些实施例中,设备200和/或网络优化引擎250对于通过诸如WAN链路的网络连接或链路的任何数据流是透明的。在一个实施例中,设备200和/或网络优化引擎250 以这样的方式操作通过WAN的数据流是由任何网络监控、QoS管理或网络分析工具可识别的。在一些实施例中,设备200和/或网络优化引擎250不创建用于传输可以隐藏、遮掩或以其他方式使网络业务量不透明的数据的任何隧道或流。在其他实施例中,设备200透明地操作,因为设备不改变网络分组的任何源和/或目标地址信息或端口信息,诸如互联网协议地址或端口号。在其他实施例中,设备200和/或网络优化引擎250被认为对于网络架构中的网络、应用、客户机、服务器或其他设备或计算装置透明地操作或运转。也就是在一些实施例中,设备是透明的,因为不必修改网络上的任何装置或设备的网络相关配置来支持设备200。可以下面的部署配置的任何一个来部署设备200 1)串行业务量,2)代理模式,3) 虚拟串行模式。在一些实施例中,设备200可以与以下的一个或多个串行部署路由器、客户机、服务器或者另一个网络装置或设备。在其他实施例中,设备200可以与以下的一个或多个并行部署路由器、客户机、服务器或者另一个网络装置或设备。在并行部署中,路由器、客户机、服务器或者其他网络设备可以被配置为转发、转换或通过网络至设备200或者经由设备200转发、转换或通过网络。在串行的实施例中,设备200与路由器的WAN串行部署。以此方式,来自WAN的所有业务量在到达LAN的目的地之前穿过该设备。在代理模式的实施例中,设备200被部署为客户机和服务器之间的代理装置。在一些实施例中,设备200使客户机与网络上的资源间接连接。例如,客户机经由设备200连接到资源,并且设备通过连接到该资源、不同的资源、或者通过从高速缓存供应该资源来提供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或者服务器响应,诸如对于此处所讨论的任何优化技术。在其他实施例中,设备200通过透明地拦截并转发到客户机和/或服务器的请求和响应来作为透明代理运行。不使用客户机侧配置,设备200可以将客户机请求重定向到不同的服务器或网络。在一些实施例中,设备200可以在穿过该设备的任何网络业务量上执行任何类型和形式的网络地址转换(被称为NAT)。在一些实施例中,设备200以虚拟串行模式配置来部署。在该实施例中,具有路由或转换功能的路由器或网络装置被配置为转发、路由或以其他方式提供发往网络或设备 200的网络分组。设备200接着在该网络分组上执行任一期望的处理,诸如此处讨论的任一 WAN优化技术。当完成处理时,设备200将经处理的网络分组转发到路由器以传输到网络上的目的地。以此方式,设备200可以并行耦合到路由器,但仍如同设备200串行一样操作。该部署模式还提供透明性,因为当分组被处理并经由设备通过网络传输时,保留了源和目标地址以及端口信息。端节点部署尽管在上文网络优化引擎250总是结合设备200来描述,但是网络优化引擎250 或其任何部分可以被部署、分布或以其他方式操作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或服务器可以提供此处所描述的结合一个或多个设备200或者不结合设备200的网络优化引擎250的任何系统和方法。现参考图2B,描述部署在一个或多个端节点的网络优化引擎250的示例实施例。 总的来说,客户机102可以包括第一网络优化引擎250’并且服务器106可以包括第二网络优化引擎2 50”。客户机102和服务器106可以建立传输层连接并且交换穿过或不穿过设备 200的通信。在一个实施例中,客户机102的网络优化引擎250’执行此处描述的技术来优化、 加速或以其他方式改善与服务器106通信的网络业务量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络业务量的性能、操作或服务质量。在一些实施例中,客户机102的网络优化引擎250’和服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或以其他方式改善在客户机102与服务器106之间通信的网络业务量的性能、操作或服务质量。在又一个实施例中,客户机102的网络优化引擎250’结合设备200执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络业务量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250”结合设备200执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络业务量的性能、操作或服务质量。C、客户机代理现参考图3,描述客户机代理120的实施例。客户机102包括客户机代理120,用于经由网络104与设备200、设备205和/或服务器106来建立、交换、管理和控制通信。在一些实施例中,客户机120 (其也可以被称为WAN客户机)加速WAN网络通信和/或用于通过网络设备200通信。总的来说,客户机102在计算装置100上操作,该计算装置100拥有带有内核模式302以及用户模式303的操作系统,以及带有一个或多个层310a-310b的网络堆栈沈7。客户机102可以已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可通过网络堆栈267与网络104通信。所述应用之一,诸如web浏览器,也可包括第一程序322。例如,可在一些实施例中使用第一程序322来安装和/或执行客户机代理 120,或其中任何部分。客户机代理120包括拦截机制或者拦截器350,用于从网络堆栈267 拦截来自一个或者多个应用的网络通信。与设备200 —样,客户机102具有网络堆栈沈7,其包括任何类型和形式的软件、或硬件或其组合,用于提供与网络104的连接和通信。客户机102的网络堆栈267包括上文结合设备200所描述的任何一个网络堆栈实施例。在一些实施例中,客户机代理120或其任何部分被设计和构建为与由客户机102的操作系统安装或以其他方式提供的网络堆栈267
一起操作或联合工作。在进一步的细节中,客户机102或设备200 (20 的网络堆栈267可包括任何类型和形式的接口,用于接收、获得、提供或以其它方式访问与客户机102的网络通信相关的任何信息和数据。在一个实施例中,与网络堆栈267的接口包括应用编程接口(API)。接口也可包括任何函数调用、钩子或过滤机制,事件或回调机制、或任何类型的接口技术。网络堆栈267通过接口可接收或提供与网络堆栈267的功能或操作相关的任何类型和形式的数据结构,例如对象。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、引用或识别在网络堆栈267的协议层处理的网络分组的一部分,例如传输层的网络分组。在一些实施例中,数据结构325包括内核级别数据结构,而在其他实施例中,数据结构325包括用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分、或者运行在内核模式302中的网络驱动程序或其它软件相关的数据结构、或者由运行或操作在操作系统的内核模式的服务、进程、任务、线程或其它可执行指令获得或收到的任何数据结构。此外,网络堆栈267的一些部分可在内核模式302执行或操作,例如,数据链路或网络层,而其他部分在用户模式303执行或操作,例如网络堆栈267的应用层。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈267的用户模式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可包括网络堆栈267的一个或多个更上层,例如层5-7的任何层。在其它实施例中,网络堆栈267的第二部分310b包括一个或多个较低的层,例如层1-4的任何层。网络堆栈267的第一部分 310a和第二部分310b的每一个可包括网络堆栈267的任何部分,位于任何一个或多个网络层,处于用户模式203、内核模式202,或其组合,或在网络层的任何部分或者到网络层的接口点,或用户模式203和内核模式202的任何部分或到用户模式203和内核模式202的接口点。拦截器350可以包括软件、硬件、或者软件和硬件的任何组合。在一个实施例中, 拦截器350在网络堆栈267的任一点拦截或以其他方式接收网络通信,并且重定向或者传输网络通信到由拦截器350或者客户机代理120所期望的、管理的或者控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈267的网络通信并且传输该网络通信到设备 200,用于在第二网络104上传输。在一些实施例中,拦截器350包括驱动器或是驱动器,例如被构建和设计来与网络堆栈267对接并一同工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350操作在网络堆栈267的一个或者多个层,诸如在传输层。在一个实施例中,拦截器350包括过滤器驱动器、钩子机制、或者连接到网络堆栈的传输层的任一形式和类型的合适网络驱动器接口,诸如通过传输驱动器接口(TDI)。在一些实施例中,拦截器350连接到诸如传输层的第一协议层和诸如传输协议层之上的任何层的另一个协议层,例如,应用协议层。在一个实施例中,拦截器350可以包括遵守网络驱动器接口规范(NDIQ的驱动器,或者NDIS驱动器。在又一个实施例中,拦截器350可以包括微型过滤器或者微端口驱动器。在一个实施例中,拦截器350或其部分在内核模式202中操作。在又一个实施例中,拦截器350或其部分在用户模式203中操作。在一些实施例中,拦截器350 的一部分在内核模式202中操作,而拦截器350的另一部分在用户模式203中操作。在其它实施例中,客户机代理120在用户模式203操作,但通过拦截器350连接到内核模式驱动器、进程、服务、任务或者操作系统的部分,诸如以获取内核级数据结构225。在其它实施例中,拦截器350为用户模式应用或者程序,诸如应用。在一个实施例中,拦截器350拦截或接收任何的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以设置目的地信息,诸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350 把该连接的目的地信息设置为客户机代理120监听的客户机102的本地IP地址和端口。例如,客户机代理120可以包括为重定向的传输层通信监听本地IP地址和端口的代理服务。 在一些实施例中,客户机代理120随后将重定向的传输层通信传送到设备200。在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在又一个实施例中,拦截器发送所拦截的DNS 请求到设备200以进行DNS解析。在一个实施例中,设备200解析DNS请求并且将DNS响应传送到客户机代理120。在一些实施例中,设备200经另一个设备200’或者DNS服务器 106来解析DNS请求。在又一个实施例中,客户机代理120可以包括两个代理120和120’。在一个实施例中,第一代理120可以包括在网络堆栈沈7的网络层操作的拦截器350。在一些实施例中,第一代理120拦截网络层请求,诸如互联网控制消息协议(ICMP)请求(例如,查验和跟踪路由)。在其它实施例中,第二代理120’可以在传输层操作并且拦截传输层通信。在一些实施例中,第一代理120在网络堆栈210的一层拦截通信并且与第二代理120’对接或者将所拦截的通信传送到第二代理120’。客户机代理120和/或拦截器350可以以对网络堆栈267的任何其它协议层透明的方式在协议层操作或与之对接。例如,在一个实施例中,拦截器350可以以对诸如网络层的传输层之下的任何协议层和诸如会话、表示或应用层协议的传输层之上的任何协议层透明的方式在网络堆栈267的传输层操作或与之对接。这允许网络堆栈267的其它协议层如所期望的进行操作并无需修改以使用拦截器350。这样,客户机代理120和/或拦截器350 可以与传输层对接以安全、优化、加速、路由或者负载平衡经由传输层承载的任一协议提供的任一通信,诸如TCP/IP上的任一应用层协议。此外,客户机代理120和/或拦截器可以以对任何应用、客户机102的用户、客户机102和/或与客户机102通信的诸如服务器或设备200、206的任何其它计算装置100透明的方式在网络堆栈267上操作或与之对接。客户机代理120和/或拦截器350可以以无需修改应用的方式被安装和/或执行在客户机102上。在一个实施例中,客户机代理120 或其任何部分被以对客户机102、设备200、205或服务器106的任何网络配置透明的方式被安装和/或执行。在一些实施例中,客户机代理120或其任何部分被以无需修改客户机 102、设备200、205或服务器106的任何网络配置的方式被安装和/或执行。在一个实施例中,客户机102的用户或者与客户机102通信的计算装置未意识到客户机代理120或其任何部分的存在、执行或者操作。同样,在一些实施例中,相对于应用、客户机102的用户、客户机102、诸如服务器或设备200、205的另一个计算装置、或者在由拦截器350连接的协议层之上和/或之下的任何协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器;350。客户机代理120包括流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250和/或加速程序302。在一个实施例中,客户机代理120包括由佛罗里达州R)rt Lauderdale的Citrix Systems公司开发的独立计算架构(ICA)客户机或其任一部分,并且也被称为ICA客户机。在一些实施例中,客户机代理120包括应用流客户机306,用于从服务器106流式传输应用到客户机102。在又一个实施例中,客户机代理120包括收集代理 304,用于执行端点检测/扫描并且用于为设备200和/或服务器106收集端点信息。在一些实施例中,客户机代理120具有一个或多个网络加速或优化程序或代理,例如网络优化引擎250和加速程序302。在一个实施例中,加速程序302加速客户机102和服务器106之间的经过设备205’的通信。在一些实施例中,网络优化引擎250提供此处所讨论的WAN优化技术。流客户机306是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、 进程、服务、任务或者可执行指令集用于接收和执行从服务器106所流式传输的应用。服务器106可以流式传输一个或者多个应用数据文件到流客户机306,用于播放、执行或者以其它方式引起客户机102上的应用被执行。在一些实施例中,服务器106发送一组压缩或者打包的应用数据文件到流客户机306。在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它档案文件。在一个实施例中,服务器106解压缩、解包或者解档应用文件并且将该文件发送到客户机102。在又一个实施例中,客户机102解压缩、解包或者解档应用文件。流客户机306动态安装应用或其部分,并且执行该应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以能够启动另一个可执行程序。收集代理304是用于识别、获取和/或收集关于客户机102的信息的应用、程序、 进程、服务、任务或者可执行指令集。在一些实施例中,设备200发送收集代理304到客户机102或者客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送在客户机102上收集的信息到设备200。在一个实施例中,设备200的策略引擎236使用所收集的信息来确定和提供客户机到网络104 的连接的访问、验证和授权控制。在一个实施例中,收集代理304包括端点检测和扫描机制,其识别并且确定客户机的一个或者多个属性或者特征。例如,收集代理304可以识别和确定任何一个或多个以下的客户机侧属性1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和幻文件。收集代理304还可以识别并确定客户机上任何一个或多个以下软件的存在或版本1)防病毒软件;幻个人防火墙软件;3)防垃圾邮件软件,和4) 互联网安全软件。策略引擎236可以具有基于客户机或客户机侧属性的任何一个或多个属性或特性的一个或多个策略。SSL VPN代理308是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于建立从第一网络104到第二网络104’、104”的安全套接字层(SSL)虚拟专用网(VPN)连接,或从客户机102到服务器106的SSL VPN连接。在一个实施例中,SSLVPN代理308建立从公共网104到专用网104,或104”的SSL VPN 连接。在一些实施例中,SSL VPN代理308和设备205联合工作以提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在又一个实施例中,SSL VPN代理308建立与客户机上应用的第一传输层连接,以及与设备205的第二传输层连接。在其他实施例中, SSL VPN代理308和WAN优化设备200联合工作以提供SSL VPN连通。在一些实施例中,加速程序302是用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个下列加速技术1)多协议压缩,幻传输控制协议池,幻传输控制协议多路复用,4)传输控制协议缓冲,以及幻通过高速缓存管理器的高速缓存。另外,加速程序302可执行由客户机102接收和/或发送的任何通信的加密和/或解密。在一些实施例中,加速程序302以集成的方式或者格式执行一个或者多个加速技术。另外,加速程序302 可以对作为传输层协议的网络分组的有效载荷所承载的任一协议或者多协议执行压缩。在一个实施例中,加速程序302被设计、构建或配置为与设备205 —起工作以提供 LAN侧加速或者提供通过设备205提供的加速技术。例如,在由Citrix System公司出品的 NetScaler设备205的一个实施例中,加速程序302包括NetScaler客户机。在一些实施例中,加速程序302在例如分支机构中的远程装置中提供独立的NetScaler加速技术。在其他实施例中,加速程序302和一个或多个NetScaler设备205联合工作。在一个实施例中, 加速程序302提供网络业务量的LAN侧或基于LAN的加速或优化。在一些实施例中,网络优化引擎250可以被设计、构建或配置为与WAN优化设备 200 一起工作。在其他实施例中,网络优化引擎250可以被设计、构建或配置为用或不用设备200提供设备200的WAN优化技术。例如,在由Citrix System公司出品的WANkaler 设备200的一个实施例中,网络优化引擎250包括WANkaler客户机。在一些实施例中,网络优化引擎250在例如分支机构的远程位置中提供独立的WANkaler加速技术。在其他实施例中,网络优化引擎250和一个或多个WANkaler设备200联合工作。在又一个实施例中,网络优化引擎250包括加速程序302、或加速程序302的功能、 操作和逻辑。在一些实施例中,加速程序302包括网络优化引擎250或网络优化引擎250的功能、操作和逻辑。在又一个实施例中,网络优化引擎250作为从加速程序302分开的程序或可执行指令集而被提供或安装。在其他实施例中,网络优化引擎250和加速程序302可被包括在同一程序或同一可执行指令集中。在一些实施例中,仍参见图3,第一程序322可以用于自动地、静默地、透明地或者以其它方式安装和/或执行客户机代理120或其任何部分。在一个实施例中,第一程序322 包括插件组件,例如ActiveX控件或Java控件或脚本,其加载到应用并由应用执行。例如, 第一程序包括由web浏览器应用加载和运行的ActiveX控件,例如在存储器空间或应用的上下文中。在又一个实施例中,第一程序322包括被例如浏览器的应用载入并执行的可执行指令集。在一个实施例中,第一程序322是被设计和构造为安装客户机代理120的程序。 在一些实施例中,第一程序322通过网络从另一个计算装置获得、下载、或接收客户机代理 120。在又一个实施例中,第一程序322是安装程序或即插即用管理器,用于在客户机102 的操作系统上安装诸如网络驱动和客户机代理120或其任何部分的程序。在一些实施例中,客户机代理120的每一或任一部分(流客户机360、收集代理 304、SSL VPN代理308和拦截代理350)可作为单独的应用、程序、进程、服务、任务或可执行指令集而被安装、执行、配置或操作。在其他实施例中,客户机代理120的每一或任一部分可以一起作为单个客户机代理120而被安装、执行、配置或操作。D、用于对包含消歧能力的远程显示协议的数据进行压缩的系统和方法现参考图4A和4B,示出了诸如设备200的中间设备的系统和方法的实施例,所述中间设备对在客户机和服务器之间传递的、包含消歧能力的远程显示协议的数据进行压缩。远程显示协议可以为在服务器和客户机之间传递的字形或位图生成基于内容的句柄。 对于跨越多个会话和客户机的同一位图,该句柄(也被称为通用内容句柄(UCH))可以是相同的。这在中间设备的压缩历史中提供了更多的可重复的和可压缩的内容。在一些实例中, UCH也可提供不同位图的句柄之间的冲突。例如,两个不同的位图可能被分配相同的UCH。 为了解决这样的冲突,远程显示协议可使用消歧能力来区分具有相同UCH的位图。以这种方式,远程显示协议的设计和构造在由于对数据的压缩提供了改善的和加速的WAN加速性能的同时,保持了远程显示客户机代理显示期望的输出的完整性和操作。现参考图4A,描述了通过远程显示协议和多个中间设备通信的客户机和服务器的系统的实施例。服务器可包括用于通过远程显示协议生成和传输数据的远程显示协议引擎。客户机(例如客户机10 可包括用于接收和显示来自远程显示协议的数据的远程显示客户机代理120。远程显示协议引擎可以为将要被传递到远程显示协议客户机代理的每个位图或字形生成UCH。远程显示协议引擎也可包括消歧记录生成器,用于确定在不同位图的通用内容句柄之间的冲突的解决并生成消歧记录。远程显示协议客户机代理使用该消歧记录来在不同位图的相同句柄之间进行消歧以便从高速缓存识别合适的位图和/或将该合适的位图绘制到客户机的显示上。进一步地,WAN中间设备,也被称为设备200A_N(之前已对其实施例进行了描述) 可被部署为提供对在诸如广域网(WAN)的网络上的客户机和服务器之间的通信的加速。中间设备可拦截服务器和客户机通信。网络优化引擎205可包括用于在服务器和客户机之间通信的任何一个或多个协议的协议解析器。协议解析器可被设计和构造来解析远程显示协议。中间设备可将来自这样的通信的数据存储到压缩历史。这些中间设备可解析和存储数据到与一个或多个服务器通信的多个客户机的多个远程显示协议会话的压缩历史。这些中间设备可将包括远程显示协议的命令、位图和句柄的远程显示协议帧的任何内容存储到压缩历史。中间设备200使用这些共享的压缩历史来压缩在中间设备之间传递的数据。第一设备200A接收来自服务器的远程显示协议通信。第一设备确定该通信的任何内容是否匹配在压缩历史中存储的内容。第一设备生成要向第二设备发送的压缩的数据通信。该压缩的数据消息可包括对在中间设备200之间所共享的压缩历史中的所匹配的内容的一个或多个标识符。例如,该标识符可标识在压缩历史中的内容的位置和长度。压缩的数据消息也可包括未被匹配(或该匹配不满足预定的标准)的内容和/或如最初从服务器的通信接收的内容。第二设备200N接收来自第一设备200A的压缩的通信。第二设备使用所匹配的内容的标识符来从压缩历史获得该内容。第二设备接着使用来自压缩历史的内容来重建从服务器到客户机的原始通信的副本。第二设备将该重建的通信传输到客户机。在进一步的细节中,位图或字形可以是或包括任何类型和形式的图形数据或信息。字形可包括字符的物理和虚拟的表示。字形本身可以与字符的形状、字体、字号、鲜明度(boldness)和倾斜度相一致。可以经由位图由位的位模式或轮廓来表示字形。在一些实施例中,位图或字形包括服务器发送到客户机的显示信息以便在客户机的屏幕上进行显示。在一些实施例中,位图包括用于表示从应用输出的或将要被显示的任何类型和形式的信息、数据或信号的任何代码、任何数量的字符、数字或符号的任一组合。通用内容句柄(此处也可被称为句柄或UCH)可以是与位图或字形关联的或用于识别位图或字形的任何类型和形式的信息或标识符。UCH可包括标识位图或数据的任何其他关联部分的数字和字符的任一组合。在一些实施例中,UCH包括任一方向的多个数据位或字符,其用于标识位图、字形或数据的任何其他部分,或者与其相关联。UCH引用的字形、 位图或部分数据可以被存储在任何设备200的压缩历史中或者服务器106或客户机102的任何高速缓存(例如高速缓存140)中。UCH可被存储在远程显示协议帧的任何部分中或与其相关联。在一些实施例中,句柄包括将要被包含在远程显示协议帧中的预定的位数。句柄可使用位的任何配置来指向或标识被存储或将要被存储在设备200的压缩历史中或者服务器106或客户机102的高速缓存中的特定的位图或数据的特定部分。远程显示协议引擎(也被称为RDP引擎)可使用任何类型和形式的算法、加密或哈希,以便基于位图或字形的内容或其任何部分来生成通用内容句柄。远程显示协议引擎可使用例如预定数目的位作为哈希,例如内容或其任何部分的16位的哈希。在一些实施例中,远程显示协议引擎可使用比预定数目的位更长的哈希,然后将该较长的哈希截短至该预定数目的位。在一些实施例中,RDP引擎生成用于句柄的预定数目的位,例如16、32或64 位。RDP引擎可以将该哈希应用到通过远程显示协议发送或传输的任何数据的内容。在一些实施例中,RDP引擎可以为一组字节或字形生成通用内容句柄。客户机102可包括一个或多个远程显示协议客户机代理120。远程显示协议客户机代理120可以是任何类型和形式的客户机代理120。远程显示协议代理可包括任一客户机代理120的任何功能和特征。远程显示协议代理120可包括用于使用、处理和显示从服务器传输的内容的任何类型和形式的软件、硬件、脚本、应用或程序或上述的任一组合。在一些实施例中,远程显示协议代理120使用位图和UCH并结合任何其他指令、数据或内容来向用户呈现或显示预期的内容或显示。远程显示协议客户机120可利用一个或多个通用内容句柄来检索在诸如高速缓存140的高速缓存中存储的一个或多个位图。远程显示协议客户机120可将指令和命令与句柄和位图或任何其他的收到的信息组合在一起来以将要在客户机102上显示的内容格式生成内容或重设内容的格式。服务器106可包括用于与客户机102通信的一个或多个远程显示协议引擎。远程显示协议引擎和/或消歧记录生成器可生成UCH句柄、识别句柄间的冲突以及生成消歧记录。消歧记录可包括任何数量的文本、字符、符号或数字以帮助区别或识别两个或多个相同或相似的句柄。由于服务器具有所生成的实际的位图、字形或数据以及为这些位图、字形或数据的每一个所生成的句柄的知识,所以服务器可使用该知识来生成消歧记录。消歧记录可以是任何格式或类型的记录。消歧记录可以包括任何数量的位、数字或字符。在一些实施例中,消歧记录包括数据结构。在进一步的实施例中,消歧记录包括数据组。在其他实施例中,消歧记录包括对象。在进一步的实施例中,消歧记录包括链表。消歧记录可包括用于将该消歧记录与其他消歧记录相区别的唯一标识符。消歧记录可以是将一个UCH与另一 UCH相区别的任何类型和形式的信息或标识符。消歧记录可包括识别UCH或该UCH标识的或与其关联的位图的数字和/或字符的任一组合。在一些实施例中,消歧记录包括任何方向的多个数据位或字符,其用于识别UCH或位图,或者与其相关联。在一些实施例中,消歧记录包括任何将一个句柄与另一个相同句柄相区别的任何数目的位。消歧记录可基于位图或字形或其传输的临时信息、次序、大小或任何其他特征来消除对于不同位图或字形的相同UCH间的歧义。在一些实施例中,消歧记录包括对于一个或多个UCH(例如具有相同值的UCH)的基于时间的标识符。基于时间的标识符可包括在生成、传输、载入或存储对于UCH的位图或字形时的时间。在其他实施例中,消歧记录包括数字来标识冲突的UCH被客户机代理使用、载入或通过远程显示协议发送的次序。这样的次序可将一个UCH及相应的字形/位图与另一个UCH及相应的字形/位图相区别。在一些实施例中,消歧记录可包括额外的哈希值以便将一个UCH的位图或字形的内容从另一 UCH的位图或字形的内容识别出。消歧记录可被存储在远程显示协议帧的任何部分中或通过其携带。在一个实施例中,可在远程显示协议帧的开始处提供消歧记录。在又一个实施例中,可在远程显示协议帧的末尾处提供消歧记录。在一些实施例中,可在所述帧中与另一个UCH相冲突的任一 UCH的之后或开始处提供消歧记录。在又一个实施例中,消歧记录可具有远程显示协议帧中冲突的UCH的其中一个或与其相结合。在一些实施例中,远程显示协议帧中的消歧记录目的在于消除同一帧的冲突的 UCH间的歧义。在其他实施例中,远程显示协议帧中的消歧记录目的在于消除同一帧中UCH 和先前通过另一个远程显示协议帧传输的UCH之间的歧义。在一些实施例中,远程显示协议帧中的消歧记录目的在于消除同一帧中UCH和在客户机的高速缓存中存储的UCH之间的歧义。在其他实施例中,远程显示协议帧中的消歧记录目的在于消除之前由客户机接收的且未被提供为当前的远程显示协议帧的一部分的UCH之间的歧义。在其他实施例中,在随后的具有将要被消歧的UCH的远程显示协议帧之前的第一个远程显示协议帧中发送消歧记录。服务器和客户机可使用任何类型或形式的基于服务器计算的应用来通信,所述应用可以使用任何类型和形式的远程显示协议。在一个实施例中,远程显示协议是Citrix Systems公司的ICA协议。远程显示协议客户机代理可以包括由Citrix Systems公司出品的任一 ICA客户机代理。服务器的远程显示协议引擎可包括Citrix Systems公司的任何一个ICA服务器软件。在又一个实施例中,远程显示协议是Microsoft公司的远程桌面协议。远程显示协议客户机代理可以包括由Microsoft公司出品的任一 RDP客户机代理。服务器的远程显示协议引擎可包括Microsoft公司的远程显示协议软件和/或终端服务产品的任何一个。在又一个实施例中,远程显示协议是远程帧缓冲(RFB)协议并且远程显示协议引擎和客户机代理是使用RFB通信的产品或应用。远程显示协议可包括任何格式的头部、字段或有效载荷。远程显示协议可包括任何命令和/或用于该命令的数据来指导或指示远程显示协议代理和/或远程显示协议引擎来执行操作。在一些实施例中,远程显示协议提供绘制位图的命令。该命令可通过诸如通用内容句柄的句柄来标识位图。在一些情况下,该命令可提供位图。在其他情况下,该命令可提供位图和句柄。在其他实施例中,该命令可指示远程显示协议客户机来将位图存储到高速缓存。在一些实施例中,该命令可指示远程显示协议客户机来从高速缓存加载位图。在又一个实施例中,该命令可指示远程显示协议客户机将高速缓存中的位图用于操作。远程显示协议引擎(此处也可称为RDP引擎)可生成任何数量、类型和形式的字形或位图。RDP引擎可处理、封装、格式化或修改内容,例如来自服务器给任何数量的客户机提供的任何数量的应用的字形或位图。RDP引擎可以为每个位图生成句柄或UCH。在一些实施例中,RDP引擎可以为多个位图生成UCH。在进一步的实施例中,UCH对于每个位图是唯一的。在进一步的实施例中,不为每个位图而是仅为一些位图生成UCH。远程显示协议引擎可使用任何数量的规则或策略来确定哪个位图可具有关联的UCH以及哪个位图不具有关联的UCH。在一些实施例中,RDP引擎为例如多个屏幕、将要被显示的整个屏幕或部分屏幕成批地生成字形和绘制命令。RDP引擎可以格式化、修改或处理将要用于整个屏幕、多个屏幕或屏幕的部分显示的其他应用的字形、位图和绘制命令。其他实施例中,RDP引擎生成、修改或格式化位图、字形和绘制命令为基于内容的,使得RDP引擎不必知道不同的会话和客户机。换句话说,RDP引擎可为一个会话或一个客户机生成或封装位图和句柄并且仍能够将同一位图和同一句柄用于与不同的客户机通信。有时,RDP引擎可以具有用于为每个位图或字形生成唯一 UCH的有限数量的可用位。在一些实施例中,所产生的位图和字形的数量可能超过用于将UCH与其他UCH相区别的唯一的位配置的数量。在这样的实例中, RDP弓丨擎可利用消歧记录来区别相同的两个或多个UCH。消歧记录生成器可以是用于生成消歧记录的任何装置、组件、功能或单元。在一些实施例中,消歧记录生成器包括用于创建和管理消歧记录的硬件、软件或硬件和软件的任一组合。在一些实施例中,消歧记录生成器生成消歧记录来确保UCH结合消歧记录提供具有相同通用内容句柄的两个位图之间的唯一区别。远程显示协议帧可以是在客户机和服务器之间传输的、经过一个或多个设备200 的任意数据包或信息包。在一些实施例中,远程显示协议帧包括从服务器到客户机的数据。 在进一步的实施例中,远程显示协议帧包括一个或多个通用内容句柄(UCH)。在进一步的实施例中,远程显示协议帧包括一个或多个位图、数据片或显示内容部分。在进一步的实施例中,远程显示协议帧包括一个或多个字形、符号、图形或字符。在进一步的实施例中,远程显示协议帧包括与UCH关联的高速缓存数据。在一些实施例中,远程显示协议帧包括命令或指令。该命令或指令可以是绘制或检索与UCH关联的部分数据的指令。在一些实施例中, 该命令或指令可以是缓存或存储与UCH关联的部分数据的指令。在一些实施例中,远程显示协议帧包括一个或多个消歧记录。远程显示协议帧可包括将要被存储在服务器106、客户机102的高速缓存中或者设备200的压缩历史中的一个或多个位图以及相应的UCH。在一些实施例中,远程显示协议帧包括指向存储在设备200的压缩历史或服务器106或客户机 102的高速缓存中的一个或多个位图的或与该一个或多个位图关联的一个或多个UCH。设备200的优化引擎250的协议解析器可以是设备200的任何组件、装置或单元, 用于解析在客户机和服务器之间传输的经过设备200的数据的分组、帧或包。在一些实施例中,协议解析器包括用于解析远程显示协议的任何传输的硬件、软件或硬件和软件的任一组合。在进一步的实施例中,协议解析器解析在客户机102和服务器106之间传输的经过设备200的远程显示协议的远程显示协议帧。设备200的协议解析器可以包括用于在远程显示协议帧的任何组件间进行区别的任何装置、功能、功能性或特征,所述组件诸如,例如UCH、位图、绘制命令、缓存命令、消歧记录或远程显示协议帧的任何其他组件。在一些实施例中,协议解析器从同一远程显示协议帧的指令分离或解析远程显示协议帧的UCH或位图。在进一步的实施例中,协议解析器从该远程显示协议帧的剩余部分解析UCH。在进一步的实施例中,协议解析器从该远程显示协议帧的剩余部分解析位图。在进一步实施例中,协议解析器从该远程显示协议帧的剩余部分解析该远程显示协议帧的高速缓存数据或有效载荷。在进一步实施例中,协议解析器从该远程显示协议帧的剩余部分解析命令,例如绘制命令或缓存命令。压缩历史可以是来自在客户机102和服务器106之间的传输或部分传输的数据的任何历史或收集。在一些实施例中,压缩历史包括由设备200拦截和存储的任何数量的传输或传输的任何部分。设备可将在服务器106和客户机102之间传输的经过设备200的任何有效载荷数据或传输存储到压缩历史。设备可以将远程显示协议帧的任何部分存储到压缩历史。在一些实施例中,压缩历史包括在服务器106和任何数量的客户机102之间传输的数据或信息。压缩历史可包括该传输的任何选择的部分,例如位图。在一些实施例中,压缩历史包括位图和对应于该位图的UCH。压缩历史可包括被传输到指定的客户机或者一组客户机的指定客户机的任一远程显示协议帧的位图和相应的UCH。在一些实施例中,压缩历史包括服务器106与任何数量的客户机102的多个会话的位图和相应的UCH。现参考图4B,使用通用内容句柄和消歧记录来压缩远程显示协议的数据的方法的实施例。在步骤450,服务器106为远程显示协议的数据生成通用内容句柄(UCH)。在步骤 452,服务器106确定UCH的任何冲突并为远程显示协议生成消歧记录。在步骤454,服务器 106生成将要被传输到客户机的、具有消歧记录的远程显示协议帧。在步骤460,中间设备 200拦截远程显示协议通信、解析并存储数据到压缩历史。在步骤462,第一中间设备200 在压缩历史中找到匹配、生成压缩的通信并将该压缩的通信发送到第二中间设备。在步骤 464,第二中间设备接收压缩的通信、在压缩历史中找到所识别的匹配并生成到客户机的远程显示协议通信。在步骤470,客户机102从第二中间设备接收远程显示协议的解压缩的帧。在步骤472,客户机使用消歧记录确定是否存在消歧并解决该消歧。在步骤474,客户机依照来自消歧的解决来显示远程显示客户机的输出。在步骤450,服务器106的远程显示协议引擎为远程显示协议的数据生成通用内容句柄UCH。在进一步的实施例中,服务器106接收由服务器106的应用产生的数据或内容并生成对应于该内容或数据的部分的UCH。在一些实施例中,当服务器上的应用产生显示输出时,远程显示协议引擎生成、标识或以其他方式获得表示该显示输出的变化的位图或字形。在一些实施例中,服务器106当生成或提供每个位图或字形时生成UCH。在又一个实施例中,服务器106为多个位图或字形成批地生成UCH。在步骤452,例如远程显示协议引擎的服务器106的组件确定是否存在UCH的任何冲突并为远程显示协议生成消歧记录。在一些实施例中,远程显示协议引擎将所生成的UCH 与多个之前生成的UCH相匹配以便找到匹配。所匹配的之前生成的UCH可能是与新生成的 UCH相同的。在一些实施例中,所匹配的之前生成的UCH可以包括与新生成的UCH的一部分相同的部分。如果找到了匹配,远程显示协议引擎确定存在新生成的UCH与之前生成的 UCH的冲突。服务器的消歧记录生成器可响应于所确定或检测的冲突来生成消歧记录。在步骤454,例如远程显示协议引擎的服务器106的组件生成具有消歧记录的远程显示协议帧并将该远程显示协议帧传输到客户机。在一些实施例中,远程显示协议引擎为包括UCH和/或位图或字形的一个命令生成帧。在又一个实施例中,远程显示协议引擎每次生成多个帧。在进一步的实施例中,远程显示协议引擎生成包括一个或多个消歧记录的远程显示协议帧。在一些实施例中,远程显示协议引擎首先生成帧并且基于所生成的帧确定要进行消歧的UCH。在这些实施例中,远程显示协议帧接着可以给该帧添加一个或多个消歧记录。在步骤460,第一中间设备200拦截远程显示协议通信、解析该远程显示协议通信并且将数据存储到压缩历史。在一些实施例中,接收来自服务器106的远程显示协议帧的设备200的协议解析器解析远程显示协议帧。在一些实施例中,第一中间设备将远程显示协议帧的某些解析的部分存储到压缩历史。在其他实施例中,第一中间设备将远程显示协议帧的有效载荷存储到压缩历史。同样地,当第二中间设备收到远程显示协议通信时,第二中间设备可以解析这样的通信并将来自远程显示协议的数据存储到压缩历史。这样,第一和第二中间设备共享至少一些来自该通信的相同的数据以便在中间设备之间进行压缩。在步骤462,第一中间设备200在压缩历史中找到匹配、生成压缩的通信并将该压缩的通信发送到第二中间设备。在一些实施例中,第一中间设备可在压缩的消息中使用任何类型和形式的匹配长度和位置标识符。匹配长度和位置标识符标识中间设备的压缩历史之间共享的匹配内容。这样的压缩的通信可以被转发或发送到第二中间设备200或客户机 102。步骤464,第二中间设备或客户机102从第一中间设备接收压缩的通信。第二中间设备使用匹配长度和位置标识符来从压缩历史获得内容。第二中间设备生成或重新构建从服务器发送的且将要被发送到客户机的远程显示协议通信。第二中间设备将该重新构建的和/或解压缩的远程显示协议通信转发到客户机。在步骤470,客户机102的远程显示协议客户机代理120接收远程显示协议的解压缩的帧。在一些实施例中,远程显示协议代理120接收由第二中间设备转发的远程显示协议的解压缩的帧的一部分。在其他实施例中,远程显示协议代理接收远程显示协议的多个解压缩的帧。在又一个实施例中,远程显示协议代理接收远程显示协议的压缩的帧,然后该代理对该帧进行解压缩。在步骤472,客户机102通过对消歧记录的识别和/或识别冲突的UCHS来确定是否存在任何消歧。远程显示协议代理可使用消歧记录来解决UCH之间的冲突并识别相应的位图或字形。在一些实施例中,如果在新生成的UCH和之前生成的UCH之间存在冲突,那么客户机102使用远程显示协议帧的消歧记录来解决该冲突并识别远程显示协议帧的新生成的UCH引用的位图或部分数据。客户机102可通过使用UCH、位图或字形以及任何一个或多个当前或先前的消歧记录的任一组合来解决消歧。在步骤474,客户机102依照消歧的解决来显示远程显示客户机的输出。在一些实施例中,客户机102使用利用新生成的UCH并结合消歧记录所识别的位图或部分所存储的数据来显示该输出。客户机102可使用所识别的位图来生成被显示到客户机102的输出。 在一些实施例中,显示到客户机102的输出包括图形显示文件。在其他实施例中,由客户机 102显示的输出包括流式传输的视频或音频文件。在进一步的实施例中,由客户机102显示的输出包括网页或网站。在进一步的实施例中,由客户机102显示的输出包括word文档、 电子邮件文档或由服务器106提供的任何其他类型和形式的应用、服务或资源。现参考图5,描述了用于经由中间设备在客户机和服务器之间协商远程显示协议能力的系统和方法。总的来说,客户机可经由客户机代理120发起远程显示协议的握手事务以协商能力。握手事务可标识客户机是否支持支持消歧的远程显示协议的版本或支持不支持消歧的远程显示协议的版本。当每个中间设备200A、200N接收到握手通信时,每个中间设备可检查该通信以确定客户机是否具有远程显示协议的消歧能力。每个中间设备可在握手通信中标识该中间设备是否也支持具有消歧能力的远程通信显示协议。服务器从中间设备接收该握手通信并且确定客户机和/或中间设备是否支持消歧协议。如果支持,那么服务器传输响应,该响应标识该服务器支持和将要传输具有消歧的远程显示协议。设备200A-200N可包括协议检查器,其确定通信是否标识对具有消歧的远程显示协议的支持。可以在中间设备(或设备)的任何组件中包含协议检查器。在一个实施例中, 网络优化引擎,或其任一组件包括协议检查器。例如,结合图2A描述和显示的流控制器、分组处理引擎、LAN/WAN检测器、协议加速器、高速缓存管理器或策略引擎的任何一个可包括协议检查器。在一些实施例中,图4A的协议解析器包括协议检查器。协议检查器可包括在设备200的处理器上或者在运行网络优化引擎250的任何装置的处理器上执行的任何类型和形式的可执行指令。协议检查器可包括功能、操作或逻辑以便确定诸如远程显示协议握手帧的通信是否标识、支持或以其他方式符合具有消歧记录或能力的远程显示协议。协议检查器可确定该通信是否将发送该通信的客户机标识为支持远程显示协议的消歧版本。协议检查器可确定该通信是否将发送该通信的服务器标识为支持远程显示协议的消歧版本。协议检查器可确定该通信是否将接收该通信的中间设备标识为具有消歧协议。协议检查器可以将中间设备的能力添加给该通信。在一些实施例中,协议检查器增加或修改该通信以便将中间设备标识为支持远程显示协议的消歧版本。在其他实施例中,协议检查器增加或修改该通信以便将任何一个或多个服务器、中间设备或多个中间设备和客户机的标识为支持远程显示协议的消歧版本。在又一个实施例中,协议检查器修改该通信以便删除任何一个或多个服务器、中间设备或多个中间设备和客户机对远程显示协议的消歧版本的支持的标识。概括来讲图示的方法,在步骤505,客户机102的远程显示协议客户机代理120可发起与服务器106的远程显示协议握手。客户机代理120可标识对于远程显示协议的客户机的能力并且可标识客户机代理120支持或具有此处描述的消歧能力。在步骤510,每个中间设备检查来自客户机的握手通信的能力。如果握手通信将客户机标识为支持远程显示协议的消歧版本,中间设备将中间设备的能力添加到该握手通信。在步骤515,服务器从中间设备接收握手通信并确定客户机和/或中间设备是否支持消歧。如果从客户机到服务器的经由中间设备的会话支持远程显示协议的消歧版本,那么服务器响应于客户机的握手通信来使远程显示协议可由设备进行压缩。在步骤525,客户机接收来自服务器的响应以完成握手事务和能力的协商。在进一步的细节中,在步骤505,在一些实施例中,诸如ICA客户机的客户机代理 120可生成并传输一个或多个远程显示协议帧来发起或建立与服务器的会话。客户机代理可以在客户机和服务器之间生成并传输一个或多个远程显示协议帧来标识、交换或协商能力。客户机代理可以在客户机代理和服务器远程显示协议引擎之间生成并传输一个或多个远程显示协议帧来标识、交换或协商能力。客户机代理可生成并传输一个或多个远程显示协议帧来标识、交换或协商对应于或关于由客户机代理和/或远程显示协议引擎使用或支持的远程显示协议的能力。客户机代理120可以通过远程显示协议帧的任何部分(例如首部、字段或有效载荷部分)来标识或通告一个或多个能力。可以经由远程显示协议使用任何形式或格式来标识这些能力,例如名称-值对和属性值。客户机代理可以通过任何类型和形式的预定值或标识符来标识该客户机代理支持消歧。在一些实施例中,客户机代理可通过标识、指定或限定远程显示协议的版本来标识该客户机代理支持远程显示协议的消歧版本。在一个实施例中,客户机代理可标识该客户机代理支持的远程显示协议的最高版本。在又一个实施例中,客户机代理可标识客户机向服务器查询的远程显示协议的版本以确定服务器是否支持这样的版本。在一些实施例中,客户机代理120也标识中间设备或设备(例如客户机侧设备)是否支持或识别具有消歧的远程显示协议。这样,在一些情况下,客户机代理标识客户机和中间设备两者的消歧能力。在步骤510,中间设备(例如设备)接收从客户机发送的、向服务器通告远程显示协议相关能力的通信。中间设备可通过协议解析器解析该远程显示协议通信。中间设备可
46检查该通信以识别客户机是否通告了对消歧协议的支持。中间设备可检查该通信以识别客户机是否通告了由该中间设备对消歧协议的支持。中间设备可修改该通信以标识该中间设备是否支持远程显示协议的消歧版本。中间设备也可修改该通信以标识客户机是否支持远程显示协议的消歧版本。在一些实施例中,当该通信已经标识中间设备的消歧能力或中间设备不知道这样的消歧能力时,中间设备不修改该通信。在一些实施例中,第一设备或中间设备可执行该检查、修改通信并将该通信转发到第二设备或中间设备。第二设备并可执行此处所描述的步骤510的任何实施例。第二设备向服务器转发从第一设备接收的、由该第二设备进一步处理的通信。该通信可标识客户机和每个中间设备的能力。在一些实施例中,该通信可标识客户机和每个中间设备的消歧能力。在又一个实施例中,该通信可以标识客户机支持远程显示协议的消歧版本。在其他实施例中,该通信标识从服务器到客户机的传输路径或会话可以传输具有消歧或消歧记录的远程显示协议。在一些实施例中,该通信标识客户机或中间设备的其中一个不支持消歧能力。在又一个实施例中,该通信标识由任何一个或多个客户机和在客户机和服务器之间的任一中间设备所支持的远程显示协议的版本。在一些实施例中,设备都支持远程显示协议的消歧版本。在又一个实施例中,设备支持不同版本的远程显示协议。在一些情况下,尽管设备支持不同版本的远程显示协议,这些版本可各自支持或具有消歧能力。在其他实施例中,一个设备支持远程显示协议的消歧版本而另一个设备不支持远程显示协议的消歧版本。在步骤515,服务器接收由中间设备转发的通信。例如,服务器例如通过远程显示协议引擎可接收由任何中间设备检查和处理的握手远程显示协议帧。服务器从该通信确定将哪个版本的远程显示协议用于该会话或为该版本建立会话。服务器从对由该通信标识的能力的检查来确定客户机是否支持或具有消歧能力和/或哪个版本的消歧能力。服务器从对由该通信标识的能力的检查来确定任何中间设备是否支持消歧能力。服务器从对由该通信标识的能力的检查来确定客户机和每个中间设备是否支持消歧能力或相同的消歧能力。响应于关于消歧能力的确定,服务器确定远程显示协议的版本以用于远程显示协议会话或向客户机和/或中间设备通告该版本。服务器通过远程显示协议引擎可生成并向客户机传输对客户机的握手或协商能力通信的响应。服务器可标识该服务器支持与由客户机通告的远程显示协议的相同的版本。服务器可确定客户机或中间设备不支持消歧能力并响应于该确定,服务器向该客户机或中间设备标识该服务器正在使用不支持消歧的远程显示协议。如果客户机和中间设备支持远程显示协议的消歧版本,对客户机的服务器响应可提供信息以便标识或使中间设备能对远程显示协议进行压缩。服务器可经由该响应标识该服务器和客户机不对远程显示协议进行压缩。服务器可经由该响应标识该服务器和客户机不可缓存远程显示协议。在一些实施例中,尽管中间设备也可压缩远程显示协议的通信,但服务器和客户机仍可执行压缩和/或高速缓存。在一些实施例中,虽然中间设备压缩远程显示协议的通信,但服务器和客户机可不进行压缩。在步骤520,客户机接收来自服务器的响应并使用由该服务器确定的远程显示协议的版本。在一些实施例中,如果客户机、服务器和中间设备的每一个支持消歧能力,那么服务器和客户机使用具有消歧记录的远程显示协议的版本进行通信。在又一个实施例中,如果任何一个或多个客户机、服务器或中间设备不支持消歧协议,那么客户机和服务器使用不支持消歧或不具有消歧记录的远程显示协议的版本。在一些实施例中,响应于服务器的握手响应,客户机代理不对由客户机代理产生或传递的远程显示协议通信进行压缩和/ 或服务器不对由服务器传输的远程显示协议通信进行压缩。相反,一个或多个中间设备可以对在客户机和服务器之间传递的远程显示协议进行压缩。
权利要求
1.一种用于确定使中间设备对在客户机和服务器之间通信的远程显示协议进行压缩的方法,所述方法包括a)由客户机经由第一中间设备和第二中间设备向服务器传输标识客户机的远程显示协议能力的通信;b)由服务器从经由第一中间设备和第二中间设备转发的所述通信确定客户机以及第一中间设备或第二中间设备的其中一个的远程显示协议能力;c)由服务器响应于所述确定来向客户机传输标识客户机和服务器不对远程显示协议通信进行压缩的第二通信;d)由第一中间设备压缩由服务器通过远程显示协议向客户机传递的数据,并将所压缩的数据转发到第二中间设备;以及e)由第二中间设备对所压缩的数据进行解压缩并将解压缩的数据通过远程显示协议转发到客户机。
2.根据权利要求1所述的方法,其中步骤a)还包括由服务器经由所述通信发起远程显示协议的握手事务以协商客户机和服务器之间的能力。
3.根据权利要求1所述的方法,其中步骤a)还包括由客户机经由所述通信标识由该客户机支持的远程显示协议的版本。
4.根据权利要求1所述的方法,其中步骤b)还包括由第一中间设备修改所述通信以标识由第一中间设备支持的远程显示协议的版本。
5.根据权利要求1所述的方法,其中步骤c)还包括由第二中间设备修改所述通信以标识由第二中间设备支持的远程显示协议的版本。
6.根据权利要求1所述的方法,其中步骤c)还包括由服务器向客户机传输作为远程显示协议的握手事务的一部分的第二通信以协商客户机和服务器之间的能力。
7.根据权利要求1所述的方法,还包括由第一中间设备通过在客户机和服务器之间的远程显示协议的第一会话接收数据的第一帧并且将第一帧的部分存储到第一压缩历史。
8.根据权利要求7所述的方法,还包括由第二中间设备接收由第一中间设备转发的第一帧并将第一帧的部分存储到第二压缩历史,第二压缩历史共享第一压缩历史的内容。
9.根据权利要求8所述的方法,还包括由第一中间设备通过远程显示协议的第二会话接收数据的第二帧并且由第一中间设备使用在第一压缩历史中存储的第一会话的第一帧的部分数据来压缩第二会话的第二帧的部分数据。
10.根据权利要求1所述的方法,其中步骤d)还包括由连接到客户机的第一网络的第一中间设备通过不同于所述远程显示协议的第二协议向连接到客户机的第二网络的第二中间设备传递所压缩的数据。
11.一种用于确定使中间设备对在客户机和服务器之间通信的远程显示协议进行压缩的方法,所述方法包括a)由服务器经由第一中间设备和第二中间设备向客户机传输标识客户机的远程显示协议能力的通信;b)由客户机从经由第一中间设备和第二中间设备转发的所述通信确定服务器以及第一中间设备或第二中间设备的其中一个的远程显示协议能力;c)由客户机响应于所述确定来向服务器传输标识客户机和服务器不对远程显示协议通信进行压缩的第二通信;d)由第一中间设备压缩由服务器通过远程显示协议向客户机传递的数据,并将所压缩的数据转发到第二中间设备;以及e)由第二中间设备对所压缩的数据进行解压缩并将解压缩的数据通过远程显示协议转发到客户机。
12.根据权利要求11所述的方法,其中步骤a)还包括由客户机经由所述通信发起远程显示协议的握手事务以协商客户机和服务器之间的能力。
13.根据权利要求1所述的方法,其中步骤a)还包括由服务器经由所述通信标识由该服务器支持的远程显示协议的版本。
14.根据权利要求1所述的方法,其中步骤b)还包括由第一中间设备修改所述通信以标识由第一中间设备支持的远程显示协议的版本。
15.根据权利要求1所述的方法,其中步骤c)还包括由第二中间设备修改所述通信以标识由第二中间设备支持的远程显示协议的版本。
16.根据权利要求1所述的方法,其中步骤c)还包括由客户机向服务器传输作为远程显示协议的握手事务的一部分的第二通信以协商客户机和服务器之间的能力。
17.根据权利要求1所述的方法,还包括由第一中间设备通过在客户机和服务器之间的远程显示协议的第一会话接收数据的第一帧并且将第一帧的部分存储到第一压缩历史。
18.根据权利要求7所述的方法,还包括由第二中间设备接收由第一中间设备转发的第一帧并将第一帧的部分存储到第二压缩历史,第二压缩历史共享第一压缩历史的内容。
19.根据权利要求8所述的方法,还包括由第一中间设备经由远程显示协议的第二会话接收数据的第二帧并且由第一中间设备使用在第一压缩历史中存储的第一会话的第一帧的部分数据来压缩第二会话的第二帧的部分数据。
20.根据权利要求1所述的方法,其中步骤d)还包括由连接到客户机的第一网络的第一中间设备通过不同于所述远程显示协议的第二协议向连接到客户机的第二网络的第二中间设备传递所压缩的数据。
全文摘要
本发明自动检测客户机、服务器和/或中间设备的远程显示协议能力以便确定是客户机与服务器或是中间设备以及在某些情况下两者都应该压缩远程显示协议数据。
文档编号H04L29/08GK102405631SQ201080017344
公开日2012年4月4日 申请日期2010年2月19日 优先权日2009年2月20日
发明者A·塞缪尔斯, H·柯林斯, J·布拉德, R·詹森 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1