CN101133623B - 用于提供客户端加速技术的系统和方法 - Google Patents

用于提供客户端加速技术的系统和方法 Download PDF

Info

Publication number
CN101133623B
CN101133623B CN2005800488673A CN200580048867A CN101133623B CN 101133623 B CN101133623 B CN 101133623B CN 2005800488673 A CN2005800488673 A CN 2005800488673A CN 200580048867 A CN200580048867 A CN 200580048867A CN 101133623 B CN101133623 B CN 101133623B
Authority
CN
China
Prior art keywords
client computer
accelerated procedure
server
utensil
application program
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
Application number
CN2005800488673A
Other languages
English (en)
Other versions
CN101133623A (zh
Inventor
P·森达拉彦
何军晓
R·辛哈
S·韦尔祖诺夫
C·文卡特拉曼
A·谢蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US11/039,946 external-priority patent/US7757074B2/en
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Priority to CN201110267244.2A priority Critical patent/CN102281305B/zh
Publication of CN101133623A publication Critical patent/CN101133623A/zh
Application granted granted Critical
Publication of CN101133623B publication Critical patent/CN101133623B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明旨在用于在客户机上动态部署和执行加速程序以改进远程访问应用程序的递送和性能的系统和方法。在客户机上以对客户机的操作透明且对客户机的操作无缝的方式自动安装和执行本发明的加速程序。在一个实施例中,在器具设备确定客户机对服务器或者远程应用程序的访问可以被加速时,通过该设备来动态提供加速程序。在一些实施例中,加速程序在客户机上执行下列加速技术中的一种或者多种:1)多协议压缩,2)传输控制协议池,3)传输控制协议复用,4)传输控制协议缓冲,和5)高速缓存。同样,在一些实施例中,加速程序使用内核级数据结构在传输层以综合有效的方式来执行这些加速技术。在另外的实施例中,客户端加速程序执行代理重定向技术自动绕过任何中介设备,从而持续地提供客户机对服务器或者远程访问应用程序的访问。

Description

用于提供客户端加速技术的系统和方法
相关申请
本申请要求了于2004年12月30日提交的标题为“SYSTEM ANDMETHOD FOR DYNAMIC ACCELERATION OF REMOTELY-ACCESSED APPLICATION”的美国临时专利申请No.60/640,464以及2005年1月24日提交的标题为“SYSTEM AND METHOD FORESTABLISHING A VIRTUAL PRIVATE NETWORK”的美国专利申请No.11/039,946的优先权。
技术领域
本发明通常涉及数据通信网络。本发明尤其涉及用于自动部署、安装和执行客户端加速程序的系统和方法。
背景技术
现在,越来越要求企业对位于企业网范围外部的服务提供商、合作伙伴、雇员提供应用程序的访问。然而,广域网(WAN)链接拥塞、服务器负荷繁重和远程连接带宽低可能阻碍访问应用程序并可能降低远程访问应用程序的性能。这些因素本质上影响并降低了雇员的劳动生产率和对企业应用软件和设施进行投资的回报。此外,这些因素还可能使用户感到沮丧,并使用户疏远使用远程访问应用程序。为了从这些应用程序的投资回报中得到满意的投资回报,企业需要确保不论在任何位置所有用户都可以快速有效地使用应用程序。
一种用于提高远程访问应用程序性能的方法是,在企业网中安装执行特定功能以加速应用程序性能的器具,所述器具通常作为网关安装在公共网络上的WAN和专用数据网络的企业服务器之间,并对通过两者之间的数据进行处理。当这样的器具用于执行加速功能时,通常将其称作“加速器”。因为加速器使用在企业网中,因此它对于降低企业网自身的延迟以及降低企业服务器上的负荷更加有效。然而,对于处理因企业网外部出现的问题而引起的延迟,诸如WAN链接拥塞、远程连接带宽低等,就不那么有效。
在另一种方法中,一些公司为WAN的客户端或者客户端LAN提供了应用程序加速解决方案。这些方案通常分为两种主要类型:(1)作为网关安装在WAN和客户机之间用于执行应用程序加速功能的网络器具;和(2)驻留在客户端LAN的应用程序加速服务器。然而,安装和维护位于客户端LAN的加速服务器或者器具需耗费时间、费用和资源。在许多情况下,可能从许多不同的远程位置访问企业网,诸如从许多不同的分公司办公室进行访问。为了为所有的远程客户机部署客户端加速,企业将不得不在每个远程位置安装和维护基于器具或者基于服务器的加速器。另外,如果从远程位置访问应用程序的需要是零星的,那么在所述位置安装和维护客户端LAN上的这种加速器所耗费的时间、费用和资源可能超过其收益。
另外,客户端LAN上基于服务器的加速器或者器具的方案可能成为一种限制,这是因为在客户端LAN基于服务器的加速器或者器具将客户端LAN的加速限制在具有基于服务器的加速器或者基于器具的加速器的位置。随着用户能够在与普遍性的移动计算装置耦接的不同远程位置处访问多种计算设备以及无线网络访问的利用率增加,用户可以在任何时间点从宽范围的远程接入点来访问网络。例如,当用户在接入点之间漫游期间,用户能从办公室的台式计算机、智能手机或个人数字助理、膝上计算机、家庭办公计算机、或者在远程办公位置处的计算机(诸如在用户或者客户办公室处)来访问企业网。因此,用户可以期望通过企业网在任何远程位置、在任何用户可以使用的多台计算机中的任何一台来访问远程应用程序。远程接入点和/或用户可以使用的多台计算设备中每个均可以具有至企业网的不同客户端LAN连接。企业可能没有时间、费用和资源在所有可能的远程接入点或为所有可能的计算设备都使用客户端LAN解决方案,或者可能没有时间、费用和资源随着用户的计算设备和远程接入点的数目增加而不断地安装和维护这种解决方案。另外,用户可从公共网络、专用网络或者从企业不可访问的或在企业的控制和管理下的客户端LAN访问企业网。因此,企业可能不能在所有这些接入点来使用客户端LAN加速器。
因而,所期望的是提供客户端加速能力的系统和方法,以提高远程访问应用程序的性能。所期望的系统和方法不应要求在客户机和WAN之间安装和维护用于运行加速软件的服务器或网络器具。如果加速器功能可以在客户端和WAN的企业网侧同时实施,则还可以期望进一步提高远程访问应用程序的性能。
发明内容
本发明的目的在于一种用于在客户机上动态部署并执行加速功能的系统和方法,以提高远程访问应用程序的性能以及传送。通过诸如远程访问应用程序的加速程序来提供客户端加速功能,所述加速程序用于在客户端和服务器之间进行通信时执行下列加速技术中的一种或更多:1)多协议压缩2)传输控制协议池(pooling),3)传输控制协议复用,4)传输控制协议缓冲,以及5)高速缓存。在一个方面中,以对客户机透明且与客户机操作无缝的方式在客户端上自动安装并执行本发明的加速程序。器具可以截获客户端要求建立与服务器的通信会话或者连接的请求,并将加速程序传送给所述客户机。在一些情况下,器具确定正在通过客户机访问的应用程序是否可以被加速,并仅当应用程序可以被加速时提供所述加速程序。一旦接收到加速程序,客户机自动执行加速程序的静默安装,并在完成安装时执行加速程序。
在一个方面中,本发明涉及用于为客户机动态提供加速程序以进行自动安装和执行的方法。所述加速程序加速客户机对于远程访问应用程序的访问。该方法包括以下步骤:通过器具接收客户机要求建立与服务器的通信会话的请求,通过所述器具将包括网络驱动器的加速程序传送至客户机,以在客户机上对于经过服务器所提供的应用程序的客户机访问执行加速。当接收到加速程序时,客户机则自动执行网络驱动器至客户机储存器(storage)的静默安装。当安装了网络驱动器,客户机就在分配给客户机网络栈的存储器(memory)中自动执行网络驱动器。
在本发明的一个实施例中,所述方法包括:当建立了与服务器之间的通信会话时,则通过所述器具将加速程序传送至客户机。在另一实施例中,所述方法包括通过加速程序建立与服务器的通信会话。在一些实施例中,加速程序安装在客户机上,而无需通过客户机的用户重启客户机或者与其进行交互。在另外的实施例中,在客户机上对客户机用户、客户机的应用程序或服务器透明地执行加速程序的安装和执行。在一些实施例中,本发明的网络驱动器包括与网络栈的传输层对接的过滤设备驱动器。在一个实施例中,加速程序对网络栈的网络层、会话层或者应用层透明地提供了对于服务器上应用程序的客户端加速访问。
在另一实施例中,本发明的方法包括通过所述器具将第一程序传送至客户机。所述第一程序包括加速程序。当接收到第一程序时,客户机自动执行第一程序,从而安装并执行加速程序。在一些实施例中,第一程序包括提供给浏览器并在浏览器上执行的可执行指令。
在本发明的一些实施例中,所述方法包括通过所述器具接收来自客户机的要求访问服务器上的应用程序的请求,并通过所述器具将消息传送至客户机,以通知加速程序对客户机和服务器之间的通信执行至少一种加速技术。在另一实施例中,所述器具确定应用程序是否能够被加速,如果应用程序能够被加速则传送消息至客户机。
在一些实施例中,所述加速程序在客户机上执行下列加速技术的其中之一:1)压缩,2)解压缩,3)传输控制协议连接池,4)传输控制协议连接复用,5)传输控制协议缓冲,和6)高速缓存。在另一实施例中,所述加速程序执行客户机和服务器之间通信信息的加密或解密。在一个实施例中,网络驱动器建立与所述器具或者服务器的虚拟专用网络连接。所述器具可以包括高速缓存、网关、服务器、防火墙、代理、路由器、交换机或者桥。
在另一方面中,本发明涉及一种用于向客户机自动提供加速程序的方法,用于加速客户机对远程访问应用程序的访问。所述方法包括通过器具接收来自客户机的要求通过服务器访问应用程序的请求,并通过所述器具确定该应用程序能够被加速。所述方法进一步包括通过所述器具将加速程序传送至客户机,以在客户机上自动安装并执行。在一个实施例中,本发明的方法包括当从所述器具接收到加速程序时,通过客户机自动执行并安装所述加速程序。在一些实施例中,客户机对客户机上的应用程序、客户机上的用户或者服务器透明地接收、安装和/或执行加速程序。
在另一实施例中,所述器具确定所述应用程序不能被加速,并将请求转发至服务器。在一些实施例中,所述器具确定所述应用程序能够通过下列加速技术之一来加速:1)压缩,2)解压缩,3)传输控制协议连接池,4)传输控制协议连接复用,5)传输控制协议缓冲,和6)高速缓存。所述器具可以传送加速程序,所述加速程序被配置成用于提供由所述器具确定为能够对应用程序加速的加速技术。加速程序可以执行或运行这些加速技术的其中之一。在一些实施例中,加速程序为所述器具或者服务器提供了虚拟专用网络。所述器具可以包括高速缓存、网关、服务器、防火墙、代理、路由器、交换机或者桥。
在一些方面中,本发明涉及一种用于动态地向客户机提供加速程序的器具,所述加速程序用于加速客户机对远程访问应用程序的访问。所述器具可以包括用于接收、确定和传送的装置,所述用于接收、确定和传送的装置接收来自客户机的要求通过服务器访问应用程序的请求,确定应用程序能够被加速并将加速程序传送给客户机。加速程序可以被配置成在客户机上自动安装和运行。
在一些实施例中,所述器具还包括用于确定加速和转发请求装置,用于通过该器具确定应用程序不能被加速,并将所述请求转发给服务器。在另外一些实施例中,所述器具包括用于确定的装置,所述用于确定的装置确定应用程序能够利用下列加速技术之一被加速:1)压缩,2)解压缩,3)传输控制协议连接池,4)传输控制协议连接复用,5)传输控制协议缓冲,和6)高速缓存。在一个实施例中,所述器具具有用于传送加速程序的装置,用于通过所述器具传送加速程序,所述加速程序配置成提供通过器具确定的能够加速应用程序的加速技术。所述器具还可以使用加速程序来建立虚拟专用网络。所述器具可以包括高速缓存、网关、服务器、防火墙、代理、路由器、交换机或者桥。
在另一方面中,客户端加速功能通过执行传输层连接池技术的加速程序来提供,以提高远程访问应用程序递送和通信的性能。加速程序建立从客户机至服务器的传输层连接,所述传输层连接可以由客户机上的多个应用程序使用,或者在客户机的应用程序之间共享。加速程序保持传输层连接处于打开状态,以降低传输层连接请求的数目以及为客户机上运行的一个应用程序或多个应用程序建立的与服务器的传输层连接的数目。
在一个方面中,本发明涉及一种加速访问的方法,所述方法通过在客户机上使至服务器的一个或更多传输层连接入池来加速客户机对服务器的访问。该方法包括通过客户机上的加速程序截获第一请求,所述第一请求是第一应用程序要求建立与服务器的第一传输层连接的请求,然后通过加速程序建立加速程序和服务器之间的传输层连接。该方法还包括通过加速程序截获第二请求,所述第二请求是第二应用程序要求建立与服务器的第二传输层连接的请求,并通过加速程序使用已建立的传输层连接为第二应用程序提供请求的传输层连接。
在一个实施例中,本发明的方法包括当来自客户机请求要求建立与服务器的一个连接或者会话时,通过器具将加速程序传送至客户机。当接收到加速程序时,客户机可以自动安装并执行加速程序。在一些实施例中,加速程序包括对接至客户机网络栈的传输层的过滤设备驱动器。在其他的实施例中,所述方法还包括通过加速程序经过已建立的传输层连接对来自要求客户机上的多个应用程序的请求进行复用。
在一些实施例中,所述方法包括通过加速程序在客户机上执行下列加速技术的其中之一:1)多协议压缩,2)传输控制协议复用,3)传输控制协议缓冲,以及4)高速缓存。在另一实施例中,所述加速程序执行客户机和服务器之间通信的加密或解密。在一个实施例中,该方法包括当接收到复位和结束命令时,通过加速程序关闭第一传输层连接。在另一实施例中,所述方法包括在等待活动时期期间,通过加速程序保持服务器和第一应用程序或第二应用程序之间的传输层连接处于打开状态。在另外的实施例中,加速程序在从客户机至服务器的通信信息中插入指令以保持传输层连接打开。
在本发明的一个实施例中,该方法包括通过比较每个应用程序传送至服务器的字节数和来自服务器的应答的字节数,通过加速程序来确定传输层连接当时是正由第一应用程序或正由第二应用程序使用。在一些实施例中,加速程序确定传输层连接当前正由第一应用程序使用,然后打开加速程序和服务器之间的第二传输层连接,以供第二应用程序使用。在一个实施例中,在加速程序和与服务器通信的器具之间建立传输层连接。在一些实施例中,所述器具建立一个或更多传输层连接池,以供加速程序使用。
在另一实施例中,所述方法包括通过客户机透明地对客户机网络栈的应用层、会话层或者网络层执行加速程序。在另外的实施例中,所述方法包括通过客户机透明地对第一应用程序、第二应用程序或者服务器其中之一执行加速程序。
在另一方面中,本发明涉及一种加速访问的系统,所述系统通过在客户机上使至服务器的一个或更多传输层连接入池来加速客户机对于一个或更多服务器的访问。该系统包括用于截获第一请求和建立传输层连接的装置,用于通过客户机上的加速程序截获第一请求,所述第一请求是第一应用程序要求建立与服务器的第一传输层连接的请求,并通过加速程序建立加速程序和服务器之间的传输层连接。该系统还包括用于截获第二请求和使用已建立传输层连接装置,用于通过加速程序截获第二请求,所述第二请求是第二应用程序要求建立与服务器的第二传输层连接的请求,以及通过加速程序来使用已建立的传输层连接为第二应用程序提供请求的传输层连接。
在一个实施例中,本发明的系统包括用于通过客户机来自动安装和运行加速程序的装置。在一个实施例中,所述系统包括用于传送加速程序的器具,用于当从客户机接收到要求建立与服务器的一个连接或者会话的请求时,将加速程序传送至客户机。加速程序可以包括对接至客户机的网络栈传输层的过滤设备驱动器。在一些实施例中,该系统包括用于复用的装置,用于通过加速程序经过第二传输层连接对来自客户机上的多个应用程序的请求进行复用。
在一些实施例中,所述系统包括在客户机上执行下列加速技术其中之一的加速程序:1)多协议压缩,2)传输控制协议复用,3)传输控制协议缓冲,以及4)高速缓存。在另一实施例中,所述加速程序对客户机和服务器之间的通信进行加密或解密。在一个实施例中,该系统包括用于关闭的装置,用于在接收到复位和结束命令时通过加速程序关闭第一传输层连接。在另一实施例中,加速程序在等待活动时期期间保持服务器和第一应用程序或第二应用程序之间的传输层连接处于打开状态。在系统的另外实施例中,加速程序在从客户机至服务器的通信信息中插入指令以保持传输层连接打开。
在系统的一个实施例中,加速程序包括用于确定的装置,所述用于确定的装置通过比较每个应用程序传送至服务器的字节数和来自服务器的应答的字节数来确定传输层连接当时正由第一应用程序或第二应用程序之一在使用。在另一实施例中,加速程序包括用于确定传输层连接在使用和打开第二传输层连接的装置,用于确定传输层连接当前正由第一应用程序使用,并打开加速程序和服务器之间的第二传输层连接以供第二应用程序使用。在一些实施例中,加速程序在加速程序和与服务器通信的器具之间建立第二传输层连接。在一个实施例中,该器具提供了一个或更多传输层连接的池,以供加速程序使用。
在系统的另一实施例中,客户机透明地对客户机网络栈的应用层、会话层或者网络层执行加速程序。在另外的实施例中,所述系统包括客户机,所述客户机透明地对第一应用程序、第二应用程序或者服务器其中之一执行加速程序。
在另一方面中,客户端加速功能由执行传输层连接复用技术的加速程序来提供,以提高远程访问应用程序通信和递送的性能。加速程序建立从客户机至服务器的传输层连接,所述传输层连接可以由客户机上的多个应用程序使用,或者在客户机的应用程序之间共享。该加速程序对经过由加速程序维持的相同传输层连接对来自一个或更多应用程序的请求进行复用。因而,在使用传输层连接时,加速程序可以利用一个应用程序的等待时间通过相同传输层连接为第二应用程序的请求进行服务。
在一个方面中,本发明涉及一种加速的方法,所述方法通过共享的传输层连接对多个应用程序请求进行复用来加速客户机对服务器上一个或更多应用程序进行客户机访问的方法。所述方法包括通过客户机上的加速程序截获客户机的第一应用程序要求访问服务器的请求,并通过所述加速程序经由建立在加速程序和服务器之间的传输层连接来传送第一请求。该方法还包括通过加速程序截获客户机的第二应用程序要求访问服务器的第二请求,并通过所述加速程序经由第一应用程序所使用的已建立传输层连接来传送第二请求。
在一个实施例中,本发明的方法包括当从服务器接收到对于第一应用程序的请求的响应时,通过加速程序传输第二请求。在一些实施例中,该方法包括当确定第一应用程序目前没有正在使用传输层连接时,通过加速程序来传送第二请求。在另一实施例中,该方法包括通过比较第一应用程序传送至服务器的字节数和服务器应答的字节数,来由加速程序确定第一应用程序目前没有正在使用传输层连接。在另外的实施例中,该方法包括通过检验客户机和服务器之间消息中的消息标识符长度,由加速程序来确定第一应用程序目前没有正在使用传输层连接。
在本发明的一个实施例中,该方法还包括由加速程序经过传输层连接对来自客户机上的多个应用程序的请求进行复用。在另外的实施例中,该方法包括通过加速程序使供客户机的多个应用程序使用的至服务器的多个传输层连接入池。在一些实施例中,所述方法包括当从客户机接收到要求建立与服务器的连接的请求时,通过器具将加速程序传送至客户机。当接收到加速程序时,客户机可以自动安装并执行加速应用程序。在一些实施例中,加速程序包括对接至客户机网络栈的传输层的过滤设备驱动器。
在一些实施例中,该方法包括通过加速程序来执行下列加速技术之一:1)压缩,2)解压缩,3)传输控制协议缓冲,和4)高速缓存。在另一实施例中,所述加速程序执行客户机和服务器之间通信的加密或解密。在一个实施例中,所述方法包括当接收到第一应用程序和第二应用程序的重启或结束命令时,通过加速程序来关闭传输层连接。在另一实施例中,所述方法包括建立加速程序和与服务器通信的器具之间的传输层连接。在一个实施例中,该器具建立了一个或更多传输层连接的池,以供加速程序使用。在另外的实施例中,所述器具通过一个或更多传输层连接的池,对加速程序和服务器之间的多个通信进行复用。
在本发明的一个实施例中,所述方法包括通过客户机透明地对客户机网络栈的应用层、会话层或者网络层中之一执行加速程序。在另一实施例中,所述方法包括通过客户机透明地对第一应用程序、第二应用程序或者服务器执行加速程序。
在另一个方面中,本发明涉及一种加速系统,所述加速系统通过共享的传输层连接来复用多个应用程序请求,以加速客户机对服务器上一个或更多应用程序进行的客户机访问。所述系统包括用于截获和传送第一请求的装置,用于通过客户机上的加速程序截获客户机的第一应用程序要求访问服务器的请求,并通过所述加速程序经由建立在加速程序和服务器之间的传输层连接来传送第一请求。该系统还包括用于截获和传送第二请求的装置,用于通过加速程序截获客户机的第二应用程序要求访问服务器的第二请求,并通过所述加速程序经过由第一应用程序所使用的已建立传输层连接来传送第二请求。
在一个实施例中,本发明的系统包括用于传送第二请求的装置,用于在从服务器接收到对第一应用程序的请求的响应时,通过加速程序来传送第二请求。在另一实施例中,该系统包括用于传送第二请求的装置,用于在确定第一应用程序目前没有正在使用传输层连接时,通过加速程序来传送第二请求。在一些实施例中,该系统包括用于确定的装置,用于利用加速程序通过比较第一应用程序传送至服务器的字节数和服务器应答的字节数来确定第一应用程序目前没有正在使用传输层连接。在又一实施例中,该系统包括用于确定的装置,用于由加速程序通过检验客户机和服务器之间的消息中的消息标识长度来确定第一应用程序目前没有正在使用传输层连接。
在一些实施例中,该系统包括用于经由传输层连接对来自客户机上的多个应用程序的请求进行复用的加速程序。在另外的实施例中,系统包括使供多个应用程序使用的至服务器的多个传输层连接入池的加速程序。在一个实施例中,所述系统包括用于传送加速程序的器具,用于当从客户机接收到要求建立与服务器的一个连接或者会话的请求时,将加速程序传送至客户机。在另一实施例中,当接收到加速程序时,客户机自动安装并运行加速程序。在一些实施例中,加速程序包括对接至客户机网络栈的传输层的过滤设备驱动器。
在一些实施例中,加速程序执行下列加速技术之一:1)压缩,2)解压缩,3)传输控制协议缓冲,和4)高速缓存。在另一实施例中,所述加速程序对客户机和服务器之间通信进行加密或解密。在一个实施例中,所述系统包括用于关闭的装置,用于当接收到第一应用程序和第二应用程序的重启或结束命令时,通过加速程序来关闭传输层连接。在另一实施例中,所述方法包括建立加速程序和与服务器通信的器具之间的传输层连接。在一个实施例中,所述器具建立一个或更多传输层连接的池,以供加速程序使用。在另外的实施例中,所述器具通过一个或更多传输层连接池,对加速程序和服务器之间的多个通信进行复用。
在本发明的一个实施例中,所述方法包括通过客户端透明地对于客户机网络栈的应用层、会话层、、或者网络层中之一执行加速程序。在另一实施例中,所述方法包括通过客户机透明地对第一应用程序、第二应用程序或者服务器执行加速程序。在一些实施例中,所述系统包括用于建立加速程序和与服务器通信的器具之间的传输层连接的装置。该器具可以提供一个或更多传输层连接的池,以供加速程序使用。所述器具还通过一个或更多传输层连接的池,对加速程序和服务器之间的多个通信进行复用。
在又一个方面中,客户端加速功能通过加速程序来提供,所述加速程序执行传输层连接缓冲技术来提高远程访问应用程序的通信和递送性能。该加速程序建立从客户机至服务器的传输层连接,并基于客户机从服务器接收响应的消耗速率与客户机向服务器传送请求的生产速率之间的差值确定来对客户机的请求进行缓冲。因而,如果客户机的响应消耗速率跟不上请求的提交速率,则加速程序可以减速客户机的传送。
在一个方面中,本发明涉及一种用于在客户机上管理从服务器接收响应的消耗速率与向服务器传送请求的生产速率之间的差值的方法。所述方法包括在客户机上通过加速程序截获应用程序要求访问服务器的请求,所述加速程序代表应用程序经由传输层连接与服务器进行通信。所述方法还包括通过加速程序确定接收的服务器响应的消耗速率与客户机所传送请求的生产速率之间的差值降低至阈值之下,然后通过加速程序将所述请求存储在客户机的存储元件中。在一个实施例中,消耗速率低于生产速率。
在本发明的一些实施例中,该方法包括基于客户机的生产速率或者消耗速率的改变来通过加速程序确定传送存储的请求。在另一些实施例中,所述方法包括当从客户机接收到要求建立与服务器的连接的请求时,通过器具将加速程序传送至客户机。在一个实施例中,当接收到加速程序时,该方法包括通过客户机自动安装并运行加速程序。加速程序可以包括对接至客户机的网络栈传输层的过滤设备驱动器。在另一实施例中,加速程序对存储在存储元件中的请求进行压缩。
在一个实施例中,本发明的方法包括通过加速程序提供一个或更多传输层连接的池,以供客户机上应用程序访问服务器。在另一实施例中,该方法还包括由加速程序经过传输层连接对来自客户机上的多个应用程序的请求进行复用。
在另一方面中,本发明涉及一种用于在客户机上管理从服务器接收响应的消耗速率与向服务器传送请求的生产速率之间的差值的系统。所述系统包括用于截获请求的装置,用于在客户机上通过加速程序截获应用程序要求访问服务器的请求,所述加速程序代表应用程序经由传输层连接与服务器进行通信。所述系统还包括用于确定差值和存储请求的装置,用于通过加速程序确定接收的服务器响应的消耗速率与客户机所传送请求的生产速率之间的差值降低至阈值之下,并通过加速程序将所述请求存储在客户机的存储元件中。在一些实施例中,消耗速率低于生产速率。
在一个实施例中,本发明的该系统包括用于确定传送存储的请求的装置,用于基于客户机的生产速率或者消耗速率的改变通过加速程序确定传送存储的请求。在另一实施例中,所述系统包括传送加速程序的器具,用于当从客户机接收到要求建立与服务器的连接的请求时,将加速程序传送至客户机。在一些实施例中,当接收到加速程序时,客户机自动安装并运行加速程序。在一个实施例中,加速程序包括对接至客户机的网络栈传输层的过滤设备驱动器。在另外的实施例中,该系统包括用于压缩的装置,用于通过加速程序对存储元件中存储的请求进行压缩。
在一些实施例中,本发明的加速程序提供一个或更多传输层连接的池,以供客户机上的应用程序来访问服务器。在一些实施例中,该加速程序经由传输层连接对来自客户机上的多个应用程序的请求进行复用。在系统的一个实施例中,客户机透明地对客户机网络栈的应用层、会话层或者网络层执行加速程序。在另一实施例中,客户机透明地对应用程序或者服务器执行加速程序。
在另一方面中,通过以综合有效的方式来执行多个下列加速技术的加速程序来提供客户端加速功能:1)多协议压缩,2)传输控制协议池,3)传输控制协议复用,4)传输控制协议缓冲,以及5)高速缓存。加速程序建立客户机和服务器之间的传输层连接,并在传输层截获网络包。加速程序使用内核级的数据结构来访问在传输层截获的网络包,随后在接口点或者加速程序的执行点对截获的网络包执行一种或更多加速技术。
在一个方面中,本发明涉及一种方法,所述方法用于在客户机上由加速程序对经由客户机和服务器之间的传输层连接通信的网络包执行多种加速技术。该网络包在传输层通过加速程序来截获。该方法包括:在客户机上通过加速程序来建立加速程序和服务器之间的传输层连接,在传输层上通过加速程序截获在客户机和服务器之间通信的网络包。该方法还包括通过加速程序对在传输层截获的网络包执行多种加速技术。
在一个实施例中,该方法包括经过内核级数据结构通过加速程序访问网络包,所述内核级数据结构由至传输层连接的接口提供。所述方法还包括通过加速程序将所述网络包传送给服务器。所述加速程序可以在客户机上对截获的传输层网络包执行下列技术之一:1)压缩,2)  解压缩,3)传输控制协议连接池,4)传输控制协议连接复用,5)传输控制器协议缓冲,和6)高速缓存。在另一实施例中,所述方法包括通过加速程序对网络包的一部分进行加密或者解密。在一些实施例中,本发明的方法包括通过加速程序来提供至服务器的虚拟专用网络连接。在另一实施例中,该方法包括在客户机操作系统的内核模式或者用户模式通过加速程序来执行多种加速技术。
在本发明的一些实施例中,该方法包括在加速程序的可执行指令的一部分中,通过加速程序在加速技术相互之后执行多种加速技术。在另一些实施例中,该方法包括在加速程序的可执行指令中在一个接口点处,通过加速程序在加速技术相互之后执行多种加速技术。在另一实施例中,本发明的方法包括在加速程序的可执行指令的执行实例期间,通过加速程序在加速技术相互之后执行多种加速技术。在一些实施例中,内核级数据结构提供对网络包的一个或者更多应用级协议有效负荷的访问。
在另一方面中,本发明涉及一种系统,所述系统用于在客户机上由加速程序对经由客户机和服务器之间的传输层连接通信的网络包执行多种加速技术。该网络包在传输层通过加速程序来截获。该系统包括用于建立传输层连接和截获网络包的装置,用于在客户机上通过加速程序来建立加速程序和服务器之间的传输层连接,并在传输层上通过加速程序截获在客户机和服务器之间通信的网络包。该系统还包括用于执行多种加速技术的装置,用于通过加速程序对在传输层截获的网络包执行多种加速技术。
在本发明的系统的一个实施例中,所述加速程序通过调用至传输层连接的应用程序接口得到内核级数据结构。在一个实施例中,加速程序将网络包传送至服务器。在一些实施例中,多种加速技术包括下列技术中至少之一:1)压缩,2)解压缩,3)传输控制协议连接池,4)传输控制协议连接复用,5)传输控制协议缓冲,和6)高速缓存。在另一实施例中,加速程序对网络包的一部分进行加密或解密。在一些实施例中,加速程序提供了至服务器的虚拟专用网络连接。在另一实施例中,加速程序在客户机的操作系统的用户模式或者内核模式中执行。
在一些实施例中,本发明的加速程序包括可执行指令,用于在多种加速技术相互之后执行多种加速技术的每一技术。在另一实施例中,加速程序包括一个接口点,在所述接口点处,在加速技术相互之后执行多种加速技术。在其他实施例中,加速程序包括具有执行实例的可执行指令,在执行实例时,在加速技术相互之后执行多种加速技术。在一个实例中,加速程序经过内核级数据结构在传输层获得了对于一个或更多网络包的应用层协议有效负荷的访问。
在另一方面中,本发明旨在一种用于动态重定向的系统和方法,所述用于动态重定向的系统和方法在客户机上对客户机与服务器的通信进行动态重定向,以绕过确定不可用于这种通信的中介物。客户机上的加速程序建立客户机和服务器之间的传输层连接,并截获客户机至服务器的通信。传输层连接可以通过中介物来建立,诸如网关、代理或者器具。如果客户端加速程序确定中介物不能用于客户机至服务器的通信,则加速程序自动建立至服务器的第二传输层连接以绕过中介物。然后,加速程序通过至服务器的第二传输层连接来传送所截获的客户机的通信信息。加速程序可以自动将截获的客户机至服务器的通信透明地重新定向至客户机的应用程序或者任何用户。
在一个方面中,本发明涉及一种重定向方法,所述重定向方法用于当确定中介物不能用于客户机至服务器的通信时,在客户机上重定向客户至服务器的通信以绕过所述中介物。该方法包括:通过客户机上的加速程序经由中介物建立客户机和服务器之间的传输层连接,以及通过加速程序确定中介物不能用来由客户机经由传输层连接与服务器的通信。该方法还包括通过加速程序截获从客户机至服务器的通信,以及通过加速程序建立加速程序和服务器之间的第二传输层连接以绕过中介物。在一个实施例中,直接建立与服务器的第二传输层连接。在另一实施例中,经由第二中介物建立与服务器的第二传输层连接。所述中介物和第二中介物可以包括高速缓存、网关、防火墙、服务器、代理、路由器、交换机或者桥。
在一个实施例中,本发明的方法包括通过加速程序经由第二传输层连接将通信信息传送至服务器。在一个实施例中,该方法包括当从中介物接收到加速程序时,通过客户机自动安装并运行加速程序。在一个实施例中,加速程序包括对接至客户机的网络栈传输层的过滤设备驱动器。在其他实施例中,该方法包括通过加速程序对所述通信信息执行下列加速技术之一:1)压缩,2)传输控制协议连接池,3)传输控制协议连接复用,4)传输控制协议缓冲,和5)高速缓存。在另一些实施例中,该方法包括通过加速程序对客户机和服务器之间的通信进行加密。
在另一方面中,本发明涉及一种用于重定向的系统,所述重定向的系统用于当确定中介物不能用于客户机至服务器的通信时,在客户机上重定向客户机至服务器的通信以绕过所述中介物。该系统包括用于建立传输层连接和确定中介物不可用的装置,用于通过客户机上的加速程序经由中介物建立客户机和服务器之间的传输层连接,并通过加速程序确定中介物不能用来由客户机使用以经由传输层连接至服务器的通信。该系统还包括用于截获通信信息和建立第二传输层连接的装置,用于通过加速程序截获从客户机至服务器的通信信息,并通过加速程序建立加速程序和服务器之间的第二传输层连接以绕过中介物。在一个实施例中,该系统直接建立与服务器的第二传输层连接。在另一实施例中,该系统经过第二中介物建立与服务器的第二传输层连接。所述中介物和第二中介物可以包括高速缓存、网关、防火墙、服务器、代理、路由器、交换机或者桥。
在本发明的系统的一个实施例中,加速程序经由第二传输层连接将通信信息传送至服务器。在另一实施例中,该系统包括当从中介物接收到加速程序时通过客户机自动安装并运行加速程序。在一些实施例中,加速程序包括对接至客户机网络栈的传输层的过滤设备驱动器。在其他实施例中,该系统包括对所述通信信息执行下列加速技术之一的加速程序:1)压缩,2)传输控制协议连接池,3)传输控制协议连接复用,4)传输控制协议缓冲,和5)高速缓存。本发明的加速程序还可以对客户机和服务器之间的通信进行加密。
在下面的附图和说明书中将阐述本发明的各个实施例的详细情况。
附图说明
通过参考下面结合附图进行的描述,本发明前述的以及其他目的、方面、特征以及优势将更加显而易见且更容易被理解,其中:
图1A和1B示出了用于实施本发明的示例实施例的计算设备的实施例方框图;
图2A示出了本发明的客户端加速程序的实施例方框图;
图2B示出了利用服务器操作客户端加速程序的网络环境的实施例方框图;
图2C示出了结合与服务器通信的器具来操作客户端加速程序的网络环境的另一实施例的方框图;
图2D示出了本发明的器具的实施例的方框图;
图3A示出了本发明的方法实施例的步骤图,所述方法用于动态提供和自动安装并执行本发明客户端加速程序;
图3B示出了本发明方法的实施例的步骤图,所述方法用于确定应用程序可以加速;
图3C示出了本发明方法的另一实施例的步骤图,所述方法用于通过在传输层截获并使用内核级数据结构的加速程序来执行多种加速技术;
图4A示出了本发明方法的另一实施例的步骤图,所述方法用于通过第一程序在客户机上自动安装并执行加速程序:
图4B示出了本发明方法的实施例步骤图,所述方法用于加速程序和第一程序,以提供虚拟专用网络连接并执行一个或更多加速技术;
图5示出了本发明方法的实施例的步骤图,所述方法用于重定向客户机至服务器的通信,以绕过确定不能将通信信息传送至服务器的中介物;
图6示出了本发明方法的实施例的步骤图,所述方法用于执行传输控制协议缓冲的客户端加速技术;
图7示出了本发明方法的实施例的步骤图,所述方法用于执行传输控制协议连接池的客户端加速技术;
图7B示出了HTTP事务的实施例设置的图解视图,所述HTTP事务由多个应用程序通过本发明实施例所提供的一个或更多传输层连接的池来执行;
图8示出了本发明方法的实施例的步骤图,所述方法用于执行传输控制协议复用的客户端加速技术;
图9示出了传输层包的内容长度标识符的实施例的图解视图;和
图10示出了通过多个程序块传送的消息的内容长度标识符的另一实施例图解视图。
从结合附图在下面陈述的详细说明中,本发明的特征和优势将更加显而易见,其中,在全文中相同参考符号标识了相应的元件。在附图中,相同附图标记通常表示相同、功能相似和/或结构相似的元件。
具体实施方式
本发明示例实施例的目的在于,在网络环境中使用和执行客户端加速技术,以提高诸如远程访问应用程序的客户机和服务器之间的通信性能。在一个示例实施例中,本发明目的在于以对于客户机操作透明且与其无缝连接的方式在客户机上自动安装和运行客户端加速程序。在另一示例实施例中,本发明目的在于当所述器具设备确定客户机对服务器的访问或者远程应用程序的访问可以加速时,通过该器具设备为客户机动态提供客户端加速程序。在另一示例实施例中,本发明的目的在于一种加速程序,其用于在客户机上执行下列加速技术的一个或多个:1)多协议压缩,2)传输控制协议池,3)传输控制协议复用,4)传输控制协议缓冲,以及5)高速缓存。在一个示例实施例中,本发明使用内核级数据结构在传输层以综合有效的方式执行了这些加速技术。在又一示例实施例中,客户端加速程序执行代理重定向技术,以自动绕过任何中介物设备,从而连续不断地提供客户机对服务器或远程访问应用程序的访问。
客户端加速程序和本发明的功能可以在任何类型和形式的计算设备上使用和执行,诸如能够在任何类型和形式的网络上通信并执行此处描述的本发明操作的器具、网络设备或者计算机。图1A和图1B描述用于实施本发明实施例的计算设备100的方框图。如图1A和图1B所示,每个计算设备100包括中央处理单元102以及主存储器单元122。如图1A所示,典型的计算设备100可以包括:可视显示设备124、键盘126和/或诸如鼠标的指示设备127。每个计算设备100还可以包括附加的可选元件,诸如一个或更多输入/输出设备130a-130b(统一使用附图标记130来引用)以及与中央处理单元102通信的高速缓存存储器140。
中央处理单元102是用于对从主存储器单元122取出的指令进行响应和处理的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,诸如:California州的Mountain View的Intel公司制造的微处理器;Illinois州的Schaumburg的Motorola公司制造的微处理器;California州的Santa Clara的Transmeta公司制造的微处理器;RS/6000处理器,New York州的White Plains的InternationalBusiness Machines制造的微处理器;或者California州的Sunnyvale的Advanced Micro Devices制造的微处理器。计算设备100可以基于这些处理器中的任何处理器,或者基于能够如此出所描述进行操作的任何其他处理器。
主存储器单元122可以是能够存储数据并使得任何储存位置可以由微处理器102直接访问的一个或更多存储器芯片,诸如静态随机存取存储器(SRAM),突发式SRAM或者同步突发式SRAM(BSRAM),动态随机存取存储器(DRAM)、快速翻页模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展型数据输出DRAM(EDO RAM)、爆发式扩展数据输出DRAM(BEDO DRAM),增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM,PC 100 SDRAM、双倍数据速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接总线式随机DRAM(DRDRAM)或铁电体RAM(FRAM)。主存储器122可以基于上述的任何存储器芯片,或者能够如此处所描述进行操作的任何其他可用的存储器芯片。在图1A所示的实施例中,处理器102通过系统总线150(将在下面更加详细地描述)与主存储器204进行通信。图1描述了计算设备100的实施例,其中处理器通过存储器端口103直接与主存储器122进行通信。例如,在图1B中,主存储器122可以为DRDRAM。
图1B描述了其中主处理器102通过二级总线直接与高速缓存存储器140进行通信的实施例,所述二级总线有时称作后端总线。在另一实施例中,主处理器102使用系统总线150与高速缓存缓冲器140进行通信。高速缓存存储器140通常比主存储器122具有更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。
在如图1A所示的实施例中,处理器102通过本地系统总线150与各种I/O设备130进行通信。可以使用各种总线将中央处理单元102连接至I/O设备130中的任何一种设备,所述各种总线包括VESA VL总线,ISA总线,EISA总线,微通道结构(MCA)总线,PCI总线,PCI-X总线,PCI-Express总线,或者NuBus。对于其中I/O设备为视频显示器124的实施例,处理器102可以使用加速图形接口(AGP)与显示器124进行通信。图1B描述了计算机100的实施例,其中主处理器102通过HyperTransport、Rapid I/O或者InfiniBand直接与I/O设备130b进行通信。图1B还描述了其中本地总线和直接通信相混合的实施例:处理器102在与I/O设备130b直接通信的同时,使用本地互连总线与I/O设备130a通信。
计算设备100可以支持任何适当的安装设备116、诸如用于接收诸如3.5英寸、5.25英寸盘或者ZIP盘的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB设备、硬件驱动器或者适合于安装软件和程序的其他任何设备,所述软件和程序诸如是任何加速软件120或者加速软件中涉及本发明的部分。
计算设备100可以进一步包括储存设备128,诸如一个或更多硬盘驱动器或者独立磁盘的冗余阵列,所述储存设备128用于存储操作系统以及其他相关软件,以及用于存储应用软件应用程序,诸如任何与本发明的加速程序120相关的程序。可选地,还可以使用任何安装设备116作为储存设备128。另外,可以从可启动的介质运行操作系统和程序,例如像是KNOPPIX
Figure G05848867320070903D000201
的可启动CD,用于GNU/Linux的可启动的CD,其可以从knoppix.net作为GNU/Linux发行产品而得到。
另外,计算设备100可以包括网络接口118,以通过各种连接与局域网(LAN)、广域网(WAN)或者互联网对接,所述各种连接包括但并不仅限于标准电话线、LAN或者WAN链接(例如802.11,T1,T3,56kb,X.25)、宽带连接(例如ISDN、帧中继、ATM)、无线连接或者所有上述连接或者上述连接的任何某些组合。网络接口118可以包括内建的网络适配器,网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或者适合于将计算设备100对接至能够通信的任何类型网络且能够执行此处所述操作的其他设备。
在计算设备100中可以存在广泛种类的I/O设备130a-130n。输入设备包括键盘、鼠标、跟踪垫、跟踪球、麦克风和绘画板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。I/O设备可以由I/O控制器123控制,如图1A所示。I/O控制器123可以控制一个或更多I/O设备,诸如键盘126和指示设备127,例如指针或者光笔。另外,I/O设备还可以为计算设备100提供存储器128和/或安装设备116。在又一实施例中,计算设备100可以提供USB连接以接收手持USB储存设备,诸如California州的Los Alamitos的Twintech Industry,Inc.制造的设备的USB快闪驱动线。
在一些实施例中,计算设备100可以包括或者连接至多个显示设备124a-124n,所述显示设备每个均可以具有相同或者不同的类型和/或形式。因而,I/O设备130a-130n中的任何一个和/或I/O控制器123可以包括任何类型和/或形式的适当硬件、软件或硬件与软件的组合,以支持、启动或者提供连接以及供计算设备100使用多个显示装置124a-124n。例如,计算设备100可以包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示设备124a-124n对接、通信、连接或者使用所述显示设备。在一个实施例中,视频适配器可以包括多种连接器,以对接至多种显示设备124a-124n。在另一些实施例中,计算设备100可以包括多个视频适配器,并使每个视频适配器连接至一个或更多显示设备124a-124n。在一些实施例中,计算设备100的操作系统的任何部分均可以配置成用于使用多个显示器124a-124n。在另一些实施例中,可以由一个或更多其他计算设备来提供一个或更多显示设备124a-124n,诸如通过网络连接至计算设备100的计算设备100a和100b。这些实施例可以包括设计和构造成使用另一计算机的显示设备作为计算设备100的第二显示设备124a的任何类型的软件。本领域普通技术人员应当认识和理解的是,存在可以将计算设备100配置成具有多个显示设备124a-124n的各种方法和实施例。
在另一实施例中,I/O设备130可以是系统总线150和外部通信总线之间的桥170。所述外部通信总线诸如是USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线,FireWire 800总线,以太网总线,AppleTalk总线,千兆以太网总线,异步传输模式总线,HIPPI总线,超级HIPPI总线,SerialPlus总线,SCI/LAMP总线,FibreChannel总线或串行小型计算机系统接口总线。
图1A和1B中所绘类型的计算设备100通常在操作系统的控制下进行操作,所述操作系统控制任务的调度和系统资源的访问。计算设备100可以运行任何操作系统,诸如任何版本的Microsoft
Figure G05848867320070903D000211
Windows操作系统,不同软件版本的Unix和linux操作系统、Macintosh计算机的任何版本的MAC OS、任何嵌入式操作系统、任何实时操作系统、任何开源操作系统、任何专有操作系统、任何移动计算设备的操作系统、或者能够在计算设备上运行并执行此处所描述操作的任何其他操作系统。典型的操作系统包括:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT4.0、WINDOWS CE和WINDOWS XP,上述所有操作系统均由Washington州Redmond的Microsoft公司制造;California州Cupertino的Apple Computer制造的MacOS;New York州Armonk的International Business Machines制造的OS/2;和由Utah州的Salt LakeCity的Caldera Corp发布可以自由获取的Linux操作系统,或者其他任何类型和/或形式的Unix操作系统。
在其他实施例中,计算设备100可以具有不同的处理器、操作系统以及符合所述设备的输入设备。例如,在一个实施例中,计算机100是由Palm.Inc制造的Treo 180、270、300、600或650智能电话。在该实施例中,Treo智能电话在PlamOS操作系统的控制下操作,并包括指示笔输入设备以及五向(five-way)导航设备。另外,计算设备100可以是任何工作站、台式计算机、膝上或者笔记本计算机、服务器、手提计算机、移动电话、任何其他计算机或者能够通信且具有执行所述操作的足够的处理器能力和存储器能力的其他形式计算设备或者电信设备。
在一个方面中,本发明涉及客户端加速程序,所述客户端加速程序用于执行一个或更多加速技术,以加速、增强或者改善客户机与服务器的通信和/或对服务器的访问,诸如访问服务器提供的应用程序。现在参考图2A,描绘了具有本发明的加速程序120的客户机205。简要说明,客户机205在具有操作系统的计算设备100上操作,所述操作系统具有内核模式202和用户模式203以及具有一个或更多层210a-210b的网络栈210。客户机205已经安装和/或执行了一个或更多应用程序220a-220n。在一些实施例中,一个或更多应用程序220a-220n可以通过网络栈210与网络进行通信。应用程序220N其中之一可以包括第一程序222,例如在一些实施例中是用于安装和/或执行加速程序120的程序。
客户机205的网络栈210可以包括任何类型和形式的软件或硬件或者其结合,以提供与网络的连接和通信。在一个实施例中,网络栈210包括网络协议程序组的软件实现。网络栈210可以包括一个或更多网络层,诸如本领域技术人员可以认识和理解的开放系统互连(OSI)通信模型中的任何网络层。因而,网络栈210可以包括用于OSI模型的任何下列层的任何类型和形式的协议:1)物理层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层和7)应用层。在一个实施例中,网络栈310可以包括互联网协议(IP)的网络层协议上的传输控制协议(TCP),通常称之为TCP/IP。在一些实施例中,TCP/IP协议可以在以太网协议上执行,以太网协议可以包括任何IEEE广域网(WAN)或者局域网(LAN)协议族中的协议,诸如由IEEE802.3所包括的那些协议。在一些实施例中,网络栈210包括任何类型和形式的无线协议,诸如IEEE 802.11和/或移动互联网协议。
鉴于基于TCP/IP的网络,因此可以使用任何基于TCP/IP的协议,包括信报传递应用程序接口(MAPI)(电子邮件),文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP语音(VoIP)协议。在另一实施例中,网络栈210包括任何类型和形式的传输控制协议,诸如改进的传输控制协议,例如TCP事务(T/TCP)、TCP选择性确认(TCP-SACK)、TCP大窗口(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议和TCP欺骗协议。在另外的实施例中,网络栈210可以使用诸如UDP over IP的任何类型和形式的用户数据报协议(UDP),诸如用于语音通信或者实时数据通信。
另外,网络栈310可以包括支持一个或更多层的一个或更多网络驱动器,诸如TCP驱动器或者网络层驱动器。网络驱动器可以作为计算设备100的操作系统的部分或者作为任何网络接口卡或者计算设备100的其他网络访问部件部分而包括在其中。在一些实施例中,可以定制、修改或者改变网络栈210中的任何网络驱动器,以提供定制或者修改的网络栈210部分,从而支持此处描述的本发明的任何技术。在另外的实施例中,加速程序120被设计和构造成对由客户机205的操作系统提供或者安装的网络栈210进行操作或者与其结合进行工作。
网络栈210包括任何类型和形式的接口,用于接收、获取、提供或者访问与客户机205的网络通信相关的任何信息和数据。在一个实施例中,与网络栈210的接口包括应用程序接口(API)。所述接口还可以包括任何函数调用、勾挂(hooking)或者过滤机制、事件或者回调机制,或者任何类型的对接技术。网络栈210经过接口可以接收或者提供与网络栈210的操作或者功能相关的任何类型和形式的数据结构,诸如对象。例如,数据结构可以包括与网络包或者一个或更多网络包相关的信息和数据。在一些实施例中,数据结构包括在网络栈210的协议层被处理的一部分网络包,诸如传输层的网络包。在一些实施例中,数据结构225包括内核级数据结构,而在另外的实施中,数据结构225包括用户模式的数据结构。内核级数据结构可以包括:在内核模式202中操作的网络栈210部分或者在内核模式202中运行的网络驱动器或者其他软件得到的或与之相关的数据结构,或者由服务、进程(Process)、任务、线程或者其他在操作系统的内核模式中运行或操作的其他可执行指令得到或者接收的任何数据结构。
另外,网络栈210的一些部分可以在内核模式202中执行或者操作,例如数据链路层或者网络层,而另外的部分在用户模式203中执行或者操作,诸如网络栈210的应用层。例如网络栈的第一部分210a可以为应用程序220a-220n提供对网络栈210的用户模式访问,而网络栈210的第二部分210b提供了对网络的访问。在一些实施例中,网络栈的第一部分210a可以包括一个或更多网络栈210的较高层,诸如5-7层中的任一层。在另外的实施例中,网络栈210的第二部分210b包括一个或更多网络栈的较低层,诸如1-4层中的任一层。在用户模式203、内核模式202或其结合中,在任何一个或更多网络层,或者在网络层的任何部分或者至网络层的接口点,或者与用户模式203和内核模式202的接口点或者任何部分,网络栈210的第一部分210a和第二部分210b中的每一部分可以包括网络栈210的任何部分。
本发明的加速程序120可以包括软件、硬件或者软件和硬件的任何组合。在一些实施例中,加速程序120包括任何类型和形式的可执行指令,所述可执行指令被构造并设计成执行或者提供此处所描述的本发明的功能和操作。在一些实施例中,加速程序120包括任何类型和形式的应用程序、程序、服务、进程、任务或者线程。在一个实施例中,加速程序120包括驱动器,诸如被构造和设计成与网络栈210对接并与网络栈210一起工作的网络驱动器。加速程序120的逻辑、功能和/或操作可以执行一个或更多下列本发明的加速技术:1)多协议压缩238,2)传输控制协议池224,3)传输控制协议复用226,4)传输控制协议缓冲228,和5)通过高速缓存管理器232进行高速缓存,这些技术将在下面进行更加详细的描述。另外,所述加速程序120可以执行对客户机205接收和/或传送的任何通信的加密234和/或解密。在一些实施例中,加速程序120还在客户机205和诸如服务器的另一计算设备100之间执行穿隧(tunneling)。在其他实施例中,加速程序120提供了至服务器的虚拟专用网络连接。
在一些实施例中,加速程序120在网络栈210的一个或更多层进行操作,诸如在传输层。在一个实施例中,加速程序120包括过滤驱动器、勾挂机制或者任何形式和类型的适当网络驱动器接口,所述接口诸如通过传输驱动器接口(TDI)对接至网络栈的传输层。在一些实施例,加速程序120对接至诸如传输层的第一协议层,和诸如传输协议层之上的任何层的另一协议层,例如应用协议层。在一个实施例中,加速程序120可以包括遵守网络驱动器接口标准(NDIS)的驱动器或者NDIS驱动器。在另一实施例中,加速程序120可以包括迷你过滤器或者迷你端口驱动器。在一个实施例中,加速程序120或者其部分在内核模式202中操作。在另一实施例中,加速程序120或者其部分在用户模式203中操作。在一些实施例中,加速程序120中一部分在内核模式202中操作,而加速程序120中的另一部分在用户模式203中进行操作。在另外的实施例中,加速程序120在用户模式203中进行操作,但是却对接至内核模式驱动器、处理、服务、任务或者操作系统的一部分,诸如以得到内核级数据结构225。在又一些实施例中,加速程序120是用户模式应用程序或者程序,诸如应用程序220a-220n。
加速程序120可以相对于网络栈210中的任何其他协议层以透明的方式在协议层操作或者对接至协议层。例如,在一个实施例中,加速程序120对于传输层以下的任何协议层(诸如,网络层)和传输层以上的任何协议层(诸如会话层、表示层或应用层协议)透明地操作网络栈210的传输层或者对接至网络栈210的传输层。这使得网络栈210的其他协议层能够根据需要进行操作,并且无需修改即可使用本发明的加速程序120。因而,加速程序120可以对接至传输层,以加速经过传输层携带的任何协议所提供的任何通信,诸如基于TCP/IP的任何应用层协议。
另外,加速程序120可以相对于任何应用程序220a-220n、客户机205的用户和与客户机205通信的任何其他计算设备(诸如服务器)以透明方式在网络栈210进行操作或者对接至网络栈210。可以在客户机205上以这样一种方式安装和/或运行加速程序120,以使得加速程序120可以在不改变应用程序220a-220n的情况下,对应用程序220a-220n的任何通信进行加速。在一些实施例中,客户机205的用户或者与客户机205通信的计算设备意识不到加速程序120的存在、执行或者操作。因而,在一些实施例中,加速程序120对于应用程序220a-220n、客户机205的用户、另一计算设备(诸如服务器)或者通过加速程序120所对接的协议层之上或者之下的任何协议层以透明方式安装、运行和/或操作加速程序120。
在一些实施例中,加速程序120以综合的方式或者形式来执行加速技术224、226、228、232中的一种或者更多。在一个实施例中,加速程序128包括任何类型和形式的机制,以在网络栈210的传输协议层截获、勾挂、过滤或者接收通信信息。通过在传输层截获客户机205的网络包,并经过诸如内核级数据结构225的数据结构在传输层对接至网络栈210,加速程序120可以对网络包执行传输层相关的加速技术,诸如传输控制协议(TCP)缓冲、TCP池和TCP复用。另外,加速程序120可以对传输层协议网络包的有效负荷所携带的任一协议或者多种协议执行压缩225。
在一个实施例中,加速程序120使用内核级数据结构225来提供对一个或更多网络包的任何部分的访问,例如包括来自客户机205的请求或者来自服务器的响应的网络数据包。在一个实施例中,加速程序120可以使用内核级数据结构来执行期望的加速技术。在一个实施例中,当使用内核级数据结构225时,加速程序120在内核模式202中运行,而在另一实施例中,当使用内核级数据结构225时,加速程序120在用户模式203中运行。在一些实施例中,可以将内核级数据结构复制成或者传送至第二内核级数据机构或者任何期望的用户级数据结构。尽管在图2A中将加速程序120一般地描绘为具有在用户模式203中操作的第一部分和在内核模式202中操作的第二部分,但是在一些实施例中,加速程序120的任何部分均可在用户模式203或者内核模式202中运行。在一些实施例中,加速程序120仅仅可以在用户模式203中操作,而在另外的实施例中,加速程序120仅仅可以在内核模式202中操作。
另外,通过在网络栈210的传输层截获网络数据包或者经过内核级数据结构225获得对网络数据包的访问,加速程序120可以在执行加速应用程序120的任何可执行指令的时刻、或者单个接口点、或者单个执行点执行或者应用本发明的多种加速技术。例如,在一个实施例中,在加速程序120的指令集或者函数中,诸如可以通过调用构造并设计成执行加速技术的可执行指令集来执行多种加速技术。在一些实施例中,在执行的一个接口点、位置处或者在指令集中,加速程序120调用与任何程序、服务、进程、任务、线程或者可执行指令的一个或更多应用程序接口(API),所述可执行指令被设计并构造成用于提供:1)多协议压缩238,2)传输控制协议池224,3)传输控制协议复用226,4)传输控制协议缓冲228,和5)通过高速缓存管理器232进行高速缓存,并且在一些实施例中还提供加密234。
通过在加速程序120的可执行指令中的一个地点或位置或者在网络栈210的一个协议层(诸如传输层)执行多种加速技术,可以更加高效和有效地执行这些加速技术的综合。在一个方面中,可以减少进程之间的上下文切换的数目以及存储器所需或者使用的数据结构的副本或者所使用数据结构的数目。此外,在加速程序120的可执行指令集中,可以诸如以紧密耦合的方式有效地执行加速技术中的任何技术之间的通信和同步。因而,可以更加有效地执行与将在加速技术之间共享或传送的信息和数据相关以及与将执行的加速技术的顺序相关的任何逻辑、规则、功能或者操作。加速程序120可以在传输层截获TCP包,经过内核级数据结构225得到TCP包的有效负荷,然后以期望的顺序执行期望的加速技术。例如,网络包可以首先压缩,然后进行高速缓存。在另一实施例中,可以经过已缓冲、入池和/或复用的TCP连接将已压缩的高速缓存数据通信传送至服务器。
仍然参考图2A,在一些实施例中,第一程序222可以用于以自动、静默、透明的方式或者其他方式来安装和/或执行加速程序120。在一个实施例中,第一程序222包括加载至应用程序220a-220n之中并由其执行的插件,诸如ActiveX控件或者Java控件或脚本。例如,第一程序包括诸如位于存储器空间或者应用程序220的上下文中由网络浏览器应用程序220加载和运行的ActiveX控件。在另一实施例中,第一程序222包括加载至诸如浏览器的应用程序220a-220n并由其运行的可执行指令集。在一个实施例中,第一程序222包括设计并构造成用于安装加速程序120的程序。在一些实施例中,第一程序222通过网络从另一计算设备获取、下载或者接收加速程序120。在另一实施例中,第一程序222是将诸如网络驱动器的程序安装在客户机205的操作系统上的安装程序或者即插即用管理器。
在另一实施例中,第一程序222可以包括加速程序120的功能、操作和逻辑部分,以促进或者执行此处描述的加速程序120的任何功能、操作和逻辑,诸如任何加速技术。在一些实施例中,第一程序222用于建立诸如传输层连接的连接,或者与器具或服务器的通信会话,诸如安全套接字层(SSL)通信会话。在一个实施例中,第一程序222用于建立或促进建立虚拟专用网络连接和通信会话。
图2A中所描绘的加速程序120或客户机205的高速缓存管理器232可以包括软件、硬件或者软件和硬件的任何组合,以提供对任何类型和形式的内容(诸如由服务器206a-206n服务的对象或者动态生成的对象)的高速缓存、控制和管理。高速缓存管理器232所处理和存储的数据、对象或者内容可以包括诸如标记语言的任何格式的数据或者通过任何协议通信的数据。在一些实施例中,高速缓存232对存储的原始数据或者以前计算、产生或传送的数据进行复制,其中相对于读取高速缓存存储元件,要取得、计算或者获取原始数据可能需要更长的访问时间。当数据存储在高速缓存存储元件中时,将来可以通过访问高速缓存的副本来使用所述数据,而不是重新取得或者重新计算原始数据,因此降低了访问时间。在一些实施例中,高速缓存存储元件可以包括在客户机205的存储器中的数据对象。在另外的实施例中,高速缓存存储元件可以包括比客户机205所使用的存储器的访问时间更快的存储器。在另一实施例中,高速缓存存储元件可以包括任何类型和形式的客户机205的储存元件,诸如硬盘的一部分。在又一实施例中,高速缓存管理器232可以使用存储器、储存器或者用于对数据、对象和其他内容进行高速缓存的处理单元任何部分和组合。
另外,本发明的高速缓存管理器232包括任何逻辑、功能、规则或者操作,以执行此处所述本发明的任何技术的实施例。例如,高速缓存管理器232包括基于无效时间周期的截止期限或者当从客户机205a-205n或服务器206a-206n接收到无效命令时使对象无效的逻辑或者功能。在一些实施例中,高速缓存管理器232可以作为在内核空间202中执行的程序、服务、进程或者任务进行操作,在另一些实施例中,可以作为在用户空间203中执行的程序、服务、进程或者任务进行操作。在一个实施例中,高速缓存管理器232的第一部分在用户空间203中执行,而第二部分在内核空间202中执行。在一些实施例中,高速缓存管理器232可以包括任何类型的通用处理器(GPP)或者任何其他类型集成电路,诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或者专用集成电路(ASIC)。
加速程序120或者客户机205的加密引擎234包括用于操纵诸如SSL或TSL的任何安全相关协议的处理或者其相关功能的任何逻辑、事务规则、功能或者操作。例如,加密引擎234对客户机205传送的网络包或者其部分进行加密和解密。加密引擎234还可以代替客户机205a-205n来设置或建立SSL或者TLS连接。因而,加密引擎234提供了SSL处理的卸载和加速。在一个实施例中,加密引擎234使用隧道协议来提供客户机205a-205n与诸如服务器的另一计算设备之间的虚拟专用网络。
仍然参考图2A,加速程序120或者客户机205的多协议压缩引擎238包括用于压缩一个或更多网络包的协议(诸如客户机205的网络栈210所使用的任何协议)的任何逻辑、事务规则、功能或操作。例如,多协议压缩238可以包括压缩和解压缩实用工具,包括GZip压缩和解压缩、差分压缩和解压缩,或者用于对网络上传送的数据进行压缩和解压缩的任何其他专用实用工具或公众可以得到的实用工具。在一个实施例中,多协议压缩引擎230在客户机205和诸如服务器的另一计算设备之间对任何基于TCP/IP的协议进行双向压缩,所述基于TCP/IP的协议包括信报传递应用程序接口(MAPI)(电子邮件)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP语音(VoIP)协议。在另外的实施例中,多协议压缩引擎238提供了基于超文本标记语言(HTML)的协议的压缩,在一些实施例中,提供了任何标记语言的压缩,诸如可扩展标记语言(XML)。因而,本发明的多协议压缩引擎238用于加速通过台式客户机访问应用程序的性能,所述台式客户机例如是Microsoft Outlook和非网络的瘦客户机(thin clients),诸如通过例如Oracle,SAP和Siebel的企业应用程序来运行的任何客户机,以及诸如便携式PC的移动客户机。
本发明的加速程序120还执行缓冲、入池和复用的传输协议层加速技术,这将在下面更加详细地进行描述。因而,加速程序120包括任何类型和形式的可执行指令,所述可执行指令具有用于执行此处描述的这些技术中任何技术的逻辑、规则、功能和操作。所述加速程序120在网络栈210的传输层对应用程序220a-220n经过网络栈210进行的任何传输层应用程序接口(API)的调用进行截获、控制和管理。加速程序120以透明的方式对客户机205的任何请求进行响应,以使得客户机205从网络栈210的传输协议层接收到期望的响应。例如,在一个实施例中,加速程序120在客户机205的网络栈210截获要求与诸如服务器的另一计算设备建立传输层连接的请求,并可以使用通过加速程序120建立的一个或更多传输层连接的池来对所述请求进行响应。在一个实施例中,加速程序120经由供第二应用程序220b使用而建立的传输层连接对来自第一应用程序220a的请求进行复用。
在一些实施例中,加速程序120包括缓冲或保持机制,用于在网络上进行传送之前,在客户机205上缓冲或者保持客户机205的通信信息。例如,客户机205从网络(诸如从服务器)接收通信信息的消耗速率可以低于客户机205在网络上传送通信信息的生产速率。因而,在客户机205可以以这样的速率向服务器206a-206n发送更多的请求,所述速率比客户机205消耗和处理来自这种请求的响应的速率更大。加速程序120可以截获通信信息,并确定客户机205的消耗速率和/或生产速率是否低于预定阈值,诸如由用户、客户机205或者另一计算设备配置的阈值。如果所确定的速率低于期望的阈值,则加速程序120将截获的通信信息存储至客户机的存储元件中,直到客户机205的性能将消耗速率和/或生产速率增加至大于等于预定或期望阈值的速率。在这一点,加速程序120在网络上传送客户机的通信信息。因而,本发明提供了客户端通信机制,以基于客户机205的通信生产和/或消耗性能来调节客户机205的通信。
图2中所描述的应用程序220a-220n可以是任何类型和/或形式的应用程序,诸如任何类型和/或形式的网络浏览器、基于网络的客户机、客户机-服务器应用程序、瘦客户机计算客户机、ActiveX控件或者Java小程序,或者是能够在客户机205上执行或者通过网络204进行通信的任何其他类型和/或形式的可执行指令。应用程序220a-220n可以使用任何类型的协议,并且可以是例如HTTP客户机、FTP客户机、Oscar客户机或者Telnet客户机。在一些实施例中,应用程序220a-220n使用远程显示或者表示层协议。在一个实施例中,应用程序220a-220n是Florida州Fort Lauderdale的Citrix Systems,Inc开发的ICA客户机。在另外的实施例中,应用程序220a-220n包括Washington州Redmond的Microsoft公司开发的远程桌面(RDP)客户机。在另外的实施例中,应用程序220a-220n包括与VoIP通信相关的任何类型的软件,诸如软IP电话。在再一些实施例中,应用程序220a-220n包括与实时数据通信相关的任何应用程序,诸如用于流视频和/或音频的应用程序。
现在参考图2B,描绘了用于执行本发明的加速程序120的网络环境200。简要来讲,环境200包括通过网络204与一个或更多服务器206a-206n通信的客户机205a-205n。服务器206a-206n可以提供或者执行供客户机205a-205n使用的一个或更多应用程序220a-220n。服务器206a-206n还可以包括加速程序120a-120n,以提供给客户机205a-205n来安装和运行。例如,在一个实施例中,诸如当请求建立与服务器206a-206n的连接或者通信会话时,服务器206a-206n响应于来自客户机205a-205n的要求访问服务器的请求,将加速程序120a-120n传送至客户机205a-205n。
网络204可以是任何类型和形式的网络。网络204可以是局域网(LAN)(诸如公司企业内部网),城域网(MAN)或者广域网(WAN)(互联网或者万维网)。网络204的拓扑结构可以是总线型、星型或者环形网络拓扑结构。网络204和网络拓扑可以是能够支持此处所述本发明的操作的任何网络或者网络拓扑。客户机205a-205n和服务器206a-206n可以通过各种连接而连接至一个或更多网络204,所述各种连接包括标准电话线、LAN或WAN链接(例如T1,T3,56kb,X.25,SNA,DECNET),宽带连接(ISDN,帧中继,ATM,千兆以太网,SONET网上承载以太网(Ethernet-over-SONET))和无线连接或者它们的结合。所述连接可以使用各种通信协议来建立(例如TCP/IP,IPX,SPX,NetBIOS,以太网,ARCNET,光纤分布式数据接口(FDDI),RS232,IEEE 802.11,IEEE 802.11a,IEEE 802.11b,IEEE802.11g和直接异步连接)。
在一些实施例中,服务器206a-206n可以运行应用程序220a-220n,例如所述应用程序可以是应用服务器,用于提供邮件服务,诸如由Washington州Redmond的Microsoft公司制造的MicrosoftExchange,或者是网络或者互联网服务器或者桌面共享服务器或协作(collaboration)服务器。在一些实施例中,220a-220n中任一个均可以包括任何类型的代管服务,诸如由Florida州Ft.Lauderdale的CitrixSystems,Inc提供的GOToMeeting.com、由California州Santa Clara的WebEx,Inc提供的WebEx.com或者Washington州Redmond的Microsoft公司提供的LiveMeeting.com。
在另一实施例中,客户机205a-205n中任一个均可通过网络204与服务器群206a-206n或者服务器网络通信,所述服务器群或服务器网络是作为单个实体进行管理的一个或更多服务器的逻辑组。服务器群206a-206n可以运行一个或更多应用程序220a-220n,诸如用于提供瘦客户机计算或者远程显示表示(presentation)应用的应用程序33f。在一个实施例中,作为应用程序220a-220n,服务器206a或者服务器群206a-206n执行由Citrix Systems,Inc提供的Citrix Access SuiteTM(诸如MetaFrame或者Citrix Presentation ServerTM)和/或MicrosoftCorporation制造的Microsoft Windows Terminal Services中的任何服务。在一些实施例中,服务器206a-206n中的任何一个包括用于将客户机205a-205n连接至任一个服务器206a-206n的网关、防火墙、路由器、交换机或者桥。在一个实施例中,服务器206a-206n包括代理。在另一实施例中,服务器206a-206n包括负荷平衡器。在一些实施例中,客户机205a-205n可以经过器具与服务器206a-206n通信。
图2C描述了网络环境201的另一实施例,其中器具250用于客户机205a-205n与服务器220a-220n之间的连接和通信。简要来讲,器具250包括用于提供网络204上的客户机205a-205n与网络204′上的服务器206a-206n之间通信的计算设备或者网络设备。在一些实施例中,客户机205a-205n和服务器206a-206n可以在相同网络204上或者不同的网络上。在另外的实施例中,客户机205a-205n可以在诸如互联网的公共网络上,而服务器206a-206n可以在诸如公司或者企业网络的专用网络上。
器具250包括任何类型的计算设备或者网络设备。在一些实施例中,器具250包括网关、代理、SSL VPN设备、桥、路由器或者交换机。在一个实施例中,器具250提供了从网络204上的客户机205a-205n至网络204’上的服务器206a-206n的虚拟专用连接。在一些实施例中,器具250可以建立与网络204上的客户机205a-205n的第一传输层连接以及与网络204’上的服务器206a-206n的第二传输层连接。在一些实施例中,器具250提供了远程访问应用程序和通信的加速,诸如客户机205a-205n与服务器206a-206n之间的应用程序220a-220n。如同客户端加速程序120一样,器具250的可执行指令的逻辑、功能和/或操作可以执行一个或更多下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议复用,4)传输控制协议缓冲,以及5)经过高速缓存管理器进行的高速缓存。另外,器具250可以对客户机205接收和/或传输的任何通信执行加密和/或解密。在一个实施例中,器具250诸如对客户机205a-205n至服务器206a-206n执行穿隧。
图2D示出了器具250的一个实例架构。简要来讲,器具250包括硬件层206以及分成用户空间203和内核空间202的软件层。硬件层206提供了硬件元件,在所述硬件元件上,执行内核空间202和用户空间203内部的程序和服务。硬件层206还提供了这样的结构和元件,所述结构和元件允许内核空间202和用户空间203内部的程序和服务相对于器具250从外部和在内部传送数据。软件层包括程序、服务、进程、任务、线程和其他可执行指令,以提供器具250的逻辑、功能和操作。
器具250包括应用程序加速确定机制275和客户端加速程序120。应用程序加速确定机制275包括软件、硬件或者硬件和软件的任何组合。在一些实施例中,应用程序加速确定机制275包括任何类型和形式的可执行指令,诸如程序、服务、进程、任务或线程,其具有用于确定在客户机205a-205n和/或服务器206a-206n上执行的应用程序220a-220n是否可以加速、或者客户机205a-205n和服务器206a-206n之间的通信或者访问是否可以加速的逻辑、功能、规则或者操作。在一个实施例中,应用程序加速确定机制275使用数据库来确定应用程序220a-220n是否可以加速。例如,数据库可以将应用程序220a-220n与能够加速应用程序220a-220n的一个或更多加速技术相关联,并可以进一步基于客户机205a-205n和/或服务器206a-206n的用户、类型、形式、位置、处理能力和其他特征。在一些实施例中,应用程序加速确定机制275使用包括有信息的存储器中的查找表、文件、数据结构或者对象,所述信息用于通过名称、类型或者类别来识别应用程序220a-220n是否可以通过加速技术进行加速。在另外的实施例中,器具250和/或应用加速确定机制275包括有配置机制,诸如用户接口、图形、命令行等,以接收用来指示、表明或者配置应用程序220a-220n或者对服务器206a-206n的访问是否可以加速的用户输入。
在一些实施例,应用程序加速确定机制275从服务器206a-206n请求指示信息,所述指示信息指示了在另外的实施例中对于某种类型和形式的客户机205a-205n是否可以通过某种加速技术对应用程序220a-220n进行加速。在又一实施例中,应用程序加速确定机制275包括历史信息数据库,所述历史信息数据库与使用或者不使用一种或更多客户端加速技术情况下的客户机205a-205n与服务器206a-206n之间的应用程序220a-220n的性能相关,以提供比较和启发信息数据库,所述比较和启发信息与在何处使用本发明的任何客户端加速技术对应用程序220a-220n加速或者能够对其进行加速相关。例如,器具250可以从客户机205a-205n获取与应用程序220a-220n的性能相关的网络相关性能信息。因此,基于网络204的操作和性能特征,或者受到改变网络204的操作和性能特征的影响,应用程序220a-220n能否被加速的确定可能改变。
在一个方面中,应用程序220a-220n可能不能被加速,或者可以被加速但是加速没有效率或者将非常微小。在一个实施例中,该类型和形式的应用程序220a-220n可能不能使用协议或者不能够以适合于使用加速技术的方式进行通信。在另一实施例中,应用程序220a-220通信的协议或者方式可能允许执行加速技术来加速,但是要基于客户机205a-205n、器具250或者服务器206a-206n的操作或者性能特征中任一个,这时加速技术将是没有效率的或者将提供微小的加速。因而,应用程序加速确定机制275可以基于应用程序220a-220n是否能够加速或者加速是否满足性能提高的期望预定阈值来确定不期望对应用程序220a-220n加速。
在另外的方面中,器具250在器具250的储存器或者存储元件中存储有客户端加速程序120,诸如通过器具的硬件层206提供的储存器或者存储器。在一个实施例中,器具250经过应用程序加速确定机制275动态确定正由客户机205a-205n使用的或者将由其使用的应用程序220a-220n可以通过在客户机205a-205n上执行加速程序120进行加速,并将加速程序120从器具250的储存器或者存储器传输或者另外传送至客户机205a-205n。在另一些实施例中,器具250确定客户机205a-205n和服务器206a-206n之间的通信可以通过在客户机205上执行的加速程序120进行加速,则将加速程序120传送至客户机205。在一些实施例中,器具250从诸如服务器206a-206n的另一计算设备100接收、下载或者得到加速程序120。
如图2D所示,硬件层206包括用于执行软件程序和服务的处理单元262、用于存储软件和数据的存储器264、用于传送和接收网络上的数据的网络端口266和加密处理器260,所述加密处理器260用于执行与网上接收和传输的数据的加密套接字层处理相关的功能。在一些实施例中,中央处理单元262可以在单个处理器中执行加密处理器260功能。另外,对于处理单元262和加密处理器260中每一个,硬件层206均可以包括多个处理器。尽管通常以加密处理器260来说明器具250的硬件层206,但是处理器260可以是用于执行与任何加密协议相关功能的处理器,诸如安全套接字层(SSL)或者传输层安全(TLS)协议。在一些实施例中,处理器260可以是通用处理器(GPP),而在另外的实施例中,其可以具有用于执行任何安全相关协议处理的可执行指令。
尽管以图2D中的特定元件来说明器具250的硬件层206,但是器具250的硬件部分或部件可以包括任何类型和形式的计算设备元件、硬件或者软件,诸如图1A和图1B所示并结合图1A和1B讨论的计算设备100。在一些实施例中,器具250可以包括高速缓存、服务器、网关、路由器、交换机、桥或者其他类型和形式的计算设备或者网络设备,并且可以具有与其相关的任何硬件和/或软件元件。
器具250的操作系统将可用的系统存储器分配、管理或者分割成内核空间202和用户空间204。在实例的软件架构200中,操作系统可以是任何类型和/或形式的UNIX操作系统,尽管并未这样限制本发明。因此,器具250可以运行任何操作系统,诸如任何版本的Microsoft
Figure G05848867320070903D000361
Windows操作系统,不同软件版本的Unix和Linux操作系统、Macintosh计算机的任何版本的MAC OS
Figure G05848867320070903D000362
、任何嵌入式操作系统、任何网络操作系统、任何实时操作系统、任何开源操作系统、任何专有操作系统、任何移动计算设备或者网络设备的操作系统、或者能够在器具250上运行并执行此处所描述操作的任何其他操作系统。
内核空间202为运行内核230预留,包括任何设备驱动器、内核扩展或者其他内核相关软件。本领域技术人员公知的是,内核230是操作系统的核心,提供对于应用程序104的硬件相关元件和资源的访问、控制和管理。根据本发明的实施例,内核空间202还包括大量的网络服务或者与高速缓存管理器232协同工作的处理,所述高速缓存管理器232有时还称作集成高速缓存,所述集成高速缓存有益之处将在此处进一步描述。另外,内核230的实施例将依赖于器具250安装、配置或者使用的操作系统的实施例。
在一个实施例中,器具250包括一个用于与客户机120a-120b和/或服务器206a-206n通信的网络栈267,诸如基于TCP/IP的栈。在一个实施例中,网络栈267用于同第一网络进行通信,诸如网络204和第二网络204’。在一些实施例中,器具250终止第一传输层连接,诸如客户机205a-205n的TCP连接,并建立与服务器206a-206n的第二传输层连接,以供客户机205a-205n使用,例如第二传输层连接在器具250和服务器206a-206n终止。第一和第二传输层连接可以通过单个网络栈267来建立。在另外的实施例中,器具250可以包括多个网络栈,例如267和267’,并且可以在一个网络栈267建立或终止第一传输层连接,在第二网络栈267’建立和终止第二传输层连接。例如,一个网络栈可以用于接收和传送第一网络的网络包,而另一网络栈用于接收和传送第二网络的网络包。在一个实施例中,网络栈267包括缓冲器243,用于对由器具250传输的一个或更多网络包进行排队。
如图2D所示,内核空间202包括高速缓存管理器232、高速层2-7集成的包引擎240、加密引擎234、策略引擎236和多协议压缩逻辑238。不是在用户空间203中,而是在内核空间202或者内核模式中运行这些部件或者进程232、240、234、236和238提高了这些部件中每一个、单个部件及其组合的性能。内核操作意思是这些部件或者进程232、240、234、236和238在器具250的操作系统的核心地址空间中运行。例如,通过将加密和解密操作移动至内核,在内核模式中运行加密引擎234提高了加密性能,从而降低了内核模式中的存储器空间或者内核线程与用户模式中的存储器空间或者线程之间的转移数量。例如,内核模式中得到的数据可以不必传输或者拷贝至运行在用户模式中的处理或者线程,诸如从内核级数据结构至用户级数据结构。在另一方面中,还可以降低在内核模式和用户模式之间的上下文切换数目。另外,可以更加有效地在内核空间202中执行部件或者处理232、240、235、236和238任何之间的通信和同步。
在一些实施例中,部件232、240、234、236和238中任何部分可以在内核空间202中运行或操作,而这些部件232、240、234、236和238中的另外部分可以在用户空间203中运行或者操作。在一个实施例中,本发明使用用于提供对一个或更多网络包的任何部分进行访问的内核级数据结构,例如包括来自客户机205a-205n的请求或者来自服务器206a-206n的响应的网络数据包。在一些实施例中,可以通过包引擎240经由至网络栈267的传输层驱动接口或者过滤器得到内核级数据结构。内核级数据结构可以包括经过内核空间202访问的与网络栈267相关的任何接口和/或数据、通过网络栈267接收或传送的网络包或者网络流(network traffic)。在另外的实施例中,内核级数据结构可以由任一部件或者进程232、240、234、236和238来使用,以执行期望的部件或者进程的操作。在一个实施例中,当使用内核级数据结构时,部件232、240、234、236和238运行在内核模式202中,而在另一实施例中,当使用内核级数据结构时,部件232、240、234、236和238运行在用户模式中。在一些实施例中,可以将内核级数据结构复制或者传送至第二内核级数据结构或者任何期望的用户级数据结构。
与客户端加速程序120相同,器具还可以对客户机205a-205n与服务器206a-206n之间的任何通信执行高速缓存。在一些实施例中,高速缓存存储器232元件可以包括在器具250的存储器264中的数据对象。在另外的实施例中,高速缓存存储元件可以包括访问时间比存储器264更快的存储器。在另一实施例中,高速缓存存储元件可以包括器具250的任何类型和形式的储存元件,诸如硬盘的一部分。在一些实施例中,处理单元262可以提供高速缓存存储器,以供本发明的高速缓存管理器232使用。在又一实施例中,高速缓存管理器232可以使用存储器、储存器或者用于对数据、对象和其他内容进行高速缓存的器具250的处理单元中的任何部分和组合。
另外,本发明的高速缓存管理器232包括任何逻辑、功能、规则或者操作,以执行此处所述的本发明技术的任何实施例。例如,高速缓存管理器232包括基于无效时间周期的截止期限或者当从客户机205a-205n或服务器206a-206n接收到无效命令时使对象无效的逻辑或者功能。在一些实施例中,高速缓存管理器232可以作为在内核空间202中执行的程序、服务、进程或者任务进行操作,在另一些实施例中,可以作为在用户空间203中执行的程序、服务、进程或者任务进行操作。在一个实施例中,高速缓存管理器232的第一部分在用户空间203中执行,而第二部分在内核空间202中执行。在一些实施例中,高速缓存管理器232可以包括任何类型的通用处理器(GPP)或者任何其他类型集成电路,诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或者专用集成电路(ASIC)。
图2D所描述的策略引擎236例如可以包括智能统计引擎或者其他可编程应用程序。在一个实施例中,策略引擎236提供配置机制,以允许用户来识别、指定、限定或者配置高速缓存策略。在一些实施例中,策略引擎236还具有至存储器入口,以支持诸如查找表或者哈希表的数据结构,从而使得能够进行用户选择高速缓存策略决策。在另外的实施例中,策略引擎236可以包括任何逻辑、规则、功能或者操作,以在确定并提供对于安全、网络流、网络访问、压缩、或器具250执行的任何其他功能或者操作的访问、控制和管理之外,确定并提供了对器具250高速缓存的对象、数据或者内容的访问、控制和管理。在一些实施例中,加速程序120从器具250的策略引擎236接收、下载或者获取策略信息。在另外的实施例中,加速程序120独立于器具250的策略引擎236或者与其结合执行并操作策略引擎236。
与客户端加速程序120的方式类似,并仍然参考图2D,器具包括加密引擎234,所述加密引擎包括用于处理任何安全相关协议进程的任何逻辑、业务规则、功能或者操作,或与其相关的任何功能,所述安全相关协议诸如是SSL或者TLS。例如,加密引擎234对经过器具250传送的网络包或者其部分进行加密和解密。加密引擎234还可以代替客户机205a-205n、服务器206a-206n或者器具250来设置或建立SSL或者TLS连接。因而,加密引擎234提供了SSL的卸载和加速处理。在一个实施例中,加密引擎234使用隧道协议来提供客户机205a-205n与服务器206a-206n之间的虚拟专用网络。在一些实施例中,加密引擎234与加密处理器260进行通信。在另外的实施例,加密引擎234包括在加密处理器260上运行的可执行指令。
同样,与客户端加速程序120相同,器具250可以包括多协议压缩引擎238’,所述压缩引擎包括用于压缩一个或更多网络包协议的任何逻辑、业务规则、功能或者操作,所述网络包协议诸如是器具250的网络栈267使用的协议中的任何协议。在一个实施例中,多协议压缩引擎238在客户机102a-102n和服务器206a-206n之间对任何基于TCP/IP的协议进行双向压缩,所述基于TCP/IP的协议包括信报传递应用程序接口(MAPI)(电子邮件),文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP语音(VoIP)协议。在另外的实施例中,多协议压缩引擎238提供了基于协议的超文本标记语言(HTML)的压缩,在一些实施例中,提供了任何标记语言的压缩,诸如可扩展标记语言(XML)。在一个实施例中,多协议压缩引擎238提供了任何高性能协议的压缩,诸如任何设计用于器具250和器具250通信的协议。在另一实施例中,多协议压缩引擎238压缩使用改进传输控制协议的任何通信或者任何有效负荷,诸如TCP事务(T/TCP)、TCP选择性确认(TCP-SACK)、TCP大窗口(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议和TCP欺骗协议。
因而,本发明的多协议压缩引擎238加速了用户通过台式客户机访问应用程序的性能,所述台式客户机例如是Microsoft Outlook和非网络的瘦客户机,诸如通过例如Oracle,SAP和Siebel的通用企业应用程序来运行的任何客户机,以及诸如便携式PC的移动客户机。在一些实施例中,与访问网络栈267的包处理引擎240集成在一起并通过在内核模式202中执行,多协议压缩引擎238能够对TCP/IP协议执行的任何协议进行压缩,诸如任何应用层协议。
图2D中描述的高速层2-7集成包引擎240也称作包处理引擎或者包引擎,负责管理器具250经过网络端口266接收和传送的包的内核级处理。高速层2-7集成包引擎240可以包括在诸如网络包的接收或网络包的传送的处理期间对一个或更多网络包进行排队的缓冲器。另外,高速层2-7集成包引擎240与一个或更多网络栈267通信,以经过网络端口266发送和接收网络包。高速层2-7集成包引擎240与加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238结合工作。特别地,将加密引擎234配置成执行包的SSL处理,将策略引擎236配置成执行与业务管理相关的功能,诸如请求级别内容切换和请求级别高速缓存重定向,并将多协议压缩逻辑238配置成执行与数据的压缩和解压缩相关的功能。
高速层2-7集成包引擎240包括包处理定时器242。在一个实施例中,包处理定时器242提供一个或更多时间间隔,以触发即将到来(即接收)或即将发出(传送)的网络包的处理。在一些实施例中,高速层2-7集成包引擎240响应于定时器242对网络包进行处理。包处理定时器242为包引擎240提供任何类型和形式的信号,以通知、触发或者传送与事件、间隔或者发生相关的时间。在许多实施例中,包处理定时器242以微秒级的速度进行操作。例如,在一些实施例中,包处理定时器242提供时间间隔或者使得高速层2-7集成包引擎240以10ms的时间间隔对网络包进行处理,而在另外的实施中,是以5ms的时间间隔,在又一实施例中,是以1和/或2ms的时间间隔。在操作期间,高速层2-7集成包引擎240可以与加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩引擎238对接、结合或者通信。因而,可以响应于包处理定时器242和/或包引擎240来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任何逻辑、功能或者操作。因此,可以以通过包处理定时器242提供的时间间隔的颗粒度来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任何逻辑、功能或者操作,例如以小于或者等于10ms的时间间隔来执行。例如,在一个实施例中,高速缓存管理器232可以响应于高速层2-7集成包引擎240和/或包处理定时器242来执行任何高速缓存对象的无效。在另一实施例中,高速缓存对象的终止或者无效时间可以设置为与包处理定时器242的时间间隔具有相同的颗粒度数量级,诸如每10ms。
在另外的实施例中,包引擎240或者其部分可以诸如像加速程序120的一部分一样,在客户机205a-205n上进行操作。因而,加速程序120可以如上所述根据包处理定时器242在客户机205a-205n上进行操作。在一个方面中,加速程序120可以在执行时的一个点处并响应于由包处理定时器242提供的颗粒度时间间隔,来执行综合的加速技术。
与内核空间202相反,用户空间203是用户模式应用程序或者在用户模式中运行的程序所使用的部分操作系统或者存储器区域。用户模式应用程序可以不直接访问内核空间202,而使用服务调用来访问内核服务。如图2D所示,器具250的用户空间203包括图形用户接口(GUI)210、命令行接口(CLI)212、外壳(shell)服务214、健康状况监视程序216和守护进程(daemon)服务218。GUI 210和CLI 212提供了一种装置,通过所述装置,系统管理器或者其他用户可以诸如在用户空间203或者内核空间202中且经由器具250的操作系统与器具250进行交互并控制器具250的操作。GUI 210可以是任何类型和形式的图形用户接口,并且可以经过文本、图形或者通过任何类型的程序或者应用程序来呈现,诸如浏览器。CLI 212可以是任何类型和形式的命令行或者基于文本的接口,诸如通过操作系统提供的命令行。例如,CLI212可以包括外壳,所述外壳是使用户能够与操作系统进行交互的工具。在一些实施例中,可以经过bash,csh,tcsh,或ksh类型的外壳来提供CLI 212。外壳服务214包括程序、服务、任务、进程或者可执行指令,以支持用户经由GUI 210和/或CLI 212与器具250或者操作系统进行交互。
仍然参考图2D,健康状况监视程序216用于监视、检验、报告和确保网络系统正确工作以及用户正在接收网络上的请求内容。健康状况监视程序216包括一个或者更多程序、服务、任务、进程或者可执行指令,以提供用于监视器具250的任何活动的逻辑、规则、功能或操作。在一些实施例中,健康状况监视程序216截获并检查经过器具250的任何网络流。在一些实施例中,健康状况监视程序216通过任何适当的装置和/或结构与下述一个或更多程序对接:加密引擎234、高速缓存管理器232、策略引擎236、多协议压缩逻辑238、包引擎240、守护进程服务218和外壳服务214。因而,健康状况监视程序216可以调用任何应用程序接口(API)来确定器具250的任何部分的情况、状态或者健康状况。例如,健康状况监视程序216可以以周期为基础发出声脉冲信号或者发送状态询问,以检验程序、进程、服务或者任务是否处于活动状态或者是否当前正在运行。在另外的实施例,健康状况监视程序216可以检验由任何程序、进程、服务或者任务提供的状态、错误或者历史日志,以确定器具250的任何部分的任何条件、状态或错误。
在另外的实施例中,健康状况监视程序216可以以类似方式来检验和确定与器具250通信的或器具250向其传送加速程序120的任何客户机205a-205n上的任何客户端加速程序120的状态、错误和历史日志。在一些实施例中,健康状况监视程序216或者其部分可以在客户机205a-205n上执行。
守护进程服务218是连续地或者在后台运行并对器具250接收的周期性服务器请求进行处理的程序。在一些实施例中,守护进程服务可以将请求转发至其他程序或者处理,诸如另一适当的守护进程服务218。可以无人看管地运行守护进程服务218,以执行连续或者周期性的系统广泛(wide)功能,诸如网络控制,或者执行任何期望的任务。在一些实施例中,一个或者更多守护进程服务218在用户空间203中运行,而在另外的实施例中,一个或更多守护进程服务218在内核空间202中运行。
现在将参考图3A,对本发明的方法300的实施例进行描述,所述方法用于通过器具250动态地提供加速程序120,并通过客户机205自动安装和执行加速程序120。简要来讲,在步骤310,器具250截获来自客户机205的要求建立与服务器通信会话的请求。在步骤315,器具250将加速程序120传送至客户机205,以供客户机205自动安装和执行。在步骤320,当接收到加速程序120时,客户机205自动运行或者执行加速程序120的静默安装。在步骤325,当完成加速程序120的安装时,客户机205在网络栈210自动执行加速程序120,以截获客户机205和服务器206之间的通信信息。在步骤330,加速程序120执行多种加速技术中的任何一种,并可以对通信信息进行加密和/或解密。
更加详细地讲,在步骤310,器具250可以通过适当的装置和机制截获或者接收来自客户机205的要求建立与服务器206通信的请求。在一个实施例中,器具250的包引擎240截获来自客户机205的通信。在另外的实施例中,器具250例如使用加速程序120来建立与客户机205的第一传输层连接,以及代替客户机205建立与服务器206的第二传输层连接。因而,器具250可以接收、截获或得到任何传送至服务器206的客户机通信。在一些实施例中,器具250截获客户机205要求建立与服务器206的传输层连接的请求。在另外的实施例中,器具205截获要求经过传输层连接之上的任何协议层建立通信会话的请求,诸如HTTP的应用层协议。本发明的方法实施例可以利用要求在客户机205的网络栈210的任何协议层建立通信会话的请求来实施。
在步骤315,器具250将加速程序120传送至客户机205。器具250可以在客户机205请求建立通信会话之前、期间或者之后的任何点处传送加速程序120。在一个实施例中,器具250响应于截获客户机请求将加速程序120传送至客户机205。在另一实施例中,器具250将所述请求转发至服务器206,并将加速程序120传送至客户机205。在一些实施例中,器具250建立了与服务器206的通信会话,并且一旦建立了通信会话时,器具250就传送加速程序120。在又一实施例中,器具250执行对客户机205或者客户机205的用户的认证和/或授权,如果认证的用户或者客户机205也如此被授权,则器具250将加速程序120传送至客户机205。在一个实施例中,器具250将客户机请求转发至服务器206,以进行认证和/或授权,如果服务器206对客户的请求进行了认证和/或授权,则器具250将加速程序120传送至客户机205。
在一些实施例中,器具250传送来自器具250的储存器或者存储器中的加速程序120。在另外的实施例中,器具250从服务器206请求加速程序120,并将所述接收的加速程序120传送至客户机205。在另外的实施例中,服务器206将加速程序120传送至客户机205。在一个实施例中,器具250将统一资源定位器(URL)传送给客户机205,以供客户机205获取、下载或者接收加速程序。在一些实施例中,URL指示了加速程序120在器具250的储存器或者存储器中的位置,而在另外的实施例中URL指示了服务器206上的加速程序120,所述服务器206诸如是提供用于下载的加速程序120的网络服务器。在一个实施例中,加速程序120存储在客户机205中,器具250将诸如加密或者证书密钥的密钥传送给客户机205,以供客户机205来安装和利用存储在客户机205上的加速程序120。在一些实施例中,器具250将用于安装和执行客户机205上的加速程序120的任何文件、配置、数据或者其他信息传送至客户机205。
在一个实施例中,将加速程序120设计和构造成通过客户机205自动安装和执行。加速程序120可以包括使得加速程序120根据客户机205的操作系统的类型和形式被操作系统注册和识别的任何文件、入口、配置、数据或者指令。在一个实施例中,诸如服务器或者器具的另外的计算装置将加速程序传送至客户机205,且客户机205自动安装和执行加速程序120。在一个实施例中,加速程序120被设计和构造成添加至正运行的计算设备100的即插即用(PnP)设备。在一些实施例中,加速程序120是自安装的可执行程序,诸如是包括安装程序和加速程序120的可执行程序。在另外的实施例中,加速程序120可以包括多个文件,例如安装包或者安装卸载包,诸如在客户机205的操作系统中注册和安装加速程序120需要的文件。例如,加速程序120可以包括:.inf文件和.sys文件。.inf文件为Microsoft Windows操作系统族的Windows Setup提供了安装设备需要的信息,诸如设备的有效逻辑配置单和装置相关驱动文件名。在一些实施例中,.inf文件可以包括autorun.inf文件,所述autorun.inf是告知或者通知操作系统启动哪个可执行程序以及与启动可执行程序相关的任何配置信息的配置文件。在一个实施例中.sys文件是包括加速程序120或者其部分的驱动器文件。
在步骤320,客户机205自动安装加速程序120。加速程序120可以根据客户机205的操作系统以任何适当的方式来安装。在一个实施例中,客户机205在接收到加速程序120时,安装加速程序120。在一些实施例中,客户机205自动实施或者执行加速程序120的静默安装。在一个实施例中,对客户机205的用户或者应用程序透明地执行静默安装。在另外的实施例中,加速程序120的静默安装不需要重新引导或者重新启动客户机205。在另一实施例中,静默安装不需要通过用户进行交互来开始和/或完成安装。在另外的实施例中,在客户机205正在运行的同时,发生加速程序120的静默安装,并对网络栈210的网络层、会话层和/或应用层透明。在一些实施例中,加速程序120是通过客户机205执行的自安装可执行程序。在另一实施例中,客户机205使用即插即用管理器来安装加速程序120。在一个实施例中,客户机205包括用于接收和安装加速程序120的安装管理器。在另一实施例中,通过器具250传送的加速程序120还包括用于安装加速程序120的安装程序。
在另外的实施例中,加速程序120通过静默安装来自动安装。在一个实施例中,静默安装包括无需用户来照看的安装。在另一实施例中,静默安装包括不需要或者不用通过用户进行交互来开始和/或完成安装的安装。在一些实施例中,安装是静默安装,其原因在于,安装过程不显示与安装过程或者状态相关的信息。在一个实施例中,安装是静默安装,其原因在于,它对于用户是透明的。在另外的实施例中,加速程序是静默安装,这是因为加速程序120的安装不需要重新引导或者重新启动客户机205。在另一实施例中,安装是静默安装,其原因在于,在客户机205的操作期间在无需中断或者打断客户机操作的情况下,无缝地发生所述安装。因而,可以以对于客户机205的程序或者用户以透明的方式安装加速程序120,而不需要重新引导,也不用向与安装相关的用户显示任何信息。
为了防止或者避免重新引导或重新启动客户机205,在一些实施例中,客户机205诸如客户机205的操作系统,具有用于在操作系统运行的同时为即插即用设备安装和配置驱动器(诸如在加速程序120的一个实施例中的网络驱动器)的即插即用管理器。在一个实施例中,基于加速程序120的安装包的配置,不指示即插即用管理器来重新引导或者重新启动客户机205。在另一实施例中,.inf文件不包括重新引导或者重新启动计算机的指令。在一个实施例中,加速程序120可以作为并行部件来实现,而不是替换使用中的共享动态链接库(DDL)。在另一特定实施例中,对于加速程序120的网络驱动器,加速程序120使用INetCfgPnpReconfigCallback网络驱动器API,从而使得不要求用户重新启动操作系统改变配置来使驱动器有效。另外,加速程序120可以具有通知对象,所述通知对象调用在INetCfgComponentControl的ApplyPnpChanges方法实施内的SendPnpReconfig API,以将配置信息发送至拥有该对象的网络部件的驱动器。SendPnpReconfig API提供了具有将数据发送至驱动器的机制的通知对象,在一些实施例中,用于避免在结构改变生效前请求用户重新引导操作系统。
在步骤325,当自动地、静默地或者透明地完成了加速程序120的安装时,加速程序120在客户机205上自动执行。在一些实施例中,用来安装加速程序120的安装程序启动或者执行加速程序120。在一些实施例中,加速程序120的安装程序进行系统调用以加载或者执行客户机205的存储器中的加速程序120。在一个实施例中,加速程序120的安装包括启动加速程序120的指令、命令或者伪指令(directive)。在一个实施例中,加速程序120包括自动运行配置,诸如autorun.inf文件,该文件通知客户机205自动运行加速程序120。在另外的实施例中,即插即用管理器或者客户机205的操作系统在安装时自动执行加速程序120。在一个实施例中,加速程序120包括客户机205启动的服务、进程、线程或者任务。在一些实施例中,加速程序120是配置成自动启动的操作系统服务。在一个实施例中,加速程序120包括在客户机操作系统的网络栈的存储器中加载的网络驱动器。
在另一实施例中,加速程序120包括加载至客户机205的存储器中的网络驱动器。在一些实施例中,加速程序120加载至分配给网络栈210的存储器中。在一些情况下,加速程序120在允许加速程序120访问的诸如传输层的网络栈协议层的存储器区域或者空间中加载和执行。在其他的情况下,加速程序在允许加速程序120访问内核级数据结构225的存储器中加载和执行。在另外的实施例中,加速程序120被加载至应用程序220a-220n的存储器中。在另外的实施例中,加速程序120在其身的存储器空间或者上下文中独立地执行。在一个实施例中,加速程序120在应用程序220a-220n的存储器空间或者上下文中运行。在一些实施例中,加速程序120被加载至用户模式存储器或者分配给用户模式203的存储器中,而在另一些实施例中,加速程序120被加载至内核模式存储器或者分配给内核模式202的存储器中。
在一些实施例中,加速程序120加载至存储器和/或在客户机205上对客户机的用户、客户机205的应用程序、器具250或者服务器206透明地执行所述加速程序。在另外的实施例中,加速程序120执行以与网络栈120的传输层的对接,并对传输层之上的任何协议层(诸如,会话层或者应用层)和传输层之下的任何协议层(诸如网络层)透明地执行。在一个实施例中,加速程序120对客户机205的任何传输层连接或者对于传输层本身透明地执行。
在步骤330,被加载、启动或者执行的加速程序120执行加速程序120的多种加速技术中的任何一种技术,诸如由以下技术提供的任何技术:1)多协议压缩238,2)传输控制协议池224,3)传输控制协议复用226,4)传输控制协议缓冲228,和5)经由高速缓存管理器232的高速缓存。加速程序120还可以执行对客户机205和服务器206之间通信的任何加密和/或解密。在一个实施例中,加速程序120执行多协议压缩。在另一实施例中,加速程序120执行传输控制协议池,而在又一实施例中,加速程序120经过入池的传输层连接执行复用。一个实施例中,加速程序120执行传输控制协议缓冲。在一些实施例中,加速程序120执行高速缓存。在另外的实施例中,加速程序120执行高速缓存和压缩。在一个实施例中,加速程序120执行对于传输层池和复用的高速缓存。在另一实施例中,加速程序120对于传输层池和复用执行多协议压缩。在另一实施例中,加速程序120执行对于TCP缓冲的高速缓存和/或压缩,而在另一实施例执行对于TCP池和复用的的高速缓存和/或压缩。
因而,本发明的客户端加速程序120通过器具250动态地提供,并在客户机205上以静默地方式或者对客户机205的应用程序或者用户透明地自动安装和执行,以对客户机205和服务器206之间的通信执行一种或更多客户端加速技术。加速程序120可以对于网络栈中的任何协议层以及对于客户机的用户、客户机的应用程序、器具或者服务器透明地执行这些加速技术。
在另一方面中,本发明涉及这样一种器具250,所述器具用于确定客户机205要求访问的应用程序是否可以加速,在所述应用程序可以加速时,为客户机205提供加速程序120。现在将参考图3B对本发明方法的另一实施例进行描述。当要求建立连接或者通信会话以及要求访问服务器上的应用程序时,可以实施本发明。简要地概述方法350,在步骤355,器具250截获来自客户机205的要求访问服务器206上的应用程序220a-220n的请求。在步骤260,器具250确定应用程序220是否能够加速。在步骤365,如果应用程序220不能加速,那么在步骤367应用程序将请求转发至服务器。在步骤365,如果应用程序220可以被加速,则器具250确定加速程序120是否安装在客户机205上,或者已经在以前将其传送至客户机205。如果还未向客户机205提供加速程序120,那么方法350在上述方法300的步骤315继续传送、安装和执行加速程序。如果已经在客户机205上安装和执行了加速程序120,那么器具250在步骤375发送消息给客户机205上的加速程序120以对应用程序220进行加速。在方法350的步骤330,加速程序120对应用程序220的通信执行多种加速技术,并可以对这样的通信进行加密和/或解密。
更详细地来讲,在步骤355,器具250可以通过任何适当的装置和结构截获来自客户机205的要求访问服务器206提供的应用程序的请求。在一个实施例中,器具250的包引擎240截获来自客户机205的通信。在另外的实施例中,器具250例如使用加速程序120建立与客户机205的第一传输层连接,并代替客户机205建立与服务器205的第二传输层连接。因而,器具250可以接收、截获或者另外获取传送至服务器206的客户机通信中的任何通信。在一些实施例中,器具250截获客户机205要求经过已经建立的与服务器206的传输层连接来访问应用程序220的请求。在另外的实施例中,器具205截获要求经过传输层连接上的任何协议层(诸如HTTP的应用层协议)来建立通信会话的请求。在一个实施例中,器具205截获客户机205要求经过远程显示协议(诸如ICA或者RDP)显示和提供来自服务器206的应用程序220的请求。
在步骤360,器具250确定客户机205请求的应用程序220是否可以加速。在一些实施例中,器具250从截获的客户机请求中识别、提取或者处理应用程序标识符,所述标识符以名称、类型或者分类(category)识别了应用程序。在一个实施例中,应用程序加速确定机制275由器具250使用,以确定应用程序220是否可以被加速。在一些实施例中,应用程序加速确定机制275在数据库、查找表或者存储器或者储存装置中其他结构数据源(诸如数据结构或者对象)中执行询问或查询,从而确定应用程序220是否可以被加速。在另外的实施例中,器具250发送诸如请求的通信信息至服务器206,以确定应用程序220是否可以被加速。
在另外的实施例中,器具250具有性能日志或者历史,以确定应用程序220以前是否被加速过以及所述加速是否提高了应用程序220的性能和操作。因而,如果这种加速满足应用程序220的性能或操作改善的预定阈值,器具250则可以确定应用程序220可以加速。在又一实施例中,器具250基于网络204、客户机205或者服务器206的当前操作和性能提供了启发式规则。在一个实施例中,如果客户机205具有特定的性能和操作特性或者能力,则可以确定应用程序220能够被加速,例如具有特定速度的处理器或者最小的存储器量。在一些实施例中,可以基于诸如在器具250的策略管理器中的配置策略或者规则来确定应用程序220能够加速。例如,可以对在远程用户和/或服务器206之间通信的应用程序220进行加速,所述远程用户使用特定类型客户机205来访问特定类型应用程序220。在另外的实施例中,可以基于客户机205的用户认证和授权来确定应用程序220能够加速。在又一实施例中,器具220可以确定不能对应用程序220进行加速。例如,应用程序220是偶尔使用类型的应用程序。
在步骤365,如果确定应用程序220不能被加速,或者不希望对客户机205上的应用程序220应用加速技术,则在步骤368,器具250将截获的客户机请求转发至服务器206,且不向客户机205传送或者提供加速程序120。在一个实施例中,器具250可以执行或者提供基于器具的器具220(应用程序)的加速。在另外的实施例中,器具250不执行对器具250上的应用程序220的加速。在又一实施例中,器具250可以执行一些加速技术,但是另外如果器具250确定应用程序220不能够被加速或者不期望被加速,不对应用程序220执行加速技术。
在步骤365,如果确定应用程序220能够被加速或者期望对客户机205上的应用程序应用加速技术,则器具250确定是否已将加速程序120提供给客户机205。在一个实施例中,器具250确定加速程序120是否已经安装在客户机205上或者是否正在客户机205上执行。在一些实施例中,器具250发送通信信息至客户机205上的加速程序120以确定加速程序120是否可以在客户机205上运行。在另外的实施例中,器具250检查日志文件或者历史文件以确定加速程序120是否已经传送至客户机205。在另一实施例中,器具250检查客户机205或者器具250的健康状况监视程序216,以确定是否正在客户机205上执行加速程序120。
如果器具250确定加速程序120已经传送、已经在客户机205上安装和/或执行,则器具250将根据结合图3A描述的方法300的步骤提供加速程序120。例如,器具250将加速程序120传送至客户机205,所述客户机205一旦接收到加速程序,则自动安装和执行。在一个实施例中,当达到方法300的实施例的适当步骤的性能时,器具250可以在步骤275发送消息给加速程序,以对应用程序220应用一个或更多加速技术。在另外的实施例中,如果加速程序120已经安装并执行,那么在步骤375,器具250发送消息给加速程序120以对应用程序220应用一个或更多加速技术。
在一些实施例中,加速程序120对识别的应用程序120执行加速程序120可以利用的加速技术中任一加速技术。在另外的实施例中,器具250向加速程序120指明对应用程序220执行哪种加速技术。在一个实施例中,加速程序120可以基于每个会话对应用程序120应用期望的加速技术。即,从器具250到加速程序120的消息仅告知加速程序120对应用程序220的该会话或实例执行加速技术。在另外的实施例中,当加速程序120从器具250接收到对识别的应用程序220应用加速技术的消息时,加速程序120对应用程序220的任何实例或者会话应用加速技术,直到重新引导或者重新启动客户机205,或者重新引导或者重新启动器具205。
在一个实施例中,在步骤375来自器具250的消息并非是特定应用程序的。例如,该消息通知加速程序120对客户机205的任何应用程序执行一种或更多加速技术。在一些实施例中,发送至客户机205的消息通知加速程序120停止对应用程序220或者对所有应用程序220a-220n使用任一种或者更多加速程序。在另一实施例中,器具250发送消息给加速程序120,以忽略某些应用程序220。在又一实施例中,器具250发送消息给加速程序120,以向加速程序120提供配置数据或信息,诸如加速技术的更新或者新加速技术的应用。
在步骤330,加速程序120对应用程序220执行加速程序120的多种加速技术中的任一种,诸如由下列技术提供的任何技术:1)多协议压缩238,2)传输控制协议池224,3)传输控制协议复用226,4)传输控制协议缓冲228,和5)经由高速缓存管理器232的高速缓存。加速程序120可以执行应用程序220在客户机205和服务器206之间的通信的任何加密和/或解密。在一个实施例中,加速程序120执行应用程序相关数据的多协议压缩。在另一实施例中,加速程序执行传输控制协议池,而在又一实施例中,加速程序120经由入池的传输层连接来执行复用。一个实施例中,加速程序120执行传输控制协议缓冲。在一些实施例中,加速程序120执行高速缓存。在另外的实施例中,加速程序120执行高速缓存和压缩。在一个实施例中,加速程序120对传输层池执行高速缓存,而在另一实施例中还对复用执行高速缓存。在另一实施例中,加速程序120对TCP缓冲执行多协议压缩,在再一实施例中,对传输层池执行多协议压缩,在又一实施例中,还对复用执行多协议压缩。在另一实施例中,加速程序120对压缩进行高速缓存,在再一实施例中,对TCP池执行高速缓存,在又一实施例中,还对复用执行高速缓存。
因而,本发明的器具250动态地确定是否对应用程序进行加速或者应用程序是否能够被加速,并发送消息通知本发明的客户端加速程序120以在客户机205上对应用程序220执行任一种或者更多加速技术。另外,在一些实施例中,可通过器具将多个加速程序120动态地递送给客户机205,并通过客户机205自动安装和执行。例如,可以根据本发明的技术和方法,为到服务器205的每个连接或者与应用程序220的每个通信会话提供加速程序120。因而,客户机205可以自动安装并执行多个加速程序120,以处理和执行每个服务器206a-206n或者每个应用程序220a-220n的加速。
在一个方面中,本发明涉及通过加速程序以综合高效的方式来执行多种加速技术。加速程序120在传输控制协议连接的传输层截获网络包,并使用内核级数据结构来得到网络包的信息和数据,诸如有效负荷数据,以在加速程序120执行的单个接口点或者位置应用多种加速技术。现在参考图3D,将描述用于以综合的方式执行多种加速技术的方法380的实施例。简要来讲,在步骤280,加速程序120在传输层截获经过传输层连接在客户机205和服务器206之间通信的网络包。在步骤390,加速程序120在传输层通过内核级数据结构对网络包进行访问,例如经由API提供的到客户机205的网络栈210的数据结构。在步骤395,加速程序120在加速程序120中的接口点或者执行点使用内核级数据结构以综合的方式执行多种加速技术。
进一步详细地讲,在步骤385,加速程序120通过任何适当的装置和结构截获经过传输层连接在客户机205和服务器206之间通信的网络包。在一个实施例中,加速程序120截获客户机请求或者对请求响应的网络包或相关网络包,所述请求要求建立客户机205和服务器206之间的传输层连接。在另一实施例中,加速程序120截获请求或者对请求响应的网络包或相关网络包,所述请求要求经过客户机205和服务器206之间的传输层连接访问或使用应用程序220。在一个实施例中,加速程序120在传输协议层经由网络栈210的传输驱动接口或者与传输协议层对接的网络驱动器截获网络包。在另一实施例中,加速程序120在传输协议层或者网络栈210的任何其他协议层经由网络驱动器接口规范(NDIS)驱动器或者迷你端口驱动器或者迷你过滤器驱动器截获网络包。在一些实施例中,加速程序120在传输层经过勾挂或者过滤机制截获网络包。
在步骤390,加速程序120经过内核级数据结构225访问或者获取在传输层截获的网络包的信息和数据。通过使用内核级数据结构225,加速程序120可以得到有效负荷的信息和数据或者在传输层通过网络包传送和携带的一个或更多协议的信息和数据。在一些实施例中,使用内核级数据结构来表示网络栈层和/或传输层以上层的网络包,使得加速程序120能够在传输层对传输层网络包携带的协议层执行或者操作多种加速技术。在一个实施例中,使用单个内核级数据结构225防止或者避免了使用网络栈210的各个协议层的多个数据结构随着上下文切换而进行的复制和存储器分配。在一个实施例中,加速程序120将内核级数据结构225复制到第二数据结构,所述第二数据结构包括另一内核级数据结构或者用户级数据结构。
在步骤395,加速程序120在可执行指令集或程序210中的单个接口点或位置、或者在程序210的一个执行点实施、执行或者操作多种加速技术。加速程序120执行加速程序120的多种加速技术中的任何技术,诸如由以下技术提供的任何技术:1)多协议压缩238,2)传输控制协议池224,3)传输控制协议复用226,4)传输控制协议缓冲228,和5)经由高速缓存管理器232的高速缓存。加速程序120还可以在执行加速程序120的加速技术的相同点处对客户机205和服务器206之间的应用程序220的通信执行任何加密和/或解密。
在一个实施例中,加速程序120在诸如函数调用的可执行指令集中或者一个地点或位置中,在加速技术相互之后执行任何期望的加速技术。例如,加速程序120经由内核级数据结构得到截获的网络包,然后在加速技术相互之后执行代表加速技术的逻辑、功能、规则或者操作的指令。因而,经过内核级数据结构225可以一次提取或得到网络包的信息和数据,并可以用作代表加速技术的应用程序120的任何指令的输入、参数、变元和条件。尽管网络包携带了更高级别的协议数据和信息,但是在一些实施例中,加速程序120在执行期间的一个点处和一个时间对网络包和更高级别的协议数据和信息进行处理。另外,加速程序120可以按照任何期望的顺序以综合的方式来执行多种加速技术的每种技术,诸如将压缩数据存储在高速缓存管理器232中,或者对从高速缓存中取得的数据进行压缩/解压缩。
在一个实施例中,加速程序120在相互之后执行多协议压缩和高速缓存。在另一实施例中,加速程序120在相互之后经过入池的传输层连接执行与传输控制协议池和复用相关的操作。在一个实施例中,加速程序120在压缩和高速缓存之后或者在TCP池和/或复用之后执行传输控制协议缓冲。在一些实施例中,加速程序120执行高速缓存。在一个实施例中,加速程序120随后对传输层池和复用执行高速缓存。在另一实施例中,加速程序120随后对传输层池和复用执行多协议压缩。在另一实施例中,加速程序120随后对TCP缓冲执行高速缓存和/或压缩,在另一实施例中,随后对TCP池和复用执行高速缓存和/或压缩。
尽管,通常将加速程序描述为随后执行加速技术,但是随后执行的还可以包括与加速无关但在每种加速技术之间综合执行的其他逻辑、功能和操作。由于在加速程序的单个接口点或者执行点可以执行加速技术、任何其他的操作或功能的可执行指令,使用这种加速技术的可执行指令的综合,加速程序仍可以得到高效的操作和性能。另外,可以在传输层的一个位置和/或一个时间处理传输协议层携带的或者传输协议层之上的协议层的加速技术。因而,由于网络包在网络栈210的这些更高层或者在网络栈210的随后的点进行处理和传输,因此不需要再次应用这些更高层协议的加速技术。
在另一方面中,本发明可以使用第一程序222和加速程序120(在该实施例中也称作第二程序)来实现。在一个实施例中,可以诸如经过器具250使用第一程序222连同第二程序120一起来促进和建立与服务器206的虚拟专用网络连接,在所述器具250上可以应用本发明的客户端加速技术。在另外的实施例中,使用第一程序222来安装和执行第二程序或者加速程序120。现在将参考图4A描述用于实施本发明该方面的方法400的实施例。简要来讲,在步骤402,客户机进入系统并建立与器具205的通信会话。在步骤404,器具250发送第一程序222至客户机205。在步骤406,客户机205安装并执行第一程序222,接着第一程序222安装并执行加速程序120,即第二程序。在步骤407,客户机205经过已建立的加密数据通信会话与专用网络进行通信并访问专用网络上的资源。在步骤410,客户机205从器具250退出,并终止与器具250的通信会话。
在方法400的步骤402,客户机205执行进入系统的过程,并建立经过网络204与器具250的加密数据通信会话。在一个实施例中,加密数据通信会话用作客户机205到任一服务器206a-206n的桥信息流(bridge traffic)的隧道,其在专用数据通信网络204’中驻留在器具250之后。在一个实施例中,客户机205使用网络浏览器,诸如MicrosoftInternet Explorer
Figure G05848867320070903D000551
或者Netscape Navigator
Figure G05848867320070903D000552
来进入系统并使用安全套接字层(SSL)或者诸如IPSec和传输层安全协议(TLS)的其他加密方法来建立与器具250之间的数据通信会话。在另一实施例中,诸如安全套接字层上的超文本传输协议(HTTPS)的协议可以用来启动加密数据通信会话。
在步骤404,响应于进入系统和加密数据通信会话的建立,器具250发送第一程序给网络204上的客户机205。将第一程序设计并构造或者配置成充当加密数据通信会话上的通信的隧道端点。在一个实施例中,第一程序包括通过客户机204的浏览器自动安装和执行的插件应用程序。例如,第一程序可以包括作为插件提供的供MicrosoftInternet Explorer
Figure G05848867320070903D000561
网络浏览器执行的ActiveX控件。在另一实施例中,第一程序可以包括作为插件提供的供Netscape Navigator
Figure G05848867320070903D000562
网络浏览器执行Java小程序,或者在网络环境中工作的另外控制或者编程部件。
在步骤406,客户机205安装并执行第一程序222,其中执行第一程序包括在客户机205上安装第二程序。在一个实施例中,第一程序222可以诸如使用结合图3A和方法300讨论的任何一种技术自动安装并执行。在一些实施例中,第一程序222从器具250获取、下载或者接收第二程序或者加速程序120。在另一实施例中,第一程序222包括诸如加速程序120的第二程序的安装程序或者安装管理器,以诸如通过静默安装或者对客户机205的用户、客户机205的应用程序220、器具250或者服务器206透明的安装来自动安装并执行第二程序。
在一个实施例中,将第二程序部分上配置成截获运行在客户机205上其目标是网络204上资源的应用程序220的通信信息,并将截获的通信信息提供给第一程序222,以通过加密的数据通信会话将其发送至器具250。第二程序还可以配置成提供内部网络名称解析服务以及可选的分割网络流。通过分割网络流,本发明的实施例就能够确定将哪个业务引导(channel)至SSL隧道或者第一程序222的加密隧道,以及允许哪个业务或者使得哪个业务在客户机205的正常、例行或者典型操作下继续通过网络栈210的传输层进行处理。在一个实施例中,第二程序包括作为“挂钩”插入在客户机205的操作系统中的动态截获器(例如,过滤器设备驱动器)。例如,第二程序可以包括附着至客户机操作系统的传输层栈的过滤器设备驱动器,诸如MicrosoftWindows
Figure G05848867320070903D000563
操作系统的传输层栈。
在步骤408,已经安装了第一和第二程序,运行在客户机205上的应用程序可以经过已建立的加密数据通信会话与专用数据通信网络204进行通信并对其上的资源(诸如应用程序或者数据)进行访问。该通信进行的方式将在下面结合图4B更加详细地进行讨论。注意,在一个实施例中,通过由客户机205自动安装和执行的单个控件或者编程部件(诸如本发明的加速程序120)来执行如上所述的第一程序和第二程序的功能。除了提供虚拟专用网络连接和通信之外,第一程序222和/或诸如加速程序120的第二程序可以对经过虚拟专用网络连接(例如,加密的隧道或者至器具250的桥)的客户机通信信息执行此处描述的加速技术中的任何一种。
在步骤410,客户机204执行退出过程以从网络204断开连接,终止与器具250的加密数据通信会话。在一个实施例中,在退出时,第一程序222自动清除客户机205的操作系统进行的修改,将操作系统返回至第一程序222和/或第二程序安装之前的状态。在一个实施例中,第一程序222和/或第二程序还包括卸载程序或者卸载指令,以便以不干扰客户机205的连续操作的方式,将第一和第二程序从客户机205的操作系统中或者从客户机205上的另外操作中移除。在又一实施例中,第一程序222和/或加速程序120移除供客户机205的应用程序在使用本发明提供的任何通信连接或者会话期间使用的任何文件,诸如临时文件或者cookies。
图4B描述了本发明的另一方法450的实施例,通过该方法,客户机205与专用数据通信网络204进行通信,并对其上的资源进行访问。例如,方法450代表了可以由方法400的步骤408实施的方法。简要来讲,在步骤452,客户机205经过第一程序和/或第二程序进行新连接或者对域名进行解析,诸如进行TCP/IP域名解析。在步骤454,执行第二程序。在步骤456,第二程序截获来自客户机205的其目标是专用网络204’的通信信息,并将通信信息重新路由或者发送至第一程序222。在步骤458,第一程序222终止该连接或者代理该连接,分离有效负荷,并将有效负荷封装,以经过已建立的加密通信会话进行递送。在步骤460,第一程序222经过预先建立的加密通信会话将在公共网络204上截获的通信信息发送至专用网络204中的器具250。在步骤462,器具250对从第一程序接收的通信信息进行解密,并将解密的通信信息转发至适当的目标资源,诸如服务器206a-206n。在步骤464,目标资源对解密的通信信息进行处理,并在步骤464,目标资源发送响应通信信息(如果存在)给器具250。在步骤468,器具250对响应通信信息进行加密,并经过预先建立的加密通信会话在公共网络205上将加密通信信息发送到客户机205的第一程序222。在步骤470,第一程序222解密响应通信信息,并经过第二程序将解密的通信信息转发至适当的客户机应用程序。
在步骤452,客户机205的应用程序220进行新连接或者经过客户机205的网络栈210的传输协议层对域名进行解析。在一个实施例中,应用程序220可以请求建立客户机205和服务器206之间或者客户机205和器具250之间的传输层连接。在另一实施例中,应用程序220或者客户机205可以请求访问服务器206提供的应用程序220。例如,通过传送代表服务器206上执行的应用程序220输出的ICA或者RDP远程显示协议,服务器206可以提供基于服务器的计算或者瘦客户机计算。在另一实施例中,客户机205可以请求访问服务器206的资源,诸如文件或者目录或者电子邮件服务。在一些实施例中,客户机205可以位于公共网络204上,而服务器206可以位于专用网络204’上。在另外的实施例中,客户机205和服务器206可以位于不同的专用网络上。
在步骤454,第二程序自动地或者在启动任何传输层功能之前执行一个或更多功能。在一些实施例中,第二程序是本发明的加速程序120或者包括本发明的加速程序120。在一个实施例中,第二程序截获或接收步骤452的客户机请求。在一些实施例中,客户机205的应用程序220对网络栈210进行API调用,所述调用由第二程序截获。在任何API调用被网络栈210的传输层处理之前,将第二程序勾挂至或者对接至网络栈210,以在传送通信信息或者对其处理之前执行逻辑、规则、功能或者操作以经过传输层连接传送。
在步骤456,第二程序诸如通过客户机205上的任何应用程序220a-220n截获来自客户机205的通信信息,并将其重新路由至第一程序222,所述通信信息的目标是网络204’上的资源,在一个实施例中,第一程序222包括ActiveX控件插件、Java小程序或者其他在网络环境中工作的控件或者编程部件。第二程序可以从网络包或者提供已截获的通信信息的包中访问、读取或者获得目标信息,从而确定该通信信息的目标是网络204’,诸如器具250之后的专用网络。例如,第二程序可以从网络包提取或者解译目标IP地址和/或端口。当确定截获的通信信息其目标是网络204’时,第二程序经过任何适当的接口装置和机制将截获的通信信息发送至第一程序222,诸如经由进程间通信接口或者API调用。在一个实施例中,将截获的通信信息原封不动地发送至第一程序222,或者在另外的实施例中,截获的通信信息在发送至第一程序222之前由第二程序进行预处理。例如,第二程序可以从截获的通信信息中移除有效负荷,并将有效负荷转发至第一程序222。
在步骤458,终止每个截获的通信信息或者由第一程序222来代理,并且第一程序222准备所截获的通信信息,以经过已建立的加密数据通信会话进行传输。在一个实施例中,第一程序222分离出有效负荷,并将有效负荷封装,以经过已建立的加密数据通信会话进行传送。在另一实施例中,当从第二程序接收到截获的通信信息时,第一程序222对其进行封装。在一些实施例中,有效负荷为TCP有效负荷,并经过诸如器具250将其封装成客户机205和服务器206之间的新TCP连接。
在步骤460,第一程序222经过预先建立的加密数据通信会话将网络204上截获的通信信息发送至网络204’中的器具250。在一些实施例中,第一程序222对截获的通信信息进行加密,并将加密的截获通信信息发送至器具250。在一个实施例中,根据SSL协议来实施加密。在另外的实施例中,加密基于TLS。第一程序222或者加速程序120可以使用任何类型和形式的加密和/或解密。
在步骤462,器具250充当代理,所述代理终止了第一程序222发送的连接。器具250对从第一程序222接收到的通信信息进行解密,并经由器具250已经建立的与网络204上的目标资源的第二连接,将解密的通信信息转发至网络204上适当目标资源。在一个实施例中,根据SSL协议或者其他可应用的加密和解密协议实施解密。在一些实施例中,器具250对转发至目标资源的通信信息执行一种或更多加速技术,诸如由以下加速技术提供的一种或更多种加速技术:1)多协议压缩238’,2)传输控制协议池224’,3)传输控制协议复用226’,4)传输控制协议缓冲228’,以及5)经过高速缓存管理器进行高速缓存232’。
在步骤464,目标资源对解密的通信信息进行处理。在一个实施例中,解密的通信信息是要求建立连接或者通信会话的请求。在另外实施例,解密的通信信息是要求代替客户机205启动或访问应用程序220的请求。在另外的实施例中,解密的通信信息是网页请求,诸如要求从网络服务器206接收网页的HTTP请求。
在步骤466,如果解密的通信信息包括有响应的请求,则目标资源向器具250发出响应通信信息。在一些实施例中,响应包括对建立客户机205所请求的连接或者通信会话的确认。在另外的实施例中,响应包括错误消息。在一个实施例中,响应包括认证请求或者引起响应的机制。在一些实施例中,响应包括供客户机205使用的加速程序120。在另外的实施例中,响应包括HTML,诸如由客户机205显示的网页。在另外的实施例中,响应包括诸如动态产生的对象的对象。
在步骤468,第一程序250经过预先建立的加密数据通信会话在网络204上将响应通信信息发送至客户机205上的第一程序220。在一个实施例中,器具250对响应通信信息进行加密,并将加密的响应通信信息发送至第一程序222。在一个实施例中,根据SSL协议或者其他可应用的加密和解密协议来实施加密。另外,器具250可以对到客户机205的通信信息执行本发明的任何加速技术,诸如多协议压缩238’、高速缓存232’或者TCP缓冲228’。
在步骤470,第一程序222对响应通信信息进解密,并经过第二程序将通信信息转发至适当的应用程序222。第一程序222可以使用任何适当的接口装置和机构与第二程序进行通信,诸如经过任何类型和形式的进程间通信机制或者API调用。第二程序经过客户机205的网络栈210将响应通信信息提供至应用程序220。因而,应用程序220透明地接收响应通信信息,而无需改变或者修改应用程序220。
根据本发明的另外实施例,在步骤458在网络204上发送通信信息之前,客户机205对截获的通信信息执行附加处理。由于本发明的实施例提供了充当代理的VPN的解决方案,所述代理在对这种数据进行加密之前终止客户机处的连接,因此可以更加有效地执行附加的处理。这种处理可以包括截获的通信信息的域名服务(DNS)名称解析,以使得客户机应用程序能够使用他们所选择的任何IP地址并能够在运行时动态改变那些地址。这种附加的处理允许本发明的实施例有效地综合另外的技术,诸如全局服务负荷平衡,从而在分布的网关或者服务器之中实现更大的可用性和更高的效率。附加的连接处理还可以使得能够保持与截获的通信信息相关的详细日志和统计。
在本发明的另一实施例中,器具250终止从客户机205上的第一程序接收到的通信,并进一步对包括在其中的一个或更多请求进行处理,而不是如步骤462所示将通信信息转发至网络204上的目标。该进一步的处理可以包括后端加密,其中在将通信信息传递至网络204上的适当目标之前,通过器具250对通信信息进行再次加密,从而提供了端对端的网络安全。因此目标将对业务进行解密并进行适当响应。另外,这种处理允许器具250通过目标服务器对出自高速缓存中的响应进行服务,而不是要求目标服务器进行额外的工作,并允许局域网络负荷平衡、全局服务负荷平衡和/或通信压缩,从而提高网络204的效率和响应。
根据上述方法,在客户机205和网络204之间建立基于加密数据通信会话的VPN。例如,在一个实施例中,经过HTTPS建立安全VPN。此后,通过该加密的数据通信会话将所有从客户机205到网络204的通信经第一程序路由至器具250,并且对于网络204到客户机205的通信也是一样。应当注意的是,尽管可以使用HTTPS来建立加密数据通信会话,但是经过加密数据通信会话传送的通信信息并不必要是HTTPS包数据或者甚至是HTTP包数据。例如,通信信息还可以包括传输控制协议/用户数据报协议(TCP/UDP)或者互联网控制消息协议(ICMP)包数据,但是这些实例并不是对本发明的限制。另外,尽管参考图4B描述的方法描述了客户机205上的应用程序与网络204上的资源之间的请求-响应类型的通信,但是根据本发明的加密通信并不需要基于请求-响应。相反,所述通信可以是任何类型的通信。因此,任何可以建立连接或者诸如UDP会话的通信会话的客户机应用程序均能够根据本发明的实施例来发送和接收加密的通信信息。
在另一方面中,本发明涉及一种加速程序120,所述加速程序用于从客户机动态绕过与服务器206连接或者通信的任何中介设备。例如,客户机205可以经过一个或更多中介物与服务器连接,所述中介物诸如是本发明的器具250。由于某种原因,中介物可能不能由客户机205用来与服务器206进行通信,例如,器具250可能因维护而停机,或者处于重新引导或者重新启动的过程中。本发明的加速程序120确定中介物不可用,则自动建立与服务器206的不同连接或者通信会话。
上述操作可以对于客户机205的用户或者程序透明地进行,以使得连接和/或通信会话看起来没有改变或者中断。
现在参考图5,将描述用于自动绕过中介物的本发明方法500的实施例。简要来讲,在步骤505,加速程序120经过诸如器具250的中介物建立客户机205和服务器206之间的传输层连接。在步骤510,加速程序120确定客户机205不能使用中介物经过已建立的传输层连接与服务器206进行通信。在步骤515,加速程序120在客户机205上截获从客户机205至服务器206的通信信息。在步骤520,加速程序120在客户机205和服务器206之间建立第二传输层连接,结果绕过了确定不可用于与服务器206进行客户机通信的中介物。在步骤525,加速程序120将截获的客户机205的通信信息经过第二传输层连接传输至服务器206。
进一步详细地说明,在步骤505,加速程序120经过中介物建立客户机205和服务器206之间的传输层连接。在一个实施例中,中介物包括器具250。在另外的实施例中,中介物包括下列之一:高速缓存、服务器、网关、防火墙、桥、路由器、交换机、集线器、代理或者任何充当或者提供这些类型和形式中介物中任一种的功能和操作的软件应用程序或程序。在一个实施例中,中介物可以在服务器206上操作。在一些实施例中,经过多个相同类型和形式或者不同类型和形式的中介物来建立传输层连接。在另一实施例中,传输层连接包括根据此处描述的本发明的操作,在器具250处或者作为客户机205建立的传输层连接池的连接。
在步骤510,加速程序120确定客户机205不能利用中介物或不能使用中介物经过已建立的传输层连接与服务器206进行通信。加速程序120可以通过任何适当的装置和/或机制来确定中介物的状态或者可用性。在一个实施例中,通过接收与到中介物的传送相关的错误消息或者失败的答复,加速程序120确定中介物不可用。例如,当经过已建立的传输层连接从客户机205传送通信信息时,加速程序120可以接收失败的传输层通信响应。在另外的实施例中,加速程序120可以基于预定的频率将ping命令传输至中介物,以监视中介物的状态和可用性。如果加速程序120不能接收来自中介物的响应,或者在一些实施例中,接收了延迟的答复或者比期望的延迟时间更长的答复,则加速程序120可以确定中介物不可由客户机205利用或者不能由客户机205使用。在另外的实施例中,服务器206、器具205或者中介物可以发送消息到客户机205或者加速程序120,提供识别中介物不可由客户机205利用或者不能由客户机205使用的信息。在一些实施例中,断开或者中断已建立的传输层连接,或者在另外的实施例中,关闭已建立的传输层连接。
在步骤515,加速程序120截获从客户机205到服务器206的、其目标是通过已建立的传输层连接经由中介物来运送的通信信息。加速程序120可以在任何点处、在网络栈210的任何协议层截获通信信息。在一个实施例中,在已建立的传输层连接上进行传输之前,加速程序120在传输协议层截获通信信息。例如,在一些实施例中,加速程序120包括具有传输驱动器接口或者对接至传输协议层的网络驱动器。在另外的实施例中,本发明以第一程序222和结合图4A-4B所讨论的作为第二程序的加速程序120来实施,其中第一程序222或者加速程序120截获通信信息。
在步骤520,加速程序120为客户机205建立与服务器206的第二传输层连接,以绕过在步骤510确定不能由客户机使用的或者利用的中介物。在一个实施例中,例如当客户机205和服务器位于相同网络205上时,或者位于可在客户机205和服务器206之间路由的不同网络上时,加速程序120建立直接到服务器206的第二传输层连接。在另一实施例中,加速程序120建立与诸如第二器具250’的第二中介物的第二传输层连接。在一些实施例中,加速程序120请求器具250建立与服务器250的另一传输层连接。在一个实施例中,器具250使用与服务器206的传输层连接池的第二传输层连接。在另外的实施例中,加速程序120请求服务器206建立第二传输层连接。在一些实施例中,加速程序120使用与服务器206的传输层连接池中的第二传输层连接,所述传输层连接池是根据此处描述的本发明的操作由加速程序120建立的。
在一个实施例中,加速程序120在步骤520对客户机205的用户或者应用程序220透明地建立第二传输层连接,或者在一些实施例中,对于传输层以上或以下的任何协议层透明地建立第二传输层连接。在一些实施例中,当在步骤510确定中介物不可用或者不应该由客户机205使用时,则为客户机205自动建立第二传输层连接。在另外的实施例中,例如在第一次尝试传送通信信息但不能将截获的通信信息传输至服务器206时,自动建立第二传输层连接。在一些实施例中,当不能进行一个或更多通信信息的重试传输时,或者耗尽了预定数目的重试时,则自动建立第二传输层连接。在另外的实施例中,当确定中介物延迟了网络包的传输或者接收速率,产生了延迟或者以不期望的方式影响了传输层连接的使用时,则建立第二传输层连接。在一个实施例中,加速程序120执行负荷平衡并建立绕过中介物的第二传输层连接,以卸除中介物到客户机205和/或第二中介物的任何处理或者操作。
在步骤525,加速程序120将截获的客户机205的通信信息经过第二传输层连接传送至服务器206。在一个实施例中,加速程序120将截获的通信信息直接传输至服务器106。在另外的实施例中,加速程序120经过诸如第二器具250的第二中介物传输截获的通信信息。通过使用第二传输层连接,加速程序120绕过中介物并继续客户机205的应用程序220对服务器206的操作。在一个实施例中,客户机205的应用程序220继续操作并与服务器220进行通信,如同器具250在持续使用先前或者第一次建立的传输层连接一样。因而,加速程序120防止、避免或者回避了加速程序120没有绕过中介物时可能出现的任何通信中断、干扰、等待、延迟或者其他操作或性能问题。在另一方面中,即使在从中间设备访问存在问题或者中断的情况下,本发明的技术自动提供了客户机205对服务器206或者远程访问应用程序的持续访问。
另外,可以使用上述本发明的重定向和绕过技术来执行客户机205对一个或更多服务器206a-206n访问的业务管理和负荷平衡,所述服务器206a-206n为客户机205提供了应用程序220a-220n或者其他内容和功能。例如,在一个实施例中,客户机访问服务器所使用的中介物或者器具可能随着传输层连接的增加而超负荷,使得响应、性能或者其他操作的速率降低。当确定降低了中介物或者器具的性能时,加速程序120可以将客户机重新定向至另一中介物或器具、或者服务器,以绕开客户机至服务器的端到端连接中的任何性能瓶颈。
在其他的方面中,本发明涉及与客户机网络栈的传输协议层相关或者在客户机网络栈的传输协议层执行的客户端加速技术。加速程序120可以包括执行下列任何一种或更多技术的可执行指令:1)传输控制协议(TCP)缓冲228,2)TCP连接池224,和3)TCP复用226。在一些实施例中,当加速程序120透明地处理在客户机网络栈的传输协议层截获的通信信息时,加速程序120可以控制和管理客户机的TCP连接以及该连接上客户机205的应用程序220a-220n的使用和传输。图6描述了实施本发明的TCP缓冲技术的方法600的实施例,而图7A-7B描述了本发明的TCP连接池技术的实施例,图8、9、10描绘了TCP复用技术。
简要地来描述图6中的方法600的实施例,在步骤605,加速程序120截获从客户机205到服务器206的通信信息,诸如客户机205要求访问服务器206的请求。在步骤610,加速程序120确定所接收的服务器响应的速率和客户机传送请求的生产速率之间的差值是否降至预定阈值之下。如果在步骤615,生产和消耗速率之间的差值未降至预定阈值以下,则在步骤617,加速程序120将通信信息转发至服务器260。如果在步骤615,速率的差值在预定值之下,则在步骤620,加速程序120将通信信息存储在客户机205的存储器中。在步骤625,加速程序120确定速率的差值是否已经改变至预定阈值之上,并且如果已经改变至预定阈值之上,则将存储的通信信息转发至服务器206。另外,加速程序120将通信信息保持在客户机205的存储器中,直至速率差值在步骤625改变至预定阈值以上的时刻点。例如,如果客户机205正以比客户机205耗费所产生的响应更大的速率将请求传输至服务器206时,本发明的加速程序120保持进一步的传送,直至速率的差值已经改变的时刻点。
进一步详细地说明,在步骤605,加速程序截获从客户机205至服务器206的通信信息。加速程序120可以在网络栈210中的任何点和任何协议层截获通信信息。在一个实施例中,在已建立的传输层连接上进行传输之前,加速程序120在传输协议层截获通信信息。例如,在一些实施例中,加速程序120包括具有传输驱动器接口或者对接至传输协议层的网络驱动器。在另外的实施例中,本发明以第一程序222和结合图4A-4B所讨论的作为第二程序的加速程序120得以实施,其中第一程序222或者加速程序120截获通信信息。在一个实施例中,通信信息包括客户机205请求使用或者访问服务器206的资源的请求,诸如应用程序220。
在步骤610,加速程序120确定消耗速率和生产速率之间的差值是否降至预定阈值之下。在一个实施例中,加速程序120对客户机205向服务器206传送的请求数目进行计数和跟踪,并且在另外的实施例中,加速程序120对客户机205从服务器206接收的响应数目进行计数和跟踪。在一些实施例中,客户机205基于每个应用程序220对接收的请求和传送的响应进行跟踪。可以在网络栈120的任何协议层对响应和请求进行跟踪。在一个实施例中,从提交点至传输层或者至客户机205和服务器206之间的传输层连接,对客户机205或者应用程序220传送的请求的数目进行计数和跟踪。同样,在另外的实施例,从接收点到传输层,或者从客户机205和服务器206之间的传输层连接,和/或在将响应提供给网络栈210的传输层之上的协议层(诸如应用层)的点处,对客户机205或者应用程序220从服务器206接收的响应的数目进行计数和跟踪。
在一些实施例中,加速程序120访问、检查或者获取传输层连接的接收和发送的TCP缓冲相关的信息和数据,所述传输层连接是通过客户机205和服务器206之间的加速程序120建立的。例如,加速程序120可以确定任何TCP/IP缓冲器的默认容量和最大容量以及当前使用的缓冲器部分,从而确定从客户机205至服务器206的网络包的发送和接收之间的速率差值。在其他实施例中,加速程序120使用任何类型和形式的拥塞算法来确定是否存在因客户机205至服务器206的网络包的消耗和生产之间的差别而产生的拥塞。在另一实施例中,加速程序120诸如通过网络驱动器或者TCP服务提供商从传输层连接使用的拥塞算法中获取信息和数据或者与其对接。例如,在一个实施例中,加速程序120确定连接使用的拥塞窗口相关的信息和数据。
可以通过加速程序120的任何适当的装置和结构来配置、指定、限定或者识别预定阈值。在一个实施例中,可以将阈值指定为客户机205和/或应用程序220的生产速率和消耗速率之间的百分比、相对值或绝对值。消耗和/或生产速率可以以任意颗粒度通过任意时间周期上的消耗接收数目和产生传输数目分别标识。在一些实施例中,阈值可以指定为客户机205和/或器具220的生产速率和消耗速率之间的量差,而在一些实施例中,可以指定为一段时间周期上的量差。例如,可以将阈值指定为客户机205产生的请求比客户机205消耗的请求多100个的时间点。在另一实例中,阈值可以指定为客户机205在每个时间周期产生的请求比同一时间周期期间客户机205消耗的请求多10个的时间点。
在步骤615,如果客户机205和/或应用程序220的生产和消耗速率的差值不低于预定阈值,则在步骤617加速程序120将通信信息转发至服务器206。在一些实施例中,加速程序对通信信息执行本发明的加速技术中的任何技术。例如,可以将通信信息经过入池的复用传输层连接转发至服务器,并且可以另外进行压缩。在另外的实施例中,客户机205可以将通信信息转发至提供客户机205至服务器206的连接的器具250。
在步骤615,如果客户机205和/或应用程序220的生产和消耗速率的差值低于预定阈值,则加速程序120在步骤620将通信信息存储在客户机205的存储器中。在一些实施例中,存储器可以是客户机205的内核模式202的存储器,而在另外的实施例中,存储器可以处于客户机205的用户模式203中。在一个实施例中,加速程序120可以经过高速缓存管理器232在高速缓存中存储通信信息。在其他实施例中,加速程序120可以使用对象、数据结构或者其他加速程序120可以存取的数据元素来缓冲、保持或者存储截获的通信信息。在一个实施例中,可以将截获的通信信息以压缩的方式存储在存储器中。在另外的实施例中,加速程序120将截获的通信信息发送至第一程序222,以存储或者保持在存储器中,以供在随后的时间点进行传送。
在步骤625,加速程序120确定何时将存储通信信息传送至服务器206。在一个实施例中,加速程序120执行步骤610至615,以确定客户机205的生产速率和消耗速率中的差值是否高于阈值,在所述阈值之上,则在步骤617处加速程序120将存储的通信信息转发至服务器206。在一些实施例中,加速程序120基于轮询或者事件以规则的或者预定的频率比较生产速率和消耗速率的差值,并当差值升至预定阈值以上时,加速程序120将通信信息转发至服务器206。在另外的实施例中,加速程序120设置或者配置有定时器,以确定多长时间存储截获的通信信息。当定时器期间截止时,加速程序120将存储的通信信息传送至服务器206。在另外的实施例中,加速程序120检查自存储截获的通信信息开始客户机205所消耗的服务器响应的数目。如果消耗响应的数目大于预定数目,则加速程序120从存储缓冲器或者储存器中释放截获的通信信息,并提交所述通信信息以将其传送至服务器206。
如果在步骤625,加速程序120确定生产或者消耗的速率没有以适当的方式改变,则加速程序120将截获的通信信息保持或者维持在存储器中,直到到达适当的时间点。在一个实施例中,在步骤617,即使产生和/或消耗速率没有改变,加速程序120仍将通信信息转发至服务器。例如,在等待产生和/或消耗速率改变的时间周期之后,速率没有发生改变,则加速程序120将通信信息发送至服务器206。
尽管通常讨论的本发明的TCP缓冲技术与截获的通信信息或者请求相关,但是可以对截获的客户机205至服务器206的多个通信信息顺序地、几乎同时地或者并行地实施本发明的方法600的实施例。此外,在另外的实施例中,可以在客户机上对从客户机至多个服务器206a-206n的相关通信信息实施本发明的方法600。例如,可以在客户机和205和第一服务器206a之间实施方法600的第一实施例,而在客户机205和第二服务器206b之间实施方法600的第二实施例。此外,在一些实施例中,可以使用每个应用程序的各自生产和消耗速率对第一应用程序200a并同样对第二应用程序200b实施方法600。在其他的实施例中,方法600可以对于第一应用程序200a实施,但是不对第二应用程序200b实施。
根据本发明的另一方法,通过打开与每个服务器的一个或更多连接并维持这些连接来允许客户机205的应用程序对服务器206进行反复的数据访问,客户端加速程序120降低了因反复打开和关闭客户机连接而导致的服务器206a-206n和/或器具250的处理负荷。此处通常将该技术称作“连接池”。简要来说明方法700,在步骤702,加速程序120截获应用程序要求访问服务器的请求,在步骤704,确定与请求相关的服务器的标识。在步骤706,加速程序120确定加速程序120是否具有已经建立的至服务器206的空闲传输层连接可供应用程序220使用。如果没有可供应用程序220使用的至服务器206的空闲传输层连接,则在步骤708加速程序220建立至服务器206的传输层连接,以供客户机205使用。在步骤706,如果存在可供应用程序220使用的可用传输层连接,则在步骤710,加速程序120转换应用程序的请求以通过可用的传输层连接传送或者发送。
进一步地概述,在步骤712,加速程序120接收服务器206对请求的响应,并在步骤714将所述响应转换成至应用程序220的响应。在步骤716,加速程序120可以维持或者保持传输层连接处于打开状态,以供客户机205的任何应用程序220a-220n使用。通过在客户机205上使与服务器206a-206n的传输层连接维持在打开状态,并根据需要打开或者关闭与应用程序的连接,加速程序120可以使服务器免除与在网络204(诸如互联网)上为客户机205服务相关的TCP连接负荷问题。在步骤718,如果确定客户机205的一个或更多应用程序220不再使用该连接来访问服务器206,则加速程序120在某点关闭传输层连接。
进一步详细说明,在步骤702,加速程序120截获客户机205的任何应用程序220a-220n要求访问服务器206的请求。在一些实施例中,在经过传输层连接建立或者传输请求之前,在传输协议层截获该请求。在另外的实施例中,在传输层之上的任何协议层或者传输层连接截获该请求。在一个实施例中,应用程序220的请求是要求打开或者建立与服务器206的传输层连接的请求。在一些实施例中,响应于该请求,加速程序120建立传输层连接池的第一传输层连接,以供客户机205的应用程序220a-220n使用。在另一实施例中,应用程序请求是要求经过已建立的客户机205的传输层连接访问服务器的请求。
在步骤704,加速程序120通过任何适当的装置和结构根据请求确定服务器206的标识。在一些实施例中,请求的内容标识有或者引用有服务器206的域名或者互联网协议地址,例如请求的文本串可以标识有服务器206的域名。在一个实施例中,通过TCP包的头部信息来确定服务器206的标识,所述头部信息诸如是目标互联网协议地址和端口号。在另外的实施例中,服务器206与应用程序220关联,加速程序120在数据库或者其他结构信息存储器中查找或者查询该关联。
在步骤706,加速程序120确定是否存在能够由应用程序220空闲使用或者可以加以利用的传输层连接。在一个实施例中,加速程序120可能尚未与服务器206建立传输层连接,因此不存在可由应用程序220利用的传输层连接。在另外的实施例中,加速程序120能具有以前建立的与服务器206的传输层连接,但是确定另一应用程序220目前正在积极使用该连接。正如下面将进一步讨论的一样,加速程序120基于从服务器206接收的用于应用程序220的消息(诸如对请求的响应)长度,确定已建立的传输层连接是否可供另一应用程序使用或者可以由应用程序220a-220n共享,和/或确定服务器206和应用程序220之间的通信当前是否处于等待状态。
在步骤708,如果加速程序120确定传输层连接不能由应用程序220加以利用,则加速程序120建立与服务器206的传输层连接。在一些实施例中,在步骤708建立的传输层连接是与服务器206的第一传输层连接,而在另外的实施例中,该传输层连接是至服务器206的多个传输层连接中的第二传输层连接。在又一个实施例中,加速程序120等待已建立的传输层连接变得可以利用或者变为空闲状态,以将应用程序的请求传送至服务器206。例如,加速程序120可以确定第一程序220a经由已建立的连接立刻完成与服务器206的交易。
在步骤710,加速程序120转换将要经过传输层连接传输至服务器206的应用程序的请求。在一些实施例中,对于共享该连接的客户机205的所有应用程序220a-220n,加速程序120使用一个传输层连接通信的端口号。在一些情况下,加速程序120跟踪请求和基于逐个应用程序的请求的未完结响应。因而,加速程序120在任何给定时间点辨别哪个应用程序220正在经过至服务器206的传输层连接传送和接收网络包。在一个实施例中,一次仅一个应用程序220在传输层连接上进行发送和接收,因而加速程序220可以得知哪个应用程序220正在使用该连接。在一些实施例中,加速程序120使应用程序220的处理id与请求相关联。在其他实施例中,加速程序120提供端口号并使其与应用程序220关联,然后把待传输的TCP网络包中的端口号修改为应用程序分配的端口号。在另外的实施例中,通过应用程序220来提供端口号,加速程序120在TCP网络包中相应地改变或者提供该端口号。
在步骤712,加速程序120接收服务器206对应用程序的请求的响应。在一个实施例中,服务器206并不响应该请求。在另外的实施例中,服务器206以错误或者失败消息进行响应。在一些实施例中,服务器206以多个响应进行响应。在其他的实施例中,服务器206以包括多个网络包或者多个TCP段的响应进行响应。在另外的实施例中,服务器206以标识了分配给该应用程序220的源端口号或者与其相关的源端口号的一个或更多网络包进行响应。在一个实施例中,服务器206以标识了传输层连接的源端口号和客户机205的多个应用程序所使用的源端口号的一个或更多网络包进行响应。
在步骤714,加速程序120以对应用程序220进行响应的方式处理或者转换来自服务器206的响应。在一个实施例中,加速程序120使用应用程序220的端口号来替换所接收的网络包或者多个包中的源端口号。在另外的实施例中,加速程序120经过跟踪机制来确定应用程序220当前正使用传输层连接,然后经过网络栈210来传送对于应用程序220的响应。在一个实施例中,该响应没有改变,且传送该响应以经过连接的传输层之上的网络栈210的协议层进行处理。在一些实施例中,加速程序120在处理响应并将其转发至应用程序220之前,等待将被接收的响应的多个部分,诸如TCP段。在一个实施例中,加速程序120将响应传送至第一程序222,所述第一程序与应用程序220对接并将所述响应提供至应用程序220。
在步骤716,加速程序120在客户机205至服务器206的一个或更多传输层连接池中维持或保持该传输层连接处于打开状态。在一个实施例中,加速程序120或者网络栈210的传输层驱动器包括保持连接(keep-alive)机制,当连接处于等待状态时,诸如在没有数据发送的情况下,所述保持连接机制周期性地探查连接的另一端。保持连接机制可以发送该消息来接收响应,从而确定该连接尽管可能处于等待状态但是还处于有效状态。保持连接消息和相应的响应可以包括任何类型和形式的格式、命令、伪指令或者通信信息。因而,在一些实施例中,加速程序120经过传输层驱动器将保持连接的消息传送至传输层连接或者使得传送该消息。在一些实施例中,加速程序120设置保持连接消息的频率,而在另一实施例中,基于使用该连接的应用程序220a-220n的性能或者活动来改变保持连接消息的频率。
在一些实施例中,加速程序120截获在传输层连接上接收的任何RST和/或FIN命令,即TCP/IP命令,以重启和/或终止TCP连接。在一个实施例中,加速程序120忽略截获的RST和/或FIN命令、对其不采取措施或者丢弃、删除或冲掉截获的RST和/或FIN命令。在另外的实施例中,加速程序120截获并接收RST和/或FIN命令,但发送消息至连接的另一端,以保持或者维持该连接处于打开状态。在另外的实施例中,加速程序120响应于因RST和/或FIN命令的处理而引起的已建立的传输层连接的关闭,建立新传输层连接。
在另外的实施例中,加速程序120在截获的客户机205的通信信息中插入指令、命令或者伪指令,以指示服务器206保持打开连接或者保持不关闭连接除非客户机205发送打开的命令。例如,在一个实施例中,加速程序120截获HTTP协议的GET请求的通信信息,诸如协议版本1.0,并向至服务器206的通信信息中插入保持连接头部,例如“Connection:Keep-Alive”。在另外的实施例中,GET请求或者其他HTTP命令可以包括保持连接头部。在这些实施例中,加速程序120可以截获通信信息并检查保持连接头部,然后将通信信息转发至服务器206。在一些实施例中,使了HTTP的1.1版本或者更高版本,利用该协议隐含了保持连接机制,使得服务器206保持连接打开直至客户机205请求关闭该连接。在另外的实施例中,加速程序120保持至服务器206的传输层连接打开,直至客户机205重新引导或者重新启动、网络204变得不可用或客户机205从网络204断开连接、或者服务器206重新引导或者重新启动。
在步骤718,加速程序120可以在任何期望的时间点关闭客户机205和服务器206之间的任何一个或更多传输层连接。在一些实施例中,当客户机205上使用连接的一个或更多应用程序220a-220n终止时,加速程序120关闭传输层连接。在另外的实施例中,当使用该连接的任何应用程序220a-220n超时周期期限截止时,加速程序120关闭传输层连接。例如,加速程序120可以配置、设置或者提供使预定的时间周期期限截止的定时器,并且如果在该周期内,连接处于等待状态或者保持等待状态,则加速程序120关闭该连接。在一些实施例中,服务器206可能重新引导、重新启动或者连接可能断开或中断,因而加速程序120关闭该连接。在一些实施例中,当完成了请求的发送以及从服务器206响应的所有数据的接收时,加速程序120传送RST和/或FIN命令或者使其被传送,以关闭连接。在另外的实施例中,当客户机205重新启动或者重新引导时、断开至网络204的连接时、网络204不可用时或者服务器206重新启动或重新引导时,则关闭传输层连接或者传输层连接池。
在一些实施例中,当加速程序120确定因客户机205的一个或更多应用程序220a-220n共享至服务器206的连接而仅需要第一传输层连接时,则保持至服务器206的第一传输层连接处于打开状态,而关闭服务器的第二传输层连接。在另外的实施例中,加速程序120维持至服务器206a-206n的一个传输层连接池,并基于客户机205上应用程序220a-220n的传输层连接使用率、通信或者请求的增加来建立至给定服务器206的第二或者多个传输层连接。
尽管通常相对于从客户机205至服务器206的一个或更多传输层连接池来讨论方法700的实施例,但是加速程序120可以顺序地、几乎同时地、并发地建立客户机与多个服务器206a-206n中每一个之间的传输层连接池。因而,第一应用程序220a和第二应用程序220b可以使用至服务器206a的一个或更多传输层连接的第一池,第三应用程序220c和第四应用程序220d可以使用至服务器206b的一个或更多传输层连接的第二池。此外,方法700的实施例中的每个步骤可以以不同的实例、不同的频率来执行。在一些实施例中,可以使用多个加速程序120的实例来处理至每个服务器206a-206n的一个或更多传输层连接的每个池。
图7B示出了根据一个实例实施例的本发明传输层连接池技术的消息传送步骤示意图。简要来讲,图7B描述了加速程序120提供传输层连接的流程图,在一个实施例中,所述加速程序120提供至服务器206的传输层连接,或者在另一实施例中提供至器具205的传输层连接,以供客户机205的两个应用程序220a和220b使用。客户机204上的加速程序120使用应用程序220提供的网络地址1打开客户机205与服务器206或器具250之间的第一传输层连接,如步骤752所示。步骤752示出为双向步骤,这是因为TCP/IP协议采用了多阶段握手以打开连接。
一旦建立了传输层连接,加速程序120就截获指定了/sales/forecast.html路径名的来自应用程序220a的GET请求,如步骤754所示。因为在加速程序120和服务器206或器具205之间没有打开空闲的传输层连接,所以加速程序120打开一个传输层连接。在一个实施例中,加速程序120将应用程序220a的请求映射到指示服务器260的网络地址的第二网络地址2,如步骤756所示。例如,加速程序120执行网络地址转换,以修改至应用程序220a请求的服务器206a的目标端口和/或目标IP地址或至同样可处理或响应请求的另一服务器206b的目标端口和/或目标IP地址。在另一实施例中,当应用程序220s接收到或者产生请求时,加速程序120将该请求发送至服务器206或器具250。
加速程序120还将GET请求传送至该服务器206或者器具250,如步骤758所示。在一个实施例中,加速程序250将请求转发至服务器206,而在另外的实施例中,器具250经过器具250和服务器206之间已入池或者入池且复用的传输层连接来转发请求。在一些实施例中,服务器206以请求的网页进行响应,如步骤760所示。加速程序120将网页转发至应用程序220a,如步骤762所示。在一个实施例中,关闭加速程序120和服务器206或器具250之间的传输层连接,如步骤764所示。在另外的实施例中,加速程序120截获关闭请求,忽略该请求并使传输层连接处于打开状态。根据TCP/IP协议,关闭网络连接可能要涉及到多阶段处理。因此,步骤764的流程线示出为双向。在另外的实施例中,根据本发明的池方面的技术,使为第一应用程序220建立并供其使用的传输层连接保持打开状态或者维持打开状态,以为相同应用程序220a或者诸如第二应用程序220b的不同应用程序中的另外数据步骤提供方便。
在步骤766,加速程序120截获从第二应用程序220a至服务器206或器具250的请求。如果存在打开的空闲传输层连接和/或第二应用程序220b可用的传输层连接,诸如在步骤756为第一应用程序220a建立的传输层连接,则加速程序120使用该先前建立的传输层连接。因而,不需要在步骤766打开第二传输层连接。否则,加速程序120建立至服务器206或者器具250的第二传输层连接。在步骤768,加速程序截获来自第二应用程序220b的请求,例如请求网页/sales/forecast.html,并在步骤770将该请求传送至服务器206或器具250。因为在应用程序120和服务器206之间已经打开了空闲连接,因此加速程序120不需要使服务器206担负打开另一连接的处理负荷。在步骤772,加速程序120诸如经过器具250从传输层连接截获或者接收来自服务器206的响应,并将响应转发至第二应用程序220b。在步骤776,加速程序120截获来自第二应用程序220b的关闭请求,在一些实施例中,加速程序120关闭该连接,而在另一些实施例中,忽略该请求并保持该连接,以为第一应用程序220a、第二应用程序220b或者客户机205的又一应用程序220c-220n提供进一步的数据请求。
在步骤776存在若干导致加速程序120关闭与服务器206或器具250的连接的情形。例如,当确定客户机205已经取回应用程序220a和220b请求的所有数据时或者当终止、关闭或退出应用程序220a和220b时,客户机205或者加速程序120可以启动FIN(结束)命令。在一些实施例中,在相同条件下,客户机205或者加速程序120还可以启动RST(复位)命令。除关闭加速程序120和服务器205或器具250之间的连接外,RST命令还导致执行若干内务操作,以保持服务器端连接处于良好状态。尤其是,TCP协议保证RST命令具有正确的SEQ(顺序)号,以使得服务器接受该段。然而,并不保证RST命令具有正确的ACK(应答)号。要处理该情形,加速程序可以保持服务器206或器具250的发送数据字节和客户机205的应答字节的线索。如果客户机205没有应答服务器206发送的所有数据,则加速程序120计算未应答的字节,并发送ACK至服务器205。
另外,尽管在图7B中未示出,但是服务器206或者器具250还可以关闭其自身与客户机205之间的连接。服务器206或者器具250将向客户机205发送FIN命令。在一些实施例中,在响应时,加速程序120关闭连接,而在另一实施例中,重新建立与服务器206或者器具250的另一连接。
另外,尽管通常作为供多个应用程序使用的一个或更多传输层连接池来讨论图7A的方法700的实施例和图7B的流程图实例,但是本发明的池技术可以应用于请求或者启动多个传输层连接以及经过这些连接进行请求的单个应用程序220。例如,在HTTP协议的一个实施例中,可以为每个来自应用程序的HTTP请求建立传输层连接。使用本发明的技术,应用程序220可以使用一个或更多传输连接的池,而无需为每个请求打开和关闭传输层连接。
在另外的方面中,本发明涉及用于经过相同或者共享的传输层连接对应用程序请求进行复用的技术,诸如结合图8A-8B所述经由池技术建立的传输层连接。在一些实施例中,本发明确定已建立的传输层连接的可用性,并通过检查是否已经完全接收到来自服务器206对应用程序请求的响应内容来复用经过该连接来自多个应用程序的请求。如此处将进一步所讨论的一样,在一个实施例中,本发明使用响应的内容长度参数来检查是否已经接收到所有响应的数据,而在另一实施例中,使用分块(chunked)的响应传输编码头来检查是否已经接收到所有响应的数据。在一个方面中,本发明检查是否已经接收到来自响应的所有数据,以确定入池的连接当前是否空闲可供应用程序使用,和/或是否要向至服务器的连接池中建立另一传输层连接,诸如在图7A描述的方法700中的步骤706和708。在另一实施例中,检查响应内容长度的技术用作经过相同的传输层连接对来自多个应用程序的请求进行复用的技术。
现在参考图8A,描述经过从客户机205至服务器206的单个传输层连接来复用请求的方法800的实施例。简要来讲,在步骤805,加速程序120建立客户机205与服务器206之间的传输层连接。在步骤810,加速程序120截获第一应用程序220a至服务器206的第一请求。在步骤815,加速程序120确定传输层连接当前是否正由另一应用程序使用或者处于等待状态。在步骤817,如果传输层连接可以供应用程序220a使用,则加速程序120将请求传送至服务器。另外,在步骤817,如果传输层连接不能供应用程序220a使用,则加速程序120在步骤819等待一段时间周期然后返回步骤815,或者建立第二传输层连接以供应用程序220使用。在步骤825,加速程序120接收来自服务器的对应用程序请求的响应。在步骤830,加速程序120截获第二应用程序220b的第二请求,并在步骤815执行确定传输层连接是否可以供第二应用程序220b使用。在一些实施例中,在步骤825接收到第一请求的响应之前或者在接收到响应的所有数据之前,加速程序120在步骤830截获第二应用程序220b的请求。如此处已经讨论的,在一些实施例中,加速程序120使用内容长度检查技术来确定传输层连接何时处于等待状态或者应用程序何时已经接收到对请求的所有响应的数据。
进一步详细地说明,在步骤805,加速程序120建立客户机205与服务器206之间的传输层连接。在一些实施例中,加速程序120利用或者经过器具250或者中介物来建立传输层连接。在一个实施例中,加速程序120将传输层连接建立为至服务器206的传输层连接的池。因而,在一些实施例中,传输层连接可以包括至服务器206的第二或者第三传输层连接。在另外的实施例中,加速程序120可以经由第一程序222来建立传输层连接,正如此处在前面所讨论的那样。在一些实施例中,加速程序120响应于客户机205的第一应用程序220a的请求建立传输层连接。
在步骤810,加速程序120截获第一应用程序220a访问服务器206的第一请求。在一些实施例中,在经过传输层连接建立或者传送该请求之前,在传输协议层截获该请求。在另外的实施例中,在传输层连接之上或者传输层之上的任何协议层截获该请求。在一些实施例中,通过第一程序222来截获该请求。在一个实施例中,应用程序220a的请求是要求打开或者建立与服务器206的传输层连接的请求。在另外的实施例中,应用程序请求是要求经过建立的传输层连接或者经由器具250来访问服务器的请求。
在步骤815,加速程序120确定传输层连接是否处于等待状态或可供第一应用程序220a使用,或者确定传输层连接将传送第一应用程序220a的第一请求。在一些实施例中,加速程序120从一个或更多传输层连接池中确定该池中哪个传输层连接处于等待状态或者空闲状态以供第一应用程序220a使用。在一个实施例中,加速程序120确定传输层连接处于等待状态,这是因为加速程序120响应于请求建立了传输层连接或者刚刚在请求之前建立了传输层连接。在一些实施例中,加速程序120可能还没有从任一应用程序220接收任何请求,并将该请求识别为加速程序120截获和处理的第一请求。在另一实施例中,加速程序120跟踪在传输层连接上传输的任何请求的未完结响应的数量,如果没有未完结的响应,则加速程序120认为传输层连接可以供第一应用程序220a使用。在又一实施例中,加速程序120识别传输层连接当前处于等待状态。例如,加速程序120可能正在启动对服务器的保持连接请求,以保持该连接处于打开状态。在一些实施例中,当已经完成了最后事务处理但服务器206和/或客户机205还未传送RST和/或FIN命令时,传输层连接处于等待状态。
在一些实施例中,加速程序120可以检查响应内容长度,以确定是否已经完成了服务器206对第一应用程序202a的第一请求的响应,或者加速程序120是否已经接收到了响应的所有数据。如上面所提及的那样,在一些实施例中,还使用这些技术来确定建立本发明的池技术的另一连接。关于本发明的该技术,将使用图9和图10来描述所述检查,在一个实施例中检查响应内容长度参数或者在另一实施例中检查响应的分块(chunked)  传送编码头,以确定是否已经收到响应的所有数据。图9描述了TCP包的TCP部分,称作TCP段900。TCP段900包括TCP头部902和正文(body)904。在一个实施例中,正文904包括其他数据和信息、HTTP头部和消息,其中TCP包承载HTTP的应用层协议。在一些实施例中,内容长度参数906位于HTTP头部,可以在HTTP发现或者被HTTP头部引用。在一个实施例中,本发明的加速程序120使用内容长度参数906来确定是否接收到响应的所有数据。
图10描述了TCP包的TCP段的另一实施例。在传输层连接上使用HTTP协议的一些实施例中,可以存在分块传送编码头并指示分块的传送编码已经应用至TCP段或者TCP包。因而,在该实施例中,消息的长度通过分块编码来定义。分块编码修改了消息体,以传送作为块序列(series of chunks)的消息,每个块在块大小(chunk-size)字段中具有其自身的长度指示符。TCP段1600包括TCP头部(现在已示出)和正文。在其他信息中,正文包括HTTP头部1602 A-1602 C和消息。HTTP头部1602 A-1602 C包括七个块大小字段1606 A-1606G,以及六个块消息数据1604 A-1604 F。
块大小字段1606 A-1606 G链接在一起,或者引用或者关联在一起,如图10所示。块大小字段1606A表示块消息数据1604A中的消息长度,块大小字段1606C表示块消息数据1604C中的消息长度,等等。最后那个块大小字段1606G包括长度值零,表明后面没有跟着更多的块或者更多的消息。在另一实施例中,本发明的加速程序120经过块大小字段确定客户机205是否已经接收到所有的响应数据。
尽管图9和图10通常描述了检查对请求响应的所有数据是否已经接收到的技术,但是这些技术还可以应用于发送异步消息或者通信信息到客户机205的服务器206或者器具250。另外,尽管通常结合图9和图10中针对HTTP协议描述了这些技术,但是这些技术还可以在提供了客户机205将接收或将传送的数据长度指示的任何协议层应用于任何协议。因而,在一些实施例中,加速程序120包括在任何协议层处对网络包的任何部分进行访问、提取、检查、分析或者处理,以确定是否已经接收到与客户机和服务器或器具之间的请求、响应或者通信信息相关的所有数据。在又一实施例中,加速程序120跟踪客户机205和服务器205之间传送、接收和应答的字节数目,以为应用程序220确定在客户机205和服务器206之间是否存在未完结的字节。
通过使用上述内容长度技术,本发明的加速程序120可以重用客户机205的任何其他应用程序220a-220n以前使用的至服务器206的相同传输层连接,或者在所述任何其他应用程序220a-220n使用的过程中使用与其相同的传输层连接。
在步骤817,加速程序120确定是否可以利用传输层连接来传送第一请求,如果可以,则在步骤820将请求传送至服务器206。否则,在步骤819,加速程序120可以等待,直至已经接收了应用程序未完结请求的所有数据。例如,加速程序120可以将定时器设定为例如较短的时间周期,然后进行至步骤815。在一些实施例中,加速程序120响应于客户机205的网络栈210的包处理定时器,检查是否已经接收到所有的数据。在另一实施例中,加速程序120在步骤819建立另一传输层连接,以传送第一应用程序220a的第一请求。
在步骤820,加速程序120可以跟踪哪个应用程序220在该连接上具有未完结请求或者响应或者当前正在使用该连接。例如,一次仅一个应用程序220可以在该连接上传送请求和接收响应。因而,加速程序120掌握了哪个应用程序220正在使用该连接。在一些实施例中,对于共享该连接的客户机205的所有应用程序220a-220n,加速程序120使用一个传输层连接通信的端口号。在一些情况下,加速程序120基于逐个应用程序来跟踪请求和请求的未完结响应。在一些实施例中,加速程序120使得应用程序220的处理id与请求相关联。在又一实施例中,加速程序120在相同的一个网络包或者多个网络包中、一个TCP段或者多个TCP段中传送第一应用程序220a的请求和第二应用程序220b的请求。在另外的实施例中,加速程序120经过相同传输层连接作为一个或更多TCP段窗口的TCP段序列的一部分来传送应用程序220a-220n的多个请求。
在另外的实施例中,加速程序120使用端口编号机制和/或方案来跟踪和识别所接收的哪个响应或者消息用于哪个应用程序220a-220n。在其他实施例中,加速程序120提供端口号并使其与应用程序220相关联,然后将待传输的TCP网络包中的端口号修改为应用程序分配的端口号。在另外的实施例中,通过应用程序220来提供端口号,加速程序120在TCP网络包中改变或者提供该端口号。因而,在一些实施例中,加速程序120可以交织来自客户机205的多个应用程序220a-220n的请求,使得应用程序220a-220n可以在相同时间使用传输层连接。
在步骤825,加速程序120诸如通过器具205从服务器206接收对第一应用程序220a的第一请求的响应,并向第一应用程序220a提供该响应。在一些实施例中,加速程序120经过网络栈210向第一应用程序220a提供响应,诸如允许或者启动在连接的传输层之上的协议层的响应处理。在另一实施例中,第一程序222向第一应用程序220a提供响应。在另外的实施例中,加速程序120可以经过进程间通信机制或者诸如API的接口向第一应用程序220a提供该响应。在一些实施例中,加速程序120仅仅接收部分响应,诸如图10所述的多块消息中的第一块。
在步骤830,加速程序120截获第二应用程序220b访问服务器206的请求。在一些实施例中,加速程序120在步骤825之前截获第二应用程序220b的请求。在另外实施例中,加速程序120在步骤825接收响应期间截获第二应用程序220b的请求。在另一实施例中,加速程序120在客户机205或者加速程序120接收到对第一应用程序220a的第一请求响应的所有数据之前,截获第二应用程序220b的请求。当接收到第二应用程序220b的请求时,在本发明的实施例中,加速程序120进行至步骤815,以确定是否能够经过传输层连接对第二请求进行复用,或者是否建立另一传输层连接,诸如连接池中的另一连接。在其他实施例中,当第一应用程序220a具有未完结的响应或者没有接收到来自第一请求的响应中的所有数据时,加速程序120经过与第一应用程序220a相同的连接传送第二应用程序220b的请求。在另一实施例中,在第一应用程序220a已经接收了响应之后且在与第一应用程序220a相关生成任何产生的RST和/或FIN命令之前,加速程序120传送第二应用程序220b的请求。
尽管已经相对于加速技术的执行和客户端实施对应用程序120进行了通常的讨论,但是加速程序120与同样也实施和执行器具端加速技术的所述器具250对接,并结合所述器具250工作。在一个实施例中,客户端加速程序120和器具250可以彼此结合工作,以对客户机205a-205n和服务器206a-206n之间通信执行本发明的多种加速技术。在一些实施例中,客户端加速程序120和器具250同时提供了TCP池和TCP复用,诸如以便在客户机205a-205n和服务器206a-206n之间提供分层或者端到端的池和复用机制。例如,加速程序120可以为器具250提供第一池传输层连接,接着器具250为服务器206a-206n提供第二池传输层连接。在另外的实施例中,加速程序120可以经过客户机205a-205n上的第一池传输层连接对应用程序请求进行复用,接着客户机205a-205n经过连接至服务器206a-206n的第二池传输层连接通过器具250对所述应用程序请求进行复用。在一些实施例中,加速程序120为来自客户机205a-205n的请求传送提供了减速机制,同时器具205为从服务器206a-206n至客户机205a-205n的响应传送提供了减速机制。在另一实施例中,加速程序120对客户机205执行客户端高速缓存,同时器具250为客户机205a-205n以及其他客户机205a-205n提供了对象(诸如动态生成的对象)的高速缓存。
在一些实施例中,除了在客户机205和/或器具上执行加速技术之外,或者结合在客户机205和/或器具上执行加速技术,加速程序120和器具可以经由器具250提供客户机205和网络204访问之间的虚拟专用网络连接和通信。在另一实施例中,加速程序120可以压缩从应用程序220传送的数据,器具250可以在接收到所述压缩数据时对其进行解压缩。相反,器具250可以压缩从专用数据通信网络204’的服务器206上的应用程序220传送的数据,并且加速程序120可以在接收到所述压缩数据时对其进行解压缩。同样,加速程序120和器具250可以充当加密数据通信中或者隧道会话中的端点,其中加速程序120对从应用程序220传送的数据进行加密,器具250当接收到所述加密数据时对其进行解密。通过类似的方式,器具250在对从专用数据通信网络上的应用程序220传送的数据进行加密,并且所述加速程序120当接收到所述数据时可以对其进行解密。
鉴于此处描述的客户端加速部署和执行技术的结构、功能和操作,本发明提供了以有效且透明的方式在客户机上有效地部署和执行的客户机上多种加速技术。在一些实施例中,本发明避免了在客户机和公共数据通信网络之间安装基于器具的或者基于服务器的加速器。此外,由于在网络上,加速程序动态地提供给客户机205,并可以在客户机205上自动安装和执行,因此可以在任何客户机机器上实现加速。同样,因为加速程序存储在器具250或者服务器,或者从器具250或者服务器动态下载,因此可以一次执行对于加速程序120的升级和/或维护,并可在客户机访问网络时对其进行动态地和自动地部署。另外,本发明结合器具端加速程序工作,以执行从客户机至器具或者服务器的端到端加速。
虽然,此处已经描述了本发明的各种实施例,但是应当理解的是,仅通过示例的方式介绍了这些实施例,但并不是对本发明的限制。因此,相关领域技术人员应当理解的是,在并不脱离所附权利要求书定义的本发明的精神和范围的情况下,可以在形式和细节方面进行各种改变。因此,本发明的范围以及外延不应当受到上述任何实例实施例的限制,而是仅仅根据下面的权利要求及其等效表述来限定。

Claims (31)

1.一种用于向客户机动态提供加速程序以自动安装并执行的方法,所述加速程序用于加速客户机对于远程访问应用程序的访问,其特征在于,所述方法包括步骤:
(a)通过器具接收客户机要求建立与服务器的通信会话的请求;
(b)通过所述器具将包括网络驱动程序的所述加速程序传送至客户机,以在客户机上对于经过服务器所提供的应用程序的客户机访问执行加速;
(c)当接收到所述加速程序时,通过客户机自动执行所述网络驱动程序至客户机储存器的静默安装;和
(d)当安装了所述网络驱动程序时,通过客户机在分配给客户机网络栈的存储器中自动执行所述网络驱动程序。
2.根据权利要求1所述的方法,包括当建立与服务器的通信会话时,通过器具将所述加速程序传送给客户机。
3.根据权利要求1所述的方法,包括通过所述加速程序建立与服务器的通信会话。
4.根据权利要求1所述的方法,包括在无需重新引导客户机或者由客户机用户进行交互中之一的情况下,在客户机上安装所述加速程序。
5.根据权利要求1所述的方法,其中在客户机上对于客户机的用户、客户机的应用程序或者服务器之一透明地执行步骤(b)、步骤(c)或步骤(d)中之一。
6.根据权利要求1所述的方法,其中所述网络驱动程序包括对接至网络栈的传输层的过滤器设备驱动程序。
7.根据权利要求1所述的方法,其中所述加速程序对网络栈的网络层、会话层或者应用层之一透明地提供了对服务器上应用程序的客户端加速访问。
8.根据权利要求1所述的方法,包括通过器具将第一程序传送至客户机,所述第一程序包括所述加速程序。
9.根据权利要求8所述的方法,包括当接收到第一程序时,通过客户机自动执行第一程序,以安装和执行所述加速程序。
10.根据权利要求8所述的方法,其中第一程序包括提供至浏览器并在浏览器上执行的可执行指令。
11.根据权利要求1所述的方法,进一步包括步骤:
(e)通过所述器具接收来自客户机的要求访问服务器上的应用程序的请求;和
(f)通过所述器具将消息传送至与所述加速程序通信的客户机,以对客户机和服务器之间的通信执行至少一种加速技术。
12.根据权利要求11所述的方法,包括:
(g)通过所述器具确定应用程序是否能够被加速;和
(h)如果该应用程序能够被加速,则通过器具传送消息至客户机。
13.根据权利要求1所述的方法,包括通过所述加速程序在客户机上执行下列加速技术其中之一:
压缩;
解压缩;
传输控制协议连接池;
传输控制协议连接复用;
传输控制协议缓冲;和
高速缓存。
14.根据权利要求1所述的方法,包括通过所述加速程序执行客户机和服务器之间的通信的加密或者解密之一。
15.根据权利要求1所述的方法,包括通过所述网络驱动程序建立与器具或者服务器其中之一的虚拟专用网络连接。
16.根据权利要求1所述的方法,其中所述器具包括高速缓存、网关、服务器、防火墙、代理、路由器、交换机或者桥其中之一。
17.一种用于向客户机动态提供加速程序以加速客户机对远程访问应用程序的访问的方法,其特征在于,所述方法包括步骤:
(a)通过器具接收客户机要求经过服务器访问应用程序的请求;
(b)通过所述器具确定应用程序能够被加速;和
(c)通过所述器具将所述加速程序传送至客户机,以在客户机上进行自动安装和执行。
18.根据权利要求17所述的方法,包括当接收所述加速程序时,通过客户机自动执行并安装所述加速程序。
19.根据权利要求17所述的方法,包括通过客户机对于客户机上的应用程序、客户机上的用户或者服务器之一透明地接收、安装或者执行所述加速程序。
20.根据权利要求17所述的方法,包括通过器具确定所述应用程序不能被加速,并将所述请求转发至服务器。
21.根据权利要求17所述的方法,包括通过器具确定所述应用程序能够通过下列加速技术之一来加速:
压缩;
解压缩;
传输控制协议连接池;
传输控制协议连接复用;
传输控制协议缓冲;和
高速缓存。
22.根据权利要求21所述的方法,包括通过所述器具传送所述加速程序,所述加速程序被配置成提供由所述器具确定的能够对应用程序进行加速的加速技术。
23.根据权利要求21所述的方法,包括通过所述加速程序执行所述加速技术其中之一。
24.根据权利要求17所述的方法,包括通过所述加速程序提供到器具或者服务器之一的虚拟专用网络。
25.根据权利要求17所述的方法,其中所述器具包括高速缓存、网关、服务器、防火墙、代理、路由器、交换机或者桥其中之一。
26.一种用于向客户机动态提供加速程序以加速客户机对远程访问应用程序的访问的器具,其特征在于,所述器具包括:
用于接收请求的装置,用于接收来自客户机的要求经过服务器访问应用程序的请求;
用于确定加速的装置,用于确定应用程序能够被加速;以及
用于传送所述加速程序的装置,用于将所述加速程序传送至客户机,所述加速程序被配置成在客户机上自动安装并执行。
27.根据权利要求26所述的器具,包括用于确定加速和转发请求装置,用于通过器具确定所述应用程序不能被加速,并将所述请求转发至服务器。
28.根据权利要求26所述的器具,包括用于确定加速的装置,用于通过器具确定应用程序能够通过下列加速技术其中之一被加速:
压缩;
解压缩;
传输控制协议连接池;
传输控制协议连接复用;
传输控制协议缓冲;和
高速缓存。
29.根据权利要求26所述的器具,包括用于传送所述加速程序的装置,用于通过所述器具传送所述加速程序,所述加速程序被配置成提供由所述器具确定的能够对应用程序进行加速的加速技术。
30.根据权利要求26所述的器具,包括用于通过所述加速程序建立虚拟专用网络的装置。
31.根据权利要求26所述的器具,包括高速缓存、网关、服务器、防火墙、代理、路由器、交换机或者桥其中之一。
CN2005800488673A 2004-12-30 2005-12-30 用于提供客户端加速技术的系统和方法 Active CN101133623B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110267244.2A CN102281305B (zh) 2004-12-30 2005-12-30 用于提供客户端加速技术的系统和方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US64046404P 2004-12-30 2004-12-30
US60/640,464 2004-12-30
US11/039,946 US7757074B2 (en) 2004-06-30 2005-01-24 System and method for establishing a virtual private network
US11/039,946 2005-01-24
PCT/US2005/047433 WO2006074072A2 (en) 2004-12-30 2005-12-30 Systems and methods for providing client-side acceleration techniques

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201110267244.2A Division CN102281305B (zh) 2004-12-30 2005-12-30 用于提供客户端加速技术的系统和方法

Publications (2)

Publication Number Publication Date
CN101133623A CN101133623A (zh) 2008-02-27
CN101133623B true CN101133623B (zh) 2011-11-16

Family

ID=36295274

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201110267244.2A Active CN102281305B (zh) 2004-12-30 2005-12-30 用于提供客户端加速技术的系统和方法
CN2005800488673A Active CN101133623B (zh) 2004-12-30 2005-12-30 用于提供客户端加速技术的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201110267244.2A Active CN102281305B (zh) 2004-12-30 2005-12-30 用于提供客户端加速技术的系统和方法

Country Status (9)

Country Link
EP (2) EP2757757B1 (zh)
JP (2) JP2008527507A (zh)
KR (1) KR20070092720A (zh)
CN (2) CN102281305B (zh)
AU (1) AU2005322870A1 (zh)
CA (1) CA2591905A1 (zh)
HK (1) HK1200611A1 (zh)
IL (1) IL184308A0 (zh)
WO (1) WO2006074072A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099941A (zh) * 2016-08-26 2020-12-18 华为技术有限公司 实现硬件加速处理的方法、设备和系统

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774492B2 (en) 2001-07-26 2010-08-10 Citrix Systems, Inc. System, method and computer program product to maximize server throughput while avoiding server overload by controlling the rate of establishing server-side net work connections
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
EP1771979B1 (en) 2004-07-23 2011-11-23 Citrix Systems, Inc. A method and systems for securing remote access to private networks
EP1771998B1 (en) 2004-07-23 2015-04-15 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US8626946B2 (en) 2006-08-03 2014-01-07 Citrix Systems, Inc. Systems and methods for hierarchical global load balancing
WO2008017030A2 (en) * 2006-08-03 2008-02-07 Citrix Systems, Inc. System and method for routing traffic at a client via a first or a second transport layer connection
US8561155B2 (en) 2006-08-03 2013-10-15 Citrix Systems, Inc. Systems and methods for using a client agent to manage HTTP authentication cookies
US8244883B2 (en) * 2006-08-03 2012-08-14 Citrix Systems, Inc. Systems and methods of for providing multi-mode transport layer compression
US7907621B2 (en) 2006-08-03 2011-03-15 Citrix Systems, Inc. Systems and methods for using a client agent to manage ICMP traffic in a virtual private network environment
US8572721B2 (en) 2006-08-03 2013-10-29 Citrix Systems, Inc. Methods and systems for routing packets in a VPN-client-to-VPN-client connection via an SSL/VPN network appliance
US8869262B2 (en) 2006-08-03 2014-10-21 Citrix Systems, Inc. Systems and methods for application based interception of SSL/VPN traffic
US8495181B2 (en) 2006-08-03 2013-07-23 Citrix Systems, Inc Systems and methods for application based interception SSI/VPN traffic
US7953889B2 (en) 2006-08-03 2011-05-31 Citrix Systems, Inc. Systems and methods for routing VPN traffic around network disruption
US7769869B2 (en) 2006-08-21 2010-08-03 Citrix Systems, Inc. Systems and methods of providing server initiated connections on a virtual private network
US8312120B2 (en) 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
US8493858B2 (en) 2006-08-22 2013-07-23 Citrix Systems, Inc Systems and methods for providing dynamic connection spillover among virtual servers
US8255570B2 (en) 2007-03-12 2012-08-28 Citrix Systems, Inc. Systems and methods of compression history expiration and synchronization
US7796510B2 (en) 2007-03-12 2010-09-14 Citrix Systems, Inc. Systems and methods for providing virtual fair queueing of network traffic
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US7827237B2 (en) 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US7532134B2 (en) 2007-03-12 2009-05-12 Citrix Systems, Inc. Systems and methods for sharing compression histories between multiple devices
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US7865585B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US7760642B2 (en) 2007-03-12 2010-07-20 Citrix Systems, Inc. Systems and methods for providing quality of service precedence in TCP congestion control
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
US8286082B2 (en) 2007-09-12 2012-10-09 Citrix Systems, Inc. Methods and systems for providing, by a remote machine, access to a desk band associated with a resource executing on a local machine
EP2241081B1 (en) 2008-01-26 2018-05-02 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
CN101291343B (zh) * 2008-05-20 2011-01-26 北京锐安科技有限公司 一种基于透明代理设备的远程控制方法及其系统
WO2010042578A1 (en) 2008-10-08 2010-04-15 Citrix Systems, Inc. Systems and methods for real-time endpoint application flow control with network structure component
US8549617B2 (en) 2010-06-30 2013-10-01 Juniper Networks, Inc. Multi-service VPN network client for mobile device having integrated acceleration
US8458787B2 (en) * 2010-06-30 2013-06-04 Juniper Networks, Inc. VPN network client for mobile device having dynamically translated user home page
US8464336B2 (en) 2010-06-30 2013-06-11 Juniper Networks, Inc. VPN network client for mobile device having fast reconnect
US8474035B2 (en) 2010-06-30 2013-06-25 Juniper Networks, Inc. VPN network client for mobile device having dynamically constructed display for native access to web mail
US10142292B2 (en) * 2010-06-30 2018-11-27 Pulse Secure Llc Dual-mode multi-service VPN network client for mobile device
US8473734B2 (en) * 2010-06-30 2013-06-25 Juniper Networks, Inc. Multi-service VPN network client for mobile device having dynamic failover
US8127350B2 (en) * 2010-06-30 2012-02-28 Juniper Networks, Inc. Multi-service VPN network client for mobile device
CN101895550B (zh) * 2010-07-16 2012-12-26 刘季伟 一种应用于互联网网站的兼容动静态内容的缓冲加速方法
WO2012092261A2 (en) 2010-12-29 2012-07-05 Citrix Systems, Inc. Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination
CN102404204B (zh) * 2011-11-01 2014-05-07 深信服网络科技(深圳)有限公司 网络拓扑中的加速方法、装置及系统
CN103369016A (zh) * 2012-04-11 2013-10-23 长春易申软件有限公司 实现基于iSCSI的网络存储协议栈的方法
US20140018006A1 (en) * 2012-07-12 2014-01-16 GM Global Technology Operations LLC Broadcast content for vehicle audio systems
CN102752320B (zh) * 2012-08-03 2015-07-01 北京光泽时代通信技术有限公司 一种代理服务器主动压缩方法及代理服务器
CN102801726B (zh) * 2012-08-06 2016-03-30 上海西本网络科技有限公司 通信系统以及客户端与服务端之间的通信方法
JP2015038717A (ja) * 2014-02-04 2015-02-26 株式会社リコー 情報処理システム、情報提供方法、端末装置およびアプリケーションプログラム
US9794311B2 (en) * 2014-03-18 2017-10-17 Qualcomm Incorporated Transport accelerator implementing extended transmission control functionality
US9769239B2 (en) 2014-09-30 2017-09-19 Qualcomm Incorporated Systems and methods for user agent signaling request acceleration by transport accelerator
CN104778214B (zh) * 2015-03-20 2018-02-06 四川长虹电器股份有限公司 基于资源定位器跳转的分布式文件系统及其数据同步方法
CN106528188B (zh) * 2015-09-09 2019-08-30 腾讯科技(深圳)有限公司 一种应用加速方法及装置
EP3338386A4 (en) * 2015-09-21 2018-10-24 Huawei Technologies Co., Ltd. Fast and scalable database cluster communication path
US10375212B2 (en) * 2017-01-11 2019-08-06 Citrix Systems, Inc. Systems and methods for improving the performance of a computer network using multiplexed application layer streams of network traffic
WO2019209181A1 (en) * 2018-04-24 2019-10-31 Skylab Networks Pte. Ltd. System and method for accelerating data delivery
CN108667920B (zh) * 2018-04-26 2020-08-11 浪潮集团有限公司 一种雾计算环境业务流量加速系统及其业务流量加速方法
CN109995877B (zh) * 2019-04-12 2021-10-12 上海连尚网络科技有限公司 信息推送方法和装置
CN110944063B (zh) * 2019-12-10 2021-11-30 航天新长征大道科技有限公司 可编程逻辑控制设备连接方法、控制系统及可读介质
CN112732282A (zh) * 2021-01-20 2021-04-30 腾讯科技(深圳)有限公司 安装包的下载方法及装置
CN116095037A (zh) * 2021-11-05 2023-05-09 腾讯科技(深圳)有限公司 应用程序加速方法、装置、电子设备及存储介质
CN114345753B (zh) * 2021-12-13 2024-05-10 贝塔科技(苏州)有限公司 热升华工艺的印花服装生产原料接入物联网的生产方法
CN114520836B (zh) * 2022-01-12 2024-04-19 深圳市微创云启科技有限公司 一种可多路复用并防数据篡改的网络通讯协议方法和系统
US20230269253A1 (en) * 2022-02-24 2023-08-24 International Business Machines Corporation Smart client for deployment architecture with unreliable network connection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1476181A (zh) * 2003-07-14 2004-02-18 中国科学院计算技术研究所 一种分布式的卫星网络tcp性能加速协议格式和方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852717A (en) * 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US6687732B1 (en) * 1998-09-28 2004-02-03 Inktomi Corporation Adaptive traffic bypassing in an intercepting network driver
US6411986B1 (en) * 1998-11-10 2002-06-25 Netscaler, Inc. Internet client-server multiplexer
AU2355500A (en) * 1998-12-07 2000-06-26 Network Ice Corporation A method and apparatus for remote installation of network drivers and software
US6594690B2 (en) * 1999-02-24 2003-07-15 Hewlett-Packard Development Company, L.P. Network peripheral device driver installer
US6449658B1 (en) * 1999-11-18 2002-09-10 Quikcat.Com, Inc. Method and apparatus for accelerating data through communication networks
US6820133B1 (en) * 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
US7139822B2 (en) * 2000-07-07 2006-11-21 International Business Machines Corporation Interception method and system for compensating disadvantageous characteristics of a communication protocol
GB0122507D0 (en) * 2001-09-18 2001-11-07 Marconi Comm Ltd Client server networks
US20030093566A1 (en) * 2001-11-09 2003-05-15 Jardin Cary A. System and method for network and application transparent database acceleration
AU2003304024A1 (en) * 2003-03-29 2004-10-25 Telefonaktiebolaget Lm Ericsson (Publ) Device and method for rate adaptation between bit streams

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1476181A (zh) * 2003-07-14 2004-02-18 中国科学院计算技术研究所 一种分布式的卫星网络tcp性能加速协议格式和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099941A (zh) * 2016-08-26 2020-12-18 华为技术有限公司 实现硬件加速处理的方法、设备和系统
CN112099941B (zh) * 2016-08-26 2021-08-03 华为技术有限公司 实现硬件加速处理的方法、设备和系统

Also Published As

Publication number Publication date
CA2591905A1 (en) 2006-07-13
EP1832088B1 (en) 2016-09-14
HK1200611A1 (zh) 2015-08-07
KR20070092720A (ko) 2007-09-13
JP2012027925A (ja) 2012-02-09
CN102281305A (zh) 2011-12-14
EP1832088A2 (en) 2007-09-12
CN102281305B (zh) 2015-10-28
WO2006074072A2 (en) 2006-07-13
AU2005322870A1 (en) 2006-07-13
JP2008527507A (ja) 2008-07-24
JP5372083B2 (ja) 2013-12-18
EP2757757B1 (en) 2018-08-15
WO2006074072A3 (en) 2006-12-07
CN101133623A (zh) 2008-02-27
IL184308A0 (en) 2007-10-31
EP2757757A1 (en) 2014-07-23

Similar Documents

Publication Publication Date Title
CN101133623B (zh) 用于提供客户端加速技术的系统和方法
US10491523B2 (en) Load distribution in data networks
US8549149B2 (en) Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8856777B2 (en) Systems and methods for automatic installation and execution of a client-side acceleration program
US8706877B2 (en) Systems and methods for providing client-side dynamic redirection to bypass an intermediary
CN104767834B (zh) 用于加速计算环境到远程用户的传送的系统和方法
CN101147379B (zh) 在网络中对动态产生的对象执行缓存的系统和方法
US8700695B2 (en) Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
CN105393220B (zh) 用于在集群系统中部署点状虚拟服务器的系统和方法
CN102714657B (zh) 用于经由tcp选项插入客户机ip地址的系统和方法
CN103503424B (zh) 用于实现多核系统中的连接镜像的系统和方法
US6665867B1 (en) Self-propagating software objects and applications
CN103392321B (zh) 用于基于策略集成横向部署的wan优化设备的系统和方法
US20120072728A1 (en) Retrieving and using cloud based storage credentials
CN102217273A (zh) 用于应用流畅性策略的系统和方法
JPH11500250A (ja) 差分化通信システム
JPH11514117A (ja) オーバヘッドの少ないtcp通信システム
US20140280768A1 (en) Migration of network connection under mobility
WO2013191802A2 (en) Provisioning of a virtual machine by using a secured zone of a cloud environment
CN102143218A (zh) web接入云体系结构及接入方法
US20110106877A1 (en) System and method for transferring files by exclusive-line connection
AU2021100648A4 (en) A system and method for scheduling task in iot-fog-cloud continuum
CN102624753A (zh) 企业服务总线的分布式文件传输方法和设备
Schwan et al. Autonomic information flows

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant