用于细粒度策略驱动的cookie代理的系统和方法

文档序号:7733243阅读:218来源:国知局
专利名称:用于细粒度策略驱动的cookie代理的系统和方法
技术领域
本发明总的涉及数据通信网络。更具体地,本发明涉及用于细粒度策略驱动的 cookie代理管理、免客户机cookie管理的系统和方法以及用于cookie代理的技术。
背景技术
企业可以通过网络来为多个不同客户提供不同的服务。一些客户可以经由更安全 的连接和网络连接,而另一些客户可以使用安全性较差的网络连接。类似地,一些客户可以 配置为使用cookie和服务器进行网络通信,而另一些客户不可以这样。在企业的服务器使 用cookie来提供服务的例子中,不能使用cookie的客户难以连接服务并且使用服务。客 户之间的网络配置和网络连接中的这样的变化可以对企业在提供服务到这些客户方面产 生挑战。

发明内容
在另一个方面中,提供一种技术方案,使得企业可以决定可以代理哪个cookie并 且如何代理以及哪个cookie不可以代理。所提供的技术方案使得企业可以基于和客户机、 服务器相关的多种信息或者客户机和服务器之间的交互的细节和性质来配置不同的策略 以处理业务量的多个子集。例如,部署在客户机和服务器之间的中间设备可以在客户机和 服务器之间建立SSL VPN会话。该中间设备可以经由免客户机(clientless)的SSL VPN 会话从服务器接收对于客户机的请求的响应。该响应可以包括一个或者多个cookie。中间 设备可以识别用于免客户机SSL VPN会话的访问配置文件。访问配置文件可以识别用于代 理cookie的一个或者多个策略。中间设备可以响应访问配置文件的一个或者多个策略来 确定是否为客户机代理或者忽略代理一个或者多个cookie。在一些方面,本发明涉及用于通过一个或者多个服务器和一个或者多个客户机之 间的cookie的中间设备进行配置驱动的代理的方法。中间设备可以在一个或者多个客户 机和一个或者多个服务器之间建立SSL VPN会话。该中间设备可以经由中间设备在服务器 和客户机之间建立的免客户机的SSL VPN会话从服务器接收对于客户机的请求的响应。该 响应可以包括一个或者多个cookie。中间设备可以识别用于免客户机SSL VPN会话的访问 配置文件。访问配置文件可以识别用于代理cookie的一个或者多个策略。中间设备可以 响应访问配置文件的一个或者多个策略来确定对于客户机是否代理或者忽略一个或者多 个cookie的代理。在一些实施例中,中间设备可以接收一个或者多个cookie中的客户机消耗的 cookie。访问配置文件可以识别包括对于客户机消耗的cookie的cookie代理动作的策略。在另一个实施例中,中间设备还响应于该策略来忽略客户机消耗的cookie的代理。在 另一个实施例中,中间设备在转发给客户机的响应中保留客户机消耗的cookie。在又一个 实施例中,中间设备经由响应来接收一个或者多个cookie的服务器cookie并且代理服务 器cookie。仍在另一个实施例中,中间设备从响应中移除服务器cookie并且将响应转发给 客户机。在又一个实施例中,中间设备响应于经由一个或者多个策略确定客户机不支持一 个或者多个cookie来代理响应的一个或者多个cookie。仍在另一个实施例中,访问配置文 件识别对于指定域名的服务器消耗的cookie限定cookie代理动作的策略并且中间设备如 策略动作所指定的修改响应。在一些实施例中,中间设备基于应用类型的标识来识别使用请求或者响应的访 问配置文件。在另一个实施例中,访问配置文件基于用户或者用户组的标识来识别包括 cookie代理动作的策略,以忽略代理一个或者多个cookie的一个cookie。仍然在另一个 实施例中,访问配置文件基于中间设备的虚拟服务器的标识来识别策略,以忽略代理一个 或者多个cookie的一个cookie。在又一个实施例中,除非一个或者多个访问配置文件的策 略识别要忽略的一个或者多个cookie的一个cookie,否则中间设备代理响应的一个或者 多个 cookie。在一些方面中,本发明涉及用于一个或者多个服务器和一个或者多个客户机之间 的cookie的配置驱动代理的中间设备。中间设备可以在一个或者多个服务器和一个或者 多个客户机之间建立SSL VPN会话。用于从服务器经由免客户机SSL VPN会话接收对于客 户机请求的响应的包引擎可以通过服务器和客户机之间的中间设备来建立。响应可以包括 一个或者多个cookie。策略引擎用于识别对于免客户机SSL VPN会话的访问配置文件,访 问配置文件识别用于代理cookie的一个或者多个策略。中间设备响应于访问配置文件的 一个或者多个策略来确定是否为客户机代理一个或者多个cookie或者将代理忽略。在一些实施例中,包引擎经由响应接收一个或者多个cookie中的客户机消耗的 cookie.在一些实施例中,访问配置文件可以识别包括对于客户机消耗的cookie的cookie 代理动作的策略。在另一个实施例中,中间设备还响应于该策略来确定将客户机消耗的 cookie的代理忽略。在一些实施例中,中间设备在转发给客户机的响应中保留客户机消 耗的cookie。在又一个实施例中,包引擎经由响应来接收一个或者多个cookie的服务器 cookie并且其中中间设备响应于一个或者多个策略来代理服务器cookie。仍在另一个实 施例中,中间设备从响应中移除服务器cookie并且将响应转发给客户机。在一些实施例 中,中间设备响应于经由一个或者多个策略确定客户机不支持一个或者多个cookie来代 理响应的一个或者多个cookie。在一些实施例中,策略引擎经由访问配置文件识别对于指定域名的服务器消耗 的cookie限定cookie代理动作的一个或者多个策略的一个策略。在另一个实施例中,中 间设备如策略动作所指定的修改响应。在一些实施例中,策略引擎基于应用类型的标识来 识别经由请求或者响应的访问配置文件。在一些实施例中,访问配置文件基于用户或者用 户组的标识来经由访问配置文件识别包括cookie代理动作的策略来将代理一个或者多个 cookie 的一个 cookie 忽略。提供一种技术方案使得企业为客户机提供服务时不需要考虑它们的cookie或有 关cookie的安全配置,并且在一些实施例中不需要牺牲传输的安全性和整体性。所提供的技术方案使得没有配置为使用cookie的客户机访问使用cookie的服务器,该cookie用于 与客户机通信。部署在客户机和服务器之间的中间设备拦截和修改客户机和服务器之间的 传输来补偿客户机和服务器之间的cooki e配置的不匹配。在一些方面中,本申请涉及通过中间设备管理用于客户机的cookie的方法。中 间设备从服务器接收对于客户机请求的响应。该响应可以包括统一资源定位符(URL)和 cookie。中间设备可以通过将cookie从响应移除并且将唯一的客户机标识符插入URL来 修改该响应。中间设备可以保存和唯一客户机标识符相关的所移除的cookie并且将修改 的响应转发到客户机。在一些实施例中,cookie管理器将与响应所包括的cookie相关联的一个或者多 个值匹配到来自多个cookie的一个cookie。在另一个实施例中,中间设备响应于该匹配来 修改所接收的响应。在一些实施例中,中间设备从客户机接收请求,该请求包括请求URL。 Cookie管理器可以将请求URL匹配到来自多个cookie的所移除的cookie。在一些实施例 中,中间设备通过增加已移除的cookie来修改请求URL并且将修改的请求URL转发给服务 器。在另一个实施例中,多个cookie和请求URL所提供的至少一个域名或者至少一个路径 相关联。在又一个实施例中,中间设备响应于该匹配从cookie管理器接收一个或者多个名 称值对。在一些实施例中,响应包括多个cookie并且修改的响应包括和多个cookie相关 联的多个客户机标识符。在其他实施例中,唯一客户机标识符是包括cookie的一部分的 cookie 代理会话 cookie。在一些实施例中,中间设备从客户机接收请求,该请求包括cooki e代理会话 cookie, cookie代理会话cookie包括cookie的一部分。中间设备可以将cookie代理会话 cookie匹配到该cookie。在一些实施例中,中间设备可以通过将cookie代理会话cookie 从请求移除并且将该cookie增加到请求来修改该请求,并且将该请求转发给服务器。在一些方面中,提供用于使用网络上的代理来管理cookie的中间设备。中间设备 的包引擎从服务器接收对于客户机请求的响应,该响应可以包括URL和cookie。中间设备 的cookie代理可以通过将cookie从响应移除并且将唯一的客户机标识符插入URL来修改 该响应。中间设备的cookie管理器可以保存和唯一客户机标识符相关的所移除的cookie。 中间设备可以将修改的响应转发到客户机。在一些实施例中,响应还可以包括和cookie相关联的一个或者多个值。cookie管 理器可以将与cookie相关联的一个或者多个值匹配到来自多个cookie的一个cookie。在 一些实施例中,中间设备响应于该匹配来修改所接收的响应。在一些实施例中,包引擎从客 户机接收请求。该请求可以包括请求URL并且Cookie管理器可以将请求URL匹配到来自 多个cookie的所移除的cookie。在一些实施例中,中间设备通过增加已移除的cookie来 修改请求URL并且将修改的请求URL转发给服务器。在另一个实施例中,多个cookie和请 求URL所提供的至少一个域名或者至少一个路径相关联。在又一个实施例中,中间设备响 应于该匹配从cookie管理器接收一个或者多个名称值对。在一些实施例中,响应包括多个 cookie并且修改的响应包括和多个cookie相关联的多个客户机标识符。在一些实施例中, 唯一客户机标识符是包括cookie所包括的一部分信息的cookie代理会话cookie。在一些实施例中,中间设备从容户机接收请求,该请求可以包括cookie代理会话 cookie。cookie代理会话cookie可以包括cookie的一部分。中间设备可以将cookie代
8理会话cookie匹配到该cookie并且通过将cookie代理会话cookie从请求移除并且将该 cookie增加到请求来修改客户机的请求。中间设备可以将该修改后的请求转发给服务器。


参考结合附图的以下描述,本发明的前述和其他对象、方面、特征和优势将会变得 更加明显和更好理解,其中图1A、1B和IC是客户机经由一个或者多个设备来访问服务器的网络环境的实施 例的框图;图ID是经由设备来将计算环境从服务器递送到客户机的环境的实施例的框图;图IE和IF是计算装置的实施例的框图;图2A是处理在客户机和服务器之间的通信的中间设备的实施例的框图;图2B是用于优化、加速、负载平衡和路由在客户机和服务器之间的通信的中间设 备的另一个实施例的框图;图3A是经由中间设备访问服务器的免客户机虚拟专用网络的实施例的框图;图3B是经由中间设备访问服务器的免客户机虚拟专用网络的另一个实施例的框 图;图4A是涉及cookie管理的多个实施例的框图;图4B是表示用在cookie管理中的多个管理序列图的框图;图4C是表示cookie代理数据流的多个实施例的框图,包括涉及cookie代理的方 法;和图5是用于通过中间设备代理配置驱动cookie的方法的实施例的流程图。根据以下结合附图提出的详细描述,本发明的特征和优势将变得更加明显,其中 相同的参考符号在全文中标示对应元件。在附图中,同样的附图标记通常指示相同的、功能 类似的和/或结构类似的元件。
具体实施例方式A.网络和计算环境在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可以部署这样 的实施例的网络和计算环境是有帮助的。现在参考图1A,描述了网络环境的一个实施例。 总的来说,网络环境包括经由一个或多个网络104和104'(通常被称为网络104)与一个 或多个服务器106a-106n (通常也被称为服务器106或远程机器106)通信的一个或多个客 户机102a-102n(通常也被称为本地机器102或客户机102)。在一些实施例中,客户机102 经由设备200与服务器106通信。虽然图IA示出客户机102和服务器106之间的网络104和网络104',但客户机 102和服务器106可以在同一个网络104上。网络104和104'可以是相同类型的网络或 不同类型的网络。网络104和/或网络104'可以是像公司内联网的局域网(LAN)、城域网 (MAN)或者诸如因特网或万维网的广域网(WAN)。在一个实施例中,网络104'可以是专用 网而网络104可以是公用网。在一些实施例中,网络104可以是专用网而网络104'可以 是公用网。在另一个实施例中,网络104和104'可以都是专用网。在一些实施例中,客户
9机102可以位于公司的分支机构,经由网络104上的WAN连接来与位于公司的数据中心的 服务器106进行通信。网络104和/或104'可以是任一类型和/或形式的网络,并且可以包括下列任意 一种网络点到点网络、广播网、广域网、局域网、电信网、数据通信网、计算机网络、ATM(异 步传送模式)网络、SONET (同步光网络)网络、SDH(同步数字系列)网络、无线网络和有 线网络。在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链路。网络 104和/或104'的拓扑结构可以是总线型、星型或环型网络拓扑结构。网络104和/或 104'以及网络拓扑结构可以是能够支持此处描述的操作的本领域内普通技术人员所知的 任一种这样的网络或网络拓扑结构。如图IA所示,在网络104和104'之间示出也可以被称为接口单元200或网关200 的设备200。在一些实施例中,设备200可以位于网络104上。例如,公司的分支机构可以 在所述分支机构处部署设备200。在其它实施例中,设备200可以位于网络104'上。例如, 设备200可以位于公司的数据中心。在又一个实施例中,多个设备200可以部署在网络104 上。在一些实施例中,多个设备200可以部署在网络104'上。在一个实施例中,第一设备 200与第二设备200'相通信。在其它的实施例中,设备200可以是在与客户机102相同或 不同的网络104,104'上的任一客户机102或服务器106的一部分。一个或多个设备200 可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,设备200包括被称为Citrix NetScaler装置的由位于 Ft. Lauderdale Florida的Citrix Systems公司制造的任一网络装置。在其它实施例中,设 备200包括由位于Seattle, Washington的F5Networks公司制造的被称为WebAccelerator 和BigIP的任意一个产品实施例。在另一个实施例中,设备205包括由位于Sunnyvale, California的Juniper Networks公司制造的DX加速装置平台和/或诸如SA700、SA2000、 SA4000和SA6000装置的SSL VPN系列装置中的任意一个。在又一个实施例中,设备200 包括由位于San Jose, California的CiscoSystems公司制造的任一应用加速和/或安全 相关的设备和/或软件,例如Cisco ACE应用控制引擎模块业务(Application Control Engine Moduleservice)软件和网络模块以及Cisco AVS系列应用速度系统(Application Velocity System)。在一个实施例中,该系统可以包括多个、逻辑分组的服务器106。在这些实施例 中,服务器的逻辑分组可以被称为服务器群组38。在这些实施例中的一些实施例中,服务 器106可以是在地理上分散的。有时候,群组38可以被管理为单一的实体。在其它实施例 中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个 客户机102来执行一个或多个应用。在每个群组38中的服务器106可以是不同种类的。一个或多个服务器106可 以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的 WINDOWS NT)来进行操作,而一个或多个其它的服务器106可以根据另一种类型的操作系 统平台(例如,Unix或Linux)来进行操作。每个群组38中的服务器106不需要与同一群 组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组38的服务器106的 分组可以使用广域网(WAN)连接或中域网(medium-areanetwork,MAN)连接来互连。例如, 群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的服务器106。如果使用局域网(LAN)连接或一些形式的直接连接来连接服务器106, 则可以增加在群组38中的服务器106之间的数据传输速度。服务器106可以被称为文件服务器、应用服务器、web服务器、代理服务器或网关 服务器。在一些实施例中,服务器106可以有能力起到应用服务器或主应用服务器的作用。 在一个实施例中,服务器106可以包括活动目录(Active Directory) 0客户机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使用web接口将对请求的响应提供给客户机102。 在一个实施例中,客户机102直接与服务器106进行通信以访问所标识的应用。在另一个 实施例中,客户机102接收由执行服务器106上的标识的应用所生成的诸如显示数据的应 用输出数据。现在参考图1B,描述了部署多个设备200的网络环境的实施例。第一设备200可 以部署在第一网络104上,而第二设备200'部署在第二网络104'上。例如,公司可以在 分支机构部署第一设备200,而在数据中心部署第二设备200'。在另一个实施例中,第一 设备200和第二设备200'被部署在同一个网络104或网络104'上。例如,第一设备200 可以部署用于第一服务器群组38,而第二设备200'可以部署用于第二服务器群组38'。 在另一个实例中,第一设备200可以部署在第一分支机构,而第二设备200'被部署在第二 分支机构'。在一些实施例中,第一设备200和第二设备200'彼此协同或联合工作,以加 速客户机和服务器之间的网络业务量或应用和数据的递送。现在参考图1C,描述了使用一个或多个其它类型的设备(例如在一个或多个WAN 优化设备205,205'之间的设备),来部署设备200的网络环境的另一个实施例。例如,第 一 WAN优化设备205显示在网络104和104'之间,而第二 WAN优化设备205‘可以部署在 设备200和一个或多个服务器106之间。通过示例,公司可以在分支机构部署第一 WAN优 化设备205,而在数据中心部署第二 WAN优化设备205'。在一些实施例中,设备205可以 位于网络104'上。在其它实施例中,设备205'可以位于网络104上。在一些实施例中, 设备205'可以位于网络104'或网络104〃上。在一个实施例中,设备205和205'在同 一个网络上。在另一个实施例中,设备205和205'在不同的网络上。在另一个实例中,第
11一 WAN优化设备205可以部署用于第一服务器群组38,而第二 WAN优化设备205 ‘可以部 署用于第二服务器群组38'。在一个实施例中,设备205是用于加速、优化或者以其他方式改善诸如往和/或返 于WAN连接的业务量的任一类型和形式的网络业务量的性能、操作或服务质量的装置。在 一些实施例中,设备205是一个性能提高的代理。在其它实施例中,设备205是任一类型和 形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备205是 由位于Ft. Lauderdale Florida的Citrix Systems公司出品的被称为WANScaler的产品 实施例中的任意一种。在其它实施例中,设备205包括由位于Seattle,Washington的F5 Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任意一种。在 另一个实施例中,设备205包括由位于Sunnyvale,California的Juniper Netfforks公司 出品的WX和WXC WAN加速装置平台中的任意一种。在一些实施例中,设备205包括由San Francisco, California ^ Riverbed Technology [JB 白勺虫工鱼尊(steelhead) M^J WAN 优化设备中的任意一种。在其它实施例中,设备205包括由位于Roseland,NewJersey的 Expand Networks公司出品的WAN相关装置中的任意一种。在一个实施例中,设备205包 括由位于Cupertino,California的Packeteer公司出品的任意一种WAN相关设备,例如由 Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备 205包括由位于San Jose, California的Cisco Systems公司出品的任一 WAN相关设备和 /或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。在一个实施例中,设备205提供用于分支机构或远程办公室的应用和数据加速业 务。在一个实施例中,设备205包括广域文件服务(WAFS)的优化。在另一个实施例中,设 备205加速文件的递送,例如经由通用Internet文件系统(CIFS)协议。在其它实施例中, 设备205在存储器和/或存储设备中提供高速缓存来加速应用和数据的递送。在一个实 施例中,设备205提供在任一级别的网络堆栈或在任一的协议或网络层的网络业务量的压 缩。在另一个实施例中,设备205提供传输层协议优化、流量控制、性能增强或修改和/或 管理,以加速WAN连接上的应用和数据的递送。例如,在一个实施例中,设备205提供传输 控制协议(TCP)优化。在其它实施例中,设备205提供对于任一会话或应用层协议的优化、 流量控制、性能增强或修改和/或管理。在另一个实施例中,设备205将任一类型和形式的数据或信息编码成网络分组的 定制或标准的TCP和/或IP报头字段或可选字段,以将存在、功能或能力通告给另一个设 备205'。在另一个实施例中,设备205'可以使用在TCP和/或IP报头字段或选项中编 码的数据来与另一个设备205'进行通信。例如,设备可以使用TCP选项或IP报头字段或 选项来传达在执行诸如WAN加速的功能时或者为了彼此联合工作而由设备205,205'所使 用的一个或多个参数。在一些实施例中,设备200保存在设备205和205'之间传达的TCP和/或IP报头 和/或可选字段中编码的任一信息。例如,设备200可以终止经过设备200的传输层连接, 例如经过设备205和205'的在客户机和服务器之间的一个传输层连接。在一个实施例中, 设备200识别并保存在由第一设备205通过第一传输层连接发送的传输层分组中的任一编 码信息,并经由第二传输层连接来将具有编码信息的传输层分组传达到第二设备205'。现在参考图1D,描述了用于递送和/或操作客户机102上的计算环境的网络环境。
12在一些实施例中,服务器106包括用于将计算环境或应用和/或数据文件递送给一个或多 个客户机102的应用递送系统190。简单概述,客户机10经由网络104、104'和设备200 与服务器106通信。例如,客户机102可以驻留在例如分支机构的公司的远程办公室,而服 务器106可以驻留在公司的数据中心。客户机102包括客户机代理120和计算环境15。计 算环境15可以执行或操作访问、处理或使用数据文件的应用。可以经由设备200和/或服 务器106来递送计算环境15、应用和/或数据文件。在一些实施例中,设备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之间的连接和通信的 应用防火墙安全、控制和管理。在一些实施例中,应用递送管理系统190根据多个执行方法以及根据经由策略引 擎195应用的任一验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的 应用递送技术。使用这些技术,远程用户可以从任一网络连接装置100获取计算环境以及 访问服务器存储的应用和数据文件。在一个实施例中,应用递送系统190可以驻留于服务 器106或在服务器106上执行。在另一个实施例中,应用递送系统190可以驻留于多个服务 器106a-106n上或在多个服务器106a-106n上执行。在一些实施例中,应用递送系统190可 以在服务器群组38中执行。在一个实施例中,执行应用递送系统190的服务器106还可以 存储或提供应用和数据文件。在另一个实施例中,第一组的一个或多个服务器106可以执 行应用递送系统190,而不同的服务器106η可以存储或提供应用和数据文件。在一些实施 例中,应用递送系统190、应用和数据文件中的每一个可以驻留或位于不同的服务器上。在 又一个实施例中,应用递送系统190的任一部分可以驻留、执行或保存或被分配于设备200 或多个设备。客户机102可以包括用于执行使用或处理数据文件的应用的计算环境15。客户机 102可以经由网络104、104'和设备200来从服务器106请求应用和数据文件。在一个实 施例中,设备200可以将来自于客户机102的请求转发到服务器106。例如,客户机102可 以不具有本地存储或可存取的应用和数据文件。响应于请求,应用递送系统190和/或服 务器106可以递送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以 以应用流的形式发送应用,以在客户机102上的计算环境15中进行操作。在一些实施例中,应用递送系统190包括Citrix Systems公司的例如MetaFrame 或Citrix表示(Presentation)服务器 的Citrix访问套件 的任一部分和/或由微软 公司出品的任意一种微软 Windows终端服务。在一个实施例中,应用递送系统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可以选择执行应用的方法,使得本地机器10可以在检索包括应用的多个应 用文件之后本地执行所述应用。在又一个实施例中,应用递送系统190可以选择执行应用 的方法以经由网络104将应用流式传输到客户机102。客户机102可以执行、操作或以其他方式提供应用,所述应用可以是任一类型和/ 或形式的软件、程序或可执行指令,例如任一类型和/或形式的web浏览器、基于web的客 户机、客户机_服务器应用、瘦_客户机的计算客户机、ActiveX控件、或Java小程序、或可 以在客户机102上执行的任一其它类型和/或形式的可执行指令。在一些实施例中,应用 可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。在一个实施 例中,服务器106可以使用任一瘦-客户机或远程显示协议来显示输出到客户机102,所述 远程显示协议例如由位于Ft. Lauderdale, Florida的Citrix Systems公司出品的独立计 算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。 应用可以使用任一类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机 或Telnet客户机。在其它实施例中,应用包括与VoIP通信相关的任一类型的软件,例如软 IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任一应用,例如用于流式传 输视频和/或音频的应用。在一些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提 供瘦-客户机计算的应用或远程显示表示应用的应用。在一个实施例中,服务器106或服务 器群组38作为应用而执行Citrix Systems公司的例如MetaFrame或Citrix表示服务器 的Citrix访问套件 的任一部分和/或由微软公司出品的任意一种微软 Windows终端 服务。在一个实施例中,应用是由位于Fort Lauderdale,Florida的Citrix Systems公司 开发的ICA客户机。在其它实施例中,应用包括由位于RedmoncbWashington的微软公司开 发的远程桌面(RDP)客户机。此外,服务器106可以运行应用,例如,所述服务器106可以是 提供例如由位于Redmond,Washington的微软公司出品的微软Exchange的电子邮件服务的应用服务器、web或Internet服务器、或桌面共享服务器、或协作服务器。在一些实施例中, 任意一种应用可以包括任一类型的寄载服务或产品,例如由Santa Barbara, California 的 Citrix Online 部门提供的 GoToMeeting 、由位于 Santa Clara, California 的 WebEx 公司提供的WebEx 、或由位于Redmond,Washington的微软公司提供的微软OfficeLive Meeting。仍然参考图1D,网络环境的一个实施例可以包括监控服务器106A。监控服务器 106A可以包括任一类型和形式的性能监控业务198。性能监控业务198可以包括监控、测量 和/或管理软件和/或硬件,包括数据收集、集合、分析、管理和报告。在一个实施例中,性 能监控业务198包括一个或多个监控代理197。监控代理197包括用于在诸如客户机102、 服务器106或设备200和205的装置上执行监控、测量和数据收集活动的任一软件、硬件或 其组合。在一些实施例中,监控代理197包括诸如Visual Basic脚本或Java描述语言的 任一类型和形式的脚本。在一个实施例中,监控代理197相对于装置的任一应用和/或用 户透明地执行。在一些实施例中,监控代理197相对于应用或客户机不引人注目地被安装 和操作。在又一个实施例中,监控代理197被安装和操作而不需要用于该应用或装置的任 何设备(instrumentation)。在一些实施例中,监控代理197以预定频率监控、测量和收集数据。在其它实施例 中,监控代理197基于任一类型和形式的事件的检测来监控、测量和收集数据。例如,监控 代理197可以在检测到对web页面的请求或收到HTTP响应时收集数据。在另一个实例中, 监控代理197可以在检测到诸如鼠标点击的任一用户输入事件时收集数据。监控代理197 可以报告或提供任一所监控、测量或收集的数据给监控业务198。在一个实施例中,监控代 理197根据调度或预定频率来发送信息给监控业务198。在另一个实施例中,监控代理197 在检测到事件时发送信息给监控业务198。在一些实施例中,监控业务198和/或监控代理197执行诸如客户机、服务器、服 务器群组、设备200、设备205或网络连接的任一网络资源或网络基础结构元件的监控和性 能测量。在一个实施例中,监控业务198和/或监控代理197执行诸如TCP或UDP连接的 任一传输层连接的监控和性能测量。在另一个实施例中,监控业务198和/或监控代理197 监控和测量网络等待时间。在又一个实施例中,监控业务198和/或监控代理197监控和 测量带宽利用。在其它实施例中,监控业务198和/或监控代理197监控和测量终端用户响应时 间。在一些实施例中,监控业务198执行应用的监控和性能测量。在另一个实施例中,监控 业务198和/或监控代理197执行到应用的任一会话或连接的监控和性能测量。在一个实 施例中,监控业务198和/或监控代理197监控和测量浏览器的性能。在另一个实施例中, 监控业务198和/或监控代理197监控和测量基于HTTP的事务的性能。在一些实施例中, 监控业务198和/或监控代理197监控和测量IP上语音(VoIP)应用或会话的性能。在其 它实施例中,监控业务198和/或监控代理197监控和测量诸如ICA客户机或RDP客户机 的远程显示协议应用的性能。在又一个实施例中,监控业务198和/或监控代理197监控 和测量任一类型和形式的流媒体的性能。在进一步的实施例中,监控业务198和/或监控 代理197监控和测量寄载应用或软件即服务(Software-As-A-Service,SaaS)递送模型的 性能。
15
在一些实施例中,监控业务198和/或监控代理197执行与应用相关的一个或多 个事务、请求或响应的监控和性能测量。在其它实施例中,监控业务198和/或监控代理 197监控和测量应用层堆栈的任一部分,例如任一 .NET或J2EE调用。在一个实施例中,监 控业务198和/或监控代理197监控和测量数据库或SQL事务。在又一个实施例中,监控 业务198和/或监控代理197监控和测量任一方法、函数或应用编程接口(API)调用。在一个实施例中,监控业务198和/或监控代理197执行经由诸如设备200和/ 或设备205的一个或多个设备从服务器到客户机的应用和/或数据的递送的监控和性能测 量。在一些实施例中,监控业务198和/或监控代理197监控和测量虚拟化应用的递送的 性能。在其它实施例中,监控业务198和/或监控代理197监控和测量流式应用的递送的 性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量递送桌面应用到 客户机和/或在客户机上执行桌面应用的性能。在另一个实施例中,监控业务198和/或 监控代理197监控和测量客户机/服务器应用的性能。在一个实施例中,监控业务198和/或监控代理197被设计和构建为应用递送系 统190提供应用性能管理。例如,监控业务198和/或监控代理197可以监控、测量和管理 经由Citrix表示服务器递送应用的性能。在该实例中,监控业务198和/或监控代理197 监控单独的ICA会话。监控业务198和/或监控代理197可以测量总的以及每次的会话系 统资源使用,以及应用和连网性能。监控业务198和/或监控代理197可以对于给定用户 和/或用户会话来标识有效服务器。在一些实施例中,监控业务198和/或监控代理197 监控在应用递送系统190和应用和/或数据库服务器之间的后端连接。监控业务198和/ 或监控代理197可以测量每个用户会话或ICA会话的网络等待时间、延迟和容量。在一些实施例中,监控业务198和/或监控代理197测量和监控对于应用递送系 统190的诸如总的存储器使用、每个用户会话和/或每个进程的存储器使用。在其它实施 例中,监控业务198和/或监控代理197测量和监控诸如总的CPU使用、每个用户会话和/ 或每个进程的应用递送系统190的CPU使用。在另一个实施例中,监控业务198和/或监 控代理197测量和监控登录到诸如Citrix表示服务器的应用、服务器或应用递送系统所需 的时间。在一个实施例中,监控业务198和/或监控代理197测量和监控用户登录应用、服 务器或应用递送系统190的持续时间。在一些实施例中,监控业务198和/或监控代理197 测量和监控应用、服务器或应用递送系统会话的有效和无效的会话计数。在又一个实施例 中,监控业务198和/或监控代理197测量和监控用户会话等待时间。在又一个进一步的实施例中,监控业务198和/或监控代理197测量和监控任一 类型和形式的服务器规格(metrics)。在一个实施例中,监控业务198和/或监控代理197 测量和监控与系统存储器、CPU使用和磁盘存储器有关的规格。在另一个实施例中,监控业 务198和/或监控代理197测量和监控和页错误有关的规格,诸如每秒页错误。在其它实施 例中,监控业务198和/或监控代理197测量和监控往返时间的规格。在又一个实施例中, 监控业务198和/或监控代理197测量和监控与应用崩溃、错误和/或中止相关的规格。在一些实施例中,监控业务198和监控代理198包括由位于Ft. Lauderdale, Florida的Citrix Systems公司出品的被称为EdgeSight的任意一种产品实施例。在另 一个实施例中,性能监控业务198和/或监控代理198包括由位于Palo Alto, California 的Symphoniq公司出品的被称为TrueView产品套件的产品实施例的任一部分。在一个实
16施例中,性能监控业务198和/或监控代理198包括由位于SanFrancisco,California的 TeaLeaf技术公司出品的被称为TeaLeafCX产品套件的产品实施例的任一部分。在其它实 施例中,性能监控业务198和/或监控代理198包括由位于Houston,Texas的BMC软件公司 出品的诸如BMC性能管理器和巡逻产品(BMC Performance Manager and Patrolproducts) 的商业业务管理产品的任一部分。客户机102、服务器106和设备200可以被部署和/或执行在任一类型和形式的计 算装置上,例如可以在任一类型和形式的网络上通信并执行此处描述的操作的计算机、网 络装置或设备。图IE和IF描述了可用于实施客户机102、服务器106或设备200的实施例 的计算装置100的框图。如图IE和IF所示,每个计算装置100包括中央处理单元101和 主存储器单元122。如图IE所示,计算装置100可以包括可视显示装置124、键盘126和/ 或诸如鼠标的点击装置127。每个计算装置100也可以包括另外的可选元件,例如一个或多 个输入/输出装置130a-130b (通常使用附图标记130来指示)以及与中央处理单元101 通信的高速缓存140。中央处理单元101是响应并处理取自主存储器单元122的指令的任一逻辑电 路。在许多实施例中,中央处理单元由微处理器单元提供,例如由位于Mountain View, California 的Intel 公司出品的产品 ; 由位于 Schaumburg, Illinois 的 Motorola 公司出品的产品;由位于SantaClara,California的Transmeta公司出品的产品;由位 于WhitePlains,New York的国际商业机器公司出品的RS/6000处理器;或者由位于 Sunnyvale,California 的 Advanced Micro Devices 公司出品的产品。计算装置 100 可以 基于任一的这些处理器、或者可以如此处所描述地操作的任一其它处理器。主存储器单元122可以是可以保存数据并允许由微处理器101直接访问的任 一存储位置的一个或多个存储芯片,例如静态随机存取存储器(SRAM)、突发式SRAM或同 步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPM DRAM)、 增强型DRAM(EDRAM)、扩展数据输出RAM(ED0 RAM)、扩展数据输出DRAM (EDO DRAM)、突 发式扩展数据输出 DRAM (BED0 DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率 SDRAM (DDR SDRAM)、增强型 SDRAM (ESDRAM)、同步链接 DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意 一种上面描述的存储芯片、或者可以如此处所描述地操作的任一其它可用的存储芯片。在 图IE中所示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述)与主 存储器122进行通信。图IE描述了在其中处理器通过存储器端口 103直接与主存储器122 通信的计算装置100的实施例。例如,在图IF中,主存储器122可以是DRDRAM。图IF描述了在其中主处理器101通过有时被称为背端总线的次级总线来直接与 高速缓存140通信的实施例。在其它实施例中,主处理器101使用系统总线150与高速缓 存140进行通信。高速缓存140典型地具有比主存储器122更快的响应时间,并且典型地 通过SRAM、BSRAM或EDRAM来提供。在图IE中所示的实施例中,处理器101通过本地系统 总线150与多个1/0装置130进行通信。多种总线可以用来将中央处理单元101连接到任 意一种1/0装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA) 总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于1/0装置是视频显示器124 的实施例,处理器101可以使用高级图形端口(AGP)来与显示器124进行通信。图IF描述了在其中主处理器101通过HyperTransport、快速I/O或InfiniBand来直接与I/O装置 130通信的计算机100的一个实施例。图IF还描述了混合本地总线和直接通信的一个实施 例处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行
通{曰。计算装置100可以支持任一适当的安装装置116,例如用于接收像3. 5英寸、5. 25 英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/Rw驱动器、DVD-ROM 驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任一客户机代理120 或其部分的软件和程序的任一其它装置。计算装置100还可以包括存储装置128,例如一个 或多个硬盘驱动器或独立磁盘的冗余阵列,用于保存操作系统及其它相关软件,以及用于 保存诸如与客户机代理120相关的任一程序的应用软件程序。可选地,任意一种安装装置 116还可以被用作存储装置128。另外,操作系统和软件可以从可引导介质中运行,所述可 引导介质例如像KNOPPIX 的可引导CD,作为来自于knoppix. net可用作GNU/Linux分发 的GNU/Linux的可引导CD。进一步地,计算装置100可以包括通过多种连接联接到局域网(LAN)、广域网 (WAN)或因特网的网络接口 118,所述多种连接包括但不限于标准电话线、LAN或WAN链路 (例如,802. 11、T1、T3、56kb、X. 25)、宽带连接(例如,I SDN、帧中继、ATM)、无线连接或上述 任一或所有连接的一些组合。网络接口 118可以包括内置网络适配器、网络接口卡、PCMCIA 网卡、插件总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装 置100连接到可以传达并执行此处所描述的操作的任一类型的网络的任一其它装置。各 式各样的I/O装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨道 垫、轨道球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印 机和染料升华打印机。I/O装置130可以由如图IE所示的I/O控制器123控制。I/O控制 器可以控制诸如键盘126和例如鼠标或光笔的点击装置127的一个或多个I/O装置。进一 步地,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。还是在其它 实施例中,计算装置100可以提供USB连接以接收诸如由位于LosAlamitos,California的 Twintech Industry公司出品的USB闪存驱动器系列装置这样的便携USB存储装置。在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个 显示装置可以是相同或不同的类型和/或形式。因而,任意一种1/0装置130a-130n和/ 或1/0控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合, 以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124h。例如,计算装 置100可以包括任一类型和/或形式的视频适配器、视频卡、驱动程序和/或库,以联系、通 信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多 个连接器以联接多个显示装置124a-124n。在其它实施例中,计算装置100可以包括多个 视频适配器,每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计 算装置100的操作系统的任一部分可以被配置用于使用多个显示器124a-124n。在其它实 施例中,一个或多个显示装置124a-124n可以由一个或多个诸如例如通过网络连接到计算 装置100的计算装置100a和100b的其它的计算装置来提供。这些实施例可以包括被设计 和构建为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任一类型 的软件。本领域普通技术人员将认识和理解计算装置100可以被配置为具有多个显示装置
18124a-124η的多个方法和实施例。在进一步的实施例中,I/O装置130可以是在系统总线150和外部通信总线之 间的网桥170,所述外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、 SCSI总线、Fireffire总线、Fireffire 800总线、以太网总线、AppleTalk总线、吉比特以太 网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、 FibreChannel总线或串行附加小型计算机系统接口总线。图IE和IF中描述类型的计算装置100典型地在控制任务的调度和对系统资源 的访问的操作系统的控制下操作。计算装置100可以运行任一操作系统,例如任意一种版 本的微软 Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算 机的任一版本的Mac OS 、任一的嵌入式操作系统、任一的实时操作系统、任一的开放源操 作系统、任一的专用操作系统、用于移动计算装置的任一操作系统、或者可以运行在计算装 置上并执行此处所描述的操作的任一其它操作系统。典型的操作系统其中包括WIND0WS 3. χ,WINDOWS 95,WINDOWS 98,WINDOWS 2000,WINDOWS NT 3. 51、WINDOWS NT 4. 0、WINDOWS CE和WINDOWS XP,所有这些均由位于Redmond,Washington的微软公司出品;由位于 Cupertino, California的苹果计算机出品的MacOS ;由位于Armonk,NewYork的国际商业 机器公司出品的OS/2 ;以及由位于Salt Lake City,Utah的Caldera公司发布的可免费使 用的Linux操作系统或者任一类型和/或形式的Unix操作系统,以及其它。在其它实施例中,计算装置100可以具有和所述装置一致的不同的处理器、操作 系统和输入装置。例如,在一个实施例中,计算机100是由Palm公司出品的Treo 180、270、 1060,600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操 作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任一工作站、台 式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话、任一其它计算机、或者 可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的其它形式的计 算或电信装置。B.设备架构图2A举例说明了设备200的一个示例实施例,其还可以称为中间设备200、代理或 者网络浏览器(Netscaler)。提供图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可以包括如上所述的与图IE和IF有关的任一处理器101。在 一些实施例中,中央处理单元262可以在单个的处理器中执行加密处理器260的功能。另 外,硬件层206可以包括用于每个处理单元262和加密处理器260的多个处理器。例如,在
19一个实施例中,设备200包括第一处理器262和第二处理器262'。在其它实施例中,处理 器262或262'包括多核处理器。虽然通常所示设备200的硬件层206具有加密处理器260,但处理器260可以是 用于执行与诸如安全套接字层(SSL)或传输层安全(TLS)协议的任一加密协议相关的功能 的处理器。在一些实施例中,处理器260可以是通用处理器(GPP),并且在进一步的实施例 中,可以具有用于执行任一安全相关协议的处理的可执行指令。虽然在图2中用某些元件来说明设备200的硬件层206,但设备200的硬件部分 或部件可以包括计算装置的任一类型和形式的元件、硬件或软件,诸如此处结合图IE和IF 来举例说明和讨论的计算装置100。在一些实施例中,设备200可以包括服务器、网关、路由 器、交换机、网桥或其它类型的计算或网络装置,并具有与此相关的任一硬件和/或软件元 件。设备200的操作系统将可用的系统存储器分配、管理或者以其他方式分离成内核 空间204和用户空间204。在示例的软件架构200中,操作系统可以是任一类型和/或形 式的Unix操作系统,尽管本发明并未这样限制。因而,设备200可以运行任一操作系统, 例如任意一种版本的微软 Windows操作系统、不同版本的Unix和Linux操作系统、用于 Macintosh计算机的任一版本的Mac OS 、任一的嵌入式操作系统、任一的网络操作系统、 任一的实时操作系统、任一的开放源操作系统、任一的专用操作系统、用于移动计算装置或 网络装置的任一操作系统、或者可以运行在设备200上并执行此处所描述的操作的任一其 它操作系统。内核空间204被保留用于运行内核230,所述内核230包括任一设备驱动程序、内 核扩展或其它内核相关软件。如本领域技术人员所知,内核230是操作系统的核心,并提供 对应用104的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空 间204还包括和有时还被称为集成高速缓存的高速缓存管理器232 —起工作的多个网络服 务或进程,此处进一步详细描述其有益之处。另外,内核230的实施例将依赖于由装置200 所安装、配置或者以其他方式使用的操作系统的实施例。在一个实施例中,装置200包括诸如基于TCP/IP的堆栈的一个网络堆栈267,用 于与客户机102和/或服务器106进行通信。在一个实施例中,网络堆栈267用于与诸如 网络108的第一网络以及第二网络110进行通信。在一些实施例中,装置200终止诸如客 户机102的TCP连接的第一传输层连接,并建立由客户机102使用的到服务器106的第二 传输层连接,例如,第二传输层连接在设备200和服务器106处终止。第一和第二传输层 连接可以经由单个的网络堆栈267建立。在其它实施例中,装置200可以包括例如267和 267'的多个网络堆栈,并且第一传输层连接可以在一个网络堆栈267处建立或终止,而第 二传输层连接在第二网络堆栈267'上建立或终止。例如,一个网络堆栈可以用于在第一网 络上接收和发送网络分组,而另一个网络堆栈用于在第二网络上接收和发送网络分组。在 一个实施例中,网络堆栈267包括用于由设备200发送的一个或多个网络分组排队的缓冲 器 243。如图2所示,内核空间204包括高速缓存管理器232、高速层2_7集成分组引擎 240、加密引擎234、策略引擎236和多协议压缩逻辑238。在内核空间204或内核模式而不 是用户空间202中单独以及组合地运行这些部件或进程232、240、234、236和238改进每一个这些部件的性能。内核操作意味着这些部件或进程232、240、234、236和238运行在装置 200的操作系统的核心地址空间中。例如,在内核模式中运行加密引擎234通过将加密与解 密操作移到内核来改善加密性能,从而减少在内核模式中的存储空间或内核线程与用户模 式中的存储空间或线程之间的转换的次数。例如,可以不需要将内核模式中获得的数据传 递或复制到运行在用户模式中的进程或线程,例如从内核级的数据结构到用户级的数据结 构。在另一个方面,还减少了在内核模式与用户模式之间的上下文转换的次数。另外,在内 核空间204中可以更有效地执行在任意一个部件或进程232、240、235、236和238之间通信 和通信的同步。在一些实施例中,部件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复制存储在别处的原始数据或者以前计算、生成或发送的数据,其中原始数据也许需要 相对于读取高速缓存元件来说更长的访问时间以取出、计算或者以其他方式获取。一旦数 据被保存在高速缓存元件中,未来的使用可以通过访问高速缓存的拷贝而不是重新取回或 再计算原始数据来进行,从而减少访问时间。在一些实施例中,高速缓存元件可以包括装置 200的存储器264中的数据对象。在其它实施例中,高速缓存元件可以包括具有比存储器 264更快的访问时间的存储器。在另一个实施例中,高速缓存元件可以包括诸如硬盘的一部 分的装置200的任一类型和形式的存储元件。在一些实施例中,处理单元262可以提供由 高速缓存管理器232使用的高速缓存。然而在进一步的实施例中,高速缓存管理器232可 以使用存储器、存储装置或处理单元的任一部分和组合,以用于高速缓存数据、对象及其它 内容。进一步地,高速缓存管理器232包括任一逻辑、功能、规则或操作,以执行此处所 描述的设备200的技术的任一实施例。例如,高速缓存管理器232包括根据失效时间周期 的期满或一旦从客户机102或服务器106接收到失效命令来使对象无效的逻辑或功能。在 一些实施例中,高速缓存管理器232可以作为在内核空间204中执行的程序、服务、进程或 任务来操作,而在其它实施例中是在用户空间202中操作。在一个实施例中,高速缓存管理
21器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)(电子邮件)、文件传送协议(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-Lff)、诸如TCP-Vegas协议的 拥塞预测协议以及TCP欺骗协议。因而,多协议压缩引擎238为经由桌面客户机以及甚至移动客户机访问应用的用 户加速性能,所述桌面客户机例如微软Outlook以及诸如由诸如Oracle、SAP和Siebel的 通用的企业应用所启动的任一客户机的非web瘦客户机,所述移动客户机例如掌上电脑。 在一些实施例中,通过执行于内核模式204中以及与访问网络堆栈267的分组处理引擎240 结合在一起,多协议压缩引擎238可以压缩诸如任一应用层协议的由TCP/IP协议所携带的 任意一种协议。通常也被称为分组处理引擎或分组引擎的高速层2-7集成分组引擎240负责管理 由设备200经由网络端口 266接收和发送的分组的内核级处理。高速层2-7集成分组引擎
22240可以包括用于在例如接收网络分组或发送网络分组的处理期间排队一个或多个网络分 组的缓冲器。另外,高速层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以例如像100毫秒、 50毫秒或25毫秒这样的毫秒级来进行操作。例如,在一些实施例中,分组处理定时器242 提供时间间隔或者以其他方式使高速层2-7集成分组引擎240以10毫秒的时间间隔来处 理网络分组,而在其它实施例中按5毫秒的时间间隔,以及甚至在更进一步的实施例中短 到3、2或1毫秒的时间间隔。在操作期间,高速层2-7集成分组引擎240可以与加密引擎 234、高速缓存管理器232、策略引擎236和多协议压缩引擎238交互、集成或通信。因而,可 以响应于分组处理定时器242和/或分组引擎240来执行加密引擎234、高速缓存管理器 232、策略引擎236和多协议压缩逻辑238的任一逻辑、功能或操作。因此,可以以例如小于 或等于10毫秒的时间间隔的通过分组处理定时器242提供的时间间隔的粒度来执行加密 引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任一逻辑、功能或操 作。例如,在一个实施例中,高速缓存管理器232可以响应于高速层2-7集成分组引擎240 和/或分组处理定时器242来执行任一高速缓存对象的失效。在另一个实施例中,可以将 高速缓存对象的满期或失效时间设置为与分组处理定时器242的时间间隔相同的粒度级, 例如每10毫秒。与内核空间204不同,用户空间202是由用户模式应用或者以其他方式运行于用 户模式的程序所使用的存储器区域或部分操作系统。用户模式应用可以不直接访问内核空 间204而使用服务调用以访问内核服务。如图2所示,设备200的用户空间202包括图形 用户界面(⑶I) 210、命令行接口(CLI) 212、命令解释程序(shell)服务214、健康监测程序 216和守护服务218。⑶I 210和CLI 212提供一个装置,通过所述装置,系统管理员或其它 用户可以与设备200的操作相互作用并控制设备200的操作,例如通过设备200的操作系 统,并且两者之一是用户空间202或内核空间204。⑶I 210可以是任一类型和形式的图形 用户界面,并且可以通过文本、图形或者以其他方式通过像浏览器的任一类型的程序或应 用来呈现。CLI 212可以是任一类型和形式的命令行或基于文本的接口,例如由操作系统提 供的命令行。例如,CLI 212可以包括命令解释程序,所述命令解释程序是允许用户与操作 系统相互作用的工具。在一些实施例中,CLI 212可以通过1^吐、(^11、切吐或1^11型命令 解释程序来提供。命令解释程序服务214包括程序、服务、任务、进程或可执行指令以支持 用户通过⑶I 210和/或CLI 212与设备200或操作系统相互作用。健康监测程序216被用于监控、检查、报告和确保网络系统在正常工作以及用户
23通过网络接收所请求的内容。健康监测程序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。每个服务器106可以提供一个或多个网络相关的服务270a-270n (称为服务 270)。例如,服务器106可以提供HTTP服务270。设备200包括一个或多个虚拟服务器或 虚拟网际协议服务器,其被称为VSerVer、VIP服务器或仅仅称为VIP 275a-275n (此处也被 称为vServer 275)。vServer 275根据设备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之间的网络通信。在一个实施例中,策略与VServer 275有关。在另一个 实施例中,策略基于一个用户或一组用户。在又一个实施例中,策略是全局的并且应用到一 个或多个vSerVerS275a-275n以及经由设备200通信的任一用户或用户组。在一些实施例 中,策略引擎的策略有条件,在所述条件时根据诸如网际协议地址、端口、协议类型、报头或分组中的字段的通信的任一内容或者诸如用户、用户组、vServer 275、传输层连接和/或 客户机102或服务器106的标识或属性的通信上下文来应用策略。在其它实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程 客户机102访问服务器106的计算环境15、应用和/或数据文件的验证和/或授权。在另 一个实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客户机102 的验证和/或授权,以使应用递送系统190递送计算环境15、应用和/或数据文件的一个或 多个。在又一个实施例中,设备200根据策略引擎236对远程用户或远程客户机103的验 证和/或授权来建立VPN或SSL VPN连接。在一个实施例中,设备102根据策略引擎236 的策略来控制网络业务量和通信会话的流量。例如,设备200可以根据策略引擎236来控 制对计算环境15、应用或数据文件的访问。在一些实施例中,vServer 275建立诸如经由客户机代理120与客户机102的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的端到端安全传输层连接。虚拟专用网络(VPN)可以是使用诸如因特网的公用电信基础架构来为远程客户 机、服务器或者其它通信装置提供诸如从公用网络到专用网络的访问或者连接的任一网 络。虚拟专用网络(VPN)是使用诸如因特网的公用电信基础架构来为远程用户提供对企业 或者专用网络的访问的方法。在一些实施例中,该访问经由加密或者隧穿是安全的。在一 些实施例中,此处描述的中间设备提供从客户机的第一网络到服务器的第二网络的安全虚 拟专用网络连接。安全套接字层(SSL)VPN可以使用SSL或者TLS或者任一其它类型和形式的安全 协议来建立具有安全级的连接。在一些实施例中,SSL VPN可以使用任意类型和形式的加 密用于建立或者维持安全访问。SSL VPN可以经由诸如使用HTTPS(安全超文本传输协议) 的浏览器来建立和/或访问。SSL VPN可以通过支持SSL的浏览器或者应用来建立或者提{共。可以通过使用基于客户机或者免客户机的方法来建立或者提供SSLVPN连接或者
25会话。基于客户机的SSL VPN可以使用任一类型和形式客户机代理或者客户机102上任一 软件相关的代理,来建立SSL VPN连接或者会话。例如,可以经由下载到客户机的SSL VPN 客户机代理来提供基于客户机的SSL VPN,诸如从设备下载的。客户机代理可以被设计并且 配置为在客户机和设备或者服务器之间建立和提供SSL VPN功能性、连接和访问。免客户机SSL VPN可以是不使用下载并安装到客户机102的SSL VPN客户机代 理、软件或者程序来建立SSL VPN连接或者会话的任一 SSL VPN0在一些实施例中,免客户 机SSL VPN可以是不需要客户机102来安装或者执行被设计和构成为提供SSL VPN功能性 的预定软件或者可执行文件以建立和另一个网络装置的SSL VPN连接的任一 SSL VPN0在 一些实施例中,经由不下载或者不需要使用VPN或者SSL VPN客户机代理的SSL使能的浏 览器来建立免客户机SSL VPN0免客户机SSL VPN连接或者会话可以使用标准浏览器或者 应用的协议和通信,诸如SSL使能的浏览器。免客户机SSL VPN连接或者会话可以通过此 处描述的在第一网络和第二网络之间翻译、重写或者转换请求和响应的内容的中间设备或 者应用来提供。在一个实施例中,设备200在虚拟专用网104上寄载客户机102的内联网网际协 议或内联网IP 282地址。客户机102具有诸如第一网络104上的网际协议(IP)地址和/ 或主机名的本地网络标识符。当经由设备200连接到第二网络104'时,设备200在第二网 络104’上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或 主机名的网络标识符。使用客户机建立的内联网IP 282,设备200在第二或专用网104' 上监听并接收指向客户机102的任一通信。在一个实施例中,设备200在第二专用网104 上充当或代表客户机102。例如,在另一个实施例中,vServer 275监听并响应到客户机102 的内联网IP 282的通信。在一些实施例中,如果第二网络104'上的计算装置100发送请 求,则设备200处理所述请求,就像它是客户机102 —样。例如,设备200可以响应到客户 机的内联网IP 282的查验。在另一个实例中,设备可以与第二网络104上的请求与客户机 的内联网IP 282连接的计算装置100建立诸如TCP或UDP连接的连接。在一些实施例中,设备200为客户机102和服务器106之间的通信提供下列一个 或多个加速技术288 1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用; 5)传输控制协议缓冲;以及6)高速缓存。在一个实施例中,设备200通过打开与每个服务 器106的一个或多个传输层连接并维持这些连接以允许客户机经由因特网的重复数据访 问来减轻服务器106的由反复打开和关闭到客户机102的传输层连接所造成的大量处理负 载。这个技术在这里被称为“连接池”。在一些实施例中,为了经由池化的传输层连接来无缝接合从客户机102到服务器 106的通信,设备200通过在传输层协议级修改序号和确认号来转换或多路复用通信。这 被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在到来分组 (即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备200的输 出端口的网络地址,而目的网络地址被改变为目的服务器的网络地址。在发出分组(即,自 服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设 备200的输出端口的网络地址,而目的地址被从设备200的网络地址改变为请求的客户机 102的网络地址。所述分组的序号和确认号也被转换为到客户机102的设备200的传输层 连接上的客户机102所期待的序号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以解释这些转换。在另一个实施例中,设备200为客户机102和服务器106之间的通信提供交换或 负载平衡功能284。在一些实施例中,设备200根据层4或应用层请求数据来分配业务量并 将客户机请求指向服务器106。在一个实施例中,虽然网络分组的网络层或层2标识了目的 服务器106,但设备200通过作为传输层分组的有效载荷而携带的应用信息和数据来确定 服务器106以分配网络分组。在一个实施例中,设备200的健康监测程序216监控服务器 的健康以确定为其分配客户机的请求的服务器106。在一些实施例中,如果设备200探测到 服务器106不可用或具有超过预定阈值的负载,则设备200可以将客户机请求指向或分配 到另一个服务器106。在一些实施例中,设备200充当域名服务(DNS)解析器或者以其他方式提供对来 自于客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS 请求。在一个实施例中,设备200响应具有设备200的IP地址或由设备200寄载的IP地 址的客户机的DNS请求。在该实施例中,客户机102把给域名的网络通信发送到设备200。 在另一个实施例中,设备200响应具有第二设备200'的IP地址或由第二设备200'寄载 的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)破译的访问控制表(ACLs)或弱的口 令,7)跨站点的脚本(XSS),8)命令注入,9) SQL注入,10)错误触发敏感信息泄漏,11)加密 技术的不安全使用,12)服务器误配置,13)后门和调试选择,14)web站点毁损,15)平台或 操作系统的脆弱点,以及16)零天攻击。在一个实施例中,对下列情况的一种或多种,应用 防火墙290以检查或分析网络通信的形式来提供HTML格式字段的保护1)返回所需的字 段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字 段的一致,以及5)格式字段最大长度强制。在一些实施例中,应用防火墙290确保cookies 不被修改。在其它实施例中,应用防火墙290通过强制实施合法URL来防止强制浏览。还是在其它实施例中,应用防火墙290保护在网络通信中包含的任一机密信息。 应用防火墙290可以根据引擎236的规则或策略来检查或分析任一网络通信以识别网络分 组的任一字段中的任一机密信息。在一些实施例中,应用防火墙290在网络通信中识别信 用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信 的编码部分可以包括这些出现或机密信息。在一个实施例中,根据这些出现,应用防火墙 290可以对网络通信采取策略行动,例如阻止网络通信的发送。在另一个实施例中,应用防 火墙290可以重写、移除或者以其他方式掩盖这样识别出的出现或机密信息。仍然参考图2B,设备200可以包括如上面结合图ID所讨论的性能监控代理197。 在一个实施例中,设备200从如图ID中所描述的监控业务198或监控服务器106中接收监控代理197。在一些实施例中,设备200在诸如磁盘的存储装置中保存监控代理197,以用 于递送给与设备200通信的任一客户机或服务器。例如,在一个实施例中,设备200在接收 到建立传输层连接的请求时发送监控代理197给客户机。在其它实施例中,设备200在建 立与客户机102的传输层连接时发送监控代理197。在另一个实施例中,设备200在拦截或 检测对web页面的请求时发送监控代理197给客户机。在又一个实施例中,设备200响应 于监控服务器198的请求来发送监控代理197到客户机或服务器。在一个实施例中,设备 200发送监控代理197到第二设备200'或设备205。在其它实施例中,设备200执行监控代理197。在一个实施例中,监控代理197测 量和监控在设备200上执行的任一应用、程序、进程、服务、任务或线程的性能。例如,监控 代理197可以监控和测量VSerVerS275A-275N的性能与操作。在另一个实施例中,监控代 理197测量和监控设备200的任一传输层连接的性能。在一些实施例中,监控代理197测 量和监控通过设备200的任一用户会话的性能。在一个实施例中,监控代理197测量和监 控通过设备200的诸如SSL VPN会话的任一虚拟专用网连接和/或会话的性能。在进一步 的实施例中,监控代理197测量和监控设备200的存储器、CPU和磁盘使用以及性能。在又 一个实施例中,监控代理197测量和监控诸如SSL卸载、连接池和多路复用、高速缓存以及 压缩的由设备200执行的任一加速技术288的性能。在一些实施例中,监控代理197测量 和监控由设备200执行的任一负载平衡和/或内容交换284的性能。在其它实施例中,监 控代理197测量和监控由设备200执行的应用防火墙290保护和处理的性能。C.免客户机虚拟专用网络环境现在参考图3A,描述了用于经由设备200或代理访问服务器的免客户机虚拟专用 网络(VPN)环境的实施例。总的来说,客户机102操作在计算装置100上并且执行通过用 户操作的浏览器。客户机102可以在第一网络104上,诸如公用网络。客户机102上的用 户可以经由浏览器来请求对于第二网络104’上的资源的访问,诸如企业的专用网络。设备 200为用户提供对于所请求资源的免客户机VPN访问。客户机可以不安装、执行或者以其他 方式执行被构建和/或设计来为网络104’提供VPN连接性(称为基于客户机的VPN)的代 理、部件、程序、驱动器或者应用。而是,设备或者代理可以重写来自服务器的响应和来自客 户机的请求以提供VPN功能,而不需要使用对在客户机上操作的的VPN代理。例如,设备可 以重写客户机和服务器之间的统一资源定位符(URL),诸如通过服务器对任一内容服务器 中的URL或者客户机传送的请求中的URL进行重写。设备200可以以对于客户机和服务器 的任一者或者两者透明并且无缝的方式重写服务器和客户机之间的URL。由此,客户机、浏 览器或者服务器和服务器应用不需要知晓或者了解免客户机SSL VPN访问方案。设备200可以经由之前描述的SSL VPN280模块来提供用于访问资源的功能。在一 个实施例中,设备200通过在用于和设备200通信的客户机102上提供、安装或者执行SSL VPN代理来提供基于客户机的对网络的访问。在一些实施例中,设备200提供对资源(诸如 http/https/文件共享)的免客户机SSL VPN访问,而不需要下载SSL VPN客户机或者代理 到客户机102。例如,用户可以期望从诸如处于机房的外部机器来访问公司内的资源,在该 外部机器上用户并没有特权来安装客户机或者不期望经历客户机安装过程。当装置(例如 市场上的新的PDA)不支持SSL VPN客户机而装置运行的是SSL使能的浏览器,则免客户机 SSL VPN特征也是有用的。在其他实施例中,设备200基于策略和任一策略规则、动作和/
28或条件来在对资源的基于客户机和免客户机SSL VPN访问之间选择用户。客户机可以包括任一类型和形式的用户代理,可以是浏览器、编辑器、网络爬虫程 序(web穿越自动机)或者任一其它终端用户工具或者程序。客户机102可以包括任一类 型和形式的浏览器。在一个实施例中,浏览器是Washingtong Redmond的微软公司制备的 任一版本的InternetExplorer(IE)。在另一个实施例中,浏览器是网景通信公司制备的任 一版本的网景浏览器。在其他实施例中,浏览器是称之为Firefox并且由California的 Mozilla Foundation提供的并目.在www, mozilla. com可以找到的仵一版本的开放源浏览 器。在又一个实施例中,浏览器是NorwayOslo的Opera Software ASA制备的称之为Opera 的任一版本的浏览器。在一些实施例中,客户机102执行或者包括任一类型或者形式的应 用或者程序,用于显示web页面、web内容、HTML、XML、CSS(层叠式样式表)、Java脚本或者 HTTP内容。在图3A描述的实施例的操作中,用户登入设备200提供的SSL VPN站点,诸如通 过设备200寄载的域名和IP地址。例如,用户经由客户机102的浏览器可以选择或者输入 URL到SSL VPN站点。设备200可以验证用户并且还可以进一步确定用户访问设备200或 者SSL VPN站点的授权。在成功验证之后,设备为客户机提供入口页面来经由浏览器显示给 用户。入口页面可以包括导航盒(navigation box),诸如一组一个或者多个用户接口元件 用于用户来选择操作或者运行应用。入口页面可以包括到用户可访问的其它页面或者URL 的链接。入口页面上的URL或者链接可以索引或者识别设备200提供的SSL VPN站点的主 机名或者IP地址。用户经由入口页面可以例如通过点击有效超链接或者URL来选择一个或者多个 URL。随之,浏览器或者客户机将请求传送给设备200寄载的域。例如,如图3A中描述的, 用户可以经由设备请求服务器106的应用“https://sslvpn· χ. com/cvpn/http/server. χ. com/app. cgi”。在一些实施例,用户发送另一个请求,诸如“https://proxy, χ. com/cvpn/ http/server. χ. com/app. cgi”。设备200从客户机102接收请求并且重写该请求以发送给 服务器。例如,如图3A中描述的,设备可以移除或者删除设备所寄载的域名诸如“sslvpn. x. com”或者“proxy, χ. com”并且将请求的剩余部分转发给服务器106。响应于该请求,服务器将内容发送给客户机。响应的内容或者体可以包括到服务 器的其他页面或者到网络104’上的其他服务器的嵌入式链接或者URL,诸如到“http:// server, χ. com/app. cgi ”的嵌入式链接。设备重写该首部和体来修改任一URL,以索引到SSL VPN站点的域名或者IP地址,使得经由客户机浏览器的任一其它URL或者链接选择将请求 发送给设备200。设备发送修改后的内容给客户机102。设备200诸如经由AppFw 290 (有 时称之为AppSecure模块290)可以设计并且构建为基于策略引擎的策略来重写请求和响 应的URL。该页面和在此SSL VPN会话期间从服务器随后接收的其他页面中的链接(URL) 由设备通过指向SSL VPN站点(VPNVIP 275)的链接和初始请求URL (绝对或者相对)编码 在该请求URL中的方式来进行修改。现在参考图3B,描述用于提供VPN访问以及cookie管理的VPN环境的另一个实施 例。总的来说,设备200可以包括用于处理如此处描述的基于免客户机和/或客户机的任 一 SSL VPN功能性的VPN模块280。设备和/或VPN模块280可以具有AAA模块来执行任 一类型和形式的验证、授权和审核(AAA)和/或跟综和管理VPN会话信息。AAA模块还可以
29执行任一类型或者形式的VPN会话查询来确定用于任一客户机请求的VPN会话。VPN模块 还可以执行URL译码并且将URL转换为服务器格式,诸如用来提交给专用网络上的服务器。 VPN模块280还包括经由VPN处理器函数、逻辑或者运算的DNS查询功能性和授权。设备可以包括用于保存、跟踪和管理客户机和服务器之间的cookie的cookie代 理或者cookie管理器。Cookie可以包括用于增加或者插入cookie以及移除cookie的 cookie存储装置,称之为cookie存储器(jar)。Cookie管理器或者代理可以包括在cookie 存储器中通过请求和/或响应的URL、域名或者其他信息来保存和查询cookie信息的功能、 逻辑或者运算。在一些实施例中,设备200代表不支持cookie、停用的cookie的客户机或 者对于期望或优选不发送cookie给客户机的情况中管理cookie。设备还可以包括AppFW 280,其在Citrix System公司制备的设备的情况下称为 AppSecure0 AppSecure 280模块可以包括用于执行任一类型和形式的内容重写,诸如URL 重写的逻辑、功能或运算。在一些实施例中,AppSecure 280模块执行到客户机和服务器 之间的请求和/或响应的任一类型和形式的内容注入。在一些实施例中,AppSecure模块 280将脚本插入到对客户机的响应中,诸如Java脚本,来执行任一类型和形式的期望的功 能性。用于免客户机SSL VPN访问的设备200的任一部件可以响应于配置或者通过配置 驱动,诸如经由策略引擎的任意一个或者多个策略。策略可以指导和确定通过VPN模块执 行的URL编码和译码的类型和形式。在一些实施例中,策略可以指导和确定cookie代理如 何并且何时管理和代理cookie。在其他实施例中,策略可以指导并且确定AppSecure模块 如何并且何时执行URL重写和/或内容注入。策略可以指导用户访问专用网络和专用网络 上的应用的方式。策略可根据访问方案配置,该访问方案可以包括基于用户、客户机的类型 和形式、网络的类型和形式、访问资源的类型、所使用应用的类型、暂时信息以及可以通过 设备经由传输到的网络业务量来确定的任一信息的任一组合的访问。参考图3B,讨论经由设备200用于免客户机SSL VPN访问的包流。响应于成功的 登入请求,VPN设备可以发送入口页面给登入请求的发送者。入口页面可以具有结合图3A 描述的“vpn编码格式”的一个或者多个链接。入口页面流经以下描述的响应码路径。当用 户点击入口页面中的任一 URL时,包流可以以多种方式并且使用多个步骤来执行。在一些 实施例中,对于步骤Ql的请求路径,设备200可以接收URL请求并且查询AAA模块中的VPN 会话。在步骤Q2,设备可以将VPN编码的URL译码为期望的URL用于服务器或者网络104’。 设备还可以将请求的首部(诸如首部值)修改为服务器格式或者意于通过服务器106传输 和使用的格式,诸如HTTP服务器。设备可以重新解析首部,使得设备的任一其它模块以服 务器格式查看该请求。在步骤Q3,在请求路径中,设备经由cookie管理器或者代理可以基 于URL的域和路径来查看用于该请求的cookie。在一些情况中,如果该请求包括cookie, 则该设备可以从cookie存储器插入cookie。在步骤Q4,设备可以经由设备的DNS查询功 能/模块来将以URL中的服务器的域名解析为服务器的IP地址。设备可以基于AAA模块 中的DNS查询来建立服务器信息。此外,可以评估授权策略来确定该请求是否可以传送给 服务器。在步骤Q5,设备可以将请求发送给服务器。在一些实施例中,只有在授权成功的情 况下,设备才将该请求发送给服务器。在从服务器经由设备到客户机的响应路径中,在步骤Si,设备可以接收来自服务
30器的响应。VPN模块280可以处理该响应。VPN模块可以将该响应首部传递到cookie代理 模块并且将响应的体传递到AppSecure模块。在步骤S2,cookie代理可以从响应的首部移 除未被配置或者以其它方式识别为客户机所消耗cookie的cookie并且将它们保存在当前 会话所使用的cookie存储器中。在步骤S3,AppSeCUre模块可以根据重写策略来重写“vpn 编码形式”的任一 URL。AppSecure模块还可以将任一脚本插入响应体中,诸如要在客户机 侧执行的Java脚本代码。在步骤S4,设备可以发送修改后的响应给客户机。在许多实施例 中,任一个Q或者S步骤以任一顺序或者以与此处所描述的任一其它步骤或者实施例的任 一组合进行。D、用干细粒度策略驱动的cookie代理的系统和方法Cookie可以用来维持网络上两个实体之间的前一事件、事务或者通信的系统或者 存储器的状态。在一些情况中,cookie可以用于多种类型的会话跟踪。Cookie管理可以认 为是网络装置的特征,诸如中间设备200的特征,并且可以提供一种在建立、利用或者控制 在服务器106和客户机102之间传输的cookie方面管理服务器106或者客户机102的方 法。此处描述的中间设备的实施例提供管理客户机和服务器的cookie的方法。在一些实 施例中,中间设备在服务器侧管理服务器消耗的cookie而不发送cookie给客户机浏览器。图4A、4B和图4C示出用于cookie代理的系统和方法。图4A描述用于在免客户 机SSL VPN环境的实施例中管理cookie的系统和方法的实施例。图4B示出用于包括SSL VPN免客户机访问方案的cookie管理的方法的实施例的时序图和步骤。图4C描写中间设 备使用诸如唯一的客户机ID的唯一标识符来进行cookie代理的实施例。这些示出的实例 可以涉及用于执行cookie管理的系统和方法的多个实施例,诸如免客户机cookie管理。免客户机cookie管理可以使得驻留在不安全网络中的web客户机访问寄载在安 全网络之后的web应用,而不会损害安全网络的安全性。例如,免客户机cookie管理可以 通过移除服务器消耗的cookie数据来改进所传输信息的安全性。免客户机cookie管理可 以使得服务器消耗的cookie数据不传输到客户机并且禁止对可包括在cookie中的任一敏 感信息的访问。此外,免客户机cookie管理可以使得不支持cookie的诸如PDA和WAP浏 览器的web浏览器可以和要求cookie的服务器上的web应用一起运行。进一步,在所使用 的web应用和cookie路径重写不兼容的例子中,免客户机cookie管理通过重写cookie路 径可以提供允许这样的应用工作的服务。现在参考图4A,示出经由中间设备200来执行SSL VPN免客户机cookie管理的系 统和方法的实施例。图4A描述经由中间设备200和服务器106通信的客户机102。中间 设备200包括策略引擎236和cookie管理器420。客户机102发送请求给中间设备200, 诸如意图发往服务器106的HTTP(超文本传输协议)请求。该请求包括可以识别保存在服 务器106上或者以其他方式从服务器106可用的服务或者资源的URL(统一资源定位符)。 Cookie管理器420接收该请求并且使用策略引擎236产生和客户机102相关联的cookie。 所产生的cookie可以满足服务器106的任一优先设置或者配置,因此使得初始的无cookie 的请求可被服务器106接受并且处理。Cookie管理器420修改该请求来包括cookie并且 将该修改后的请求转发给服务器106。服务器106发出针对该请求的响应,并且将该响应 使用通过cookie管理器420产生的cookie传送给中间设备200。Cookie管理器420通过 移除该cookie来修改该响应。修改后的响应随后传输给客户机102。服务器106和客户
31机102还可以使用cookie来发送附加的请求和响应,因此允许无cookie的客户机102来 存取cookie配置的服务器106上的资源。Cookie管理器420可以是产生、终止、修改或者管理cookie的任一装置、部件、单 元、函数或者设备。Cookie管理器420还可以修改客户机102的请求和服务器106的响应。 Cookie管理器420可以包括管理和控制cookie的硬件、软件或者硬件和软件部件的任一组 合。Cookie管理器420可以包括用来控制、管理或者修改客户机102和服务器106之间的 传输信息的逻辑、控制函数、处理电路、软件程序、算法和脚本。在多个实施例中,cookie管 理器420包括在管理cookie和提供对客户机102和服务器106之间的通信的控制的过程 期间所使用的策略。在一些实施例中,Cookie管理器420可以唯一地识别网络上的用户,例如通过使 用配置的策略来提供唯一的标识符,配置的策略诸如策略引擎236的引擎。唯一的标识符 可以是唯一标识网络上客户机102、服务器106或者设备200的任一数据、值或者数据集、数 字集或者字符集。在一些实施例中,Cookie管理器420可利用唯一标识符来将来自服务器 106的接收的响应关联到响应发往的特定的客户机102。Cookie管理器420可以包括任一 功能性来使用cookie和客户机标识符修改响应,使得客户机102以期望格式接收响应。类 似地,Cookie管理器420可以包括任一功能性来使用客户机唯一标识符和为客户机所产生 的cookie修改特定客户机102的请求,以包括特定的cookie来访问服务器106上的资源。Cookie管理器420可以修改或者改变通过服务器106或客户机102发送的任一 传输。在一些实施例中,Cookie管理器420使用策略引擎236中的一个或者多个用来处理 cookie的策略来修改客户机102和服务器106之间的传输。Cookie管理器420可以修改 传输以包括或者排除cookie和唯一的客户机标识符。在一些实施例中,Cookie管理器420 为请求访问任一服务器106的任意客户机102产生cookie。Cookie管理器420可以响应 于策略为客户机102产生cookie。在一些实施例中,Cookie管理器可以响应于策略确定不 应该允许特定的客户机有cookie。在其他实施例中,Cookie管理器420响应于策略确定 特定的唯一客户机标识符应该和客户机102相关联。在进一步的实施例中,Cookie管理器 420响应于策略来确定为请求产生的cookie的类型和形式。在又一个实施例中,Cookie管 理器响应于策略来确定是否或者如何保存cookie以用于客户机的未来请求。在一些实施例中,Cookie管理器从请求或者响应消除或者删除cookie。Cookie 管理器可以分配或者重新分配cookie给客户机102或者服务器106。仍在另一个实施例 中,Cookie管理器420改变、修改或者重写来自客户机102的请求或者来自服务器106的 响应的cookie。Cookie管理器420可将唯一识别客户机的值、名称或者唯一客户机标识符 匹配到和客户机、服务器或者中间设备200相关的cookie或者cookie的一部分。在一些 实施例中,Cookie管理器420可以将和唯一客户机标识符相关的cookie增加到URL。在进 一步的实施例中,Cookie管理器420可以移除唯一的客户机标识符并且代以增加和唯一客 户机标识符相关的cookie。在多个实施例中,Cookie管理器420可以使用唯一标识符代替 cookie,有时也称为唯一识别客户机102或者服务器106的唯一的ID。Cookie管理器420可以使用解析器用来解析传输。Cookie管理器420还可以使 用内部映射表用于将涉及多个客户机、服务器或者设备200的多个唯一标识符匹配到涉及 客户机、服务器或者设备的多个cookie。例如,Cookie管理器420可以使用包括和一个或者多个cookie相关的唯一标识符的映射图,用于将通过唯一标识符唯一标识的客户机102 和一个或者多个cookie匹配。在这样的情况中,Cookie管理器420可以使用匹配到唯一客 户机标识符的一个或者多个cookie来修改、改变或者编辑来自客户机的请求或者到客户 机的响应。在需要遵从接收装置即接收传输的客户机102或者服务器106的配置或者优先 设置时,Cookie管理器420可以利用策略通过管理、增加或者移除来自或者去往客户机102 和服务器106的传输的cookie和唯一客户机标识符来管理客户机102和服务器106之间 的传输。分号定界的客户机列表(semi-colon client delimited list)可以是包括和与 一个或者多个服务器106经由中间设备200通信的客户机102相关的信息的cookie列表的 任一映射表、列表、数据库或者文件。此处分号定界的客户机列表还可以互换地称为内部映 射表或者cookie列表或者映射表。在一些实施例中,分号定界的客户机列表包括可用于代 替用于上行通信即发往服务器106的通信或者下行通信即发往客户机102的通信的cookie 的cookie和值或者唯一标识符的名称值对。有时,Cookie管理器420可以使用客户机消 耗的cookie和/或客户机和服务器消耗的cookie的分号定界的列表来将一个或多个客户 机102的值或者唯一标识符链接、匹配或者关联到和客户机相关的每一个cookie。通过使 用分号定界的列表,Cookie管理器420可以确定哪一个cookie重新注入、增加或者包括到 下行或者上行传输中。Cookie管理器420可以使用cookie的映射表或者列表来将来自通 过中间设备200接收的传输的cookie匹配到传输所要发送的客户机102。Cookie管理器 420随后可以编辑或者修改传输来排除cookie并且代以包括和客户机102相关的任一其他 信息。类似地,Cookie管理器420可以使用cookie的映射表或者列表来将唯一客户机标 识符匹配到要包括到传输中的cookie。在一些实例中,通过开始服务器侧cookie管理并且不指定分号定界的列表,web 应用会可能不正确地运行。使用该分号定界的列表可以消除在cookie管理器420滤除服 务器106处的客户机消耗的cookie时产生的错误。使用该分号定界的列表还可以消除在 web应用尝试访问导致不期望行为的客户机102上的cookie值时产生的错误。在多个实施 例中,定界的客户机cookie列表,或者列表可以包括用于服务器侧或者客户机侧cookie管 理的多种开启/关断设置。在一些实施例中,定界的客户机cookie列表可以保存在任意个 数据层中或者多个表中,该表包括用于该方法或者过程的每一步骤的任一变量的设置和配 置。Cookie可以通过类型或者特征来分类。cookie管理器420可以通过和cookie关 联的唯一标识符来将cookie分类或者分选。服务器消耗的cookie可以是通过诸如服务器 106的资源设置的cookie,在响应上发布Set-Cookie。服务器消耗的cookie值可以通过任 一客户机侧代码检查或者可以不检查。在某些实施例中,cookie管理器420可以将服务器 消耗的cookie识别或者分类为服务器消耗的cookie。在多个实施例中,cookie管理器420 可以从请求或者响应的下行传输中移除服务器消耗的cookie并且将它们重新注入和该请 求或者响应相关的上行传输中。在其他实施例中,服务器消耗的cookie可以和有关会话的 秘密或者敏感数据相关联。在一些实施例中,服务器消耗的cookie可以通过cookie管理 器420来管理并且不可以发送到web浏览器。在某些实施例中,服务器消耗的cookie可以 从发送到web浏览器的消息剥离并且可以保存在cookie管理器420或者和cookie管理器420相关的任一存储装置。客户机消耗的Cookie可以是通过客户机102的web浏览器经由诸如Java脚本的 脚本设置在上行传输上的Cookie。在一些实施例中,客户机消耗的Cookie是设置在从源起 始的下行传输上的cookie,其中该源可以是客户机102、服务器106或设备200。在多个实 施例中,客户机消耗的Cookie可以通过客户机102或者中间设备200来检查或者修改。在 一些实施例中,客户机消耗的Cookie不通过服务器106检查或者修改。服务器106可以仅 按原样接收请求,并且依赖于中间设备200来对该请求提供修改。类似地,客户机102也不 能修改响应,而是可以依赖于中间设备200来修改该响应。在一些实施例中,客户机消耗的 Cookie通过服务器106来检查、编辑或者修改。在进一步的实施例中,客户机消耗的Cookie 不通过cookie管理器420来管理,而是下行发送到客户机102的web浏览器。有时,客户 机消耗的Cookie和服务器消耗的cookie通过客户机102和服务器106 二者来读出、修改 和产生。在一些实施例中,cookie管理器420不能管理客户机或服务器消耗的cookie,并 且客户机和服务器消耗的C00kie可以下行发送到客户机102的web浏览器。在一些实施 例中,客户机102可以执行服务器106的功能性,并且相反亦然。在其他实施例中,客户机 102可以互换使用来替代服务器106,服务器106也可以互换使用来替代客户机102。在一 些实施例中,客户机或者服务器消耗的cookie可以被使用、修改、读、写或者传输来自或者 去往客户机102、服务器106或者中间设备200的任一个。在许多实施例中,服务器消耗的 cookie包括客户机消耗的cookie的所有功能性,并且以相同方式和通过如任一客户机消 耗的cookie —样的相同部件来处理、修改、控制或者以其他方式使用。有时,所有的cookie 可以是服务器消耗的cookie。服务器消耗的cookie可以通过服务器来使用、读出或者编 辑。在进一步的实施例中,一些服务器消耗的cookie还可以是客户机消耗的cookie。客 户机消耗的cookie可以通过客户机使用、读出或者编辑以及通过服务器来使用、读出或者 编辑。在一些实施例中,服务器和客户机消耗的cookie通过中间设备200来使用、编辑、读 出、写入或者修改。有时在一些实施例中,一些cookie通过客户机而不通过服务器来使用。上行或者下行通信可以用来指示通信的方向。例如,有时上行请求通信或者上行 方向可以和从客户机102到服务器106的通信或者事务相关。在一些实施例中,上行请求 通信或者上行方向可以和从服务器106到客户机102的通信或者事务相关。在多个实施例 中,下行请求通信或者下行方向在一些实施例中可以和从客户机102到服务器106的通信、 事务或者方向相关。在多数实施例中,下行请求通信或者下行方向可以和从服务器106到 客户机102的通信或者事务相关。有时,朝向服务器的事务或者通信可以称为上行事务或 者上行通信并且朝向客户机的事务或者通信可以称为下行事务或者下行通信。进一步参考图4A,示出用于执行免客户机cookie管理的实施例的方法的步骤。在 步骤1,客户机102通过中间设备200发送请求给服务器106。该请求包括URL请求,诸如 中间设备200提供的URL,例如http://abc. com/dir/index. asp。在步骤2,中间设备200 和cookie管理器420通信,该cookie管理器420比较URL提供的域名和路径的cookie内 部映射图和输入请求URL。如果cookie管理器检测到输入请求URL和内部映射图中可用的 cookie之间的任一匹配,则从cookie管理器返回名称值对的阵列给中间设备。在步骤3, 中间设备将修改的请求转发给服务器106。在一些实施例中,请求还可以称之为HTTP请求, 并且修改后的请求可以称之为修改后的HTTP请求。该请求可以被修改为包括来自cookie
34管理器420的一个或者多个cookie。如图4A中所示,在步骤3中发送的消息包括分配给 cookie的等于25的值。在步骤4,服务器以包括首部和体的响应来响应该请求,诸如HTTP 首部和内容体。该响应可以包括通过Set-cookie HTTP首部限定的多个cookie定义。进一 步的例子,来自服务器的响应包括设为25的Set-cookie值。中间设备可以在步骤5访问 cookie管理器420,而将来自响应的cookie值传递到cookie管理器。Cookie管理器420 检查所接收值是否是新的或者对于给定URL是否更新,并且在输入映射图上执行任一必要 的更新。Cookie管理器420还检查客户机消耗的cookie是否应该返回给中间设备,用于 web浏览器消耗。在步骤6,中间设备将来自服务器的响应发送给客户机102的web浏览器, 服务器消耗的cookie从该响应的首部移除,增加客户机消耗的cookie到首部。在进一步的细节中,图4A描述客户机102通过发送第一请求给中间设备200来初 始化具有发往服务器106的第一请求的通信。图4A中的箭头1标示发往中间设备200的 第一请求httD://abc. com/dir/index. asp的传输。在一些实施例中,第一请求通过服务器 106、中间设备200或者网络104上的任一其它装置来发送。第一请求可以包括或者可以不 包括cookie。在一些实施例中,第一请求包括URL或者HTTP请求。在进一步的实施例中, 第一请求包括对保存在服务器106上的资源的路径。在进一步的实施例中,第一请求包括 唯一识别网络上通信的所有装置之中的客户机102的唯一标识符。在又一个实施例中,第 一请求包括唯一识别客户机102上的会话的唯一标识符。在进一步实施例中,第一请求包 括唯一识别客户机102上用户的唯一标识符。在一些实施例中,传送第一请求的客户机102 未配置cookie并且不传送cookie。在其他实施例中,传送第一请求的客户机使用并不安全 或不期望传输敏感信息的网络或者连接。如图4A的箭头2所示,中间设备200接收第一请求并且将其转发给cookie管理器 420。在一些实施例中,中间设备200响应于所接收的第一请求来初始化或激活cookie管 理器420。在其他实施例中,中间设备200响应于识别到客户机102满足用于激活cookie 管理器420的一组预设条件来初始化或者激活cookie管理器。该组预设条件可以包括和 客户机102、客户机102上的会话或者客户机102上的用户相关的任一判定。该判定可以通 过中间设备200、客户机102、服务器106或者网络104上的任一其它部件或者装置来做出。 在一些实施例中,判定通过策略引擎236来做出。在一些实施例中,该组预设条件包括该请 求来自不支持cookie的客户机102的判定。在进一步的实施例中,该组预设条件包括客户 机102使用不安全的会话或者连接的判定。在又一个实施例中,该组预设条件包括客户机 使用不安全网络的判定。在进一步的实施例中,该组预设条件包括客户机102可以访问通 过第一请求来请求的服务器106上的所请求资源或者服务的判定。中间设备200可以激活或者初始化cookie管理器420用来根据cookie的内部映 射表来检查或者匹配所接收的请求URL。Cookie的内部映射图也称为cookie的映射图、列 表或者分号定界的列表。在一些实施例中,策略引擎236的策略根据cookie的内部映射图 匹配第一请求的一部分。该映射图包括任一数量的cookie,每一个cookie可以和任一数量 的客户机102、服务器106或者设备200相关联、连接或者配对。在一些实施例中,cookie 管理器420检查或者匹配所接收的请求URL到保存在映射图中的消息的路径或者域。在一 些实施例中,策略引擎236的策略将涉及客户机102的信息匹配到保存在映射图中的消息 的路径或者域。消息的路径或者域可以将第一请求的URL或者一部分或者任一部分匹配到
35用于客户机102的一个或者多个cookie。在一些实施例中,cookie管理器420或者策略检 测或者确定第一请求的一部分和与客户机102或者服务器106相关的一个或者多个cookie 或者唯一标识符之间的匹配。在一些实施例中,cookie管理器420或者策略引擎236的策 略检测或确定第一请求的一部分和一个或者多个名称值对或者值名称对之间的匹配。Cookie管理器420可以响应于在所接收请求的一部分和cookie或者来自cookie 的内部映射图的一个或者多个cookie之间做出的匹配来产生、提供或返回一个或者多个 名称值对。可以通过策略引擎236的策略做出所接收的请求的一部分和cookie或者来自 cookie的内部映射图的一个或者多个cookie之间的匹配。在一些实例中,cookie管理器 420响应于来自客户机102的请求或者服务器106对于该请求的响应匹配来自映射图的任 一 cookie或者唯一标识符的确定来返回一个或者多个名称值对。在一些实施例中,cookie 管理器420可以将cookie的一部份匹配到来自所接收请求或者对所接收请求的响应的URL 的一部分。Cookie管理器420可以将匹配的cookie分配给第一请求。在一些实施例中, cookie管理器420可以修改第一请求来包括所匹配的cookie。在一些实施例中,cookie管 理器420在未作出匹配时产生用于客户机102或者服务器106的cookie。在一些实施例中, cookie管理器为第一请求的客户机102产生cookie并且将该cookie分配给客户机102。 所产生的cookie可以包括cookie的值。Cookie的值可以是将cookie唯一关联到cookie 映射表中的客户机102的唯一值。Cookie管理器可以使用cookie值来将输入响应和从服 务器106到客户机102的第一请求关联。Cookie管理器可以给客户机102分配cookie以 用于从客户机102到服务器106的第一请求或者任一其它进一步请求。Cookie管理器420 或者中间设备200的任一其它部分可以重写、修改、格式化或者改变诸如第一请求的所接 收的请求,来包括匹配或者产生的cookie或者满足通过服务器106接收的请求的任一格式 或者内容需求。继续参考图4A,箭头3表示设备200把通过cookie管理器420处理的第一请求 发送到服务器106的步骤。所传送的第一请求可以被修改。在一些实施例中,该请求通 过cookie管理器420或者设备200来修改。通过中间设备200传送的请求可以包括来自 cookie管理器420的一个或者多个cookie。在一些实施例中,所修改的请求包括cookie管 理器420可用来关联该请求到客户机102的cookie的值。已经通过设备200或者cookie 管理器420修改或者改变的请求可以称之为修改的请求。服务器106可以以用于通过服务 器106处理的请求的优先设置或者配置相符的格式来接收修改的请求。服务器106可以接 收修改的请求并且确定所接收的修改的请求是合法请求。箭头4示出服务器106传送或者发出对于修改的请求的响应的步骤。所发布的响 应可以包括客户机102已经请求的任一信息、服务或者资源。在一些实施例中,发送的响 应包括web页面。在其他实施例中,所发送的响应包括文件。在进一步的实施例中,所发 送的响应包括应用或者计算机软件程序。在进一步的实施例中,所发送的响应包括用于建 立与客户机102的会话的消息或者验证或者授权消息。来自服务器106的响应可以包括 用来唯一识别响应所发往的客户机102的cookie的值。来自服务器的响应可以包括首部 和内容体,其每一个可以包括以下任一个一个或者多个cookie、一个或者多个cookie限 定、一个或者多个cookie的组件或者部分、和涉及cookie或者和cookie关联的信息或者 值。在一些实施例中,cookie限定通过“Set-cookie”或者“Set-C00kie2” HTTP首部设置。"Set-cookie” 或者 “Set-cookie2” HTTP 首部在此处可称为 Set-cookie。箭头5示出中间设备200和cookie管理器420通信并且修改对于第一请求的响应 的步骤。在许多实施例中,中间设备200将来自服务器106的响应的一个或者多个cookie 值或者唯一客户机标识符传送给cookie客户机420。在许多实施例中,中间设备200将来 自服务器的响应的一个或者多个cookie传送给cookie客户机420。中间设备200可以激 活或者初始化cookie管理器420用来根据cookie的映射表或者列表来检查或者匹配来自 响应的URL。中间设备200可以修改或者编辑服务器的响应来包括和响应的一部分匹配的 cookie。在一些实施例中,cookie管理器420可以检查或者匹配URL、响应的首部或者任一 其它部分到保存在映射表中的消息的路径、域、cookie或者cookie的一部分。在这样的实 例中,如果响应的一部分的任一 cookie或者唯一标识符和与客户机102相关联的保存信息 相匹配,则中间设备200可以修改或者编辑该响应来如期望地在响应中包括客户机102的 cookie或者和客户机102相关联的任一其它信息。在cookie管理器420检测到来自请求 或者响应的URL之间的匹配的情况中,来自cookie列表或者内部映射表的一个或者多个 cookie、一个或者多个名称值对、或者值名称对可以返回到中间设备200。在一些实施例中, 策略引擎236的策略将响应的一部分和一个或者多个cookie或者唯一标识符相匹配。有 时,cookie管理器420响应于响应的一部分和cookie或者唯一标识符之间的匹配来返回名 称值对的阵列。在一些实施例中,cookie管理器420可以将cookie的一部分匹配到来自所 接收请求的URL的一部分。在多个实施例中,cookie管理器420将cookie的一部分匹配 到所接收的请求的任一部分,诸如请求的URL、体、或者首部。在一些实施例中,如果cookie 管理器420未将对该请求的所接收响应的一部分匹配到任一 cookie或者任一唯一标识符, cookie管理器420产生新的cookie或者新的唯一标识符或二者并且将其一个/ 二者分配 给客户机102或者服务器106。Cookie管理器420可以使用新产生的cookie来修改服务 器106对第一请求的响应。用于客户机或者服务器的这样的新的cookie和唯一标识符可 以用于相同客户机或者服务器106的任意未来的请求或者响应。在一些实施例中,cookie 管理器420确定有客户机102的请求或者服务器106的响应的新的或者更新的cookie值, 并且进一步相应更新映射图或者数据库。此外,cookie管理器420还可以确定客户机102 所消耗的cookie是否应该返回到中间设备200,用于web浏览器消耗。仍旧参考图4A,箭头6示出中间设备200经由下行响应来发送或者转发修改的响 应给客户机102的步骤。在一些实例中,下行响应可以称为从服务器106经由中间设备200 朝向客户机102的传输。类似地,上行通信可以是从客户机102经由中间设备200朝向服 务器106的任一通信。在一些实施例中,修改后的响应不包括任一 cookie。在进一步的实 施例中,修改后的响应包括通过cookie管理器420用来将和cookie相关的一个或者多个 客户机102关联到客户机102的唯一客户机标识符。在进一步的实施例中,修改的响应包 括客户机102接受或者所期望的任一格式。从中间设备200到客户机102的修改的响应 可以包括从响应移除的服务器消耗的cookie。在一些实施例中,所转发的修改的响应可以 包括重新增加到响应的首部或者任一其它部分的客户机消耗的cookie。在许多实施例中, 从中间设备200到客户机102的修改的响应包括来自服务器的响应,该响应被修改以排除 cookie管理器420中和客户机102相关的cookie。Cookie管理,诸如通过cookie管理器420的cookie管理,可以导致或者提供通过
37客户机102使用的并且通过服务器106提供的服务、资源或者应用,来在相同的cookie域 名空间中运行或者提供。中间设备200可以提供客户机侧cookie管理或者服务器侧cookie 管理来增加在客户机102和服务器106之间传送的cookie的安全性。Cookie管理,诸如客 户机侧cookie管理,可以消除HTTP协议限制的约束,诸如允许来自每单个客户机的单个源 的cookie的最大数量。例如,在仅允许客户机每个会话20个cookie的系统中,通过中间 设备200的cookie管理器420的cookie管理可以使得客户机能够通过重新使用和客户机 相关并且保存在cookie管理器420中的cookie来消除这样的限制。使用客户机侧cookie 管理,在这样的例子中,可以使得客户机102即使在每会话20个cookie限制会影响提供给 客户机的服务时能够继续和服务器106相通信。在此情况中,拦截并且转发客户机和服务 器之间的通信的中间设备200可以管理、修改、重写或者编辑请求或者响应的部分并且使 用和客户机或者服务器相关的cookie,因此即使在超过20个的cookie被传输之后也可以 进行通信。Cookie管理器420或者中间设备200执行的免客户机cookie管理可以包括重写 发送给客户机102或者服务器106的下行cookie首部上的cookie路径。在一些实施例 中,cookie管理器420或者中间设备200将来自客户机102或者服务器106的响应或者请 求转发给所期望的目标,而没有对其改变或者修改。在其他实施例中,通过cookie管理器 420执行的免客户机cookie管理可以包括经由中间设备200的状态管理。Cookie管理器 420可以由中间设备激活,用来检查上行请求以发现应该注入到发往服务器106的流或者 通信中的服务器cookie。来自下行通信的响应可以保持在cookie管理器中,该响应意图被 修改使得它们没有cookie。现在参考图4B,描述用于免客户机cookie管理的方法的步骤的实施例的序列图。 总的来说,图4B示出经由设备200和cookie管理器420和服务器106的web应用通信的 客户机102的浏览器。客户机102发送HTTP请求到设备200,设备200在此处还被称为中 间设备200。中间设备200处理该请求并且使用cookie管理器420来检查cookie。Cookie 管理器420将和该请求相关的cookie返回给中间设备200。中间设备200修改HTTP请求 的首部来包括这些cookie并且将修改的HTTP请求发送到服务器106。服务器106返回对 HTTP请求的HTTP响应。中间设备200发送来自HTTP响应的任一 cookie给cookie管理器 420,以增加到用来将客户机102的所有cookie关联到客户机102的映射图。中间设备200 修改该响应以将cookie从HTTP响应移除并且使用cookie管理器420来进一步将任一客 户机102相关的cookie增加到HTTP响应。中间设备200将修改的HTTP响应传送到客户 机 102。进一步总的来说,图4B示出客户机102发送请求给中间设备200,此处也称为代 理。该请求可以是访问由服务器106提供的任一资源或者任一服务的任一请求。在一些实 施例中,该请求是访问web页面或者web站点相关的服务的HTTP请求。在其他实施例中,该 请求是建立和服务器106的连接的请求。在进一步的实施例中,该请求是建立和服务器106 的会话的请求。在进一步的实施例中,该请求是使用服务器106提供的应用的请求。在又 一个实施例中,该请求是访问流文件的请求,诸如音频或者视频文件。在又一个实施例中, 该访问是对安全文档的访问。该请求可以包括多个请求。中间设备200可以处理所接收的请求并且使用cookie管理器420来检查cookie。中间设备可以处理该请求并且建立客户机102所包括的cookie(如果有的话)。处理该请 求还可以包括建立唯一客户机标识符来识别和客户机102的任一其它通信。中间设备200 可以处理该请求并且将其转发给cookie管理器420。在一些实施例中,中间设备200将请 求的一部分转发给cookie管理器420。在一些实施例中,cookie管理器420使用一个或 者多个映射图来将诸如客户机的唯一标识符的客户机102关联信息关联或联系到用于由 客户机102至服务器106的通信的cookie。类似地,cookie管理器420的映射图可以用 来将任一客户机102侧cookie关联到服务器106侧cookie,客户机102使用该客户机侧 cookie用于和服务器106的通信。在一些实施例中,来自请求的唯一标识符被匹配到映射 表中的名称值对或者cookie。Cookie可以经由cookie管理器420的映射图和客户机102 相关联。如果用于客户机102的新的cookie在cookie管理器420的映射图中不是已经存 在,则Cookie管理器420可以建立这样的cookie。在一些实施例中,当中间设备200处理每个请求或者响应时,中间设备200检查 所处理的传输中的URL是否是支持服务器侧cookie管理。中间设备200可以调用诸如 ProcessRequest ()的cookie管理器相关的函数来进行请求处理。Cookie管理器420还可 以检查内部映射图,其可以是cookie管理器映射图或者cookie管理器列表,用来帮助确 定是否存在需要增加到上行请求的任一输入cookie。Cookie管理器420还可以在映射图 内部记录在会话中第一次遇到的所有cookie用于未来的请求。Cookie管理器还可以确保 该系统不发送特定的cookie,诸如设备200相关的cookie,到寄载的web应用,诸如NSC_ AAAC0在一些实施例中,诸如ProcessRequestO函数的函数可以内部调用另一个函数,诸 如 FilterCookiesO。在一些实施例中,FilterCookiesO 可以调用 ProcessRequest ()。 在一些实施例中,两组值可以称之为Citrix. Fei. ClientCookies和Citrix. Fei. ServerCookiesο cookie 管理器 420 可以使用 Citrix. Fei. ClientCookies 和 Citrix. Fei. ServerCookies来建立分号定界的列表或者内部cookie管理器映射图,此处称为cookie管 理器列表或者映射图。该映射图可用在cookie管理的决策制定过程期间使用。Cookie管 理器420可以将cookie管理器420中的cookie管理器映射图项目串行组织为两个会话值, Citrix. Fei. ClientCookies 禾口 Citrix. Fei. ServerCookies。cookie 管理器 420 还可以使 用该两个值来继续该会话或者将该会话关联到客户机102或者服务器106,用于任一未来 的传输信息。如果cookie管理器420将客户机102的该请求匹配到映射图中的cookie或 者多个cookie,则cookie管理器420可以将该cookie或者该多个cookie传送到设备200。中间设备200可以修改HTTP请求的首部并且将修改的HTTP请求传送给服务器 106。在一些实施例中,cookie管理器420修改该请求来包括和客户机102相关联的cookie 或者多个cookie。在一些实施例中,cookei管理器420修改请求的一部分,诸如URL或者 首部,来包括识别cookie的值或者一组值或者字符。在一些实施例中,cookie管理器420 修改该请求来包括或者增加和客户机102相关联的cookie的一部分。在其他实施例中, cookie管理器420修改该请求来包括或者增加和客户机102相关联的唯一标识符。在进一 步的实施例中,cookie管理器420修改该请求来从客户机的该请求来排除或者移除cookie 或者唯一标识符。在一些实施例中,中间设备200的任一部件修改该请求来包括cookie管 理器420提供的cookie或者多个cookie。中间设备200可以执行针对该请求的任一数量的修改。在一些实施例中,中间设
39备200使用一个或者多个cookie的一个或者多个部分来覆盖该请求的一部分。在其他实 施例中,中间设备200将一个或者多个cookie的一部分或者一个或者多个cookie的多个 部分增加到该请求。仍在进一步的实施例中,中间设备200修改该请求中的cookie。中间 设备200可以改变该cookie中的一个或者多个值或者字符,或者以其他方式修改该cookie 以通过服务器106可以接受。在又一个实施例中,中间设备200对该请求的一部分进行解 密。在进一步的实施例中,中间设备200修改该请求来包括服务器106的任一配置相关的 优先设置或者需求。修改的请求可以被改变,使得其可以通过服务器106来处理。中间设 备200可以将该修改的请求传送给服务器106。服务器106可以处理该修改的请求,并且随之将对该请求的响应传送给中间设备 200。在一些实施例中,对该请求的响应包括HTTP传输。在进一步的实施例中,该响应包 括web页面。在又一个实施例中,该响应包括客户机102所请求的文件。在进一步的实施 例中,该响应包括验证服务器106上的客户机102的验证消息。在又一个实施例中,该响应 包括用于启动或者打开客户机102和服务器106之间的会话或连接的传输。在进一步的实 施例中,该响应包括可执行文件、程序、函数、数据、流文件或者服务器106所提供的任一其 它资源或者服务。在一些实施例中,服务器106将对于该请求的多个响应传送给中间设备 200。中间设备200可以将来自HTTP响应的任一 cookie发送给cookie管理器420,以增 加到cookie管理器420的映射图上。增加到cookie管理器的映射图的任一新的cookie可 以用于在客户机102和服务器106之间的未来的传输。在一些实施例中,中间设备修改该回 复以将cookie从回复排除。在其他实施例中,中间设备从回复中取出cookie并且将cookie 传送给cookie管理器420。Cookie管理器420可以将所接收的cookie和已经保存在映射 图中的cookie相比较。在一些实施例中,cookie管理器420响应于确定所接收的cookie 没有之前保存在和客户机102或者服务器106相关的映射图来保存所接收的cookie。所 保存的cookie可以之后用于同一客户机102的通信。在一些实施例中,到cookie管理器 420的传输包括涉及客户机102、服务器106或者客户机102和服务器106 二者的任意数量 个cookie、或者一部分、cookie或者唯一客户机标识符。中间设备200修改该响应来将cookie从HTTP响应移除。中间设备还可以使用 cookie管理器420来增加任一客户机102相关的cookie到HTTP响应,如果这样的cookie 存在或者是必要的。在一些实施例中,中间设备修改、编辑或者改变该响应来排除任一服务 器106cOOkie。在进一步的实施例中,中间设备200修改该响应来使用客户机102cOOkie来 替代服务器106cOOkie。在又一个实施例中,中间设备200修改该响应来满足客户机102的 格式、配置或者优先设置,使得修改的响应可以由客户机102接受或者使用。当处理每个响 应或者请求时,中间设备200可以确定服务器侧cookie管理或者客户机侧cookie管理是 否可用。在一些实施例中,当服务器侧cookie管理可用时,中间设备200可以调用函数,诸 如cookie管理器420函数ProcessRequest ()。在多个实施例中,当客户机侧cookie管理可 用时,中间设备200可以调用cookie管理器420函数ProcessRequestO或者执行cookie 或者唯一标识符管理或内部cookie映射图管理的另一个函数。Cookie管理器420可以检查 来自接收的响应或者请求的cookie,查找服务器或者客户机消耗的cookie。在一些实施例 中,cookie管理器将从请求或者响应接收的cookie和在映射图中保存或者列出的cookie
40匹配。Cookie管理器420还可以增加名称值对,如果这样的cookie或者客户机标识符没有 之前注册、列在或者分配到映射图中,还需要在映射图中注册或者分配新的cookie或者新 的客户机标识符。Cookie管理器420可以因此将新的客户机标识符或者新的cookie增加 到映射图中,该新的客户机标识符或者新的cookie可以用在未来和与这样的cookie或者 唯一标识符相关的客户机和服务器的通信。在多个实施例中,cookie或者Set-cookie首 部可以在发送返回中间设备200时从该响应移除。通过禁止服务器消耗的cookie发送到 客户机,系统可以将给定域的多个cookie扩展到超过预定限制的数量。在将cookie数量 限制到最大20的系统中,该特征可以用于使得客户机102能够持续使用服务器106上的服 务,而不会达到cookie最大二十的限制。这样的实践还可以禁止重要的cookie数据在向 外发送敏感信息的防火墙以外的网络空间被访问或者读取。中间设备200将修改的HTTP响应传送给客户机102。在一些实施例中,修改的响 应包括客户机102cOOkie。在其他实施例中,修改的响应包括服务器106发送到中间设备 200的原始请求。在进一步的实施例中,修改的响应包括根据用于处理修改的响应的客户 机102或者客户机102应用或者函数的配置或者标准重新格式化的响应的一部分。中间设 备200可以响应于所接收的修改的响应来将发往服务器106的另一个请求传送到中间设备 200。中间设备200可以应用访问配置文件、策略、规则和动作的任一个到通过中间设 备200的网络业务量的任一级别粒度的部分或者子集。该粒度级别可以基于该配置从细到 粗。此处描述的访问配置文件、规则和策略的规则条件、标准或者逻辑可以限定或者指定为 应用到经由设备200传输的网络业务量或者传输的任意期望子集或者部分。在一个方面, 粒度级别是指配置可以应用到的网络业务量的一部分的级别、测量值、细度或者粗糙度。在 配置的十分宽或者粗糙的粒度中,访问配置文件、规则或者策略可应用到所有的网络业务 量。在十分细的粒度配置中,访问配置文件或者策略可以应用到特定用户的网络业务量的 指定子集,诸如特定用户的特定应用的业务量或者业务量的一部分。在一些粒度的配置中, 访问配置文件、策略或者规则应用到发送请求到服务器的任一客户机102。策略、规则或者 访问配置文件可以限定为用于或者应用到任一客户机102,并且可以基于客户机102的任 一配置或者涉及客户机102的信息,诸如客户机102请求的一部分。类似地,策略、规则或 者访问配置文件可以限定为用于或者应用到任一服务器106,并且可以基于客户机106的 任一配置或者涉及服务器106的信息,诸如服务器106响应的一部分。在一些粒度的配置 中,访问配置文件、策略或者规则限定为应用到客户机102经由设备200用来连接到服务器 106的指定会话或者连接。在进一步的实施例中,访问配置文件、策略或者规则限定为应用到经由SSL VPN会 话或者连接来连接的任一客户机102。在进一步的实施例中,访问配置文件、策略或者规则 限定为应用到经由免客户机SSL VPN会话或者连接来连接的任一客户机102。在进一步的 实施例中,访问配置文件、策略或者规则限定为应用到经由基于客户机的SSL VPN会话或者 连接来连接的任一客户机102。在进一步的实施例中,访问配置文件、策略或者规则限定为 应用到发送请求到特定服务器106的任一客户机102或者客户机会话。在又一个实施例中, 访问配置文件、策略或者规则限定为应用到请求服务器上特定应用或者资源的任意客户机 102或者客户机会话。在进一步的实施例中,访问配置文件、策略或者规则限定为基于例如
41cookie是否被启用或者停用的cookie配置应用到任一客户机102或者客户机会话。在进 一步的实施例中,访问配置文件、策略或者规则限定为应用到发送包括特定URL、或者特定 URL的一部分的请求的任一客户机102或者客户机会话。在又一个实施例中,访问配置文 件、策略或者规则限定为基于通过客户机102发送的请求的一部分和访问配置文件、策略 或者规则的短语或者键值之间的匹配来应用到任一客户机102或者客户机会话。在一些实 施例中,访问配置文件、策略或者规则限定为基于涉及访问服务器106的客户机102的信息 来应用到任一服务器106或者服务器会话。这样的信息可以包括客户机102的请求的一部 分或者特征、客户机102的设置或者配置或者任一其它客户机102相关的信息。在一些实 施例中,访问配置文件、策略或者规则限定为基于服务器106的配置或者服务器106发送到 客户机102的内容的特征来应用到任一服务器106或者服务器会话。现在参考图4C,示出cookie代理数据流控制的实施例。总的来说,图4C描述客户 机102经由管理客户机102和服务器106之间的cookie流的中间设备200和服务器106 进行通信。客户机102经由设备发送请求给服务器106,设备也称为中间设备200。该请求 包括诸如“GET/index. html HTTP/1. 1”的URL。中间设备200拦截通过客户机102发送的 请求并且将该请求转发给服务器106。服务器106响应于该请求发出包括cookie的响应, cookie 诸如“ “HTTP/1. 12000K\nSet-Cookie name = value”。中间设备 200 剥离并且保 存该cookie并且使用唯一识别客户机102的客户机ID来替换该cookie。唯一客户机ID 可以是合并的cookie并且可以和中间设备200中的cookie相关联用于未来的传输。中间 设备200将包括唯一客户机ID的修改的响应转发给客户机102。修改的服务器的响应可以 包括诸如"HTTP/1. 12000K\nSet-cookie:NSC_AAAC = Unique client ID”的信息。客户机 102使用唯一的客户机ID来发送第二请求,诸如“GET/foo. html HTTP/1. l\nCookie :NSC_ AAAC = Unique client ID”。中间设备200接收第二请求并且使用该唯一客户机ID获取 基于唯一客户机ID保存的cookie。中间设备200修改该请求并且将之前保存的cookie插 入到该请求中。修改的第二请求可以格式化为包括在之前传输中所使用的相同的或者类似 的 cookie,诸如“GET/foo. html HTTP/1. l\nSet_Cookie:name = value”。中间设备 200 将 修改的第二请求发送到服务器106。进一步参考图4C,客户机102可以通过发送请求到中间设备200初始化和服务器 106的通信。在一些实施例中,该请求可以是HTTP请求,诸如“GET/index. html HTTP/1. 1”。 在一些实施例中,客户机102尝试和服务器106进行第一次通信。在进一步的实施例中,客 户机102将意图发往服务器106的任一 HTTP请求发送给中间设备200。客户机102可以将 任一请求传送到中间设备200来访问服务器200上的资源或者服务。 中间设备200可以将该请求转发给服务器106。在一些实施例中,中间设备200修 改该请求并且将修改的请求转发给服务器106。在其他实施例中,中间设备200不修改该请 求。在进一步的实施例中,中间设备200将该请求转发给服务器106,而不会修改请求的任 一部分。在一些实施例中,中间设备将HTTP请求转发给中间设备200,HTTP请求诸如“GET/ index, html HTTP/1. 1”。 服务器106可以发布针对该请求的包括cookie的响应。在一些实施例中,该响 应可以是例如 “HTTP/1. 12000K\nSet-Cookie name = value”。Cookie 可以在响应的首部 中或者在响应的任一其它部分中。在一些实施例中,cookie可以包括在响应的URL中。该cookie可以是任一类型和形式的cookie并且可以包括在响应中的任一位置。中间设备200可以将cookie从响应剥离并且保存并使用唯一识别客户机102的 客户机ID来替换cookie。一旦服务器106的响应通过中间设备200接收,则中间设备可以 建立cookie存储器,用于客户机的给定域。Cookie存储器可以包括或者保存给定域和诸如 客户机102的客户机的cookie的任一集合。在一些实施例中,cookie存储器可以是文件、 列表、数据库、阵列、数据结构或者文件夹,其包括任意数量的cookie或者通过cookie所包 括的任意数量的信息。在一些实施例中,中间设备200可以从通过服务器106发送的响应 首部剥离“Set-Cookie”首部,并且其可以将Set-Cookie首部保存在cookie存储器中。中 间设备200还可以产生唯一的cookie代理会话cookie。Cookie代理会话cookie可以包 括客户机102可以从服务器106发送的cookie接收的任一相关信息,而不会实际接收该 cookie。Cookie代理会话cookie因此可以将所有来自服务器106发送的cookie的相关信 息以客户机102或者客户机102的web浏览器可接受的方式传送给客户机102。中间设备 200可以将Cookie代理会话cookie插入到cookie存储器或者将Cookie代理会话cookie 关联到服务器106发送的相关的和相对应的cookie。在多个实施例中,中间设备200可以 将Cookie代理响应cookie插入到从中间设备200发送到客户机102的消息的响应首部。 在一些实施例中,中间设备200可以不改变域和路径,而在其它实施例中,中间设备可以改 变域或者路径,或者域和路径二者。在一些实施例中,中间设备200将唯一客户机ID插入 到从中间设备发送到客户机102的通信的任一部分。中间设备200可以将修改的响应转发给客户机102。修改的响应可以包括唯一 的客户机标识符,诸如唯一的客户机ID。在一些实施例中,修改的响应可以包括客户机 102cookieo在进一步的实施例中,修改的响应修改为根据客户机102的配置。在一些实 施例中,修改的响应包括服务器106的原始响应,而没有任一改变。修改的服务器的响应 可以包括任一 HTTP 格式的信息,诸如 “HTTP/1. 12000K\nSet-Cookie:NSC_AAAC = Unique clientID”。客户机102使用唯一客户机ID发送第二请求。第二请求可以和第一请求相同、类 似或者大体类似。在一些实施例中,第二请求包括和第一请求一样的形式。在进一步的实 施例中,第二请求来自传输第一请求的相同应用。在一些实施例中,第二请求是HTTP请求, 诸如 “GET/foo. html HTTP/1. l\nCookie:NSC_AAAC = Unique client ID”。第二请求可以 包括通过中间设备200发布的唯一客户机ID或者唯一客户机ID的一部分。中间设备200可以修改第二请求来包括和服务器106相关的cookie。中间设备 200可以使用和服务器106的cookie相关保存的唯一客户机ID来获取服务器106cOOkie。 中间设备200可以修改第二请求并且将之前保存的cookie插入到第二请求。中间设备200 可以修改该请求并且将之前保存的cookie插入到该请求中。在一些实施例中,中间设备 200修改该请求以将之前保存的cookie包括在第二请求中。中间设备200可以检查cookie 代理会话cookie是否存在。在cookie代理会话cookie存在的情况下,中间设备200基于 cookie代理会话cookie来搜索cookie存储器。中间设备200可以使用通过使用cookie 代理会话cookie来获取的cookie来找到目的域和路径。中间设备200还可以将cookie 或者多个cookie插入到请求代码路径中和/或剥离cookie代理会话cookie。在一些实施例中,代理200为了标记响应路径可以保存从服务器侧PCB到cookie
43存储器的基准指针。在进一步的实施例中,代理200为了标记响应路径在cookie中保存从 会话信息开始的基准指针。在一些实施例中,如果已经为包括指定客户机102和服务器106 的特定会话建立cookie存储器,则中间设备200在同一会话中的第二组通信期间不能建立 cookie存储器。相反,中间设备200可以使用和之前对于相同会话所使用的相同的cookie 存储器。在一些实施例中,中间设备200可以已经具有对于客户机102和服务器106所建 立cookie存储器的基准。在多个实施例中,对于cookie存储器的基准可以通过协议控制 块或者PCB、控制器、以及任何软件、数据库、阵列或者包括任一组值的结构来实现。在某个 实施例中,如果客户机停用cookie,则来自客户机的随后的请求不可以包括任一 cookie代 理会话cookie。在一些实施例中,如果客户机停用cookie,则来自客户机的随后的请求可 以包括cookie代理会话cookie。在一些实施例中,从服务器106到客户机102的随后的 响应可以建立不再参考cookie存储器所用于的客户机102或者服务器106的cookie存储 器。在进一步的实施例中,从服务器106到客户机102的随后的响应可以建立参考cookie 存储器所用于的客户机102或者服务器106的cookie存储器。在多个实施例中,其中客户机102和服务器106在给定会话中超过一次通信,中间 设备200在第一次通信之后不需要再发送cookie代理会话cookie。中间设备可以使用唯 一客户机识别方法来唯一识别客户机102或者服务器106。在一些实施例中,唯一客户机识 别方法也称为唯一客户机ID可以用来唯一识别和服务器106通信的客户机102或者和客 户机102通信的服务器106。在多个实施例中,唯一客户机ID可以用来唯一识别经由中间 设备200和服务器106通信或者发送消息或者请求到服务器106的客户机102。在多个实 施例中,唯一客户机ID可用来唯一识别经由中间设备200进行通信或发送消息或者请求至 服务器106的服务器106。在一些实施例中,中间设备200使用唯一客户机ID来检测和确 定是否代理客户机102所发送的通信。在多个实施例中,中间设备200可以执行清除cookie,确定不必要的cookie或者 终止不必要的cookie。在多个实施例中,中间设备200可以使用从客户机102的PCB到为 客户机102所建立的cookie存储器的基准指针。修改的第二请求可以格式化为包括在前 一传输中所使用的相同或相似的cookie。在一些实施例中,修改的第二请求是如修改的第 二 HTTP 请求的 HTTP 请求,诸如 “GET/foo. html HTTP/1. l\nSet_Cookie:name = value”。中间设备200可以将修改的第二请求传送到服务器106。在一些实施例中,中间设 备200将任一数量个修改的请求传送给服务器106。修改的请求可以是任意类型、形式和格 式。中间设备200因此可以利用cookie存储器来回传送来自客户机102的任一数量个请 求和来自服务器106的响应。Cookie代理可以是任一模块控制、管理或者重新构形的cookie或者利用配置设 置的cookie的传输。在一些实施例中,cookie代理可以是cookie管理器420。在多个实 施例中,cookie代理可以是cookie管理器420的一部分或者子部件。在多个实施例中, cookie代理可以包括cookie管理器420。在某个实施例中,cookie代理可和cookie管理 器420交换使用,并且可以包括cookie管理器420的任一和全部功能性和性能装置。在一 些实施例中,cookie管理器420可以称为cookie代理。在多个实施例中,cookie代理可 以独立于设备200或者cookie管理器420。在某个实施例中,cookie代理可以是能够独立 于中间设备200或者cookie管理器420执行的或者和中间设备的200或者cookie管理器420 一起执行的软件程序或者应用。Cookie代理可以包括基于策略或者策略动作的配置设置。在多个实施例中,用 户或者管理员可以配置cookie代理来确定哪个cookie保存到cookie存储器中和哪个 cookie不保存在cookie存储器中。在多个实施例中,用户或者管理员对于任一指定域,诸 如www, foo. com,可以确定中间设备200是否应该代理cookiel并且允许cookie2、cookie3 流过,如同cookiel、cookie2和cookie3中的任一个可以或者不可以是客户机消耗的 cookie。在一些实施例中,cookie代理配置可以使用命令行接口(CLI)语法,诸如add/delete/set/unset/show cookieproxy action<action-name>〈ALL[-EXCEPT〈cookie_name>,[〈cookie_name>,…]]\〈cookie_name>, [〈cookie_name>,...]>此外,cookie代理配置还可以包括其它语法,诸如add/delete/set/unset/show cookieproxypolicy<name><rule><jar name>[-CookieProxyAction<action-name>][<undefAction>]在多个实施例中,如果用户或者管理员没有指定动作,则cookie代理的缺省行为 可以来代理所有的cookie,或者不代理任何cookie,或者代理如通过和cookie代理相关的 一组策略确定的cookie的一部分。汇集操作可以将诸如策略的配置和诸如用户或者资源的实体汇集、集合、联系在 一起或相关联。汇集动作可以将配置置于应用到所分配实体的有效状态。在一些实施例 中,汇集操作可以将一个实体和另一个实体相关联或者将模块的功能性应用到实体。汇集 操作可以是通过cookie代理、或者通过cookie代理的策略所执行的操作。在一些实施例 中,通过配置命令,cookie代理可以汇集到虚拟服务器275。在多个实施例中,cookie代 理策略可以汇集到负载平衡服务器,GSLB服务器或者VPN服务器。Cookie代理或者中间 设备200所使用的策略规则可以是基于任一策略基础结构规则语言(PIRL)的。在一些实 施例中,cookie代理或者中间设备200所使用的策略可以在响应时间或者在中间设备或者 cookie代理响应请求的时间或者二者期间来评估。在多个实施例中,cookie代理或者中间 设备200所使用的策略可以在响应时间期间来评估或者执行。在一些实施例中,cookie代理方法可以使用分配给每一客户机的唯一客户机ID。 唯一客户机ID可以由中间设备200用来将和特定客户机102相关的cookie存储器映射到 客户机102。在多个实施例中,客户机也称为客户机102,可以不随同事务一起发送任一唯 一客户机ID,该事务也称为通信或者请求。在多个实施例中,cookie代理会话cookie可以 用作缺省客户机识别机制或者唯一客户机ID。在一些实施例中,客户机识别可以基于客户 机因特网协议地址、请求或者HTTP通信的片段、客户机102或者服务器106所发送的通信 的唯一部件、涉及会话的唯一特征、SSL VPN会话cookie或者SSL VPN会话体。在多个实 施例中,客户机识别是可配置的。在多个实施例中,客户机识别可以利用客户机102的因特 网协议地址(也称为IP地址)来实现。在决定诸如cookie存储器的大小或者涉及cookie存储器的定时(例如cookie 存储器的空闲定时)的多个参数过程中,可以完成cookie存储器清除或者cookie存储器 消除。在一些实施例中,cookie存储器清除方法可以使用空闲时间或者存储器阈值的超
45时。在多个实施例中,cookie存储器清除可以基于和cookie自身相关的配置或者会话超时 来实现,会话超时可以导致属于该会话的所有cookie在超时后被清除。在一些实施例中, cookie存储器清除方法可以基于自特定cookie或者cookie存储器最后被使用或者访问所 经过的时间多少来确定哪个cookie被清除。在一些实施例中,CLI语法可以用于存储器和客户机识别,诸如add/delete/set/unset/show cookieproxy jar<jar~name>-clientidentification<default\request based PIXL expression)-maxMem<Memory limit)在多个实施例中,缺省可以是,在不支持cookie时,使用由cookie代理模块插入 到首部或者URL中的会话cookie。在多个实施例中,策略规则可以用来找到任一唯一首部 字段,例如用于LB负载平衡的会话cookie或者用于SSL VPN的cookie。在多个实施例中,当任一 cookie存储器达到最大存储器限制时,最长时间周期无 效的会话可能需要被超时并且属于该会话的cookie可能需要被清除。在多个实施例中,时 间戳可以关联到每个客户机102、服务器106、客户机/域组合、或者每个客户机-服务器会 话、或者任一会话,用来实现基于URL的清除。Cookie代理或者中间设备200可以利用不同策略或者动作的运行时间的聚合。在 多个实施例中,中间设备200或者cookie代理可以使用策略或者动作的运行时间的聚合来 减少配置开销或者简化配置修改。在多个实施例中,中间设备200或者cookie代理可以配 置为在第一匹配的策略处停止。在一些实施例中,管理员或者用户必须在配置时间期间聚 合并且建立合适的策略和动作。在某些实施例中,cookie代理动作的运行时间行为可以部 分通过搜索策略或策略列表中的匹配并且在遇到匹配时在该策略处停止来规定。在一些实 施例中,cookie代理可以在限定或者包括要被代理的一组cookie或者涉及要被代理的一 组cookie的信息的第一策略处停止,其可以减低运行时间的聚合。Cookie存储器基础结构可以用于cookie数据仓库,然而在一些实施例中,附加的 API可以用于基于域或者路径来获取cookie。在一些实施例中,基于哈希的搜索机制可以 用来获取cookie代理会话。该方法可以类似于在其它中间设备200相关的应用中所用的 SSL VPN会话哈希机制。在多个实施例中,哈希函数的键值可以依赖于客户机识别机制或者 客户机识别协议。在多个实施例中,对于不同客户机识别机制可以利用不同的哈希函数。Cookie数据仓库管理可以依赖于性能或者资源。在一些实施例中,cookie数据仓 库通过关联每个域每个客户机的cookie存储器来管理。在多个实施例中,该组cookie名 称包括反复在每个cookie存储器中保存的cookie名称。在多个实施例中,所使用的该组 cookie名称在cookie存储器之间不同,而在其他实施例中,在多个cookie存储器之间所使 用的该组cookie名称包括一些相同或者相似的名称。在一些实施例中,cookie存储器组 织成使得cookie存储器可以和特定客户机相关联并且和处理该传输的特定虚拟服务器相 关联。在多个实施例中,cookie存储器组织成使得cookie存储器和客户机、虚拟服务器和 域相关联。在一些实施例中,cookie存储器不需要保存和存储器中另一个cookie名称相同 的cookie。在某些实施例中,cookie存储器可以包括具有和在诸如HTTP首部的首部中利 用的方法类似的方法中的cookie名称相关的值的cookie名称。
46
Cookie代理可以包括多个功能性。在一些实施例中,cookie代理可以利用cookie 代理或者此处讨论的任意数量个实施例来确定浏览器是否可以处理或者接受cookie。在 多个实施例中,cookie代理可以确定客户机102或者服务器106发送的请求是否匹配某个 标准,用来确定来自客户机或者服务器的浏览器是否接受或者处理cookie。在一些实施例 中,如果通过客户机102或者服务器106发送的请求由于能够接受或者处理cookie的标准 而匹配标准,则中间设备200可以发送重定向消息给客户机,诸如http//incoming_host/incoming_url ? new_param_added = secure—client—idalong with a secure_client_id set-cookie.在一些实施例中,如果客户机返回请求URL,诸如“http //incoming_host/ incoming_url ? new_param_added = secure_client_id”,贝丨J中间设备可以验证唯一的客 户机ID是否和cookie值相关联。如果中间设备检测到匹配,中间设备可以剥离已经增 加的参数并且可以处理原始请求。此外,中间设备还可以将cookie代理会话标记为使用 "cookie代理会话cookie”。在唯一客户机ID不匹配cookie值的情况中,中间设备可以利 用诸如体重写的不同方法用于会话跟踪。在这样的方法中,响应体可以重写以在每个HTTP 链路中包括会话信息。在一些实施例中,cookie代理或者中间设备200还可以包括cookie代理cookie 存储器,也称为cookie代理会话cookie存储器。Cookie代理cookie存储器可以包括任一 多个cookie代理cookie,也称为cookie代理会话cookie。在多个实施例中,Cookie代理 cookie存储器可以以类似于cookie存储器的方式来组织或者实现,并且可以包括cookie 存储器的所有功能性。在某些实施例中,Cookie代理cookie存储器可以和高可用性的应用和技术一起 运行,高可用性的应用和技术也称为HA技术。在一些实施例中,包括一组cookie和唯一客 户机ID的中间设备可以发送cookie和客户机ID到网络上的其他设备。在多个实施例中, 包括与客户机102或者服务器106相关的cookie和唯一客户机ID的第一中间设备200可 以和第二中间设备200或者多个设备200共享cookie或者唯一客户机ID相关的信息。在 第一中间设备和第二设备共享cookie或者唯一客户机ID相关的信息的情况中,第二中间 设备还可以使用cookie和唯一客户机ID来实现客户机和服务器之间的通信。Cookie代理、cookie管理器420或者中间设备200可以包括以脚本或者软件实现 的任一数量个软件应用程序或者函数来建立并且管理cookie。在一些实施例中,cookie代 理、cookie管理器420或者中间设备200可以包括用于管理cookie存储器的软件代码,诸 如/ * AppSecure Cookie-jar API. * // -k Create an empty cookie jar ~k /as_cookie_jar_t ~k as_cookie_jar_create (as_allocator_t ~k allocator);/ * Get value of a cookie, given name * /as_cookie_t * as_cookie_jar_get(as_cookie_jar_t * cookie_jar,astr_t * name);/ * Add a cookie to the jar. If nodup is set,and a previous cookie exists with the same
name, path, domain, then delete it before adding the new one * /ns_status_t as_cookie_jar_add (as_cookie_jar_t * cookie—jar,as_cookie_ t * cookie, int nodup);/ * Delete cookies with same name,value,path and domain as cookie * /ns_status_t as_cookie_jar_delete(as_cookie_jar_t * cookie_jar, as_ cookie—t * cookie);/ 女 Delete all name-value pairs given name 女 /ns_status_t as cookie_jar_delete—by—name (as cookie_jar_t * cookie_jar, astr—t * name);/ * Destroy cookie-jar * /void as_cookie_jar_destroy (as_cookie_jar_t * cookie_jar);/ 女 Parse an http Cookie header cookie string into multiple cookies and add * them to the cookie jar * /ns_status_t as cookie_jar_parse_cookie(as_cookie_jar_t * cookie_jar, const astr—t * cookie—string);/ 女 Parse an http Set-Cookie header string into multiple cookies and add them to the cookie jar * /ns_status_tas_cookie_jar_parse_set_cookie (as_cookie_jar_t * cookie_ jar, const astr—t 女 cookie—string);/ 女 Stringify cookie jar to use as cookie value in an http request 女 /astr_t * as_cookie_jar_to_cookie_string(as_allocator_t * allocator,as_ component—t owner, as—cookie—jar—t* cookie—jar);/ * Stringijy cookie jar to use as the set-cookie value in the http response * /astr_t 女 as_cookie_jar_to_set_cookie string (as_allocator_t 女 allocator, as_component_t owner, as—cookie—jar—t* cookie—jar);ACreate an iterator水/as_cookie_jar_iterator_t * as_cookie_jar_iterator_create(as _ allocator_t *allocatoras_component_t owner_id, as_cookie_jar_t*cookie_jar);int as_cookie_jar_iterator_init(as_allocator_t*allocator,as_ component_t owner_id,as_cookie_jar_t*cookie_jar,as_cookie_jar_iterator_t*iter) ;intas_cookie_jar_iterate(as_cookie_jar_iterator_t*iter, as_cookie_ t水水cookie);void as—cookie—jar—iterator—destroy(as—allocator—t氺allocator,as—cookie—jar—iterator—t氺iter);int as_cookie_jar_size(as_cookie_jar_t*cookie_jar);
48
as_cookie_jar_iterator_create(as_allocator_tlocator, as_ component_t owner_id, as_cookie_jart_t*cookie_jar);cookie管理器或者代理可以响应于策略引擎的一个或者多个策略(包括这些策 略的任一规则、条件或者动作)确定何时、如何并且把哪个cookie来管理和/或保存到 cookie存储器中,以及上述任一操作。任意策略和对应的cookie操作可以基于会话。在多 个实施例中,策略引擎236提供策略或者规则,通过该策略或者规则来确定关于该cookie 管理的动作。在一些实施例中,策略引擎236可以包括策略或规则的列表,为中间设备200 或者cookie管理器420提供一种方法来确定关于要执行的cookie或者唯一客户机ID的 动作。由此,通过配置和策略,中间设备可以提供用于cookie管理的细粒度控制,包括对于 免客户机SSL VPN访问。在一个例子中,服务器可以提供对经由设备200访问不同应用的多个客户机的访 问。两个这样的应用可以是应用1和应用2。这两个应用可以使用ASP.NETSESSI0NID,其 可以是不在客户机侧使用及写入的服务器消耗的cookie。除了 ASP. NETSESSI0NID,应用1 还可以使用cookieAppClientlnfo,cookie AppClientlnfo可以通过访问或者使用应用1 的第一客户机读和写,但不由访问同一应用的第二客户机读写。在这样的实施例中,设备200处理这样或类似情况的配置可以是add patclass app l_clientconsumed_cookiesbind patclass appl_clientconsumed_cookies AppClientlnfoset vpn clientlessAccessProfile appl_profile-ClientConsumedCookiesappl_clientconsumed_cookiesadd vpn clientlessAccessPolicy app l_access_pol〃 http. req. url. path, get (1). eq (\ " appl" )〃 appl_profile在访问web应用1和应用2时产生的URL使用条目/app 1来识别。上例中表达的 策略对以下实例或者情况可评估为真,即,存在所接收的HTTP请求的URL路径以“/appl/” 开始的实例或者情况。这样的HTTP请求的一个例子是“GET/appl/display.asp”。因此,该 请求(应用1,或appl)除了命名为AppClientlnfo的cookie以外的所有cookie将被代 理。在进一步的例子中,应用2使用可以用在客户机侧或者通过客户机使用的 App2ClientCookiel和App2ClientCookie2,但是由其所使用的其它cookie的剩余部分无 需被表示。这样的配置可以是add patclass app2_clientconsumed—cookiesbind patclass app2_clientconsumed—cookies App2ClientCookielbind patclass app2_clientconsumed—cookies App2ClientCookie2set vpn clientlessAccessProfile app2_profile-ClientConsumedCookiesapp2—clientconsumed—cookiesadd vpn clientlessAccessPolicy app2_access_pol“ http. req. hostname. set_text—mode (ignorecase). eq(\" app2\ " ) “ app2_ profile在此配置中,应用2(称之为App2)可以寄载在主机名为app2的web服务器
49上,因此,对于应用 2 (App2),除了 App2ClientCookiel 和 App2ClientCookie2 外的所有 cookie将被代理。在这些以及类似例子中,管理员可以配置将为应用2代理的、具有名称 AppClientlnfo的相同cookie,而不为应用1代理此cookie。类似地,管理员可以基于这样 或者类似的用于策略的配置而配置代理或者不代理具有任一名称或者和任一服务或者资 源相关的cookie、或者任一客户机102或者服务器106。在又一个实施例中,配置可以为设置所有站点的所有cookie以免客户机VPN模式 来代理。不应该代理的客户机消耗的cookie可以通过指定patclass命令或者指令中的 cookie的名称来配置。例如,如果一些应用需要两个cookie出现在客户机侧,如Cookiel 和Cookie2,则配置可以标识为add patclass app_byPass_C0°kiesbind patclass app_bypass_cookies Cookielbind patclass app_bypass_cookies Cookie2set vpn clientlessAccessprofile<app_profile>-ClientConsumedCookiesapp_bypass_cookies用于该配置文件的该代码可以之后在clientlessAccessPolicy指令中使用,诸 如add vpn clientlessAccessPolicy<policyName><rule><vpnclientlessAccessProfile>上述策略可以使用免客户机访问来选择免客户机访问配置文件,使得代理除了具 有名称为Cookiel和Cookie2的Cookie之外的所有Cookie。从而,对于通过策略规则识别 的业务量的子集,不可以代理给定组的Cookie。策略规则可以用来选择特定的web应用或 者特定的服务器或者服务器上的目录。使用类似上述的配置,对于不同用户组、用户集或者 vpn虚拟服务器可以代理不同组的Cookie,其任一个可以依赖于策略的配置限定或者处理 哪个实体。现在参考图5,示出用于经由中间设备的配置驱动Cookie代理的方法的步骤的实 施例。总的来说,在步骤505,中间设备从服务器经由SSLVPN会话接收包括一个或者多个 Cookie的响应。在步骤510,中间设备识别具有用于代理一个或者多个Cookie的一个或者 多个策略的一个或者多个访问配置文件。在步骤515,中间设备响应于一个或者多个策略来 确定代理一个或者多个Cookie或者将忽略一个或者多个Cookie。在步骤520,中间设备代 理一个或者多个Cookie或者忽略代理一个或者多个Cookie并且将响应转发给客户机。更详细地,在步骤505,中间设备200从服务器106经由任一会话或者连接来接收 包括一个或者多个Cookie的响应。在一些实施例中,中间设备200从任意数量个服务器 106接收任意数量个响应,诸如HTTP响应或者包括客户机102请求的内容或者服务的响应。 在一些实施例中,中间设备200从服务器106经由SSL VPN会话接收响应。在进一步的实 施例中,中间设备200从服务器106经由免客户机SSL VPN会话来接收响应。在进一步的 实施例中,中间设备200从服务器106经由基于客户机的SSL VPN会话来接收该响应。在 一些实施例中,该响应包括一个或者多个Cookie。该响应可以包括服务器消耗的Cookie, 或者通过服务器106使用、读出、编辑或者写入的Cookie。在进一步的实施例中,该响应包 括客户机消耗的Cookie或者客户机侧Cookie,或者通过客户机102使用、读出、编辑或者 写入的Cookie。在又一个实施例中,该响应包括通过服务器106和通过客户机102使用、读出、编辑或者写入的Cookie。在一些实施例中,该响应包括任一类型、形式和类别的多个 Cookie。该Cookie可以用来跟踪客户机会话、维持客户机相关的信息或者协助服务器106 和客户机102来共享或者跟踪信息。在一些实施例中,该响应包括URL。该URL可以包括 Cookie或者部分Cookie,诸如Cookie值。在步骤510,中间设备识别具有用于代理一个或者多个Cookie的一个或者多个策 略的一个或者多个访问配置文件。中间设备200可以使用中间设备200的任一子部件、单 元、函数或者装置来识别一个或者多个访问配置文件。在一些实施例中,诸如策略引擎236 的策略引擎可以包括用于识别访问配置文件的一个或者多个策略。访问配置文件可以基于 来自服务器106的响应的一部分来识别。访问配置文件可以基于来自服务器106的URL或 者URL的一部分来识别。访问配置文件可以基于响应的一部分内容和与响应的一部分内容 相关联的访问配置文件的一个或者多个策略的配置来识别。在一些实施例中,访问配置文 件可以基于来自服务器106的响应的一部分和访问配置文件的配置之间的匹配来识别,该 访问配置文件响应于该匹配来选择访问配置文件的一个或者多个策略。在进一步的实施例 中,访问配置文件可以基于来自服务器106的响应的一部分和访问配置文件的策略的配置 之间的匹配来识别,该访问配置文件触发一个或者多个匹配的策略的一个或者多个动作。 在一些实施例中,访问配置文件基于涉及客户机102会话或者连接的信息和访问配置文件 的策略的配置之间的匹配来识别,该访问配置文件触发策略的动作。在进一步的实施例中, 访问配置文件可以基于来自响应的基于客户机的Cookie和访问配置文件的策略的配置之 间的匹配来识别,该访问配置文件基于和基于客户机的Cookie的匹配来触发策略的动作。 在进一步的实施例中,访问配置文件可以基于来自响应的服务器侧的Cookie和访问配置 文件的策略的配置之间的匹配来识别,该访问配置文件基于和服务器Cookie的匹配来触 发策略的动作。在进一步的实施例中,访问配置文件可以基于客户机的特定组中的客户机 102和访问配置文件的策略的配置之间的匹配来识别,该访问配置文件基于和来自客户机 组的任一客户机的匹配来触发策略的动作。在进一步的实施例中,访问配置文件可以基于 客户机102正访问或者使用的特定应用或者资源或者应用或资源的类型和访问配置文件 的策略的配置之间的匹配来识别,该访问配置文件基于该匹配来触发策略的动作。访问配 置文件的策略的配置可以基于关于客户机102、服务器106、客户机和服务器所使用的连接 或者会话的类型、客户机和服务器的配置、客户机102上的用户、关于客户机102所使用的 软件或者应用的信息或者设备200可用的任一其它类型和形式的信息。在一些实施例中, 访问配置文件可以基于客户机102正使用的会话或者连接的类型(诸如基于客户机或者免 客户机SSL VPN会话)和访问配置文件的策略的配置之间的匹配来识别,该访问配置文件 基于该匹配来触发策略的动作。在进一步的实施例中,访问配置文件可以基于关于客户机 102所请求的文件、web页面、应用、资源或服务的信息和触发该动作的访问配置文件的策 略的配置之间的匹配来识别。在一些实施例中,中间设备为客户机102和服务器106之间 的任一传输识别访问配置文件和策略。在一些实施例中,为服务器106的每单个响应或者 客户机102的每单个请求识别一个访问配置文件和一个策略。在其他实施例中,为服务器 的单个响应或者客户机的单个请求识别任意数量个访问配置文件和访问配置文件的任意 数量个策略。在步骤515,中间设备响应于一个或者多个策略来确定要执行的代理动作。在一
51些实施例中,中间设备响应于一个或者多个已识别访问配置文件的一个或者多个已识别策 略来确定代理还是不代理响应的Cookie。在进一步的实施例中,中间设备确定如何代理该 Cookie。通过策略的配置触发的策略的动作可以包括代理Cookie或者忽略代理Cookie。 代理Cookie可以包括Cookie的任一处理,诸如产生、终止、插入、移除、重写或者以其他方 式编辑或者变换响应的任一 Cookie。在一些实施例中,代理Cookie可以包括将来自服务器 106的响应或者来自客户机102的请求的Cookie重写、编辑、移除或者插入。代理Cookie 还可以包括中间设备200产生、终止、修改、插入或者移除来往传输的Cookie,诸如通过设 备200的来自服务器106的响应和来自客户机102的请求。策略可以确定设备200应该忽 略代理或者设备不应该代理来自传输的cookie。在这样的实施例中,设备200简单地不修 改或者改变或者以其他方式处理来自传输的cooKie。根据策略的配置或者设置,cookie可 以以多种方式来处理。在一些实施例中,设备200确定为通过该设备200的响应或者请求 来产生新的cookie。在进一步的实施例中,设备200确定修改来自响应或者请求的cookie 的值。在进一步的实施例中,设备200确定重写来自响应或者请求的cookie的一部分。在 进一步的实施例中,设备200确定将和客户机102或者服务器106关联的cookie插入到客 户机102和服务器106之间的传输中。在又一个实施例中,设备200确定从客户机102和 服务器106之间的信息移除cookie。在进一步的实施例中,设备确定终止用于在客户机102 和服务器106之间的传输的cookie。还可以通过可包括或者指向用于制定或实现这些和类 似决定的任意数量个步骤或者指令的策略来指定这些和类似的动作。
在步骤520,中间设备可以实现通过访问配置文件的策略确定的任一动作。在一些 实施例中,中间设备代理一个或者多个Cookie或者忽略代理一个或者多个Cookie并且将 响应转发给客户机102。在进一步的实施例中,中间设备代理一个或者多个Cookie或者忽 略代理一个或者多个Cookie并且将响应转发给服务器106。中间设备可以按照配置所识别 或者匹配的策略的一个或者多个动作所指示或者指定的方式来代理cookie。在一些实施例 中,中间设备200产生cookie。在其他实施例中,中间设备200终止cookie。在一些实施 例中,中间设备转发该响应或者请求,而不会对响应或者请求中的一个或多个cookie采取 任何动作。在进一步的实施例中,中间设备按照由所识别的访问配置文件或由所识别的策 略的动作所指示或者识别的方式来修改来自该响应或者请求的cookie。中间设备200在所 采用或者执行的动作之后可以将该请求或者响应转发给目的地。在一些实施例中,中间设 备200将该请求转发给服务器106。在其他实施例中,中间设备200将该响应转发给客户机 102。
5权利要求
一种用于通过中间设备对一个或者多个服务器和一个或者多个客户机之间的cookie进行配置驱动代理的方法,该中间设备在一个或者多个客户机和一个或者多个服务器之间建立SSL VPN会话,该方法包括(a)该中间设备经由中间设备在服务器和客户机之间建立的免客户机SSL VPN会话从服务器接收对于客户机的请求的响应,该响应包括一个或者多个cookie;(b)该中间设备识别用于免客户机SSL VPN会话的访问配置文件,该访问配置文件识别用于代理cookie的一个或者多个策略;和(c)该中间设备响应访问配置文件的一个或者多个策略来确定是否为客户机代理一个或者多个cookie或者忽略一个或者多个cookie的代理。
2.权利要求1的方法,其中,步骤(a)还包括该中间设备经由该响应来接收一个或者多 个cookie中的客户机消耗的cookie,其中步骤(b)还包括该访问配置文件识别包括对于客 户机消耗的cookie的cookie代理动作的策略,并且步骤(c)还包括中间设备响应于该策 略来忽略客户机消耗的cookie的代理。
3.权利要求2的方法,还包括该中间设备在转发给客户机的响应中保留客户机消耗的 cookie。
4.权利要求1的方法,其中步骤(a)还包括该中间设备经由响应来接收一个或者多个 cookie中的服务器cookie,并且其中步骤(c)还包括中间设备代理该服务器cookie。
5.权利要求4的方法,还包括该中间设备从响应中移除服务器cookie并且将响应转发 给客户机。
6.权利要求1的方法,其中步骤(c)包括该中间设备响应于经由一个或者多个策略确 定客户机不支持该一个或者多个cookie来代理响应中的一个或者多个cookie。
7.权利要求1的方法,其中步骤(b)包括该访问配置文件识别出用于限定对于指定域 名的服务器消耗的cookie的cookie代理动作的策略,并且其中步骤(c)包括该中间设备 如策略动作所指定对该响应进行修改。
8 权利要求1的方法,还包括该中间设备基于应用类型的标识来经由请求或者响应识 别访问配置文件。
9.权利要求1的方法,还包括该访问配置文件基于用户或者用户组的标识来识别出包 括忽略代理一个或者多个cookie的一个cookie的cookie代理动作的策略。
10.权利要求1的方法,还包括该访问配置文件基于中间设备的虚拟服务器的标识来 识别出忽略代理一个或者多个cookie的一个cookie的策略。
11.权利要求1的方法,其中步骤(c)还包括除非访问配置文件的一个或者多个策略识 别出一个或者多个cookie的一个cookie将被忽略,否则中间设备代理响应的一个或者多 个 cookie。
12.一种用于对一个或者多个服务器和一个或者多个客户机之间的cookie进行配置 驱动代理的中间设备,该中间设备在一个或者多个服务器和一个或者多个客户机之间建立 SSL VPN会话,该中间设备包括用于从服务器经由免客户机SSL VPN会话接收对于客户机请求的响应的包引擎,该 免客户机SSL VPN会话由中间设备在服务器和客户机之间建立,该响应包括一个或者多个 cookie ;用于识别对于免客户机SSL VPN会话的访问配置文件的策略引擎,该访问配置文件识 别用于代理cookie的一个或者多个策略;以及其中,该中间设备响应于访问配置文件的一个或者多个策略来确定为客户机代理一个 或者多个cookie或者忽略代理一个或者多个cookie。
13.权利要求12的中间设备,其中,该包引擎经由响应接收一个或者多个cookie中的 客户机消耗的cookie,该访问配置文件识别包括对于客户机消耗的cookie的cookie代理 动作的策略,并且其中该中间设备还响应于该策略来确定忽略对客户机消耗的cookie的 代理。
14.权利要求13的中间设备,其中,该中间设备在转发给客户机的响应中保留客户机 消耗的cookie。
15.权利要求12的中间设备,其中,该包引擎经由响应来接收一个或者多个cookie中 的服务器cookie,并且其中该中间设备响应于一个或者多个策略来代理该服务器cookie。
16.权利要求15的中间设备,其中,该中间设备从响应中移除服务器cookie并且将响 应转发给客户机。
17.权利要求12的中间设备,其中,该中间设备响应于经由一个或者多个策略确定客 户机不支持一个或者多个cookie来代理响应中的一个或者多个cookie。
18.权利要求12的中间设备,其中,该策略引擎经由访问配置文件识别出对于指定域 名的服务器消耗的cookie限定cookie代理动作的一个或者多个策略中的一个策略,并且 其中该中间设备如策略动作所指定对响应进行修改。
19.权利要求12的中间设备,其中,该策略引擎基于应用类型的标识来经由请求或者 响应识别访问配置文件。
20.权利要求12的中间设备,其中,该策略引擎基于用户或者用户组的标识来经由访 问配置文件识别出包括忽略代理一个或者多个cookie的一个cookie的cookie代理动作 的策略。
21.一种通过中间设备为客户机管理cookie的方法,该方法包括中间设备从服务器接收对于客户机请求的响应,该响应包括URL和cookie ;该中间设备通过将cookie从响应移除并且将唯一的客户机标识符插入URL来修改该 响应;该中间设备保存和唯一客户机标识符相关的所移除的cookie ;并且该中间设备将修改的响应转发到客户机。
22.权利要求21的方法,包括cookie管理器将与响应所包括的cookie相关联的一个 或者多个值匹配到多个cookie中的一个cookie。
23.权利要求22的方法,其中,所述修改是响应于该匹配的。
24.权利要求21的方法,还包括该中间设备从客户机接收请求,该请求包括请求URL ;和Cookie管理器将请求的URL和多个cookie中的所移除的cookie匹配。
25.权利要求21的方法,还包括该中间设备通过增加已移除的cookie来修改请求的URL ;并且该中间设备将修改的请求URL转发给服务器。
26.权利要求24的方法,其中,多个cookie和请求URL所提供的至少一个域名或者至 少一个路径相关联。
27.权利要求24的方法,还包括该中间设备响应于该匹配从cookie管理器接收一个或 者多个名称值对。
28.权利要求21的方法,其中,该响应包括多个cookie并且修改的响应包括和多个 cookie相关联的多个客户机标识符。
29.权利要求21的方法,其中,该唯一客户机标识符是包括cookie的一部分的cookie 代理会话cookie。
30.权利要求21的方法,还包括该中间设备从客户机接收请求,该请求包括cookie代理会话cookie,cookie代理会话 cookie包括所述cookie的一部分;该中间设备将cookie代理会话cookie匹配到所述cookie ;该中间设备通过将cookie代理会话cookie从请求移除并且将该cookie增加到请求 来修改该请求;并且该中间设备将该修改后的请求转发给服务器。
31.一种用于使用网络上的代理来管理cookie的中间设备,该中间设备包括 中间设备的包引擎从服务器接收对于客户机请求的响应,该响应包括URL和cookie ; 中间设备的cookie代理,用于通过将cookie从响应中移除并且将唯一的客户机标识符插入URL来修改该响应;中间设备的cookie管理器,用于保存和唯一客户机标识符相关的所移除的cookie ;以及该中间设备用于将修改的响应转发到客户机。
32.权利要求31的中间设备,其中,该响应还包括和所述cookie相关联的一个或者多 个值,并且其中该cookie管理器将与该cookie相关联的一个或者多个值匹配到来自多个 cookie 中的一个 cookie。
33.权利要求32的中间设备,其中,该修改是响应于该匹配的。
34.权利要求31的中间设备,其中,该包引擎从客户机接收请求,该请求包括请求URL, 并且Cookie管理器将请求URL匹配到多个cookie中的所移除的cookie。
35.权利要求31的中间设备,其中,该中间设备 通过增加已移除的cookie来修改请求URL ;并且 将修改的请求URL转发给服务器。
36.权利要求34的中间设备,其中,该多个cookie和请求URL所提供的至少一个域名 或者至少一个路径相关联。
37.权利要求34的中间设备,其中,该中间设备响应于该匹配从cookie管理器接收一 个或者多个名称值对。
38.权利要求31的中间设备,其中,该响应包括多个cookie并且该修改的响应包括和 多个cookie相关联的多个客户机标识符。
39.权利要求31的中间设备,其中,该唯一客户机标识符是包括cookie所包括的一部 分信息的cookie代理会话cookie。
40.权利要求31的中间设备,其中,该中间设备从客户机接收请求,该请求包括cookie代理会话cookie,cookie代理会话cookie包 括cookie的一部分;将cookie代理会话cookie匹配到该cookie ;通过将cookie代理会话cookie从请求移除并且将该cookie增加到该请求来修改该 请求;和将该修改的请求转发给服务器。
全文摘要
本发明使得企业可以基于和客户机、服务器相关的多种信息或者客户机和服务器之间的交互的细节和性质来配置不同的策略以处理业务量的多个子集。部署在客户机和服务器之间的中间设备可以在客户机和服务器之间建立SSL VPN会话。该中间设备可以经由免客户机(clientless)的SSL VPN会话从服务器接收对于客户机的请求的响应。该响应可以包括一个或者多个cookie。中间设备可以识别用于免客户机SSL VPN会话的访问配置文件。访问配置文件可以识别用于代理cookie的一个或者多个策略。中间设备可以响应于访问配置文件的一个或者多个策略来确定是否为客户机代理一个或者多个cookie或者将一个或者多个cookie的代理忽略。
文档编号H04L29/06GK101984778SQ200980109863
公开日2011年3月9日 申请日期2009年1月26日 优先权日2008年1月26日
发明者J·哈里斯, P·阿加瓦, S·K·阿德雅, S·西如娜拉雅南 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1