CN101523865B - 用于使用http-察觉的客户端代理的系统和方法 - Google Patents
用于使用http-察觉的客户端代理的系统和方法 Download PDFInfo
- Publication number
- CN101523865B CN101523865B CN2007800369048A CN200780036904A CN101523865B CN 101523865 B CN101523865 B CN 101523865B CN 2007800369048 A CN2007800369048 A CN 2007800369048A CN 200780036904 A CN200780036904 A CN 200780036904A CN 101523865 B CN101523865 B CN 101523865B
- Authority
- CN
- China
- Prior art keywords
- client
- http
- client agent
- network
- cookie
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Information Transfer Between Computers (AREA)
Abstract
所描述的系统和方法用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信。该方法包括:由在客户端上执行的客户端代理在网络层拦截来自客户端上执行的应用的HTTP请求;修改该HTTP请求;并且经传输层连接发送所修改的HTTP请求到服务器。附加的方法可以包括增加、移除或者修改HTTP请求中的至少一个cookie。又一个方法可以包括修改包含在该HTTP请求中的至少一个名称-值对。该其它方法可以使用客户端代理来管理HTTP验证cookie。
Description
发明领域
本发明总的涉及连网技术,更具体地,本发明涉及使用客户端代理来拦截HTTP请求和响应以提供优化的通信。
背景技术
诸如web浏览器的多个应用使用HTTP与服务器通信。这将导致给定网络上大量的业务为HTTP业务。因此,通过优化和控制虚拟专用网络中的HTTP业务的流可以获得多个益处。例如,可以使用高速缓存来改进重复的HTTP请求的服务。或者例如,通过控制所请求资源的名称和与请求发送的任一数据可以获得多个益处。但是,使用HTTP的不同应用的数量可能使得让所有HTTP应用具体适应在虚拟专用网络环境中操作的任务不现实。
许多虚拟专用网络与其中资源也要求用户验证。例如,虚拟专用网络中的用户可以被要求来提供名称和密码以登录网络,并且来获取对某些资源的访问。HTTP cookie(曲奇)可以被用来从客户端传递验证信息到虚拟专用网络设备。Web浏览器经常被用来管理这些验证cookie。
在使用web浏览器来管理HTTP cookie以验证虚拟专用网络的用户可能产生多个问题。例如,用户可以使用web浏览器来打开到虚拟专用网络的多个同时的连接。在此情况中期望来自第一连接的验证cookie被再次使用以建立第二连接,使得用户不需要重新输入验证信息。该特征难以实现给定跨越不同浏览器的多个cookie管理策略,诸如超时和cookie高速缓存的可获得性。同样,例如,用户可以经由虚拟专用网络试图打开非HTTP连接,在该情况中可能不使用web浏览器,意味着验证cookie不能被获得。
因此,期望存在一种需求,以在虚拟专用网络环境中能够拦截并解析HTTP通信和管理cookie的客户端代理。
发明内容
本发明涉及使用HTTP-察觉(HTTP-aware)的客户端代理的系统和方法。在一个方面,本发明为用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的方法。在一个实施例,该方法包括:由在客户端上执行的客户端代理在网络层拦截来自客户端上执行的应用的HTTP请求;修改该HTTP请求;并且经传输层连接发送所修改的HTTP请求到服务器。在一些实施例中,该方法可以包括增加、移除或者修改HTTP请求中的至少一个cookie。在其他实施例中,该方法可以包括修改包含在该HTTP请求中的至少一个名称-值对。
在第二方面中,本发明涉及用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的计算机实现的系统。在一个实施例中,该系统包括:客户端计算装置;和在客户端上执行的客户端代理,在网络层拦截来自客户端上执行的应用的HTTP请求;修改该HTTP请求;并且经传输层连接发送所修改的HTTP请求到服务器。
在第三方面,本发明为用于使用客户端代理在来自客户端的非HTTP通信中启用HTTP cookie验证的方法。该方法包括:由在客户端上执行的客户端代理拦截来自客户端的连接请求;由客户端代理建立与网络设备的传输层虚拟专用网络连接;经所建立的连接由客户端代理发送包括验证cookie的HTTP请求;并且经由该连接由客户端代理发送该连接请求。
在第四方面,本发明为用于使用客户端代理在来自客户端的非HTTP通信中启用HTTP cookie验证的计算机实现的系统,该系统包括:客户端计算设备;和在客户端上执行的客户端代理,其拦截来自客户端的连接请求;建立与网络设备的传输层虚拟专用网络连接;经所建立的连接由客户端代理发送包括验证cookie的HTTP请求;并且经由该连接由客户端代理发送该连接请求。
在第五方面,本发明为用于使用客户端代理来在虚拟专用网络环境中使用HTTP cookie启用安全验证的方法,该方法包括:由在客户端上执行的客户端代理拦截从虚拟专用网络上的应用到客户端的包括cookie的HTTP通信;由客户端代理从HTTP通信移除cookie;由客户端代理存储所接收的cookie;由客户端代理发送所修改的HTTP通信到客户端上执行的应用;由该客户端代理拦截来自客户端的HTTP请求;由客户端代理在该HTTP请求中插入所接收的cookie;并且发送所修改的HTTP请求到设备。
在第六方面,本发明为用于使用客户端代理来在虚拟专用网络环境中使用HTTP cookie启用安全验证的计算机可执行系统,该系统包括:客户端计算设备和客户端上执行的客户端代理,该客户端代理拦截从虚拟专用网络上的设备到客户端的包括cookie的HTTP通信;从HTTP通信移除cookie;存储所接收的cookie;发送所修改的HTTP通信到客户端上执行的应用;由该客户端代理拦截来自客户端的HTTP请求;由客户端代理在该HTTP请求中插入所接收的cookie;并且发送所修改的HTTP请求到设备。
在以下附图和描述中提出本发明的不同实施例的细节。
附图说明
该发明的这些和其他对象、方面、特征和优点参见下述结合附图的细节描述将会更加明显并更好理解,其中:图1A是对于客户端通过设备访问服务器的网络环境的实施例的框图;图1B是用于通过设备从服务器传送计算环境到客户端的环境的实施例的框图;图1C和1D是计算装置的实施例的框图;图2A是用于处理客户端和服务器之间的通信的设备的实施例的框图;图2B是用于优化、加速、负载平衡和路由客户端和服务器之间的通信的设备的另一个实施例的框图;图3是客户端通过设备与服务器通信的实施例的框图;图4是使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的方法的实施例的框图;图5是使用客户端代理来启用HTTP cookie验证的方法的一个实施例的框图;图6为使用客户端代理来在虚拟专用网络环境中使用HTTP cookie启用安全验证的方法的框图;图7为用于对先前存储文件建立有效更新的方法的一个实施例的流程图;图8为用于对先前存储文件建立有效更新的方法的另一个实施例的流程图;图9为用于对先前存储文件建立和接收有效更新的方法的另一个实施例的流程图;图10为用于将第二文件与第三文件组合的方法的一个实施例的流程图,其中第二文件来自先前存储的第一文件,第三文件包括来自第二文件的数据序列和在第一文件和第二文件中都存在的数据序列的长度和位置表示;和图11为描述用于确定文件传输方法的方法的一个实施例的流程图。
从下面结合附图所提出的具体实施方式将更加明了本发明的特征和优点,其中,全文中相同的参考特征识别对应的元件。附图中,相同的附图标记通常指示相同的、功能类似、和/或结构类似的元件。
具体实施方式
A、网络和计算环境
在讨论设备和/或客户端的系统和方法的实施例的细节之前,讨论可以部署在这些实施例中的网络和计算环境可能是有帮助的。现在参见图1A,描述了网络环境的实施例。概括来讲,网络环境包括通过一个或多个网络104、104’(总的称为网络104)与一个或多个服务器106a-106n(同样总的称为服务器106,或远程机器106)通信的一个或多个客户端102a-102n(同样总的称为本地机器102,或客户端102)。在一些实施例中,客户端102通过设备200与服务器106通信。
虽然图1A示出了在客户端102和服务器106间的网络104和网络104’,但是客户端102和服务器106可以在同一个网络104上。网络104和104’可以是相同类型的网络或不同类型的网络。网络104和/或网络104’可为局域网(LAN)(例如公司的企业内部互联网)、城域网(MAN)、或者广域网(WAN)(例如因特网或万维网)。在一个实施例中,网络104’可为专用网络并且网络104可为公用网络。在一些实施例中,网络104可为专用网络并且网络104’可为公用网络。在另一个实施例中,网络104和104’可都为专用网络。在一些实施例中,客户端102可位于公司分支机构中,在网络104之上通过WAN连接与位于公司数据中心的服务器106通信。
网络104和/或104’是任一类型和/或形式的网络,并且可包括任一的下述网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104和/或104’的拓扑可为总线型、星型或环型网络拓扑。网络104和/或104’以及网络拓扑可以是任一对于本领域普通技术人员所熟知的、可以支持此处描述的操作的任一这样的网络或网络拓扑。
如图1A所示,设备200(此处也指为接口单元200或者网关200)被示在网络104和104’之间。在一些实施例中,设备200可位于网络104上。例如,公司的分支机构可在分支机构中布署设备200。在其它实施例中,设备200可位于网络104’上。例如,设备200可位于公司的数据中心。在又一个实施例中,多个设备200可布署在网络104上。在一些实施例中,多个设备200可布署在网络104’上。在一个实施例中,第一设备200与第二设备200’通信。在其它实施例中,设备200作为客户端102可为位于同一个或不同的网络104、104’上的任一客户端102或服务器106的一部分。一个或多个设备200可位于客户端102和服务器106之间的网络或网络通信路径中的任一点。
在一个实施例中,系统可包括多个逻辑分组服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群组38。在这些实施例的一些中,服务器106可为地理上分散的。在一些实例中,群组38可以作为单个实体被管理。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组执行代表一个或者多个客户端102的一个或者多个应用。
在每个群组38中的服务器106可为不同种类。一个或多个服务器106可根据一种类型的操作系统平台(例如位于Washington,Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个群组38的服务器106不需要与同一群组38内的另一个服务器106物理上接近。因此,逻辑分组为群组38的服务器106的组可使用广域网(WAN)连接或中等区域网(MAN)连接互联。例如,群组38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106使用局域网(LAN)连接或一些直接连接的形式进行连接,则在群组38中的服务器106间的数据发送速度将增加。
服务器106可指文件服务器、应用服务器、web服务器、代理服务器或者网关服务器。在一些实施例中,服务器106可有作为应用服务器或者主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目录。客户端102也可称为客户端节点或端点。在一些实施例中,客户端102有能力作为在服务器上搜寻对应用的访问的客户端节点工作,也有能力作为提供对用于其他客户端102a-102n的所寄载的应用的访问的应用服务器工作。
在一些实施例中,客户端102与服务器106通信。在一个实施例中,客户端102可与群组38中的服务器106之一直接通信。在另一个实施例中,客户端102执行程序邻近应用以与群组38内的服务器106通信。还是在又另一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户端102通过网络104与群组38中的服务器106通信。通过网络104,客户端102例如可以请求执行在群组38中的服务器106a-106n寄载的各种应用,并接收应用执行结果的输出用于显示。在一些实施例中,只有主节点提供要求识别和提供地址信息的功能,其中的地址信息与寄载所请求的应用的服务器106’相关。
在一个实施例中,服务器106提供网络(Web)服务器的功能。在另一个实施例中,服务器106a接收来自客户端102的请求,将该请求转发到第二服务器106b并以来自服务器106b对该请求的响应通过客户端102来响应该请求。在又另一个实施例中,服务器106获得客户端102可用的应用的列举以及地址信息,该地址信息与服务器106相关,该服务器106寄载由该应用的列举所识别的应用。在又一个实施例中,服务器106使用web接口呈现对客户端102的请求的响应。在一个实施例中,客户端102直接与服务器106通信以访问所识别的应用。在另一个实施例中,客户端102接收诸如显示数据的应用输出数据,该应用输出数据通过对在服务器106上所识别的应用的执行而产生。
现在看图1B,示出了在客户端102上用于传送和/或操作计算环境的网络环境。在一些实施例中,服务器106包括用于向一个或多个客户端102传送计算环境或应用和/或数据文件的应用传送系统190。总的来说,客户端102通过网络104、104’和设备200与服务器106通信。例如,客户端102可驻留在公司的远程办公室里,例如分支机构,并且服务器106可驻留在公司数据中心。客户端102包括客户端代理120以及计算环境15。计算环境15可执行或操作用于访问、处理或使用数据文件的应用。计算环境15、应用和/或数据文件可通过设备200和/或服务器106传送。
在一些实施例中,设备200加速计算环境15或者其中的任一部分到客户端102的传送。在一个实施例中,设备200通过应用传送系统190加速计算环境15的传送。例如,可使用此处描述的实施例来加速应用可处理的流应用和数据文件从中央公司数据中心到远程用户位置(例如公司的分支机构)的传送。在另一个实施例中,设备200加速客户端102和服务器106之间的传输层业务。设备200可以提供用于加速从服务器106到客户端102的任一传输层有效载荷的加速技术,诸如:1)传输层连接池,2)传输层连接多路复用,3)传输控制协议缓冲,4)压缩,以及5)高速缓存。在一些实施例中,设备200响应来自客户端102的请求,提供服务器106的负载平衡。在其它实施例中,设备200充当代理或者访问服务器来提供对一个或者多个服务器106的访问。在另一个实施例中,设备200提供从客户端102的第一网络104到服务器106的第二网络104’的安全虚拟专用网络连接,诸如SSL VPN连接。在又一些实施例中,设备200提供客户端102和服务器106之间的连接和通信的应用防火墙安全、控制和管理。
在一些实施例中,基于多个执行方法并且基于通过策略引擎195所应用的任一验证和授权策略,应用传送管理系统190提供应用传送技术来传送计算环境到用户的桌面(远程的或者其它的)。使用这些技术,远程用户可以从任一网络连接的装置100获取计算环境并且访问服务器所存储的应用和数据文件。在一个实施例中,应用传送系统190可驻留在服务器106上或在其上执行。在另一个实施例中,应用传送系统190可驻留在多个服务器106a-106n上或在其上执行。在一些实施例中,应用传送系统190可在服务器群组38内执行。在一个实施例中,执行应用传送系统190的服务器106也可存储或提供应用和数据文件。在另一个实施例中,一个或多个服务器106的第一组可执行应用传送系统190,并且不同的服务器106n可存储或提供应用和数据文件。在一些实施例中,应用传送系统190、应用和数据文件中的每个可驻留或位于不同的服务器上。在又一个实施例中,应用传送系统190的任一部分可驻留、执行、或被存储于或分发到设备200或多个设备。
客户端102可以包括计算环境15,用于执行使用或者处理数据文件的应用。客户端102通过网络104、104’和设备200可以请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以转发来自客户端102的请求到服务器106。例如,客户端102可以不具有本地存储或者本地可访问的应用和数据文件。响应该请求,应用传送系统190和/或服务器106可以传送应用和数据文件到客户端102。例如,在一个实施例中,服务器106可以按照应用流来发送应用以在客户端102上的计算环境15中操作。
在一些实施例中,应用传送系统190包括Citrix Systems,Inc的CitrixAccess SuiteTM的任一部分,诸如MetaFrame或者Citrix Presentation ServerTM和/或Microsoft公司制造的任一的Windows Terminal Services。在一个实施例中,应用传送系统190可以通过远程显示协议或者以通过基于远程或者基于服务器计算的其它方式来传送一个或者多个应用到客户端102或者用户。在另一个实施例中,应用传送系统190可以通过应用流来传送一个或者多个应用到客户端或者用户。
在一个实施例中,应用传送系统190包括策略引擎195,用于控制和管理对应用执行方法的访问、选择和应用的传送。在一些实施例中,策略引擎195确定用户或者客户端102可以访问的一个或者多个应用。在另一个实施例中,策略引擎195确定应用应该如何被传送到用户或者客户端102,例如执行方法。在一些实施例中,应用传送系统190提供多个传送技术,从中来选择应用执行的方法,诸如基于服务器的计算、流式传输或者本地传送应用到客户端120用于本地执行。
在一个实施例中,客户端102请求应用程序的执行并且包括服务器106的应用传送系统190选择执行该应用程序的方法。在一些实施例中,服务器106从客户端102接收证书。在另一个实施例中,服务器106从客户端102接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的接收,应用传送系统190列举对于客户端102可用的多个应用程序。应用传送系统190接收请求来执行所列举的应用。应用传送系统190例如响应策略引擎的策略,选择预定数量的方法的其中一个来执行所列举的应用。应用传送系统190可以选择执行应用的方法,使得客户端102来接收通过执行服务器106上的应用程序所产生的应用输出数据。应用传送系统190可以选择执行应用的方法,使得本地机器102在检索包括应用的多个应用文件之后来本地执行应用程序。在又一个实施例中,应用传送系统190可以选择执行应用的方法,以通过网络104流式传输应用到客户端102。
客户端102可以执行、操作或者以其它方式提供应用,该应用可为任一类型和/或形式的软件、程序或者可执行指令,例如任一类型和/或形式的web浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户端、ActiveX控件、或者Java程序、或者可以在客户端102上执行的任一其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户端102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任一瘦客户端或者远程显示协议来显示输出到客户端102,诸如由Florida,Ft.Lauderdale的CitrixSystemsInc.制造的独立计算架构(ICA)协议,或者由Washington,Redmond的Microsoft公司制造的远程桌面协议(RDP)。应用可使用任一类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,应用包括涉及到VoIP通信的任一类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。
在一些实施例中,服务器106或服务器群组38可以正在运行一个或多个应用,例如提供瘦客户端计算或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群组38作为一个应用了来执行CitrixSystems Inc.的Citrix Access SuiteTM的任一部分,例如MetaFrame或CitrixPresentation ServerTM,和/或Microsoft公司制造的WindowsTerminal Services中的任一一个。在一个实施例中,应用是位于Florida,Fort Lauderdale的Citrix Systems Inc.开发的ICA客户端。在其它实施例中,应用包括由位于Washington,Redmond的Microsoft公司开发的远程桌面(RDP)客户端。另外,服务器106可以运行一个应用,它可以是提供电子邮件服务的应用服务器,例如由位于Washington,Redmond的Microsoft公司制造的Microsoft Exchange,或者web或Internet服务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括所寄载的服务或产品的任一类型,例如位于California,Santa Barbara的Citrix Online Division提供的GoToMeetingTM,位于California,SantaClara的WebEx Inc.提供的WebExTM,或者位于Washington,Redmond的Microsoft公司提供的Microsoft Office Live Meeting。
客户端102、服务器106和设备200可以布署为和/或执行在任一类型和形式的计算装置上,诸如能够在任一类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图1C和1D描述用于实现客户端102、服务器106或者设备200的实施例的计算装置100的框图。如图1C和1D所示,每个计算装置100包括中央处理单元101,以及主存储单元122。如图1C所示,计算装置100可以包括虚拟显示装置124、键盘126和/或诸如鼠标的定点装置127。每个计算装置100也可包括其它可选择的部件,例如一个或多个输入/输出装置130a-130b(总的使用标号130表示),以及与中央处理单元101通信的高速缓存存储器140。
中央处理单元101是响应并处理从主存储单元122取得的指令的任一逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由California,Mountain View的Intel公司制造的;由IIIinois,Schaumburg的Motorola公司制造的;由Califirnia,Santa Clara的Transmeta公司制造的;由New York,White Plains的InternationalBusiness Machines公司制造的RS/6000处理器;或者由California,Sunnyvale的Advanced Micro Devices公司制造的。计算装置100可以基于任一的这些处理器或者能够如此处描述操作的任一其它处理器。
主存储单元122可以是一个或多个存储芯片,这些存储芯片可以存储数据并允许微处理器101直接访问任一存储位置,例如静态随机存储器(SRAM)、突发(Burst)SRAM或同步突发(SynchBurst)SRAM(BSRAM),动态随机存取存储器(DRAM)、快页模式(Fast Page Mode)DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出(Extended Data Output)RAM(EDO RAM)、扩展数据输出(Extended Data Output)DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(Direct Rambus DRAM)(DRDRAM)或者铁电RAM(FRAM)。主存储器122可以基于任一上述的存储器芯片或者能够进行如此处描述的操作的任一其它可用的存储器芯片。在图1C所示的实施例中,处理器101通过系统总线150(下面将更详细的介绍)与主存储器122通信。图1C描述计算装置100的实施例,其中处理器通过存储器端口103直接与主存储器122通信。例如,在图1D中,主存储器122可为DRDRAM。
图1D描述的实施例中,主处理器101通过次级总线,有时称为“背端”总线,直接与高速缓存存储器140通信。在其它实施例中,主处理器101使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常具有比主存储器122更快的响应时间,并通常通过SRAM、BSRAM、或EDRAM提供。在图1C所示的实施例中,处理器101通过本地系统总线150与各种I/O装置130通信。各种总线可以被用于连接中央处理单元101到任一I/O装置130,包括VESA VL总线、ISA总线、EISA总线、微通道结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线、或者NuBus。对于这样的实施例,其中I/O装置是视频显示器124,处理器101可使用高级图形端口(AGP)与显示器124通信。图1D描述了计算机100的实施例,其中主处理器101通过HyperTransport,Rapid I/O或者InfiniBand与I/O装置130直接通信。图1D也描述了一个实施例,其中本地总线和直接通信是混合的:处理器101使用本地互联总线与I/O装置130a通信,而与I/O设备130b直接通信。
计算装置100可以支持任一适合的安装装置116,例如用于接收诸如3.5英寸、5.25英寸软盘或ZIP盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器、或者适用于安装软件、程序(例如任一客户端代理120或其中的部分)的任一其它装置。计算装置100还可以包括存储装置128,诸如一个或者多个硬盘驱动器或者独立磁盘的随机阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户端代理120的任一程序的应用软件程序。可选地,任一安装装置116也可以被用作存储装置128。此外,操作系统和软件可从可引导介质运行,例如诸如一种用于GNU/Linux的可引导CD,该可引导CD可自konppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括通过多个连接来对接到局域网(LAN)、广域网(WAN)或者因特网的网络接口118,该多个连接包括但不限于标准电话线、LAN或WAN链路(如802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或它们的任一或者全部的组合。网络接口118可以包含内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合将计算装置100对接到能够通信和执行此处所描述操作的任一类型网络的任一其它装置。
在计算装置100中提供多个种类的I/O装置130a-130n。输入装置包括键盘、鼠标、轨迹板、轨迹球、麦克风、以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机、及染料升华(dye-sublimation)打印机。如图1C所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制诸如键盘126和定点装置127(例如鼠标或者光学笔)的一个或者多个I/O装置。此外,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/0装置130可为在系统总线150和外部通信总线间的桥170,外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、Ethernet总线、AppleTalk总线、Gigabit Ethernet总线、异步传输模式总线、HIPPI总线、Super HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线、或者串行连接(Serial Attached)小型计算机系统接口总线。
图1C和图1D中所描述种类的计算装置100通常在操作系统的控制下操作,该操作系统控制对任务的调度和对系统资源的访问。计算装置100可正运行任一操作系统,例如任一版本的Windows操作系统,不同版本的Unix和Linux操作系统,用于Macintosh计算机的任一版本的Mac任一嵌入式操作系统,任一实时操作系统,任一开放源操作系统,任一专有操作系统,用于移动计算装置的任一操作系统,或者可以在计算装置上运行并执行此处所述操作的任一其它操作系统。典型的操作系统包括:由Washington,Redmond的Microsoft公司制造的WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE和WINDOWS XP;由California,Cupertino的Apple计算机公司制造的MacOS;由New York,Armonk的International Business Machines制造的OS/2;以及由Utah,Salt Lake City的Caldera公司发布的可自由获得的操作系统Linux,以及除此之外的任一类型和/或形式的Unix操作系统。
在其它实施例中,计算装置100可以具有与该装置相容的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是palm Inc.制造的Treo180、270、1060、600或者650的智能电话。在此实施例中,Treo智能电话在PalmOS操作系统的控制下运行并且包括触针输入装置以及五向导向装置。此外,计算装置100可以是任一工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任一其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。
B、设备架构
图2A示出设备200的一个示例实施例。图2A中的设备200的架构仅仅通过示意的方式被提供,并不意于要限制本发明。如图2所示的,设备200包括硬件层206和分为用户空间202和内核空间204的软件层。
硬件层206提供硬件元件,在内核空间204和用户空间202内的程序和服务在该硬件元件上被执行。硬件层206也提供结构和元件,使得在内核空间204和用户空间202内的程序和服务对于设备200既在内又向外通信数据。如图2所示,硬件层206包括用于执行软件程序和服务的处理单元262、用于存储软件和数据的存储器264、用于在网络上发送和接收数据的网络端口266以及用于执行涉及在网络上被发送和接收的数据的加密套接字协议层处理的功能的加密处理器260。在一些实施例中,中央处理单元262可在单独的处理器中执行加密处理器260的功能。另外,硬件层206可包括用于每个处理单元262和加密处理器260的多个处理器。处理器262可以包括以上结合图1C和1D所述的任一处理器101。在一些实施例中,中央处理单元262可在单独的处理器中执行加密处理器260的功能。另外,硬件层206可包括用于每个处理单元262和加密处理器260的多处理器。例如,在一个实施例中,设备200包括第一处理器262和第二处理器262’。在其它实施例中,处理器262或者262’包括多核处理器。
虽然设备200的硬件层206通常示出带有加密处理器260,但是处理器260可为执行涉及任一加密协议的功能的处理器,例如加密套接字协议层(SSL)或者传输层安全(TLS)协议。在一些实施例中,处理器260可为通用处理器(GPP),并且在进一步的实施例中,可为具有用于执行任一安全相关协议的处理的可执行指令。
虽然在图2中设备200的硬件层206示出具有一些元件,但是设备200的硬件部分或部件可包括计算装置的任一类型和形式的元件、硬件或软件,例如此处结合图1C和1D示出和讨论的计算装置100。在一些实施例中,设备200可包括服务器、网关、路由器、交换机、桥接器或其它类型的计算或网络装置,并且具有与此相关的任一硬件和/或软件元件。
设备200的操作系统分配、管理或另外分离可用的系统存储器到内核空间204和用户空间202。在示例的软件架构200中,操作系统可为任一类型和/或形式的Unix操作系统,虽然本发明并未如此限制。同样的,设备200可正运行任一操作系统,例如任一版本的Windows操作系统,不同版本的Unix和Linux操作系统,用于Macintosh计算机的任一版本的Mac任一嵌入式操作系统,任一网络操作系统,任一实时操作系统,任一开源操作系统,任一专有操作系统,用于移动计算装置或网络装置的任一操作系统,或者可以在设备200上运行并执行此处所述操作的任一其它操作系统。
内核空间204被保留用于运行内核230,包括任一装置驱动器、内核扩展或其它内核相关软件。就像本领域技术人员所知的,内核230是操作系统的核心,并提供对设备104的资源和硬件相关元件的访问、控制和管理。根据设备200的实施例,内核空间204也包括与高速缓存管理器232协同工作的多个的网络服务或进程,有时也称为集成的高速缓存,其益处此处将进一步详细描述。另外,内核230的实施例将依赖于通过设备200安装、配置或其它方式使用的操作系统的实施例。
在一个实施例中,设备200包括一个网络堆栈267,例如基于TCP/IP的堆栈,用于与客户端102和/或服务器106通信。在一个实施例中,使用网络堆栈267与诸如网络108的第一网络以及第二网络110通信。在一些实施例中,设备200终止第一传输层连接,例如客户端102的TCP连接,并建立到服务器106的第二传输层连接,用于由客户端102使用,例如,在设备200和服务器106处终止第二传输层连接。可通过单独的网络堆栈267建立第一和第二传输层连接。在其它实施例中,设备200可包括多个网络堆栈,例如267或267’,并且可在一个网络堆栈267建立或终止第一传输层连接,在第二网络堆栈267’可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和发送网络包,并且另一个网络堆栈用于在第二网络上接收和发送网络包。在一个实施例中,网络堆栈267包括用于排队一个或多个网络包的缓冲器243,其中网络包由设备200发送。
如图2所示,内核空间204包括高速缓存管理器232、高速层2-7集成包引擎240、加密引擎234、策略引擎236以及多协议压缩逻辑238。在内核空间204或内核模式而不是用户空间202中运行这些部件或进程232、240、234、236和238提高这些部件中的每个的单独的和结合的性能。内核操作意味着这些部件或进程232、240、234、236和238在设备200的操作系统的核地址空间中运行。例如,在内核模式中运行加密引擎234通过移动加密和解密操作到内核来提高加密性能,从而减少在在内核模式中的存储空间或内核线程与在用户模式中的存储空间或线程之间的转换的数量。例如,在内核模式中获得的数据可以不需要传输或拷贝到运行在用户模式的进程或线程,例如从内核级数据结构到用户级数据结构。在另一个方面,也可减少内核模式和用户模式之间的上下文切换的数量。另外,在任一部件或进程232、240、234、236和238间的同步和其之间的通信在内核空间204中可被更有效地执行。
在一些实施例中,部件232、240、234、236和238的任一部分可在内核空间204中运行或操作,而这些部件232、240、234、236和238的其它部分可在用户空间202中运行或操作。在一个实施例中,设备200使用内核级数据结构来提供对一个或多个网络包的任一部分的访问,例如,包括来自客户端102的请求或者来自服务器106的响应的网络包。在一些实施例中,可以由包引擎240通过到网络堆栈267的传输层驱动器接口或过滤器获得内核级数据结构。内核级数据结构可包括通过与网络堆栈267相关的内核空间204可访问的任一接口和/或数据、由网络堆栈267接收或发送的网络业务或包。在其它实施例中,任一部件或进程232、240、234、236和238可使用内核级数据结构来执行部件或进程的期望的操作。在一个实施例中,当使用内核级数据结构时,部件232、240、234、236和238在内核模式204中运行,而在另一个实施例中,当使用内核级数据结构时,部件232、240、234、236和238在用户模式中运行。在一些实施例中,内核级数据结构可被拷贝或传输给第二内核级数据结构,或任何期望的用户级数据结构。
高速缓存管理器232可包括软件、硬件或软件和硬件的任意组合,以提供对任一类型和形式的内容的高速缓存访问、控制和管理,例如对象或由源服务器106服务的动态产生的对象。由高速缓存管理器232处理和存储的数据、对象或内容可包括任一格式的数据,例如标记语言,或通过任一协议通信。在一些实施例中,高速缓存管理器232复制存储在其它地方的原始数据或先前被计算、产生或发送的数据,其中相对于读高速缓存存储元件,原始数据可能需要更长的访问时间以便取得、计算或以别的方式获得。一旦数据被存储在高速缓存存储元件中,将来的使用可通过访问高速缓存的副本而非再取回或再计算原始数据而实现,因而减少了访问时间。在一些实施例中,高速缓存存储元件nat包括设备200的存储器264中的数据对象。在其它实施例中,高速缓存存储元件可包括具有比存储器264更快的存取时间的存储器。在另一个实施例中,高速缓存存储元件可以包括设备200的任一类型和形式的存储元件,诸如硬盘的部分。在一些实施例中,处理单元262可提供被高速缓存管理器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存储设备或处理单元的任一部分和组合来高速缓存数据、对象或其它内容。
另外,高速缓存管理器232包括用于执行此处描述的设备200的技术的任一实施例的任一逻辑、功能、规则或操作。例如,,高速缓存管理器232包括基于无效时间周期的终止,或者来自客户端102或服务器106的无效命令的接收,无效对象的逻辑或功能。在一些实施例中,高速缓存管理器232可作为在内核空间204中执行的程序、服务、进程或任务来操作,并且在其它实施例中在用户空间202中执行。在一个实施例中,高速缓存管理器232的第一部分在用户空间202内执行,而第二部分在内核空间204内执行。在一些实施例中,高速缓存管理器232可包括任一类型的通用处理器(GPP),或者任一其它类型的集成电路,例如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或者专用集成电路(ASIC)。
策略引擎236可包括,例如,智能统计引擎或其它可编程应用。在一个实施例中,策略引擎236提供配置机制以允许用户识别、指定、限定或配置高速缓存策略。在一些实施例中,策略引擎236也访问存储器以支持数据结构,例如查找表或哈希表,以启用用户选择的高速缓存策略决定。在其它实施例中,策略引擎236可包括任一逻辑、规则、功能或操作以决定和提供除了对安全、网络业务、网络访问、压缩或其它任一由设备200执行的功能或操作的访问、控制和管理之外的对设备200所高速缓存的对象、数据、或内容的访问、控制和管理。特定高速缓存策略的其它实施例在此处进一步描述。
加密引擎234包括用于控制任一安全相关协议处理,例如SSL或TLS,或其相关的任一功能的任一逻辑、商业规则、功能或操作。例如,加密引擎234加密并解密通过设备200通信的网络包,或其任一部分。加密引擎234也可代表客户端102a-102n、服务器106a-106n或设备200来安装或建立SSL或TLS连接。同样的,加密引擎234提供SSL处理的卸载和加速。在一个实施例中,加密引擎234使用隧道协议来提供在客户端102a-102n和服务器106a-106n间的虚拟专用网络。在一些实施例中,加密引擎234与加密处理器260通信。在其它实施例中,加密引擎234包括运行在加密处理器260上的可执行指令。
多协议压缩引擎238包括用于压缩一个或多个网络包协议(例如被设备200的网络堆栈267使用的任一协议)的任一逻辑、商业规则、功能或操作。在一个实施例中,多协议压缩引擎238双向压缩在客户端102a-102n和服务器106a-106n间任一基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用Internet文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议以及IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中,提供任一标记语言的压缩,例如可扩展标记语言(XML)。在一个实施例中,多协议压缩引擎238提供任一高性能协议的压缩,例如为设备200设计的用于设备200通信的任一协议。在另一个实施例中,多协议压缩引擎238使用修改的传输控制协议(例如事务TCP(T/TCP)、带有选择确认的TCP(TCP-SACK)、带有大窗口的TCP(TCP-LW)、例如TCP-Vegas协议的拥塞预报协议以及TCP电子欺骗协议)来压缩任一通信的任何有效载荷或任一通信。
同样的,多协议压缩引擎238通过桌面客户端,例如Micosoft Outlook和非web瘦客户端,诸如由通用企业应用像Oracle、SAP和Siebel启动的任何客户端,甚至移动客户端,例如便携式个人计算机,来加速用户访问应用的执行。在一些实施例中,多协议压缩引擎238通过在内核模式204内部执行并与访问网络堆栈267的包处理引擎240集成,可以压缩TCP/IP协议承载的任何协议,例如应用层协议。
高速层2-7集成包引擎240,通常也称为包处理引擎,或包引擎,通过网络端口266负责设备200接收和发送的包的内核级处理的管理。高速层2-7集成包引擎240可包括在处理期间用于排队一个或多个网络包的缓冲器,例如用于网络包的接收或者网络包的发送。另外,高速层2-7集成包引擎240通过网络端口266与一个或多个网络堆栈267通信以发出和接收网络包。高速层2-7集成包引擎240与加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238协同工作。更具体地,配置加密引擎234以执行包的SSL处理,配置策略引擎236以执行涉及业务管理的功能,例如请求级内容切换以及请求级高速缓存重定向,并配置多协议压缩逻辑238以执行涉及数据压缩和解压缩的功能。
集成高速层2-7的包引擎240包括包处理定时器242。在一个实施例中,包处理定时器242提供一个或多个时间间隔以触发输入的(即接收或者输出(即发送))网络包的处理。在一些实施例中,高速层2-7集成包引擎240响应于定时器242处理网络包。包处理定时器242向包引擎240提供任一类型和形式的信号以通知、触发或通信与时间相关的事件、间隔或发生。在许多实施例中,包处理定时器242以毫秒级操作,例如100ms、50ms、或25ms。例如,在一些实施例中,包处理定时器242提供时间间隔或者其它方式导致高速层2-7集成的包引擎240以10ms时间间隔处理网络包,而在其它实施例中,以5ms时间间隔,并且在进一步的实施例中,短到3、2或1ms时间间隔。高速层2-7集成包引擎240在操作期间可与加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩引擎238对接、集成或通信。同样的,响应于包处理定时器242和/或包引擎240,可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩逻辑238的任一逻辑、功能或操作。因此,在由包处理定时器242提供时间间隔的粒度(例如少于或等于10ms的时间间隔),可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩逻辑238的任一逻辑、功能或操作。例如,在一个实施例中,响应于高速层2-7集成包引擎240和/或包处理定时器242,高速缓存管理器232可执行任一所高速缓存的对象的无效。在另一个实施例中,高速缓存的对象的终止或无效时间被设定为与包处理定时器242的时间间隔相同的粒度级,例如每10ms。
与内核空间204形成对比,用户空间202是操作系统的存储区域或部分,被用户模式应用或在用户模式中以其它方式运行的程序所使用。用户模式应用不能直接访问内核空间204并且为了访问内核服务而使用服务调用。如图2所示,设备200的用户空间202包括图形用户界面(GUI)210、命令行接口(CLI)212、壳服务(shellservice)214、健康监控程序216以及守护(daemon)服务218。GUI 210和CLI 212提供一种方法,通过该方法系统管理员或其它用户可与设备200的操作相互作用并控制该设备200的操作,例如通过设备200的操作系统,并且或者是用户空间202或者内核空间204。GUI 210可为任一类型和形式的图形用户界面,并且可通过文本、图形或由任一类型的程序或应用的其它方式(例如浏览器)来呈现。CLI 212可为任一类型和形式的命令行或基于文本的接口,例如通过操作系统提供的命令行。例如,CLI212可包括壳(shell),该壳是使得用户能够与操作系统相互作用的工具。在一些实施例中,可通过bash、csh、tcsh或者ksh类型的壳提供CLI 212。壳服务214包括程序、服务、任务、进程或可执行指令以支持由用户通过GUI 210和/或CLI 212与设备200或者操作系统的交互。
使用健康监控程序216来监控、检查、报告并确保网络系统正常地运行以及用户正通过网络接收所请求的内容。健康监控程序216包括一个或多个程序、服务、任务、进程或可执行指令,为监控设备200的任一行为来提供逻辑、规则、功能或操作。在一些实施例中,健康监控程序216拦截并检查通过设备200传递的任一网络业务。在其它实施例中,健康监控程序216通过任一合适的方法和/或机制与一个或多个下述设备对接:加密引擎234、高速缓存管理器232、策略引擎236、多协议压缩逻辑238、包引擎240、守护服务218以及壳服务214。同样的,健康监控程序216可调用任一应用编程接口(API)以确定设备200的任一部分的状态、情况或健康。例如,健康监控程序216可基于周期性地查验或发送状态查询以检查程序、进程、服务或任务是否被激活并当前正在运行。在另一个例子中,健康监控程序216可检查由任一程序、进程、服务或任务提供的任一状态、错误或历史日志以确定设备200任一部分的任一条件、情况或错误。
守护服务218是连续的或在后台中运行的程序,并且处理由设备200接收的周期性服务请求。在一些实施例中,守护服务向其它程序或进程转发请求,例如向合适的另一个守护服务218。如本领域技术人员所公知的,守护服务218可无人监护的运行,以执行连续的或周期性的系统范围功能,例如网络控制,或者执行任一期望的任务。在一些实施例中,一个或多个守护服务218运行在用户空间202中,而在其它实施例中,一个或多个守护服务218运行在内核空间。
现在参见图2B,描述了设备200的另一个实施例。总的来说,设备200提供以下服务、功能或者操作的一个或者多个:用于一个或者多个客户端102和一个或者多个服务器106之间的通信的SSL VPN连接280、转换/负载平衡284、域名服务解析286、加速288和应用防火墙290。在一个实施例中,设备200包括由Florida,Ft.Lauderdale的Citrix Systems Inc.制造的任一网络装置,称为Citrix NetScaler装置。服务器106的每一个可以提供一个或者多个网络相关服务270a-270n(称为服务270)。例如,服务器106可以提供http服务270。设备200包括一个或者多个虚拟服务器或者虚拟互联网协议服务器,称为vServer、VIP服务器或者仅是VIP275a-275n(此处也称为vServer 275)。vServer275根据设备200的配置和操作来接收、拦截或者以其它方式处理客户端102和服务器106之间的通信。
vServer 275可以包括软件、硬件或者软件和硬件的任一组合。vServer275包括在设备200中的用户模式202、内核模式204或者其任一组合中运行的任一类型和形式的程序、服务、任务、进程或者可执行指令。vServer 275包括任一逻辑、功能、规则或者操作,以执行此处所述技术的任一实施例,诸如SSL VPN 280、转换/负载平衡284、域名服务解析286、加速288和应用防火墙290。在一些实施例中,vServer 275建立到服务器106的服务270的连接。服务275可以包括能够连接到设备200、客户端102或者vServer 275并与之通信的任一程序、应用、进程、任务或者可执行指令集。例如,服务275可以包括web服务器、http服务器、ftp、电子邮件或者数据库服务器。在一些实施例中,服务270是守护进程或者网络驱动器,用于监听、接收和/或发送用于应用的通信,诸如电子邮件、数据库或者企业应用。在一些实施例中,服务270可以在特定的IP地址、或者IP地址和端口上通信。
在一些实施例中,vServer 275应用策略引擎236的一个或者多个策略到客户端102和服务器106之间的网络通信。在一个实施例中,该策略与vServer275相关。在另一个实施例中,该策略基于用户或者用户组。在又一个实施例中,策略为通用的并且应用到一个或者多个vServer 275a-275n和通过设备100通信的任一用户或者用户组。在一些实施例中,策略引擎的策略具有基于通信的任一内容应用该策略的条件,通信的内容诸如互联网协议地址、端口、协议类型、包中的首部或者域、或者通信的上下文,诸如用户、用户组、vServer 275、传输层连接、和/或客户端102或者服务器106的标识或者属性。
在其它实施例中,设备200和策略引擎236通信或者对接,以确定远程用户或者远程客户端102访问计算环境15、应用、和/或来自服务器106的数据文件的验证和/或授权。在另一个实施例中,设备200和策略引擎236通信或者对接,以确定远程用户或者远程客户端102的验证和/或授权来使得应用传送系统190传送一个或者多个计算环境15、应用、和/或数据文件。在又一个实施例中,设备200基于对远程用户或者远程客户端102的策略引擎236的验证和/或授权来建立VPN或者SSLVPN连接。在一个实施例中,设备200基于策略引擎236的策略来控制网络业务和通信会话的流。例如,设备200可以基于策略引擎236来控制对计算环境15、应用或者数据文件的访问。
在一些实施例中,vServer 275与客户端102经客户端代理120建立传输层连接,诸如TCP或者UDP连接。在一个实施例中,vServer 275监听和接收来自客户端102的通信。在其它实施例中,vServer 275与客户端服务器106建立传输层连接,诸如TCP或者UDP连接。在一个实施例中,vServer 275建立到运行在服务器106上的服务器270的互联网协议地址和端口的传输层连接。在另一个实施例中,vServer 275将到客户端102的第一传输层连接与到服务器106的第二传输层连接相关联。在一些实施例中,vServer 275建立到服务器106的传输层连接池并且经由池化的传输层连接多路复用客户端请求。
在一些实施例中,设备200提供客户端102和服务器106之间的SSL VPN连接280。例如,第一网络104上的客户端102请求建立到第二网络104’上的服务器106的连接。在一些实施例中,第二网络104’是不能从第一网络104路由的。在其它实施例中,客户端102位于公用网络104上,并且服务器106位于专用网络104’上,例如企业网。在一个实施例中,客户端代理120拦截第一网络104上的客户端102的通信,加密该通信,并且经第一传输层连接发送该通信到设备200。设备200将第一网络104上的第一传输层连接与到第二网络104’上的服务器106的第二传输层连接相关联。设备200接收来自客户端102的所拦截的通信,加密该通信,并且经第二传输层连接发送该通信到第二网络104’上的服务器106。第二传输层连接可以是池化的传输层连接。同样的,设备200提供用于两个网络104、104’之间的客户端102的端到端安全传输层连接。
在一个实施例中,设备200寄载虚拟专用网络104上的客户端102的内部网内部网协议或者intranetIP 282地址。客户端102具有本地网络识别符,诸如互联网切议(IP)地址和/或第一网络104上的主机名称。当经设备200连接到第二网络104’,对于第二网络104’上的客户端102,设备200建立、分配或者以其它方式提供IntranetIP,其是网络识别符,诸如IP地址和/或主机名称。设备200在第二或者专用网络104’上监听和接收使用客户端建立的IntranetIP 282的指向客户端102的任一通信。在一个实施例中,设备200用作或者代表第二专用网络104上的客户端102。例如,在另一个实施例中,vServer 275监听和响应到客户端102的IntranetIP 282的通信。在一些实施例中,如果第二网络104’上的计算装置100发送请求,设备200如同客户端102一样来处理该请求。例如,设备200可以响应对客户端IntranetIP 282的查验。在另一个实施例中,设备可以与第二网络104’上请求与客户端IntranetIP 282的连接的计算装置100建立连接,诸如TCP或者UDP连接。
在一些实施例中,设备200提供一个或者多个以下加速技术288以在客户端102和服务器106之间通信:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议缓冲;和6)高速缓存。
在一个实施例中,设备200通过开启与每一服务器106的一个或者多个传输层连接并且维持这些连接以允许由客户端经因特网的重复数据访问,来为服务器106缓解由重复开启和关闭到客户端102的传输层连接所带来的许多处理负载。该技术在此处被称为“连接池化”。
在一些实施例中,为了无缝拼接从客户端102经池化的传输层连接到服务器106的通信,设备200通过在传输层协议级修改序列号和确认号来翻译或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议交互。例如,在入站包(即,从客户端102接收的包)的例子中,包的源网络地址被改变到设备200的输出端口的地址,并且目的网络地址被改变到指定的服务器的地址。在出站包(即,从服务器106接收的包)的例子中,源网络地址从服务器106的地址被改变为设备200的输出端口的地址,并且目的地址从设备200的地址被改变到请求客户端102的地址。包的序列号和确认号也被翻译为到客户端102的设备200的传输层连接上的客户端102所期待的序列号和确认。在一些实施例中,传输层协议的包校验和被重新计算以说明这些翻译。
在另一个实施例中,设备200提供转换或者负载平衡功能284用于客户端102和服务器106之间的通信。在一些实施例中,基于层4或者应用层请求数据,设备200分发业务并且将客户端请求指向服务器106。在一个实施例中,尽管网络层或者网络包的层2标识目的服务器106,但设备200确定服务器106来分发由应用信息和数据承载的作为传输层包的有效载荷的网络包。在一个实施例中,设备200的健康监控程序216监控服务器的健康来确定分发客户端请求用于哪个服务器106。在一些实施例中,如果设备200探测到服务器106不可用或者具有超过预定阈值的负载,设备200可以将客户端请求指向或者分发到另一个服务器106。
在一些实施例中,设备200用作域名服务(DNS)解析器或者以其它方式提供来自客户端102的DNS请求的解析。在一些实施例中,设备拦截由客户端102发送的DNS请求。在一个实施例中,设备200以设备200所寄载的IP地址或其IP地址来响应客户端的DNS请求。在此实施例中,客户端102发送用于域名的网络通信到设备200。在另一个实施例中,设备200以第二设备200’所寄载的IP地址或其IP地址来响应客户端的DNS请求。在一些实施例中,设备200使用由设备200确定的服务器106的IP地址来响应客户端的DNS请求。
在又一个实施例中,设备200提供用于客户端102和服务器106之间通信的应用防火墙功能290。在一个实施例中,策略引擎236提供用于探测和阻断非法请求的规则。在一些实施例中,应用防火墙290保护避免拒绝服务(DoS)攻击。在其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一些实施例中,规则/策略引擎236包括一个或者多个应用防火墙或者安全控制策略,用于提供保护,避免不同类或者类型的基于web或者因特网攻击,诸如以下一个或者多个:1)缓冲溢出,2)CGI-BIN参数操纵,3)表格/隐藏域操纵,4)强制浏览,5)cookie或者会话定位,6)中断的访问控制列表(ACL)或者弱的口令,7)跨站脚本(XSS),8)命令注入,9)SQL注入,10)错误触发敏感信息泄漏,11)密码学的不安全使用,12)服务器误配置,13)后门和调试选项,14)web站点毁损,15)平台或者操作系统攻击,和16)零天攻击。在实施例中,应用防火墙290以检查或者分析用于以下一个或者多个的网络通信的形式来提供HTML格式域保护:1)返回所需要的域,2)不增加允许的域,3)只读和隐藏域施行,4)下拉列表和单选按钮域一致,5)表域最大长度施行。在一些实施例中,应用防火墙290确保没有修改cookie。在其它实施例中,应用防火墙290通过执行合法URL来保护避免强迫浏览。
仍在又一些实施例中,应用防火墙290保护包括在网络通信中的任一机密信息。应用防火墙290可以根据引擎236的规则或者策略来检查或者分析任一网络通信,以识别网络包的任一域中的任一机密信息。在一些实施例中,应用防火墙290识别网路通信中的信用卡号、口令、社会安全号码、名称、患者号码、接触信息和年龄的一个或者多个的出现。网络通信的编码部分可以包括这些出现或者机密信息。基于这些出现,在一个实施例中,应用防火墙290可以采取作用于网络通信上的策略,诸如阻止发送网络通信。在另一个实施例中,应用防火墙290可以重写、移动或者以其它方式掩蔽该所识别出的出现或者机密信息。
C、客户端代理
现在看图3,描述客户端代理120的实施例。客户端102包括客户端代理120,用于经网络104与设备200和/或服务器106来建立和交换通信。总的来说,客户端102在计算装置100上操作,该计算装置100拥有带有内核模式302以及用户模式303,以及带有一个或多个层310a-310b的网络堆栈310的操作系统。客户端102可以已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可通过网络堆栈310与网络104通信。诸如web浏览器的应用之一也可包括第一程序322。例如,可在一些实施例中使用第一程序322来安装和/或执行客户端代理120,或其中任一部分。客户端代理120包括拦截机制或者拦截器350,用于拦截经由网络堆栈310来自一个或者多个应用的网络通信。
客户端102的网络堆栈310可包括任一类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈310包括用于网络协议组的软件实现。网络堆栈310可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联(OSI)通信模型的任一网络层。同样的,网络堆栈310可包括任一类型和形式的协议,这些协议用于OSI模型的任一以下层:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层,以及7)应用层。在一个实施例中,网络堆栈310可包括在互联网协议(IP)的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在Ethernet协议上承载TCP/IP协议,Ethernet协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任一族,例如被IEEE 802.3覆盖的那些协议。在一些实施例中,网络堆栈310包括任一类型和形式的无线协议,例如IEEE 802.11和/或移动互联网协议。
考虑基于TCP/IP的网络,可使用任一基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用因特网文件系统(CIFS)协议(文件传输)、独立计算框架(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP语音(VoIP)协议。在另一个实施例中,网络堆栈310包括任一类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP(T/TCP),带有选择确认的TCP(TCP-SACK),带有大窗口的TCP(TCP-LW),拥塞预测协议,例如TCP-Vegas协议,以及TCP欺骗协议。在其它实施例中,任一类型和形式的用户数据报协议(UDP),例如IP上UDP,可被网络堆栈310使用,诸如用于语音通信或实时数据通信。
另外,网络堆栈310可包括支持一个或多个层的一个或多个网络驱动器,例如TCP驱动器或网络层驱动器。网络驱动器可被包括作为计算装置100的操作系统的一部分或者作为计算装置100的任一网络接口卡或其它网络访问部件的一部分。在一些实施例中,网络堆栈310的任一网络驱动器可被定制、修改或调整以提供网络堆栈310的定制或修改部分,用来支持此处描述的任一技术。在其它实施例中,设计并构建加速程序120以与网络堆栈310协同操作或工作,上述网络堆栈310由客户端102的操作系统安装或以其它方式提供。
网络堆栈310包括任一类型和形式的接口,用于接收、获得、提供或以其它方式访问涉及客户端102的网络通信的任一信息和数据。在一个实施例中,网络堆栈310的接口包括应用编程接口(API)。接口也可包括任一函数调用、钩子或过滤机制、事件或回调机制、或任一类型的接口技术。网络堆栈310通过接口可接收或提供任一类型和形式的数据结构,例如对象,涉及到网络堆栈310的功能性或操作。例如,数据结构可包括涉及到网络包或一个或多个网络包的信息和数据。在一些实施例中,数据结构包括在网络堆栈310的协议层处理的网络包的一部分,例如传输层的网络包。在一些实施例中,数据结构325包括内核级别数据结构,而在其它实施例中,数据结构325包括用户模式数据结构。内核级别数据结构可包括在内核模式302中操作的网络堆栈310的部分获得的或涉及的数据结构,或者运行在内核模式302中的网络驱动器或其它软件,或者通过在操作系统的内核模式中运行或操作的服务、进程、任务、线程或其它可执行指令获得或接收的任一数据结构。
此外,网络堆栈310的一些部分可在内核模式302中执行或操作,例如,数据链路或网络层,而其它部分在用户模式303中执行或操作,例如网络堆栈310的应用层。例如,网络堆栈的第一部分310a可为应用提供对网络堆栈310的用户模式的访问,而网络堆栈310的第二部分310b提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可包括网络堆栈310的一个或多个更上层,例如层5-7的任意层。在其它实施例中,网络堆栈310的第二部分310b包括一个或多个较低的层,例如层1-4的任意层。网络堆栈310第一部分310a和第二部分310b的每个可包括网络堆栈310的任一部分,在任一一个或多个网络层,在用户模式303、内核模式302,或其组合,或在网络层的任一部分或者指向网络层的接口点,或指向用户模式303和内核模式302的接口点或者其任一部分。
拦截器350可以包括软件、硬件、或者软件和硬件的任一组合。在一个实施例中,拦截器350在网络堆栈310的任一点拦截网络通信,并且重定向或者发送网络通信到拦截器350或者客户端代理120期望的、管理的或者控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈310的网络通信并且发送该网络通信到设备200,用于在第二网络104’上发送。在一些实施例中,拦截器350包括含有诸如被构建和设计来与网络堆栈310连接并一同工作的网络驱动器的驱动器的任一类型的拦截器350。在一些实施例中,客户端代理120和/或拦截器350操作在网络堆栈310的一个或者多个层,诸如在传输层。在一个实施例中,拦截器350包括滤波器驱动器、钩子机制、或者对接到网络堆栈的传输层的任一形式和类型的合适网络驱动器接口,诸如通过传输驱动器接口(TDI)。在一些实施例中,拦截器350对接到诸如传输层的第一协议层和诸如传输协议层之上的任一层的另一个协议层,例如,应用协议层。在一个实施例中,拦截器350可以包括遵守网络驱动器接口规范(NDIS)的驱动器,或者NDIS驱动器。在另一个实施例中,拦截器350可以包括微型滤波器或者迷你端口驱动器。在一个实施例中,拦截器350或其部分在内核模式302中操作。在另一个实施例中,拦截器350或其部分在用户模式303中操作。在一些实施例中,拦截器350的一部分在内核模式302中操作,而拦截器350的另一部分在用户模式303中操作。在其它实施例中,客户端代理120在用户模式203中操作,但通过拦截器350对接到内核模式驱动器、进程、服务、任务或者操作系统的部分,诸如以获取内核级数据结构325。在其它实施例中,拦截器350为用户模式应用或者程序,诸如应用。
在一个实施例中,拦截器350拦截任意的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以设置目的信息,诸如到期望位置的目的IP地址和/或端口用于定位。在此方式中,拦截器350拦截并且重定向传输层连接到由拦截器350或者客户端代理120控制或者管理的IP地址和端口。在一个实施例中,拦截器350设置目的信息,用于到客户端代理120正监听的客户端102的本地IP地址和端口的连接。例如,客户端代理120可以包括为重定向的传输层通信监听本地IP地址和端口的代理服务。在一些实施例中,客户端代理120随后将重定向的传输层通信传输到设备200。
在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户端代理120和/或拦截器350解析DNS请求。在另一个实施例中,拦截器发送所拦截的DNS请求到设备200用于DNS解析。在一个实施例中,设备200解析DNS请求并且将DNS响应通信到客户端代理120。在一些实施例中,设备200经另一个设备200’或者DNS服务器106来解析DNS请求。
在又一个实施例中,客户端代理120可以包括两个代理120和120’。在一个实施例中,第一代理120可以包括在网络堆栈310的网络层操作的拦截器350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。在其它实施例中,第二代理120’可以在传输层操作并且拦截传输层通信。在一些实施例中,第一代理120在网络堆栈310的一层拦截通信并且与第二代理120’对接或者将所拦截的通信传输到第二代理120’。
客户端代理120和/或拦截器350可以以对网络堆栈310的任意其它协议层透明的方式在一协议层操作或与之对接。例如,在一个实施例中,拦截器350可以以对诸如网络层的传输层之下的任一协议层和诸如会话、表示和应用层协议的传输层之上的任一协议层透明的方式在网络堆栈310的传输层操作或与之对接。这允许网络堆栈310的其它协议层如所期望的操作并无需修改以用于拦截器350。同样的,客户端代理120和/或拦截器350可以与传输层对接以安全、优化、加速、路由或者负载平衡经由传输层承载的任一协议提供的任一通信,诸如TCP/IP上的任一应用层协议。
此外,客户端代理120和/或拦截器可以以对任一应用、客户端102的用户和与客户端102通信的诸如服务器的任一其它计算装置透明的方式在网络堆栈310上操作或与之对接。客户端代理120和/或拦截器350可以以无需修改应用的方式被安装和/或执行在客户端102上。在一些实施例中,客户端102的用户或者与客户端102通信的计算装置未意识到客户端代理120和/或拦截器350的存在、执行或者操作。同样的,在一些实施例中,客户端代理120和/或拦截器350以对应用、客户端102的用户、诸如服务器的另一个计算装置、或者由拦截器350对接到的协议层之上和/或之下的任一协议层透明的方式被安装、执行、和/或操作。
客户端代理120包括加速程序302、流客户端306和/或收集代理304。在一个实施例中,客户端代理120包括由Florida,Fort Lauderdale的Citrix SystemsInc.开发的独立计算架构(ICA)客户端或其部分,并且也指ICA客户端。在一些实施例中,客户端代理120包括应用流客户端306,用于从服务器106流式传输应用到客户端102。在一些实施例中,客户端代理120包括加速程序302,用于加速客户端102和服务器106之间的通信。在另一个实施例中,客户端代理120包括收集代理304,用于执行端点检测/扫描并且收集用于设备200和/或服务器106的端点信息。
在一些实施例中,加速程序302包括客户端侧加速程序,用于执行一个或多个加速技术以加速、增强或以其它方法改进客户端与服务器106的通信和/或对服务器106的访问,例如访问服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个以下的加速技术:1)多协议压缩,2)传输控制协议池化,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)通过高速缓存管理器的高速缓冲。另外,加速程序302可执行由客户端102接收和/或发送的任一通信的加密和/或解密。在一些实施例中,加速程序302以集成的方式或者格式执行一个或者多个加速技术。另外,加速程序302可以在传输层协议的网路包的有效载荷承载的任一协议或者多协议上执行压缩。流客户端306包括用于接收和执行从服务器106所流式传输的应用的应用、程序、进程、服务、任务或者可执行指令。服务器106可以流式传输一个或者多个应用数据文件到流客户端306,用于播放、执行或者以其它方式引起客户端102上的应用被执行。在一些实施例中,服务器106发送一组压缩或者打包的应用数据文件到流客户端306。在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它档案文件。在一个实施例中,服务器106解压缩、解包或者解档应用文件并且将该文件发送到客户端102。在另一个实施例中,客户端102解压缩、解包或者解档应用文件。流客户端306动态安装应用或其部分,并且执行该应用。在一个实施例中,流客户端306可以为可执行程序。在一些实施例中,流客户端306可以能够启动另一个可执行程序。
收集代理304包括应用、程序、进程、服务、任务或者可执行指令,用于识别、获取和/或收集关于客户端102的信息。在一些实施例中,设备200发送收集代理304到客户端102或者客户端代理120。收集代理304可以根据设备的策略引擎236的一个或者多个策略被配置。在其它实施例中,收集代理304发送在客户端102上所收集的信息到设备200。在一个实施例中,设备200的策略引擎236使用所收集的信息来确定和提供客户端到网络104的连接的访问、验证和授权控制。
在一个实施例中,收集代理304包括端点检测和扫描机制,其识别并且确定客户端的一个或者多个属性或者特征。例如,收集代理304可以识别和确定以下任意一个或者多个客户端侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304也可以识别和确定客户端上以下任意一个或者多个的存在或者版本:1)防病毒软件,2)个人防火墙软件,3)防蠕虫软件,和4)互联网安全软件。策略引擎236可以具有基于客户端或者客户端侧属性的任意一个或者多个属性或者特征的一个或者多个策略。
在一些实施例中,仍旧参见图3,第一程序322可以被用于自动地、静默地、透明地或者以其它方式安装和/或执行客户端代理120或其部分,诸如拦截器350。在一个实施例中,第一程序322包括插件,例如ActiveX控件或Java控件或脚本,其加载到应用并由应用执行。例如,第一程序包括被web浏览器应用载入和运行的ActiveX控件,例如在存储器空间或应用的上下文中。在另一个实施例中,第一程序322包括可执行指令组,该可执行指令组被例如浏览器的应用载入并执行。在一个实施例中,第一程序322包括被设计和构造的程序以安装客户端代理120。在一些实施例中,第一程序322通过网络从另一个计算装置获得、下载、或接收客户端代理120。在另一个实施例中,第一程序322是用于在客户端102的操作系统上安装例如网络驱动器的程序的安装程序或即插即用管理器。
现在参见图4,示出用于使用在虚拟专用网络环境中操作的客户端代理120来拦截HTTP通信的方法的实施例。总的来说,该方法包括在网络层由在客户端上执行的客户端代理120拦截来自在客户端上执行的应用的HTTP请求(步骤401);修改该HTTP请求(步骤403);并且经由传输层连接发送所修改的HTTP请求到网络设备200(步骤405)。
仍旧参见图4,更详细地,由在客户端上执行的客户端代理120在网络层拦截来自在客户端上执行的应用的HTTP请求(步骤401)。该拦截可以由任一装置执行,包括但不限于此处讨论的TDI驱动器的使用。尽管所示实施例中拦截发生在网络层,但是在其他实施例中,拦截可以发生在会话层或者传输层。应用可以包括使用HTTP协议的任一应用,包括但不限于web浏览器和web应用。
在一些实施例中,可以对于用户、应用或者二者透明执行拦截。在一些实施例中,可以对于发生拦截的层的之上或者之下的网络堆栈的一个或者多个层透明地执行该拦截。
客户端代理在网络层拦截来自执行在客户端上的应用的HTTP请求(步骤401)之后,客户端代理可以修改HTTP请求(步骤403)。
在一些实施例中,客户端代理通过增加、移除、或者修改包括在HTTP请求中的cookie来修改HTTP请求。客户端代理可以增加、移除或者修改cookie以执行和此处讨论的客户端代理相关联的任一功能。
在一个实施例中,如此处所述,客户端代理可以增加包括将被发送到VPN设备200的验证证书的HTTP cookie。
在另一个实施例中,客户端代理可以增加包括高速缓存信息的HTTPcookie。例如,客户端代理可以增加包括客户端代理已经存储的所请求资源的之前版本的信息的HTTP cookie。由于具有之前存储的版本,接收所插入的cookie的网络设备可以随后仅发送发生改变的所请求资源的那部分。在图7开始讨论可以利用该技术的高速缓存的一个具体方法。
在一些实施例中,客户端代理120可以通过增加、移除或者修改包括在HTTP请求中的名称-值对来修改HTTP请求。这些名称-值对可以结合客户端代理执行的任一功能来被修改,包括加速、池、高速缓存和安全性。在一个实施例中,客户端代理可以(修改)HTTP首部中的名称-值对。
例如,客户端代理可以修改、增加或者移除跟随“连接”HTTP消息首部的值,以指示客户端代理希望保持HTTP连接打开而不是关闭。这可以通过插入“保持-活动”值、或者移除“关闭”值来实现。
或者例如,客户端代理可以修改、增加或者移除跟随“来源页面”(referrer)HTTP消息首部的值用于安全目的。通过移除“来源页面”变量可以将操作者能够获取的关于客户端浏览历史的站点信息最小化。
或者例如,客户端代理可以修改、增加或者移除跟随“授权”HTTP消息首部的值。客户端代理可以代表客户端插入或者移除安全证书以提供对资源的安全访问。
或者例如,客户端代理可以修改、增加或者移除跟随“高速缓存-控制”的值。这可以被用来支持或者增强此处所述的任一高速缓存特征。
在一些实施例中,根据此处所述的任一功能,客户端代理可以增加、移除或者修改HTTP请求指定的URL中的名称-值对。仍在其它实施例中,客户端代理可以重写所请求的URL自身。
在一些实施例中,客户端代理可以基于HTTP首部指定的URL来进一步确定路由决策。例如,如果客户端正请求对应于和给定应用服务器相关联的文件的URL,客户端代理可以直接路由客户端请求到应用服务器。
修改HTTP请求(步骤403)之后,客户端代理可以经由传输层连接发送所修改的HTTP请求到网络设备200(步骤405)。该发送可以经由任一传输层协议发生。在一个实施例中,可以经由SSL连接发送HTTP请求到网络设备200。客户端代理可以在传输HTTP请求时执行此处所述的任一功能,包括加速和压缩。
客户端代理也可以使用包括在所拦截的包中的HTTP信息来提供或者增强此处所述的任一客户端代理功能。
例如,客户端代理可以使用HTTP信息来有效路由客户端请求。客户端代理可以建立到提供高速缓存功能的多个设备200的连接。客户端代理随后可以拦截包括对于给定UR1的请求的包,并且确定该URL已经经由给定设备由客户端之前请求过。客户端代理可以随后发送包括HTTP请求的包到给定设备,使得设备高速缓存的任一对象可以被利用在响应中。
或者例如,客户端代理可以使用HTTP信息来确定请求是否应该在所建立的SSL/VPN隧道上发送。在一个实施例中,客户端代理可以拦截包括HTTP请求的一个或者多个包,并且检查包括在请求中的URL。客户端代理可以随后基于URL中指定的域名来确定是否经由所建立的SSL/VPN隧道发送包或者经由其它连接发送包。例如,公司可以配置客户端代理策略以使在职员计算机上执行的客户端代理经由与公司操作的设备所建立的SSL/VPN连接发送对于指定公司域名的URL的任一请求。
现在参见图5,示出使用客户端代理来启用来自客户端的非HTTP通信中的HTTP cookie验证的方法的实施例。总的来说,该方法包括:由客户端上执行的客户端代理拦截来自客户端的连接请求(步骤501);由客户端代理建立与网络设备的传输层虚拟专用网络连接(步骤503);由客户端代理经由所建立的连接发送包括验证cookie的HTTP请求(步骤505);由客户端代理接收HTTP响应,该HTTP响应包括验证cookie的接受(步骤507);并且由客户端代理经由该连接发送连接请求(步骤509)。
仍旧参见图5,现在更详细地,在客户端102上执行的客户端代理120拦截来自客户端的连接请求(步骤501)。该拦截可以经由任一此处讨论的方法发生,包括经由TDI驱动器。该连接请求可以包括来自客户端的请求以打开任一类型的网络连接,包括非HTTP连接。在一个实施例中,连接请求可以包括TCP SYN包。
从客户端拦截连接请求(步骤501)之后,客户端代理可以与网络设备建立传输层虚拟专用网络连接(步骤503)。该连接可以包括此处所描述的任一传输层协议。在一个实施例中,传输层VPN连接可以包括SSL连接。在一些实施例中,客户端代理可以利用之前存在的SSL VPN连接。仍在其他实施例中,客户端代理可以在之前存在的VPN连接中建立新的连接。在这些实施例中,这些连接可以被池化或者与现存VPN连接中的其他连接多路复用。
建立传输层VPN连接(步骤503)之后,客户端代理可以经由所建立的连接发送包括验证cookie的HTTP请求(步骤505)。在一些实施例中,HTTP请求可以包括由网络设备之前发送到客户端的验证cookie。例如,客户端代理可以与网络设备200建立SSL VPN连接,并且可以从网络设备接收验征cookie。如果客户端代理期望打开与网络设备的第二连接,客户端代理可以随后重新发送所接收的cookie,提供验证而不需要请求第二次登录过程。
验证cookie可以包括经由HTTP请求发送的任一验证信息。在一个实施例中,验证cookie可以包括验征字符串,其允许网络设备来查证客户端的用户的身份。在另一个实施例,验证cookie可以包括验证字符串,其允许网络设备来查证对应于特定用户会话的请求。仍然在另一个实施例中,验证cookie可以包括验证字符串,其允许网络设备查证对应于特定应用会话的请求。
在一个实施例中,客户端代理可以确保包括验征cookie的HTTP请求为经由新连接发送的第一数据。例如,建立连接之后,客户端代理可以发送HTTP请求“GET URL HTTP/1.1\r\n...”,之后是验证cookie。在一个实施例中,客户端代理可以对客户端试图跟随连接请求发送的任一数据进行排队,直到HTTP请求被发送。在另一个实施例中,客户端代理可以对客户端试图跟随连接请求发送的任一数据进行排队直到从网络设备接收到HTTP响应。
经由所建立的连接发送包括验证cookie的HTTP请求(步骤505)之后,客户端代理可以接收HTTP响应,HTTP响应包括接受验证cookie(步骤507)。
接收包括接受验证cookie的HTTP响应(步骤507)之后,客户端代理可以经由所建立的连接发送连接请求(步骤509)。客户端代理可以随后执行任一附加步骤以服务连接请求并且建立所请求的连接。客户端代理可以随后发送已经排队用于所请求连接的任一数据。
现在参见图6,示出使用客户端代理来在虚拟专用网络环境中使用HTTPcookie启用安全验证的方法。总的来说,该方法包括:由执行在客户端上的的客户端代理拦截从虚拟专用网络上的设备到客户端的包括cookie的HTTP通信(步骤601);由客户端代理从HTTP通信中移除cookie(步骤603);由客户端代理存储所接收的cookie(步骤605);由客户端代理发送修改的HTTP通信到执行在客户端上的应用(步骤607);由客户端代理拦截来自客户端的HTTP请求(步骤609);由客户端代理在HTTP请求中播入所接收的cookie(步骤611);并且发送修改的HTTP请求到设备(步骤613)。
仍旧参见图6,更详细地,执行在客户端102上的的客户端代理120拦截从虚拟专用网络上的设备到客户端的包括cookie的HTTP通信(步骤601)。该cookie可以包括任一验证证书,包括但不限于用户特定的、会话特定的、和应用特定的验证证书。在一些实施例中,cookie可以被从设备发送到客户端以响应登录请求和来自客户端的相关信息。客户端代理可以使用此处所描述的任一装置来拦截通信,包括TDI驱动器。
在拦截从虚拟专用网络上的设备到客户端的包括cookie的HTTP通信(步骤601)之后,由客户端代理从HTTP通信中移除cookie(步骤603)。客户端代理可以通过移除包括cookie的HTTP首部中的名称-值对来从HTTP响应中删除cookie。
在一些实施例中,根据此处讨论的任一实施例,客户端代理也可以增加、移除或者修改所接收的HTTP首部中的其它名称-值对。在一个实施例中,客户端代理可以增加、移除或者修改HTTP首部,使得在接收到的HTTP首部中由先前客户端代理对HTTP请求的改变所产生的任一信息被从客户端遮掩。例如,客户端可以在识别多个版本的所请求资源的HTTP请求中插入名称-值对,该资源当前高速缓存在客户端上。客户端代理随后可以接收包括一个文件的HTTP响应,该文件由一个所识别版本的改变以及识别哪个版本作为基础使用的HTTP首部中的名称-值对所组成。客户端代理除了组合所更新的版本外,可以移除此名称-值对,使得高速缓存技术对于客户端应用透明。
由客户端代理从HTTP通信中移除cookie(步骤603)之后,客户端代理可以存储所接收的cookie(步骤605)。客户端代理可以使用任一存储方法或者装置来存储所接收的cookie。在一个实施例中,客户端代理可以存储cookie作为磁盘上的文件。在另一个实施例中,客户端代理可以存储cookie到RAM中。客户端代理可以使用分类或者索引所存储的cookie的任一方法,包括但不限于按用户、会话、应用、设备、连接或者VPN索引。
存储所接收的cookie(步骤605)之后,客户端代理可以发送修改的HTTP通信到执行在客户端上的应用(步骤607)。所修改的HTTP通信可以使用此处所描述的任一方式被发送到客户端,包括TDI驱动器。
发送修改的HTTP通信到执行在客户端上的应用之后,客户端代理可以拦截来自客户端的HTTP请求(步骤609)。该拦截可以经由此处讨论的任一方式发生,包括TDI驱动器。HTTP请求可以来自HTTP响应被发送到的应用,或者HTTP请求可以来自第二应用。在一些实施例中,客户端代理可以拦截来自多个应用的HTTP请求。
拦截来自客户端的HTTP请求(步骤609)之后,客户端代理可以在HTTP请求中插入所接收的cookie(步骤611)。客户端代理通过搜索所接收的cookie的文件、目录或者数据库来插入HTTP cookie,并且随后将cookie插入到请求中。在一些实施例中,客户端代理可以包括HTTP解析器,使得客户端代理可以识别HTTP请求的有效载荷边界。
在HTTP请求中插入所接收的cookie(步骤611)之后,客户端代理可以发送修改的HTTP请求到设备(步骤613)。该传输可以经由此处所述的任一方法。在一些实施例中,客户端代理随后可以从指示cookie被接受的设备接收HTTP响应。
在一些实施例中,客户端代理可以提供其他的cookie管理功能。例如,,客户端代理可以探测何时VPN会话已经结束,并删除对应于该VPN会话的任一存储的cookie。
现在参见图7到图11,示出高速缓存和更新方法的详细示例,该方法可以利用之前讨论的任一客户端cookie管理和HTTP察觉功能。
现在参见图7,示出用于建立对之前存储的文件有效更新的方法的一个实施例。尽管图7描述的方法是在由网络设备200和客户端102来执行的上下文中,但是该方法可以由此处讨论的任一计算设备自身或者以其任一组合来执行。总的来说,该方法包括:接收包括第一多个数据序列的第一文件(步骤701);发送该第一文件到客户端或者客户端代理(步骤703);接收包括第二多个数据序列的第二文件(步骤709);建立具有多个项目的哈希表,多个项目的每一个对应于第一多个序列的相应一个,并且其中所述项目的至少两个对应于交迭的数据序列(步骤711);对于所述第二多个数据序列计算哈希值(步骤713);比较第二多个数据序列的每一个和具有同样哈希值的第一多个序列的序列,以确定在两个文件都存在的数据序列(步骤715);存储在第一和第二文件中都存在的数据序列的长度和位置的表示(步骤717);建立包括来自第二文件的数据序列以及在第一和第二文件二者中都出现的所述数据序列的长度和位置的表示的第三文件(步骤719);并且发送第三文件到客户端或客户端代理(步骤721)。
依旧参见图7并且现在更详细地,网络设备200接收包括第一多个数据序列的第一文件(步骤701)。在一些实施例中,可以从网络211’、服务器205、数据库或者其中任一组合来接收第一文件。在一些实施例中,第一文件可以从磁盘或者其他存储介质读取,从高速缓存获取,或者从RAM存取。在其他实施例中,第一文件可以从网络设备200上执行的应用或者进程接收。在一些实施例中,第一文件可以包括客户端或者客户端代理请求的文件。
第一文件可以包括对应于包含该文件的位或者字节序列的数据序列。第一文件可以包括任一文件协议,包括但不限于,HTML、XML、WML、SVG、其它文档协议、图像文件协议、声音文件协议、视频文件协议和二进制文件协议。在一些实施例中,该文件包括web页面或者web页面的部分。在一些实施例中,文件包括以某频率更新的任一web页面,包括但不限于新闻页面、web应用页面、聊天室、公告板、体育页面、电子邮件页面、目录列表、跟踪页面和web摄像(webcam)页面。接收第一文件之后,网络设备200可以存储或者高速缓存第一文件以准许之后的获取。在一些实施例中,网络设备200可以根据此处所述的任一网络设备功能来修改所述第一文件。
在一些实施例中,接收第一文件(步骤701)之后,网络设备200传输第一文件到客户端(步骤703)。网络设备200可以经此处所述的任一网络或者协议传输第一文件到此处所述的任一客户端或者客户端代理。网络设备200可以根据网络设备执行的任一功能来修改第一文件,包括压缩、加速和加密。尽管图7描述的网络设备200在步骤701之后立即传输第一文件,在其他实施例中,所述传输可以在网络设备200接收第一文件(步骤701)之后发生的任一步骤(步骤705-721)之后发生。
在一些实施例中,网络设备200可以存储所述传输的记录。所述记录可以存储在任一存储元件中,包括数据库或者高速缓存。在一个实施例中,网络设备200可以存取所述高速缓存来确定给定文件是否先前已经传输到客户端。在一个实施例中,可以设置所述记录以在设定时间之后无效。例如,如果网络设备200具有指示在每一天结束时给定客户端102删除来自其高速缓存的所有文件的信息,则网络设备可以设置传输到客户端102的文件的所有记录在每一天结束时无效。
在所示实施例中,网络设备200传输第一文件到客户端102(步骤703)之后,客户端可以随后接收第一文件(步骤705),显示第一文件(步骤707),并且存储第一文件(步骤708)。客户端可以根据此处所述任一实施例来执行这些步骤。
在所示实施例中,网络设备200传输第一文件到客户端102或者客户端代理120(步骤703)之后,网络设备接收包括第二多个数据序列的第二文件(步骤709)。在其他实施例中,网络设备200可以在传输第一文件到客户端(步骤703)之前或期间接收第二文件(步骤709)。第二文件可以包括此处所述的任一的文件类型、协议、web页面和web页面的部分。接收到第二文件之后,网络设备200可以存储或者高速缓存第二文件以准许随后的获取。在一些实施例中,网络设备200可以根据此处所述的任一网络设备功能来修改所述第二文件。
在一些实施例中,第二文件可以包括客户端代理所请求的文件。在一个实施例中,客户端代理可以发送对第二文件的请求到网络设备,该请求包括识别客户端代理具有第一文件的存储的拷贝的信息。在一些实施例中,该请求可以是HTTP请求。例如,客户端代理可以发送HTTP请求用于新闻web页面。客户端代理可以在HTTP请求中插入下面的名称-值对“previously-stored-version=826482764”(之前存储版本=826482764),其中,826482764可以包括对应于之前存储的先前版本的新闻web页面的序列号或者时间戳(因此对应于关于此数字讨论的第一文件)。设备200可以随后使用此序列号或者时间戳来从其存储设备检索第一文件。
在接收包括第二多个数据序列的第二文件(步骤709)之后,网络设备可以建立具有多个项目的哈希表,多个项目中的每一个对应于第一多个序列中的相应一个,并且其中所述项目的至少两个对应于交迭的数据序列(步骤711)。所述哈希表可以根据任一已知的哈希表算法来建立,所述哈希表算法提供将数据序列或者对数据序列的引用存储为项目,并且随后有效搜索所述表中匹配给定序列的项目的功能。在其他实施例中,网络设备可以在接收第二文件(步骤709)之前或者期间建立哈希表(步骤711)。
在一些实施例中,哈希表中的项目可以对应于来自包括字节序列的第一文件的数据序列。该字节序列可以是任一长度。在一个实施例中,该序列是四字节序列。
在所示实施例中,至少两个哈希表项目对应于交迭的数据序列。交迭的序列可以具有任一相同的字节数量。例如,如果文件包括序列“abcdefghijklmnop”,四字节序列交迭的例子除了“cdef”和“fghi”之外,还包括“cdef”和“defg”。在一个实施例中,哈希表项目对应于连续的交迭字节序列。例如,如果文件包括序列“abcdefg”,包括至少两个连续交迭四字节序列的哈希表可以包括对应于序列“abcd””“bcde”“cdef”和“defg”的项目。
在一些实施例中,哈希表项目在给定时刻可以仅对应于来自第一文件的给定部分或者“窗口”的数据序列。如果整个文件被立刻哈希的话,这允许该哈希表的尺寸小于该哈希表的可能的尺寸。在一些实施例中,仅哈希第一文件的第一个X个字节,并且随后根据一些条件的发生,从表中移除Y个项,随后在表中加入Y个项。在一个实施例中,使用64K字节的窗口尺寸,并且根据某些条件的发生,窗口以32K字节移动。在此实施例中,哈希来自第一文件的第一个64K字节的序列,并且随后根据某些条件的发生,移除对应于来自文件的第一个32K字节的序列的项目,并且加入对应于来自文件的下一个32K字节的序列的项目。
移动哈希窗口所基于的条件可以是改进哈希算法的执行时间、性能或者压缩的任一条件。在一个实施例中,当在窗口的给定一半中已经发现超过85%的序列匹配时则移动窗口。在另一个实施例中,当第二文件的给定比例已经和已有哈希项目比较时则移动窗口。在一个实施例中,当对于已经与第一文件相比的第二文件的适当部分哈希值已经被计算并且被比较时则移动窗口。例如,如果第一文件为100K字节,第二文件是80K字节,当第二文件的80/100*64K字节已经和哈希表中的序列相比较时可以移动哈希窗口。
网络设备200建立哈希表(步骤711)之后,网络设备200可以随后计算所述第二多个数据序列的哈希值(步骤713)。根据用于计算第一多个序列的哈希值的相同的方法来计算所述哈希值。网络设备200可以以与其从第一文件选择数据序列相同的方式来从第二文件选择数据序列。例如,如果网络设备200建立的哈希表项目对应于来自第一文件的连续交迭的四字节序列,网络设备可以选择来计算来自第二文件的连续交迭的四字节序列的哈希值。
在计算第二多个数据序列的一些或者全部的哈希值(步骤713)之后,网络设备200可以比较第二多个数据序列的每一个与来自具有相同哈希值的第一多个序列的序列,以确定在两个文件中都出现的数据序列(步骤715)。网络设备可以根据当前可用的任一哈希算法执行该步骤。所述比较可以包括比较匹配的序列的随后字节以确定更长的匹配。例如,第一文件可以包括序列“abcdefghijklmno”并且第二文件可以包括序列“zyxwvutcdefghituv”。如果在连续四字节序列上作哈希,网络设备200可以确定序列“cdef”在两个文件中都出现。网络设备200随后比较匹配序列的随后字节以确定序列“cdefghi”出现于两个文件中。因此,在一些实施例中,确定出现于两个文件中的序列的长度可以随计算哈希值的序列的长度改变。在一些实施例中,可以设置匹配序列的最小和最大长度。
确定出现于两个文件中的数据序列(步骤715)之后,网络设备200可以存储出现在第一和第二文件二者中的所述数据序列的长度和位置的表示(步骤717)。网络设备200可以在任一存储介质中存储该表示,包括高速缓存、RAM、磁盘或者磁带。在一些实施例中,网络设备200可以在网络设备200自身上存储该表示。在其他实施例中,网络设备200可以在另一个计算设备100上存储该表示。在一些实施例中,可以存储数据序列的长度和位置,同时网络设备200正比较第二多个数据序列的每一个和来自于具有相同哈希值的第一多个序列的序列(步骤713)。在其他实施例中,对于要存储的给定序列的长度和位置,可以要求最小长度。在一个实施例中,最小长度可以指定为四字节。
在两个文件中都出现的所述序列的长度和位置的表示可以包括识别序列的长度和位置的任一表示。在一些实施例中,所述序列的位置被存储为文件中的绝对位置。在其他实施例中,所述序列的位置被存储为所述第一文件中相对于一个给定参考指针的位置。在一个实施例中,所述参考指针可以被固定,在另一个实施例中,所述参考指针可以根据设置的规则移动。
在一个实施例中,参考指针可以被初始设置指向第一文件的开始。指针随后可以在每次发现长于5字节的匹配序列后递增。指针可能随后被增加到指向第一文件中匹配序列的最后一个字节加一。在此实施例中,在两个文件中都出现的所述序列的位置可以被存储为从参考指针的位置起正向或者负向的给定数量字节。
在一些实施例中,所匹配序列的长度和位置被存储为固定长度整数。在一个实施例中,所匹配序列的长度被存储为1字节整数,其中该整数表示介于4到1027字节的长度。在此实施例中,所匹配序列的字节长度被限制为4的倍数。在其他实施例中,任一其他位或者字节长度整数可以被用于存储所述序列长度。在又一些实施例中,任一其他限制可以被施加到所匹配序列的字节长度,包括最小和最大长度以及限制字节长度到给定倍数。在又一些实施例中,所匹配序列的长度可以存储为可变长度整数。在一些实施例中,所匹配序列的位置可以被存储为可变长度整数。在其他实施例中,所匹配序列的位置可以被存储为给定字节或者位长度的固定长度整数。
网络设备200存储出现在第一和第二文件二者中的所述数据序列的长度和位置的表示(步骤717)之后,网络设备200可以建立包括来自第二文件的数据序列和在第一和第二文件中都出现的数据序列的位置和长度的表示的第三文件。所述建立(步骤717)可以发生在所匹配序列的所有长度和位置都存储之后,或者所述建立(717)可以与发现所匹配序列同时发生。第三文件可以包含此处所述任一格式的长度和位置的表示。在一些实施例中,特殊的字节或者位序列可以位于共享序列的长度和位置之前。
例如,如果第一文件包括字符串“abcdefghijklmnop”,第二文件包括字符串“xxxxxxxdefghijkxxxxxxcdefxxx”,第三文件可以包括序列“xxxxxxx3,8xxxxxx2,4xxx”。在此例中,3、8用于指明一个表示,以指示从第一文件的字节3开始并且8字节长的序列(在一些实施例中该表示可以是两个固定长度的二进制整数)。同样地,2、4指明一个表示,以指示从第一文件的字节2开始并且4字节长的序列。
作为另一个例子,如果第一文件包括包括字符串“abcdefghijklmnop”,第二文件包括字符串“xxxxxxxdefghijkxxxxxxcdefxxx”’,第三文件可以包括序列“xxxxxxx3,8xxxxxx-9,4xxx”。在此例中,共享序列的位置被存储为与参考指针的相对距离,根据上述方法递增。在此例中,网络设备200以与上例相同方式指示第一所匹配序列,因为参考指针初始指向第一文件的开始。参考指针随后增加到指向第一文件中匹配序列的最后一个字节加一的位置。因此,第二匹配序列被指示为-9、4,其指示第二所匹配序列发生在紧随第一文件中之前所匹配序列的字节之前的9个字节。
在一个实施例中,第三文件可以以字节协议编码,诸如ASCII。在一个实施例中,二进制数据的每一组7个字节可以被编码为8个字节的ASCII字符。这种转化可以使用任一公知的转化方法实现。ASCII字符可以对应于任一现有的字符集定义,包括ISO-8859-1。在一些实施例中,第三文件可以包括HTML文件。在一个实施例中,第三文件可以包括Javascript变量,该Javascript变量包括来自第二文件的所述数据序列和出现在第一和第二文件二者中的所述数据序列的位置和长度的表示。在一个实施例中,第三文件还可以包括含有用于通过处理所述Javascript变量来组合所述第二文件的功能的Javascript函数。在其他实施例中,第三文件可以包括对含有所述功能的Javascript函数的引用。
以下HTML代码示出可以被传输到客户端的第三文件的一个例子。<HTML><HEAD><SCRIPT>var updateFile=″~~~~~″<SCRIPT></HEAD><BODY onload=createPage(updateFile)></BODY></HTML>
在上述例子中,HTML文件包括命名为“updateFile”的Javascript变量。该变量可以包括来自第二文件的数据序列和出现在第一和第二文件二者中的所述数据序列的长度和位置的表示。上述例子还包括对命名为“createPage”的Javascript函数的调用。所述函数或者可以包括在HTML文件中或者存储在客户端上,其可以包括用于使用来自Javascript变量“updateFile”的数据来组合所述第二文件的功能。在上述例子中,标准HTML浏览器可以在载入HTML页面时执行“createPage”函数。“createPage”函数还可以包括用于一旦第二文件被组合则改变HTML页面来显示所述第二文件的功能。
建立包括来自第二文件的数据序列和出现在第一和第二文件二者中的所述数据序列的位置和长度的表示的第三文件(步骤719)之后,并且网络设备200可以传输第三文件到客户端(步骤721)。所述传输可以通过此处讨论的任一网络和方法发生。网络设备200可以根据网络设备200所执行的包括压缩、加速和加密的任一功能来修改第三文件。
在一些实施例中,网络设备200可以发送对应于第二文件的该传输的HTTP首部中的信息。继续之前的例子,网络设备可以将名称-值对“previously-stored-version=826482764”插入以指示使用文件的哪个版本作为第一文件,用于文件比较和压缩。
传输第三文件到客户端(步骤721)之后,客户端102可以接收第三文件(步骤723),执行Javascript函数以重新建立包括来自第二文件的数据序列和第三文件所指示的第一文件中的序列的第二文件(步骤725);并且显示第二文件(步骤727)。客户端102可以根据此处描述的任一实施例执行这些步骤。
现在参见图8,示出描述用于建立对先前存储文件的有效更新的方法的另一个实施例的流程图。总的来说,该方法包括使用对应于第一文件中的交迭数据序列的项目建立哈希表(步骤711);设置参考指针指向所述第一文件的开始(步骤801);计算用于第二文件的数据序列的哈希值(步骤713);并且确定在两个文件中是否都出现所述序列(步骤715)。该方法随后还可以包括或者移动到第二文件中的下一序列(步骤809)或者确定匹配序列的总长度(步骤803)并且确定所述长度是否超过最小阈值(步骤805)。该方法随后还可以包括或者移到第二文件中的下一序列(步骤809)或者存储相对于参考指针的匹配序列的长度和位置(步骤717)。该方法随后可以包括设置参考指针指向第一文件中的匹配序列的最后一个字节加一(步骤807)并且随后移到第二文件中的下一序列(步骤809)。在所述实施例中,可以由网络设备200执行该方法。
依旧参见图8,现在更详细地,网络设备200使用对应于第一文件中的交迭数据序列的项目建立哈希表(步骤711)。可以根据此处所述用于建立哈希表的任一方法来执行该步骤。
在使用对应于第一文件中的交迭数据序列的项目建立哈希表(步骤711)之后,网络设备200可以设置参考指针指向所述第一文件的开始(步骤801)。该参考指针可以包括任一类型的指针。
设置参考指针指向第一文件的开始(步骤801)之后,网络设备200可以计算用于第二文件的数据序列的哈希值(步骤713)。可以根据此处所讨论的用于计算所述哈希值的任一方法来执行该步骤。
计算用于第二文件的数据序列的哈希值(步骤713)之后,网络设备200可以确定在两个文件中是否都出现所述序列(步骤715)。可以根据此处所述的任一方法来执行该步骤。
如果不是在两个文件中都出现一个序列,网络设备200可以移动到第二文件的下一个序列(809)。所述下一序列可以包括发生在第二文件中给定序列之后的任一序列。在一个实施例中,下一个序列可以是前一序列之后开始一字节的序列。在另一个实施例中,下一序列可以是前一序列之后开始任一其他数量个字节的序列。在一些实施例中,移动到第二文件的下一个序列(步骤809)可以伴以上述的移动哈希窗。如果不存在下一个序列,该方法可以终止。
如果在两个文件中都出现一个序列,网络设备200可以通过比较所匹配序列的随后的字节来确定匹配序列的总长度(步骤803)。根据此处所述的任一方法可以确定总长度。
网络设备200随后可以确定匹配序列的总长度是否超过一个给定阈值(步骤805)。可以根据此处所述的任一方法做出该确定。如果匹配序列的长度没有超过最小阈值,网络设备200可以移动到第二文件的下一个序列。
如果该长度超过最小阈值,网络设备200可以随后根据此处所述的任一方法存储匹配序列的长度和相对于给定参考指针的位置。网络设备200可以随后根据此处所述任一方法递增参考指针(步骤807)。网络设备200随后可以移动到第二文件的下一个序列(步骤809)。
现在参见图9,示出用于有效接收对先前存储文件的更新的方法的一个实施例。总的来说,所述方法包括:接收组合函数(步骤903);接收包括数据序列的第一文件(步骤705);显示所述第一文件,存储所述第一文件(步骤708);接收包括数据序列和在第一文件中的序列的位置和长度的表示的第三文件(步骤723);执行Javascript函数以建立包括来自第二文件的数据序列和由第三文件指示的第一文件中的序列的第二文件(步骤725);并且显示所述第二文件(步骤727)。
依旧参见图9,现在更详细地,网络设备200可以传输组合函数。所述组合函数可以包括用于使用包括来自第二文件的数据序列和出现在第一和第二文件二者中的所述数据序列的位置和长度的表示的文件来组合第二文件的任一计算机可读程序装置。所述组合函数可以包括任一编程或者脚本语言,包括Javascript或者Java。在一些实施例中,可以根据此处所述的任一其他网络设备函数来传输该组合函数。在一个实施例中,该组合函数可以包括在提供其它客户端侧加速功能的程序中。
在所示实施例中,网络设备200传输组合函数(步骤901)之后,客户端102或者客户端代理120接收组合函数(步骤903)。客户端可以通过此处所述的任一网络、协议或者计算装置来接收所述组合函数。在一些实施例中,客户端102从网络设备200接收组合函数。在一个实施例中,组合函数可以被包括作为客户端侧加速程序的部分。在其他实施例中,组合函数可以通过发送软件的任一方法被安装在客户端102上,该方法包括通过磁盘或者其他便携存储设备。在一些实施例中,客户端代理120可以接收并且之后执行重组合函数,使得重组合函数的执行对于一个或者多个应用或者网络层透明。
在所示实施例中,接收组合函数(步骤903)之后,客户端102或者客户端代理接收包括数据序列的第一文件。在所示实施例中,客户端102从网络设备200接收第一文件。在其他实施例中,客户端102可以从任一计算设备接收第一文件。所述文件可以包括此处所述任一文件类型或者协议。
客户端102接收包括数据序列的第一文件(步骤705)之后,客户端102可以显示所述第一文件(步骤707)。可以以任一对于给定文件合适的方式显示该文件。在一些实施例中,文件可以被显示在web浏览器中。在其他实施例中,文件可以被显示在商业应用中,诸如字处理器或者电子数据表。在又一些实施例中,文件可以包括独立应用并且被照此显示。在一些实施例中,文件可以对应于运行在虚拟计算环境中的应用。在一个实施例中,文件可以对应于远程执行应用。在其他实施例中,文件可以对应于流应用。
客户端102显示所述第一文件(步骤707)之后,客户端102或者客户端代理120可以存储所述第一文件(步骤708)。客户端102可以存储第一文件到任一存储元件中,包括存储在高速缓存、磁盘、闪烁存储器或者RAM中。在一些实施例中,客户端102可以压缩该文件用于存储。在其他实施例中,客户端102可以仅存储文件的部分。在一些实施例中,客户端102可以在显示所述第一文件(步骤707)之前或者期间来存储所述第一文件(步骤708)。
客户端102存储所述第一文件(步骤708)之后,所述客户端102或者客户端代理120可以接收第三文件(步骤723)。在所示实施例中,客户端102从网络设备200接收第三文件。在其他实施例中,客户端102可以从任一计算装置接收第三文件。所述文件可以包括此处所述的任一文件类型或者协议。在一些实施例中,该文件可以包括ASCII字符。在其他实施例中,该文件可以包括二进制数据。
客户端102接收所述第三文件(步骤723)之后,客户端或者客户端代理120可以执行Javascript或者其他函数来组合第二文件(步骤725)。在一些实施例中,Javascript函数可以被包括在所述第三文件中。在其他实施例中,该Javascript函数可以已经存储在客户端102上。在一些实施例中,Javascript函数可以在客户端侧加速程序中提供。在一些实施例中,第三文件可以包括到一个位置的链接,客户端102可以在该位置下载Javascript函数。
Javascript函数可以执行此处所述的任一技术或者任一技术的逆操作来组合所述第二文件。在一些实施例中,Javascript函数可以包括在步骤903接收的组合函数。在其他实施例中,Javascript函数可以包括对所述组合函数的引用。在又一些实施例中,所述Javascript函数可以包括用于下载所述组合函数的方法。
执行Javascript函数以组合所述第二文件(步骤725)之后,所述客户端可以显示所述第二文件(步骤727)。该文件可以根据此处所述用于显示文件的任一方法来显示。
现在参见图10,示出用于将第二文件和第三文件进行组合的方法的一个实施例,所述第二文件来自先前存储的第一文件,所述第三文件包括来自第二文件的数据序列以及出现在第一和第二文件二者中的数据序列的位置和长度的表示。总的来说,该方法包括读取来自第三文件的数据集(步骤1002)并且确定所述数据集是否对应于出现在第一和第二文件二者中的所述数据序列的位置和长度(步骤1003)。所述方法还可以包括在所述第一文件中的指定位置读取指定长度的字节(步骤1005);将所述字节加到第二文件(步骤1007);将参考指针增加到指向从第一文件读取的字节的最后一个字节加一的位置(步骤1009);并且移到来自所述第三文件的下一数据集(步骤1013)。在一个实施例中,所述方法可以由客户端102或者客户端代理120执行。在另一个实施例中,所述方法可以由图9描述的组合函数来执行。
依旧参见图10,现在更详细地,客户端102可以设置参考指针指向第一文件的开始。这可以根据此处所述的任一方法来执行。
设置参考指针(步骤1001)之后,客户端102可以从第三文件读取数据集(步骤1002)。所述数据集可以包括所述第三文件的任一数量的位或者字节。在一个实施例中,所述数据集随后存储在存储元件或者高速缓存中。
读取所述数据集(步骤1002)之后,客户端102可以确定所述数据集是否对应于在第一文件中的序列的长度和位置。在一个实施例中,客户端可以确定所述数据集是否包括特殊字符或者位序列。
如果所述数据集不对应于在第一文件中的序列的长度和位置,客户端102可以将所述数据集加到第二文件(步骤1011)。所述加到第二文件可包括添加所述数据集到第二文件的末尾。客户端102可以随后移动到来自第三文件的下一数据集(步骤1013)。
如果所述数据对应于在第一文件中的序列的长度和位置,客户端102随后可以在第一文件中的指定位置读取指定长度的字节(步骤1005)。客户端可以通过识别此处描述的长度和位置的任一表示来确定所指定的长度和位置。在一个实施例中,客户端可以随后存储所述指定字节到存储元件或者高速缓存中。
在第一文件中的指定位置读取指定长度的字节(步骤1005)之后,客户端102随后可以将所述字节加到所述第二文件(步骤1007)。所述加到所述第二文件可以包括添加所述字节到第二文件的末尾。
客户端102可以随后将参考指针增加到指向从第一文件读取的字节的最后一个字节加一的位置(步骤1009)。这可以根据此处所述的任一方法来执行。客户端102随后可以移到来自第三文件的下一数据集(步骤1013)。
现在参见图11,示出用于确定文件传输方法的方法的一个实施例。所述方法可以由上述的任一机器或者机器的组合来执行,尽管以下实施例描述该方法由网络设备200执行。总的来说,该方法包括接收来自客户端102或客户端代理120对资源的请求(步骤1101);发送对所述客户端的性能的请求(步骤1103);接收传达所述客户端性能的信息(步骤1105);并且确定文件传输方法(步骤1107)。
依旧参见图11,现在更详细地,网络设备200接收来自客户端或者客户端代理120的请求(步骤1101)。在一个实施例中,从客户端接收请求(步骤1101)包括直接从客户端接收请求。在其他实施例中,来自客户端102的请求可以从上述的任一网络、连接和设备接收。所述请求可以包括前述的任一协议。在一些实施例中,该请求可以仅包括从客户端102传输的请求。在其他实施例中,该请求可以包括对来自客户端102的初始请求的修改。所述修改可以包括在提供上述任一网络设备服务过程期间的修改,以及对来自于客户端102的请求或者一个新的请求的内容、格式、协议、寻址、首部或其它部分的修改。一个请求可以包括由客户端102直接请求的资源,并且可以包括在执行用于客户端102的任一服务过程期间所请求的资源。
从客户端接收请求(步骤1101)之后,网络设备200发送对所述客户端性能的请求(步骤1103)。在一个实施例中,所述请求可以被发送到客户端102。在另一个实施例中,请求可以被发送到收集代理,如美国专利申请序列号10/956832“A METHOD AND APPARATUS FOR ASSIGNING ACCESS CONTROLLEVELS IN PROVIDING ACCESS TO NETWORKED CONTENT FILES”中所述,其内容通过引用被明确引入本申请。所述收集代理可以驻留在与发送该请求的网络设备同一个物理机器上,或者它们可以驻留在不同的物理机器上。所述请求也可以被发送到文件、高速缓存、数据库、服务器、执行应用或者关于客户端102的任一其他信息源。
发送对客户端性能的请求(步骤1103)之后,网络设备200接收传达所述客户端性能的信息(步骤1105)。所述信息可以从客户端102、或者客户端代理120、收集代理、文件、高速缓存、数据库、服务器、执行应用或者关于客户端102的任一其他信息源中接收。所述信息可以包括但不限于客户端节点102的机器ID、操作系统类型、操作系统补丁的存在、所安装网卡的MAC地址、客户端设备上的数字水印、活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头、浏览器类型、设备类型、网络连接信息、授权证书和以上讨论的任一其他性能或偏好。在一些实施例中,网络设备可以存储或者高速缓存所述信息用于之后的获取。
接收传达所述客户端性能的信息(步骤1105)之后,网络设备可以确定对应于所述客户端102或客户端代理120的文件传输方法(步骤1107)。可以基于任一所接收到的信息做出所述确定。
在一些实施例中,响应在步骤1105接收的信息,网络设备200可以确定根据图7中所述用于建立对先前存储文件的有效更新的方法来传输文件。在一个实施例中,响应对应于客户端102存储器尺寸、连接速度、连接带宽、处理器速度或者存储文件的之前存在的信息,做出该确定。
在一些实施例中,网络设备200可以响应步骤1105接收的信息来确定传输组合函数到客户端102。例如,如果网络设备200接收到客户端102不具有组合函数的信息以及指示客户端102有能力执行组合函数的信息,网络设备可以传输组合函数到客户端102。在一些实施例中,所述组合函数可以与任一其他文件一起传输,包括请求的内容文件、或者根据网络设备200的功能传输的其他文件。在一些实施例中,网络设备可具有多个组合函数。例如,网络设备200可以具有优化用于不同计算环境、操作系统和硬件配置的多个组合函数。网络设备随后可以响应步骤1105接收到的信息来确定哪个组合函数传输到客户端102。
虽然本发明参考具体优选实施例来详细示出和说明,本领域内的普通技术人员应该理解在不脱离由所附权利要求书限定的本发明的精神和范围的情况下,可以对本发明在形式和细节上作出多种改变。
Claims (54)
1.一种用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的方法,所述方法包括:
(a)由在客户端计算装置上执行的客户端代理在所述客户端计算装置的网络堆栈的网络层或者传输层的其中之一拦截包括来自客户端上执行的应用的HTTP请求的一个或者多个包,其中,客户端在客户端计算装置上操作,所述客户端包括客户端代理;
(b)由在所述客户端计算装置的网络堆栈的网络层或者传输层的其中之一的客户端代理修改所述HTTP请求中包含的内容;并且
(c)由所述客户端代理经传输层连接发送所拦截的一个或者多个包到服务器,所拦截的一个或者多个包包括HTTP请求中包含的所修改的内容。
2.权利要求1的方法,其中,步骤(a)包括由所述客户端代理拦截虚拟专用网络上从所述客户端到服务器的所述HTTP请求。
3.权利要求1的方法,其中,步骤(b)包括修改包括在所拦截的一个或者多个包中包含的所述HTTP请求的内容中的至少一个cookie。
4.权利要求1的方法,其中,步骤(b)包括移除包括在所拦截的一个或者多个包中包含的所述HTTP请求的内容中的至少一个cookie。
5.权利要求1的方法,其中,步骤(b)包括:
(b-a)在所述HTTP请求的内容中识别名称-值对;和
(b-b)修改所述名称-值对的值。
6.权利要求1的方法,其中,步骤(b)包括:
(b-a)在所述HTTP请求的内容中识别URL;和
(b-b)在所述HTTP请求中插入识别当前存储在所述客户端上的URL识别的资源的版本的信息。
7.权利要求1的方法,其中,步骤(b)包括修改在所拦截的一个或者多个包中包含的所述HTTP请求的内容中识别的URL。
8.权利要求1的方法,其中,步骤(b)包括:
(b-a)在所述HTTP请求指定的URL中识别名称-值对;和
(b-b)修改所识别的名称-值对的值。
9.权利要求1的方法,其中,步骤(c)包括:
(c-a)响应所述HTTP请求中指定的URL,确定对应于服务所述请求的服务器的网络层地址;和
(c-b)经由传输层连接,发送所修改的HTTP请求到所确定的地址。
10.一种用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的计算机实现的系统,所述系统包括:
客户端计算装置;和
在客户端计算装置上操作的客户端,所述客户端包括客户端代理,该客户端代理:
在所述客户端计算装置的网络堆栈的网络层或传输层拦截来自客户端上执行的应用的包括HTTP请求的一个或多个包;
在所述客户端计算装置的网络堆栈的网络层或者传输层的其中之一修改所拦截的一个或者多个包中包含的所述HTTP请求包含的内容;并且
经传输层连接发送所拦截的一个或者多个包到服务器,所拦截的一个或者多个包包括HTTP请求中包含的所修改的内容。
11.权利要求10的系统,其中,所述客户端代理拦截虚拟专用网络上从所述客户端到服务器的所述HTTP请求。
12.权利要求10的系统,其中,所述客户端代理修改包括在所拦截的一个或者多个包中包含的所述HTTP请求的内容中的至少一个cookie。
13.权利要求10的系统,其中,所述客户端代理移除包括在所拦截的一个或者多个包中包含的所述HTTP请求的内容中的至少一个cookie。
14.权利要求10的系统,其中,所述客户端代理在所述HTTP请求的内容中识别名称-值对;和修改所述名称-值对的值。
15.权利要求10的系统,其中,所述客户端代理在所述HTTP请求中识别URL;和在所述HTTP请求中插入识别当前存储在所述客户端上的URL识别的资源的版本的信息。
16.权利要求10的系统,其中,所述客户端代理修改在所拦截的一个或者多个包中包含的所述HTTP请求的内容中识别的URL。
17.权利要求10的系统,其中,所述客户端代理在所述HTTP请求指定的URL中识别名称-值对;和修改所识别的名称-值对的值。
18.权利要求10的系统,其中,所述客户端代理响应所述HTTP请求中 指定的URL,确定对应于服务所述请求的服务器的网络层地址;和经由传输层连接,发送所修改的HTTP请求到所确定的地址。
19.一种用于使用客户端代理来启用使用HTTP cookie的虚拟专用网络环境中的安全验证的方法,所述方法包括:
(a)由执行在客户端上的客户端代理拦截从虚拟专用网络上的设备到客户端的包括验证cookie的HTTP通信,该设备通过所述验证cookie查证所述客户端的请求响应于特定的会话;
(b)由客户端代理从HTTP通信中移除所述验证cookie;
(c)由客户端代理存储所述验证cookie;
(d)由客户端代理发送修改的HTTP通信到执行在客户端上的应用;
(e)由在所述客户端的网络堆栈的网络层的客户端代理拦截从所述应用发送的HTTP请求;
(f)由客户端代理在HTTP请求中插入所述验证cookie;并且
(g)由客户端代理发送具有所述验证cookie的HTTP请求到所述设备,该设备通过所述验证cookie查证所述HTTP请求对应于所述会话。
20.权利要求19的方法,其中步骤(a)包括由执行在所述客户端上的客户端代理拦截从所述虚拟专用网络上的所述设备到客户端的包括所述验证cookie的所述HTTP通信,其中所述验证cookie包括授权证书。
21.权利要求19的方法,其中步骤(e)包括由所述客户端代理拦截所述虚拟专用网络上从客户端到服务器的HTTP GET请求。
22.权利要求19的方法,其中步骤(e)包括由所述客户端代理拦截来自客户端的多个HTTP请求。
23.权利要求19的方法,其中步骤(e)包括由客户端代理拦截来自客户端上执行的多个应用的多个HTTP请求。
24.权利要求19的方法,还包括步骤:
(h)客户端代理确定与虚拟专用网络设备的客户端会话已经结束;并且
(i)响应该确定,删除所存储的验证cookie。
25.权利要求24的方法,其中,步骤(h)包括由客户端代理确定客户端和虚拟专用网络设备之间的传输层连接已经终止。
26.权利要求19的方法,其中步骤(f)包括由客户端代理在HTTP请求中插入包括用户验证证书的所述验证cookie。
27.权利要求19的方法,其中步骤(f)包括客户端代理在HTTP请求中插入包括应用特定的验证证书的所述验证cookie。
28.权利要求19的方法,其中步骤(f)包括客户端代理在HTTP请求中插入包括传输层会话信息的所述验证cookie。
29.一种用于使用客户端代理来启用使用HTTP cookie的虚拟专用网络环境中的安全验证的系统,所述系统包括:
客户端计算装置;和
在客户端计算装置上操作的客户端,所述客户端包括客户端代理,所述客户端代理拦截从虚拟专用网络上的设备到客户端的包括验证cookie的HTTP通信,该设备通过所述验证cookie查证所述客户端的请求对应于特定的会话;和
其中,所述客户端代理从HTTP通信中移除所述验证cookie;存储所述验证cookie;发送修改的HTTP通信到执行在客户端上的应用;在所述客户端的网络堆栈的网络层拦截从所述应用发送的HTTP请求;在HTTP请求中插入所述验证cookie;并且发送具有所述验证cookie的HTTP请求到设备,该设备通过所述验证cookie查证所述HTTP请求对应于所述会话。
30.权利要求29的系统,其中客户端代理拦截包括从虚拟专用网络上的所述设备到客户端的所述验证cookie的HTTP通信,其中所述验证cookie包括授权证书。
31.权利要求29的系统,其中客户端代理拦截所述虚拟专用网络上从客户端到服务器的HTTP GET请求。
32.权利要求29的系统,其中客户端代理拦截来自客户端的多个HTTP请求。
33.权利要求29的系统,其中客户端代理拦截来自客户端上执行的多个应用的多个HTTP请求。
34.权利要求29的系统,其中客户端代理确定与虚拟专用网络设备的客户端会话已经结束;并且,响应该确定,删除所存储的验证cookie。
35.权利要求34的系统,其中,客户端代理确定客户端和虚拟专用网络设备之间的传输层连接已经终止。
36.权利要求29的系统,其中客户端代理在HTTP请求中插入包括用户验证证书的所述验证cookie。
37.权利要求29的系统,其中客户端代理在HTTP请求中插入包括应用特定的验证证书的验证cookie。
38.权利要求29的系统,其中客户端代理在HTTP请求中插入包括传输层会话信 息的所述验证cookie。
39.一种用于使用客户端代理来启用来自客户端的非HTTP通信中的HTTP cookie验证的方法,所述方法包括:
(a)由客户端上执行的客户端代理拦截来自客户端的非HTTP连接请求;
(b)由客户端代理建立与网络设备的传输层虚拟专用网络连接;
(c)在发送所述非HTTP连接请求之前,响应于对所述非HTTP连接请求的拦截,从客户端代理经由所建立的传输层虚拟专用网络连接发送包括验证cookie的HTTP请求;和
(d)由客户端代理经由该传输层虚拟专用网络连接,响应于接收包括接受所述验证cookie的HTTP响应发送所述非HTTP连接请求。
40.权利要求39的方法,其中,所述客户端代理关于以下网络层的其中之一透明地执行:应用层、表示层、会话层或者传输层。
41.权利要求39的方法,其中,步骤(a)包括由客户端上执行的客户端代理拦截来自客户端的传输层连接请求,其中,所述拦截发生在以下网络层的其中一个:传输层、网络层或者数据层。
42.权利要求39的方法,其中,步骤(a)包括由客户端上执行的客户端代理拦截TCP SYN包。
43.权利要求39的方法,其中,步骤(c)包括在经由该连接发送任一数据之前,客户端代理经由所建立的连接发送包括验证cookie的HTTP请求。
44.权利要求39的方法,其中,步骤(c)包括响应连接已经建立的确定,客户端代理发送包括验证cookie的HTTP请求,所述cookie包括用户验证证书。
45.权利要求39的方法,其中,步骤(c)包括客户端代理经由所建立的连接发送包括验证cookie的HTTP请求,所述cookie包括应用特定的验证证书。
46.权利要求39的方法,其中,步骤(c)还包括客户端代理接收HTTP响应,所述HTTP响应包括接受所述验证cookie。
47.一种用于使用客户端代理来启用来自客户端的非HTTP通信中的HTTP cookie验证的计算机实现的系统,所述系统包括:
客户端计算装置;和
客户端计算装置上操作的客户端,所述客户端包括客户端代理,所述客户 端代理拦截来自客户端的非HTTP连接请求;建立与网络设备的传输层虚拟专用网络连接;在发送所述非HTTP连接请求之前,响应于对所述非HTTP连接请求的拦截,从客户端代理经由所建立的传输层虚拟专用网络连接发送包括验证cookie的HTTP请求;和由客户端代理经由该传输层虚拟专用网络连接,响应于接收包括接受所述验证cookie的HTTP响应发送所述非HTTP连接请求。
48.权利要求47的系统,其中,所述客户端代理关于以下网络层的其中之一透明地执行:应用层、表示层、会话层或者传输层。
49.权利要求47的系统,其中,客户端代理拦截来自客户端的传输层连接请求,其中,所述拦截发生在以下网络层的其中一个:传输层、网络层或者数据层。
50.权利要求47的系统,其中,客户端代理拦截TCP SYN包。
51.权利要求47的系统,其中,客户端代理经由所建立的连接在经由该连接发送任一数据之前发送包括验证cookie的HTTP请求。
52.权利要求47的系统,其中客户端代理经由所建立的连接发送包括验证cookie的HTTP请求,所述cookie包括用户验证证书。
53.权利要求47的系统,其中,客户端代理经由所建立的连接发送包括验证cookie的HTTP请求,所述cookie包括应用特定的验证证书。
54.权利要求47的系统,其中,客户端代理接收HTTP响应,所述HTTP响应包括接受所述验证cookie。
Applications Claiming Priority (7)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/462,300 | 2006-08-03 | ||
| US11/462,300 US8561155B2 (en) | 2006-08-03 | 2006-08-03 | Systems and methods for using a client agent to manage HTTP authentication cookies |
| US11/462,308 US8392977B2 (en) | 2006-08-03 | 2006-08-03 | Systems and methods for using a client agent to manage HTTP authentication cookies |
| US11/462,308 | 2006-08-03 | ||
| US11/462,267 | 2006-08-03 | ||
| US11/462,267 US8943304B2 (en) | 2006-08-03 | 2006-08-03 | Systems and methods for using an HTTP-aware client agent |
| PCT/US2007/075178 WO2008017064A2 (en) | 2006-08-03 | 2007-08-03 | Systems and methods for using an http-aware client agent |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN101523865A CN101523865A (zh) | 2009-09-02 |
| CN101523865B true CN101523865B (zh) | 2013-02-13 |
Family
ID=39030650
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN2007800369048A Expired - Fee Related CN101523865B (zh) | 2006-08-03 | 2007-08-03 | 用于使用http-察觉的客户端代理的系统和方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US8561155B2 (zh) |
| CN (1) | CN101523865B (zh) |
Families Citing this family (41)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8561155B2 (en) * | 2006-08-03 | 2013-10-15 | Citrix Systems, Inc. | Systems and methods for using a client agent to manage HTTP authentication cookies |
| US7647404B2 (en) * | 2007-01-31 | 2010-01-12 | Edge Technologies, Inc. | Method of authentication processing during a single sign on transaction via a content transform proxy service |
| US7990947B2 (en) * | 2007-06-12 | 2011-08-02 | Robert W. Twitchell, Jr. | Network watermark |
| DE102008020832B3 (de) * | 2008-04-25 | 2009-11-19 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Konzept zur effizienten Verteilung einer Zugangsberechtigungsinformation |
| US8893260B2 (en) * | 2008-12-17 | 2014-11-18 | Rockstar Consortium Us Lp | Secure remote access public communication environment |
| US8392982B2 (en) * | 2009-03-20 | 2013-03-05 | Citrix Systems, Inc. | Systems and methods for selective authentication, authorization, and auditing in connection with traffic management |
| US8127350B2 (en) | 2010-06-30 | 2012-02-28 | Juniper Networks, Inc. | Multi-service VPN network client for mobile device |
| US8458787B2 (en) | 2010-06-30 | 2013-06-04 | Juniper Networks, Inc. | VPN network client for mobile device having dynamically translated user home page |
| US8549617B2 (en) | 2010-06-30 | 2013-10-01 | Juniper Networks, Inc. | Multi-service VPN network client for mobile device having integrated acceleration |
| US8473734B2 (en) | 2010-06-30 | 2013-06-25 | Juniper Networks, Inc. | Multi-service VPN network client for mobile device having dynamic failover |
| 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 |
| US8464336B2 (en) * | 2010-06-30 | 2013-06-11 | Juniper Networks, Inc. | VPN network client for mobile device having fast reconnect |
| US9275204B1 (en) * | 2011-09-28 | 2016-03-01 | Marvell International Ltd. | Enhanced network access-control credentials |
| WO2012163005A1 (zh) * | 2011-10-14 | 2012-12-06 | 华为技术有限公司 | 访问虚拟专用网络的方法、装置以及网关设备 |
| CN103095783B (zh) * | 2011-11-08 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 一种调试Web应用的方法及装置 |
| US9152820B1 (en) * | 2012-03-30 | 2015-10-06 | Emc Corporation | Method and apparatus for cookie anonymization and rejection |
| CN102663081A (zh) * | 2012-04-01 | 2012-09-12 | 杭州格畅科技有限公司 | 在线应用平台内浏览网页的方法及在线浏览器、在线应用平台 |
| CN102932437A (zh) * | 2012-10-24 | 2013-02-13 | 浪潮集团山东通用软件有限公司 | 一种客户端服务器模式下服务端服务的客户端访问方法 |
| US8996855B2 (en) * | 2012-11-14 | 2015-03-31 | Blackberry Limited | HTTP layer countermeasures against blockwise chosen boundary attack |
| CN104144155B (zh) * | 2013-05-10 | 2018-01-02 | 百度在线网络技术(北京)有限公司 | 用于长连接的会话处理系统和会话处理方法 |
| US10043137B1 (en) | 2014-01-06 | 2018-08-07 | Nuu:Bit, Inc. | Dynamically optimized transport system |
| CN105099992B (zh) * | 2014-04-29 | 2018-07-24 | 杭州迪普科技股份有限公司 | 一种报文修改装置及方法 |
| JP6507572B2 (ja) * | 2014-10-31 | 2019-05-08 | 富士通株式会社 | 管理サーバの経路制御方法、および管理サーバ |
| US9735943B2 (en) * | 2015-05-11 | 2017-08-15 | Citrix Systems, Inc. | Micro VPN tunneling for mobile platforms |
| US10686886B2 (en) * | 2016-10-19 | 2020-06-16 | Mirosoft Technology Licensing, LLC | Establishing secure sessions for stateful cloud services |
| US10250634B2 (en) | 2016-11-11 | 2019-04-02 | Juniper Networks, Inc | Apparatus, system, and method for protecting against denial of service attacks using one-time cookies |
| CN107070934B (zh) * | 2017-04-26 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 一种透明代理实现方法、装置、客户端以及终端 |
| US10831836B2 (en) * | 2018-07-26 | 2020-11-10 | Palo Alto Networks, Inc. | Browser storage for clientless VPN |
| US11093574B2 (en) | 2018-07-26 | 2021-08-17 | Palo Alto Networks, Inc. | Encoding-free javascript stringify for clientless VPN |
| US10951588B2 (en) | 2018-07-26 | 2021-03-16 | Palo Alto Networks, Inc. | Object property getter and setter for clientless VPN |
| CN112242972B (zh) * | 2019-07-16 | 2022-06-03 | 腾讯科技(武汉)有限公司 | 网络请求处理方法、装置、存储介质及终端 |
| CN111683041B (zh) * | 2020-04-23 | 2023-08-25 | 北京中安星云软件技术有限公司 | 一种数据库关联访问方法 |
| US10965770B1 (en) | 2020-09-11 | 2021-03-30 | Metacluster It, Uab | Dynamic optimization of request parameters for proxy server |
| CN112866239B (zh) * | 2021-01-15 | 2022-09-09 | 广州视源电子科技股份有限公司 | 一种代理认证装置、方法及电子设备 |
| US12028345B2 (en) | 2021-05-19 | 2024-07-02 | Bank Of America Corporation | Information security system and method for identifying trusted machines for machine-to-machine (M2M) security and validation |
| US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
| CN114221945B (zh) * | 2021-12-15 | 2024-06-04 | 咪咕文化科技有限公司 | 通信方法、装置、计算设备及计算机可读存储介质 |
| CN114491517B (zh) * | 2022-01-27 | 2025-06-06 | 中国农业银行股份有限公司 | 一种防止攻击方法、装置、设备及存储介质 |
| CN116233102A (zh) * | 2023-03-03 | 2023-06-06 | 北京奇艺世纪科技有限公司 | 一种网页请求发送方法、装置及电子设备 |
| CN117675391B (zh) * | 2023-12-14 | 2024-10-08 | 中科南京软件技术研究院 | 一种基于规则的分布式统一http门禁方法 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1478348A (zh) * | 2000-11-30 | 2004-02-25 | �Ҵ���˾ | Web站点的安全会话管理和认证 |
Family Cites Families (122)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6182139B1 (en) * | 1996-08-05 | 2001-01-30 | Resonate Inc. | Client-side resource-based load-balancing with delayed-resource-binding using TCP state migration to WWW server farm |
| US5867494A (en) * | 1996-11-18 | 1999-02-02 | Mci Communication Corporation | System, method and article of manufacture with integrated video conferencing billing in a communication system architecture |
| US6909708B1 (en) * | 1996-11-18 | 2005-06-21 | Mci Communications Corporation | System, method and article of manufacture for a communication system architecture including video conferencing |
| US6754181B1 (en) * | 1996-11-18 | 2004-06-22 | Mci Communications Corporation | System and method for a directory service supporting a hybrid communication system architecture |
| US6335927B1 (en) * | 1996-11-18 | 2002-01-01 | Mci Communications Corporation | System and method for providing requested quality of service in a hybrid network |
| US5999525A (en) | 1996-11-18 | 1999-12-07 | Mci Communications Corporation | Method for video telephony over a hybrid network |
| US7145898B1 (en) | 1996-11-18 | 2006-12-05 | Mci Communications Corporation | System, method and article of manufacture for selecting a gateway of a hybrid communication system architecture |
| US6185625B1 (en) * | 1996-12-20 | 2001-02-06 | Intel Corporation | Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object |
| AU6037198A (en) * | 1997-01-27 | 1998-08-26 | Benjamin Slotznick | System for delivering and simultaneously displaying primary and secondary information, and for displaying only the secondary information during interstitial space |
| US6731625B1 (en) * | 1997-02-10 | 2004-05-04 | Mci Communications Corporation | System, method and article of manufacture for a call back architecture in a hybrid network with support for internet telephony |
| US6085224A (en) * | 1997-03-11 | 2000-07-04 | Intracept, Inc. | Method and system for responding to hidden data and programs in a datastream |
| US5909559A (en) * | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
| US6167441A (en) | 1997-11-21 | 2000-12-26 | International Business Machines Corporation | Customization of web pages based on requester type |
| US6141699A (en) * | 1998-05-11 | 2000-10-31 | International Business Machines Corporation | Interactive display system for sequential retrieval and display of a plurality of interrelated data sets |
| US6578073B1 (en) * | 1998-05-13 | 2003-06-10 | Hewlett-Packard Development Company, L.P. | Accelerated content delivery over a network using reduced size objects |
| US6904519B2 (en) * | 1998-06-12 | 2005-06-07 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
| SE512672C2 (sv) | 1998-06-12 | 2000-04-17 | Ericsson Telefon Ab L M | Förfarande och system för överföring av en cookie |
| US6182142B1 (en) | 1998-07-10 | 2001-01-30 | Encommerce, Inc. | Distributed access management of information resources |
| US6680922B1 (en) * | 1998-07-10 | 2004-01-20 | Malibu Networks, Inc. | Method for the recognition and operation of virtual private networks (VPNs) over a wireless point to multi-point (PtMP) transmission system |
| US6141010A (en) * | 1998-07-17 | 2000-10-31 | B. E. Technology, Llc | Computer interface method and apparatus with targeted advertising |
| US20010051956A1 (en) * | 1998-09-29 | 2001-12-13 | Paul Bird | Global caching and sharing of sql statements in a heterogeneous application environment |
| US6625643B1 (en) * | 1998-11-13 | 2003-09-23 | Akamai Technologies, Inc. | System and method for resource management on a data network |
| US7389540B2 (en) * | 1999-02-03 | 2008-06-17 | Cybersoft, Inc. | Apparatus and methods for intercepting, examining and controlling code, data and files and their transfer |
| US7080158B1 (en) * | 1999-02-09 | 2006-07-18 | Nortel Networks Limited | Network caching using resource redirection |
| AU769163B2 (en) | 1999-02-26 | 2004-01-15 | America Online, Inc. | Proxy server augmenting a client request with user profile data |
| EP1402429A4 (en) | 1999-03-02 | 2004-03-31 | Quixtar Investments Inc | ELECTRONIC COMMERCIAL TRANSACTIONS WITHIN A MARKETING SYSTEM THAT CAN OFFER THE MEMBERS OPPORTUNITIES |
| US9141717B2 (en) * | 1999-03-22 | 2015-09-22 | Esdr Network Solutions Llc | Methods, systems, products, and devices for processing DNS friendly identifiers |
| US6505230B1 (en) * | 1999-05-14 | 2003-01-07 | Pivia, Inc. | Client-server independent intermediary mechanism |
| US6584567B1 (en) * | 1999-06-30 | 2003-06-24 | International Business Machines Corporation | Dynamic connection to multiple origin servers in a transcoding proxy |
| US6826696B1 (en) * | 1999-10-12 | 2004-11-30 | Webmd, Inc. | System and method for enabling single sign-on for networked applications |
| US6449658B1 (en) * | 1999-11-18 | 2002-09-10 | Quikcat.Com, Inc. | Method and apparatus for accelerating data through communication networks |
| IL151455A0 (en) * | 2000-03-03 | 2003-04-10 | Sanctum Ltd | System for determining web application vulnerabilities |
| US7565450B2 (en) * | 2000-03-16 | 2009-07-21 | Adara Networks Inc. | System and method for using a mapping between client addresses and addresses of caches to support content delivery |
| US7096495B1 (en) * | 2000-03-31 | 2006-08-22 | Intel Corporation | Network session management |
| US9038170B2 (en) * | 2000-07-10 | 2015-05-19 | Oracle International Corporation | Logging access system events |
| US6826594B1 (en) * | 2000-07-15 | 2004-11-30 | Commission Junction | Method and system for remote content management of a designated portion of a web page |
| AU2001285023A1 (en) * | 2000-08-17 | 2002-02-25 | Mobileum, Inc. | Method and system for wireless voice channel/data channel integration |
| US7035907B1 (en) * | 2000-09-13 | 2006-04-25 | Jibe Networks, Inc. | Manipulating content objects to control their display |
| US7085817B1 (en) * | 2000-09-26 | 2006-08-01 | Juniper Networks, Inc. | Method and system for modifying requests for remote resources |
| US20020065911A1 (en) * | 2000-10-03 | 2002-05-30 | Von Klopp Ana H. | HTTP transaction monitor with edit and replay capacity |
| US6983331B1 (en) * | 2000-10-17 | 2006-01-03 | Microsoft Corporation | Selective display of content |
| US7707305B2 (en) * | 2000-10-17 | 2010-04-27 | Cisco Technology, Inc. | Methods and apparatus for protecting against overload conditions on nodes of a distributed network |
| US8266677B2 (en) * | 2000-12-20 | 2012-09-11 | Intellisync Corporation | UDP communication with a programmer interface over wireless networks |
| US7085834B2 (en) * | 2000-12-22 | 2006-08-01 | Oracle International Corporation | Determining a user's groups |
| US20020129271A1 (en) * | 2001-03-12 | 2002-09-12 | Lucent Technologies Inc. | Method and apparatus for order independent processing of virtual private network protocols |
| GB2373418A (en) * | 2001-03-16 | 2002-09-18 | Kleinwort Benson Ltd | Method and system to provide and manage secure access to internal computer systems from an external client |
| WO2002079905A2 (en) * | 2001-04-02 | 2002-10-10 | Akamai Technologies, Inc. | Scalable, high performance and highly available distributed storage system for internet content |
| US20020161904A1 (en) * | 2001-04-30 | 2002-10-31 | Xerox Corporation | External access to protected device on private network |
| US6925481B2 (en) * | 2001-05-03 | 2005-08-02 | Symantec Corp. | Technique for enabling remote data access and manipulation from a pervasive device |
| US7769845B2 (en) * | 2001-05-04 | 2010-08-03 | Whale Communications Ltd | Method and system for terminating an authentication session upon user sign-off |
| US20030051142A1 (en) * | 2001-05-16 | 2003-03-13 | Hidalgo Lluis Mora | Firewalls for providing security in HTTP networks and applications |
| US7203722B2 (en) * | 2001-05-24 | 2007-04-10 | International Business Machines Corporation | Optimistic processing of network frames to reduce latency |
| US7216173B2 (en) | 2001-06-12 | 2007-05-08 | Varian Medical Systems Technologies, Inc. | Virtual private network software system |
| US7117504B2 (en) * | 2001-07-10 | 2006-10-03 | Microsoft Corporation | Application program interface that enables communication for a network software platform |
| WO2003017123A1 (en) * | 2001-08-16 | 2003-02-27 | Redline Networks, Inc. | System and method for maintaining statefulness during client-server interactions |
| US7631084B2 (en) * | 2001-11-02 | 2009-12-08 | Juniper Networks, Inc. | Method and system for providing secure access to private networks with client redirection |
| US6823374B2 (en) * | 2001-11-16 | 2004-11-23 | Fineground Networks | Adjusting the cacheability of web documents according to the responsiveness of its content server |
| US20030105957A1 (en) * | 2001-12-05 | 2003-06-05 | International Business Machines Corporation | Kernel-based security implementation |
| US7441119B2 (en) * | 2001-12-05 | 2008-10-21 | International Business Machines Corporation | Offload processing for secure data transfer |
| EP1463991A4 (en) * | 2002-01-11 | 2008-08-06 | Akamai Tech Inc | JAVA APPLICATION FRAMEWORK FOR USE IN A CONTENT NETWORK (CDN) |
| US7058718B2 (en) * | 2002-01-15 | 2006-06-06 | International Business Machines Corporation | Blended SYN cookies |
| US7034691B1 (en) * | 2002-01-25 | 2006-04-25 | Solvetech Corporation | Adaptive communication methods and systems for facilitating the gathering, distribution and delivery of information related to medical care |
| US7984157B2 (en) * | 2002-02-26 | 2011-07-19 | Citrix Systems, Inc. | Persistent and reliable session securely traversing network components using an encapsulating protocol |
| US7093018B1 (en) | 2002-03-06 | 2006-08-15 | Novell, Inc. | Methods, systems, and data structures to connect services |
| US7512702B1 (en) * | 2002-03-19 | 2009-03-31 | Cisco Technology, Inc. | Method and apparatus providing highly scalable server load balancing |
| US7707287B2 (en) * | 2002-03-22 | 2010-04-27 | F5 Networks, Inc. | Virtual host acceleration system |
| US7072657B2 (en) * | 2002-04-11 | 2006-07-04 | Ntt Docomo, Inc. | Method and associated apparatus for pre-authentication, preestablished virtual private network in heterogeneous access networks |
| US7987491B2 (en) * | 2002-05-10 | 2011-07-26 | Richard Reisman | Method and apparatus for browsing using alternative linkbases |
| US20030217149A1 (en) * | 2002-05-20 | 2003-11-20 | International Business Machines Corporation | Method and apparatus for tunneling TCP/IP over HTTP and HTTPS |
| US7209466B2 (en) * | 2002-06-06 | 2007-04-24 | Symbol Technologies, Inc. | Software method utilizing gateways for maintaining connectivity during communications over distinct wireless networks by mobile computer terminals |
| US7107309B1 (en) * | 2002-07-03 | 2006-09-12 | Sprint Spectrum L.P. | Method and system for providing interstitial notice |
| US6987987B1 (en) * | 2002-07-03 | 2006-01-17 | Sprint Spectrum L.P. | Method and system for providing advanced notice of cost to access web content |
| US20040122951A1 (en) * | 2002-12-18 | 2004-06-24 | Andre Beck | Method and apparatus for providing Web users with a click-to-contact service |
| US7616597B2 (en) | 2002-12-19 | 2009-11-10 | Intel Corporation | System and method for integrating mobile networking with security-based VPNs |
| US7216713B2 (en) * | 2003-01-15 | 2007-05-15 | Schlumberger Technology Corporation | Downhole actuating apparatus and method |
| US20040177247A1 (en) * | 2003-03-05 | 2004-09-09 | Amir Peles | Policy enforcement in dynamic networks |
| GB0305959D0 (en) * | 2003-03-15 | 2003-04-23 | Ibm | Client web service access |
| US7921152B2 (en) * | 2003-07-17 | 2011-04-05 | International Business Machines Corporation | Method and system for providing user control over receipt of cookies from e-commerce applications |
| US7437734B2 (en) * | 2003-08-12 | 2008-10-14 | Hewlett-Packard Development Company, L.P. | Propagating web transaction context into common object model (COM) business logic components |
| US7464332B2 (en) | 2003-11-18 | 2008-12-09 | Aaa News, Inc. | Devices, systems and methods for selecting the appearance of a viewer displaying digital content |
| US7584500B2 (en) * | 2003-11-19 | 2009-09-01 | Hughes Network Systems, Llc | Pre-fetching secure content using proxy architecture |
| US8572249B2 (en) * | 2003-12-10 | 2013-10-29 | Aventail Llc | Network appliance for balancing load and platform services |
| US20050251856A1 (en) * | 2004-03-11 | 2005-11-10 | Aep Networks | Network access using multiple authentication realms |
| US20050273849A1 (en) * | 2004-03-11 | 2005-12-08 | Aep Networks | Network access using secure tunnel |
| US7913302B2 (en) * | 2004-05-02 | 2011-03-22 | Markmonitor, Inc. | Advanced responses to online fraud |
| US7870608B2 (en) * | 2004-05-02 | 2011-01-11 | Markmonitor, Inc. | Early detection and monitoring of online fraud |
| US20070299915A1 (en) | 2004-05-02 | 2007-12-27 | Markmonitor, Inc. | Customer-based detection of online fraud |
| US7992204B2 (en) | 2004-05-02 | 2011-08-02 | Markmonitor, Inc. | Enhanced responses to online fraud |
| US7454479B2 (en) * | 2004-05-28 | 2008-11-18 | Microsoft Corporation | Flexible teleport architecture |
| US8136149B2 (en) | 2004-06-07 | 2012-03-13 | Check Point Software Technologies, Inc. | Security system with methodology providing verified secured individual end points |
| US7757074B2 (en) * | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
| EP2264956B1 (en) | 2004-07-23 | 2017-06-14 | Citrix Systems, Inc. | Method for securing remote access to private networks |
| US7571464B2 (en) * | 2004-08-27 | 2009-08-04 | International Business Machines Corporation | Secure bidirectional cross-system communications framework |
| US7506338B2 (en) * | 2004-08-30 | 2009-03-17 | International Business Machines Corporation | Method and apparatus for simplifying the deployment and serviceability of commercial software environments |
| US20060080432A1 (en) * | 2004-09-03 | 2006-04-13 | Spataro Jared M | Systems and methods for collaboration |
| US7610400B2 (en) * | 2004-11-23 | 2009-10-27 | Juniper Networks, Inc. | Rule-based networking device |
| US8250214B2 (en) * | 2004-12-20 | 2012-08-21 | Vmware, Inc. | System, method and computer program product for communicating with a private network |
| WO2006074072A2 (en) | 2004-12-30 | 2006-07-13 | Citrix Systems, Inc. | Systems and methods for providing client-side acceleration techniques |
| US7373462B2 (en) * | 2005-03-29 | 2008-05-13 | International Business Machines Corporation | Snoop filter for filtering snoop requests |
| CA2632235A1 (en) | 2005-12-02 | 2007-06-07 | Citrix Systems, Inc. | Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource |
| 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 |
| US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
| US20070180088A1 (en) * | 2006-01-27 | 2007-08-02 | Array Networks, Inc. | Seamless roaming across multiple data networks |
| 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 |
| US7934253B2 (en) * | 2006-07-20 | 2011-04-26 | Trustwave Holdings, Inc. | System and method of securing web applications across an enterprise |
| US20080028445A1 (en) * | 2006-07-31 | 2008-01-31 | Fortinet, Inc. | Use of authentication information to make routing decisions |
| US8495181B2 (en) * | 2006-08-03 | 2013-07-23 | Citrix Systems, Inc | Systems and methods for application based interception SSI/VPN traffic |
| US8392977B2 (en) * | 2006-08-03 | 2013-03-05 | Citrix Systems, Inc. | Systems and methods for using a client agent to manage HTTP authentication cookies |
| US8561155B2 (en) * | 2006-08-03 | 2013-10-15 | Citrix Systems, Inc. | Systems and methods for using a client agent to manage HTTP authentication cookies |
| 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 |
| US8694684B2 (en) * | 2006-08-21 | 2014-04-08 | Citrix Systems, Inc. | Systems and methods of symmetric transport control protocol compression |
| US8312120B2 (en) * | 2006-08-22 | 2012-11-13 | Citrix Systems, Inc. | Systems and methods for providing dynamic spillover of virtual servers based on bandwidth |
| US8079076B2 (en) * | 2006-11-02 | 2011-12-13 | Cisco Technology, Inc. | Detecting stolen authentication cookie attacks |
| US8490148B2 (en) * | 2007-03-12 | 2013-07-16 | Citrix Systems, Inc | Systems and methods for managing application security profiles |
| US7783757B2 (en) * | 2007-03-12 | 2010-08-24 | Citrix Systems, Inc. | Systems and methods of revalidating cached objects in parallel with request for object |
| US7865589B2 (en) * | 2007-03-12 | 2011-01-04 | Citrix Systems, Inc. | Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance |
| US7853678B2 (en) * | 2007-03-12 | 2010-12-14 | Citrix Systems, Inc. | Systems and methods for configuring flow control of policy expressions |
| US8103783B2 (en) * | 2007-03-12 | 2012-01-24 | Citrix Systems, Inc. | Systems and methods of providing security and reliability to proxy caches |
| US7853679B2 (en) * | 2007-03-12 | 2010-12-14 | Citrix Systems, Inc. | Systems and methods for configuring handling of undefined policy events |
| US7706266B2 (en) | 2007-03-12 | 2010-04-27 | Citrix Systems, Inc. | Systems and methods of providing proxy-based quality of service |
| US8347356B2 (en) * | 2009-03-31 | 2013-01-01 | Microsoft Corporation | Adaptive HTTP authentication scheme selection |
-
2006
- 2006-08-03 US US11/462,300 patent/US8561155B2/en active Active
-
2007
- 2007-08-03 CN CN2007800369048A patent/CN101523865B/zh not_active Expired - Fee Related
-
2013
- 2013-09-30 US US14/042,354 patent/US9544285B2/en active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1478348A (zh) * | 2000-11-30 | 2004-02-25 | �Ҵ���˾ | Web站点的安全会话管理和认证 |
Non-Patent Citations (1)
| Title |
|---|
| Rob Barrett等.Intermediaries: new places for producing and manipulating Web content.《Computer Networks and ISDN System》.1998,第30卷 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20140109202A1 (en) | 2014-04-17 |
| US8561155B2 (en) | 2013-10-15 |
| US20080034198A1 (en) | 2008-02-07 |
| US9544285B2 (en) | 2017-01-10 |
| CN101523865A (zh) | 2009-09-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101523865B (zh) | 用于使用http-察觉的客户端代理的系统和方法 | |
| US9948608B2 (en) | Systems and methods for using an HTTP-aware client agent | |
| US8392977B2 (en) | Systems and methods for using a client agent to manage HTTP authentication cookies | |
| CN101523866B (zh) | 用于分层全局负载平衡的系统和方法 | |
| US8356101B2 (en) | Systems and methods for managing a plurality of user sessions in a virtual private network environment | |
| US9692725B2 (en) | Systems and methods for using an HTTP-aware client agent | |
| US8271661B2 (en) | Systems and methods of providing server initiated connections on a virtual private network | |
| US9246878B2 (en) | Methods and systems for routing packets in a VPN-client-to-VPN-client connection via an SSL/VPN network appliance | |
| US8819809B2 (en) | Method and appliance for authenticating, by an appliance, a client to access a virtual private network connection, based on an attribute of a client-side certificate | |
| US9497198B2 (en) | Systems and methods for application based interception of SSL/VPN traffic | |
| EP2070297B1 (en) | Systems and methods for using an http-aware client agent | |
| EP2070259B1 (en) | Systems and methods for using a client agent to manage icmp traffic in a virtual private network environment | |
| HK1140883B (zh) | 用於ssl/vpn业务的基於应用的拦截和授权的系统和方法 | |
| HK1140883A1 (zh) | 用於ssl/vpn业务的基於应用的拦截和授权的系统和方法 | |
| HK1191153A (zh) | 用於ssl/vpn業務的基於應用的攔截和授權的系統和方法 |
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 | ||
| CF01 | Termination of patent right due to non-payment of annual fee | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130213 |