首页> 中国专利> 用于配置和细粒度策略驱动WEB内容检测和重写的系统和方法

用于配置和细粒度策略驱动WEB内容检测和重写的系统和方法

摘要

本发明提供的解决方案可以使得企业为多个客户机提供服务,以基于关于客户机的信息来确定与客户机建立基于客户机的SSL?VPN会话还是建立免客户机的SSL?VPN会话。在客户机和服务器之间建立SSL?VPN会话的中间设备可以从客户机接收访问服务器的请求。中间设备可以基于该请求识别会话策略。会话策略可以指示和服务器建立基于客户机的SSL?VPN会话还是建立免客户机的SSL?VPN会话。中间设备可以响应于该策略确定在客户机和服务器之间建立免客户机或者基于客户机的SSL?VPN会话。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-10

    授权

    授权

  • 2016-04-27

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20090126

    实质审查的生效

  • 2016-03-30

    公开

    公开

说明书

本申请是申请号为200980110432.5、申请日为2009年1月26日、发明名称为“用于 配置和细粒度策略驱动WEB内容检测和重写的系统和方法”的申请的分案申请。

相关申请

本申请要求2008年1月26日提交的美国临时申请61/023848的优先权,其内容通过 引用全部包含于此。

技术领域

本发明总地涉及数据通信网络。更具体地,本发明涉及用于SSLVPN免客户机访问 的策略控制、SSLVPN免客户机访问期间的URL的细粒度策略驱动重写,以及SSLVPN免客户 机访问期间从服务器提供给客户机的不同内容类型的嵌入式URL的配置和策略驱动检测的 系统和方法。

背景技术

公司或者企业可以通过网络来为多个不同客户机提供不同的服务。一些客户机可 以满足企业的安全需求,而其他的客户机可以从并不安全的网络、服务或者位置来访问企 业的资源。企业可以选择允许所有的客户机来访问资源,但也可以决定不允许一些或者全 部客户机访问关于服务器资源的机密信息。在一个例子中,客户机可以请求访问企业的服 务器所提供的资源。在另一个例子中,客户机可以请求访问企业的服务器经由免客户机安 全套接字层虚拟专用网络(SSLVPN)会话所提供的资源。企业可以决定拒绝客户机访问客 户机正访问的资源的实际的URL,而允许客户机访问所请求的资源。管理何时并且如何提供 对多种和大量要求对资源的访问具有挑战性。

发明内容

本发明提供该问题和类似问题的解决方案,可以使企业来确定和客户机建立基于 客户机的SSLVPN会话或者免客户机的SSLVPN会话。本发明提供的解决方案可以使得企业 为多个客户机提供服务来基于关于客户机的信息确定与客户机建立基于客户机的SSLVPN 会话还是建立免客户机的SSLVPN会话。在客户机和服务器之间建立SSLVPN会话的中间设 备可以接收客户机访问服务器的请求。中间设备可以基于该请求识别会话策略。会话策略 可以指示和服务器建立基于客户机的SSLVPN会话还是建立免客户机的SSLVPN会话。中间 设备可以响应于该策略确定在客户机和服务器之间建立免客户机或者基于客户机的SSL VPN会话。

在一些方面,本发明涉及用于经由策略在客户机和服务器之间建立免客户机安全 套接字层虚拟专用网络(SSLVPN)会话的方法。中间设备可以接收客户机访问服务器的请 求。中间设备可以在任意数量的客户机和服务器之间建立SSLVPN会话。中间设备可以基于 该请求来识别会话策略。该会话策略可以指示和服务器建立基于客户机的SSLVPN会话还 是建立免客户机的SSLVPN会话。中间设备可以响应于该策略来确定在客户机和服务器之 间建立免客户机的SSLVPN会话。

在一些实施例中,中间设备响应于该确定来和服务器建立免客户机的SSLVPN会 话。在进一步的实施例中,中间设备接收客户机访问服务器上的应用的请求。会话策略可以 基于该应用指示和服务器建立基于客户机还是免客户机的SSLVPN会话。在一些实施例中, 中间设备响应于一个或者多个策略识别用于控制经由免客户机的SSLVPN会话的访问的访 问配置文件,该访问配置文件指定对于该应用的一个或者多个重写策略。在进一步的实施 例中,中间设备接收用户访问服务器的请求。在进一步实施例中,会话策略基于该用户指示 和服务器建立基于客户机的还是免客户机的SSLVPN会话。在一些实施例中,中间设备识别 用于建立免客户机的SSLVPN会话的访问配置文件并且该访问配置文件指定一个或者多个 重写策略。在一些实施例中,中间设备响应于一个或者多个策略从多个访问配置文件中识 别第一访问配置文件用于控制经由免客户机的SSLVPN会话的访问,该访问配置文件指定 一个或者多个重写策略。在进一步的实施例中,中间设备响应于一个或者多个策略从多个 访问配置文件中识别第一访问配置文件用于控制经由免客户机的SSLVPN会话的访问。在 一些实施例中,第一访问配置文件基于以下一个或者多个来识别:请求的用户,请求识别的 应用,关于客户机的信息和请求识别的服务器。

在一些方面,本发明涉及用于经由策略在客户机和服务器之间建立免客户机安全 套接字层虚拟专用网络(SSLVPN)会话的方法。包引擎可以接收客户机访问服务器的请求。 中间设备可以在客户机和服务器之间建立SSLVPN会话。策略引擎可以基于该请求识别会 话策略,会话策略指示和服务器建立基于客户机的SSLVPN会话还是建立免客户机的SSL VPN会话。中间设备可以响应于该策略来确定在客户机和服务器之间建立免客户机的SSL VPN会话。

在一些实施例中,中间设备响应于该确定来和服务器建立免客户机的SSLVPN会 话。在进一步的实施例中,中间设备包括用于接收客户机访问服务器上的应用的请求的包 引擎,并且会话策略基于该应用指示和服务器建立基于客户机的还是免客户机的SSLVPN 会话。在一些实施例中,中间设备还包括响应于一个或者多个策略识别用于控制经由免客 户机的SSLVPN会话的访问的访问配置文件的策略引擎,该访问配置文件指定对于该应用 的一个或者多个重写策略。在进一步的实施例中,中间设备还包括接收用户访问服务器的 请求的包引擎,并且会话策略基于该用户指示和服务器建立基于客户机的还是免客户机的 SSLVPN会话。中间设备的包引擎可以识别用于控制访问免客户机的SSLVPN会话的访问配 置文件并且该访问配置文件指定一个或者多个重写策略。在一些实施例中,策略引擎响应 于一个或者多个策略从多个访问配置文件中识别第一访问配置文件用于控制经由免客户 机的SSLVPN会话的访问,该访问配置文件指定一个或者多个重写策略。在进一步的实施例 中,策略引擎响应于一个或者多个策略从多个访问配置文件中识别第一访问配置文件用于 控制经由免客户机的SSLVPN会话的访问。在一些实施例中,包括策略引擎基于以下一个或 者多个来识别第一访问配置文件:请求的用户,请求识别的应用,关于客户机的信息和请求 识别的服务器。

在一些方面,本发明涉及用于经由策略在客户机和服务器之间建立免客户机安全 套接字层虚拟专用网络(SSLVPN)会话的中间设备。中间设备可以包括用于接收客户机访 问服务器的请求的装置。中间设备可以在客户机和服务器之间建立SSLVPN会话。中间设备 可以包括基于该请求识别会话策略的装置,该会话策略指示和服务器建立基于客户机的 SSLVPN会话还是建立免客户机的SSLVPN会话。中间设备还可以包括响应于该策略来确定 在客户机和服务器之间建立免客户机的SSLVPN会话的装置。

本发明还提供一种解决方案,可以使得客户机使用企业服务器提供的资源,但不 可以访问服务器的URL。企业可以是使用和客户机请求相关的访问配置文件的重写策略来 重写或者修改客户机的URL。来自客户机的所修改的URL用于访问服务器上的资源。在接收 到来自服务器的响应时,企业可以使用重写策略来重写或者修改响应的URL以在将响应转 发给客户机之前修改URL。

在一些方面,本发明涉及用于通过中间设备重写经由客户机和服务器之间的免客 户机安全套接字层虚拟专用网络(SSLVPN)会话传送的内容的方法。中间设备可以识别用 于客户机经由客户机和服务器之间建立免客户机的SSLVPN会话访问服务器的请求的访问 配置文件。该访问配置文件可以包括用于重写统一资源定位符(URL)和一个或者多个正则 表达式的第一重写策略来检测服务器提供的内容中的一个或者多个URL。中间设备可以响 应于访问配置文件的一个或者多个正则表达式来检测服务器响应于该请求所提供的内容 中的一个或者多个URL。中间设备可以响应于该检测根据第一重写策略指定的URL转换来重 写一个或者多个检测的URL。

在一些实施例中,中间设备可以识别包括多个正则表达式的访问配置文件。多个 正则表达式的每个可以用于检测多个不同类型内容的一类内容中的一个或者多个URL。中 间设备可以识别服务器所提供的内容中的一个或者多个类型的内容。在一些实施例中,中 间设备识别包括用于检测包括Java脚本的内容中的URL的正则表达式的访问配置文件。在 一些实施例中,中间设备识别包括用于检测包括可扩展标记语言(XML)的内容中的URL的正 则表达式的访问配置文件。在一些实施例中,中间设备识别包括用于检测包括层叠样式表 (CSS)的内容中的URL的正则表达式的访问配置文件。在一些实施例中,中间设备响应于访 问配置文件所识别的第一正则表达式来检测响应的第一类型的内容中的一个或者多个统 一资源定位符(URL)。在进一步的实施例中,中间设备响应于访问配置文件所识别的第二正 则表达式来检测响应的第二类型内容中的一个或者多个URL。

中间设备可以根据和所识别的访问配置文件相关的第二重写策略指定的Java脚 本转换来重写该内容的Java脚本的一部分。在一些实施例中,中间设备识别包括第二重写 策略的访问配置文件来重写请求首部的首部。在进一步的实施例中,在向服务器发送请求 之前,中间设备根据由重写策略指定的转换来重写请求的首部。中间设备可以识别包括第 二重写策略的访问配置文件来重写响应的首部,并且在向客户机发送响应之前根据由第二 重写策略指定的转换来重写响应的首部。中间设备可以基于确定经由该请求所请求的应用 来从多个访问配置文件识别该访问配置文件。

在一些方面,本发明涉及用于重写在客户机和服务器之间经由免客户机安全套接 字层虚拟专用网络(SSLVPN)会话传送的内容的中间设备或者系统。策略引擎可以识别用 于客户机经由客户机和服务器之间建立的免客户机的SSLVPN会话来访问服务器的请求的 访问配置文件。策略引擎可以是中间设备。访问配置文件可以包括用于重写统一资源定位 符(URL)和一个或者多个正则表达式的第一重写策略以检测由服务器提供的内容中的一个 或者多个URL。检测器可以响应于访问配置文件的一个或者多个正则表达式来检测服务器 响应于该请求提供的内容中的一个或者多个URL。检测器可以是中间设备。重写器可以响应 于检测器来根据第一重写策略指定的URL转换来重写一个或者多个检测的URL。重写器可以 是中间设备。

在一些实施例中,策略引擎识别包括多个正则表达式的访问配置文件。多个正则 表达式的每个可以用于检测多个不同类型内容的一类内容中的一个或者多个URL。检测器 可以确定服务器所提供的内容中的一个或者多个类型的内容。在一些实施例中,策略引擎 识别包括用于检测包括Java脚本的内容中的URL的正则表达式的访问配置文件。在一些实 施例中,策略引擎识别包括用于检测包括可扩展标记语言(XML)的内容中的URL的正则表达 式的访问配置文件。在一些实施例中,策略引擎识别包括用于检测包括层叠样式表(CSS)的 内容中的URL的正则表达式的访问配置文件。在又一些实施例中,检测器响应于访问配置文 件所识别的第一正则表达式来检测响应的第一类型的内容中的一个或者多个统一资源定 位符(URL)并且响应于访问配置文件所识别的第二正则表达式来检测响应的第二类型内容 中的一个或者多个URL。在一些实施例中,重写器可以根据和所识别的访问配置文件相关的 第二重写策略指定的Java脚本转换来重写该内容的Java脚本的一部分。在一些实施例中, 策略引擎识别包括第二重写策略的访问配置文件来重写请求首部的首部并且在向服务器 发送请求之前根据由重写策略指定的转换来重写请求的首部。在一些实施例中,策略引擎 识别包括第二重写策略的访问配置文件来重写响应的首部并且在向客户机发送响应之前 重写器根据由第二重写策略指定的转换来重写响应的首部。

在许多方面,本发明涉及用于由中间设备重写在客户机和服务器之间经由免客户 机安全套接字层虚拟专用网络(SSLVPN)会话传送的内容的方法。中间设备可以识别用于 在客户机和服务器之间建立的免客户机的SSLVPN会话的访问配置文件。访问配置文件可 以包括多个重写策略和多个正则表达式。多个重写策略的每一个可以指定对于内容类型的 转换。多个正则表达式的每个可以指定正则表达式来识别多个不同类型内容的每一类内容 中的统一资源定位符(URL)。中间设备可以响应于该请求来确定服务器提供的内容的类型。 中间设备可以基于对于经由访问配置文件所确定的内容类型而指定的正则表达式来检测 内容中的一个或者多个URL。中间设备可以基于内容类型和来自对于该类型内容的多个重 写策略的重写策略来重写一部分该内容。

附图说明

参考结合附图的以下描述,本发明的前述和其他对象、方面、特征和优势将会变得 更加明显更好理解,其中:

图1A、1B和1C是客户机经由一个或者多个设备来访问服务器的网络环境的实施例 的框图;

图1D是将计算环境从服务器经由设备递送到客户机的环境的实施例的框图;

图1E和1F是计算装置的实施例的框图;

图2A是处理在客户机和服务器之间的通信的设备的实施例的框图;

图2B是用于优化、加速、负载平衡和路由在客户机和服务器之间的通信的设备的 另一个实施例的框图;

图3A和图3B是经由设备访问服务器的免客户机虚拟专用网络的实施例的框图;

图4是客户机和服务器之间执行URL重写的设备的实施例的框图;

图5是设备在基于客户机请求执行URL重写的方法的实施例中所采用的步骤的流 程图;

图6是从服务器通过设备传送到客户机的服务器响应和修改的服务器响应的实施 例的框图;

图7是在服务器响应上执行URL重写的方法的实施例的步骤的流程图。

根据以下结合附图提出的详细描述,本发明的特征和优势将变得更加明显,其中 相同的参考特征在全文中是指对应的元件。在附图中,相似的附图标记通常指示相同的、功 能类似的和/或结构类似的元件。

具体实施方式

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所示,在网络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包括被称为CitrixNetScaler装置的由位于 Ft.LauderdaleFlorida的CitrixSystems公司制造的任一网络装置。在其它实施例中,设 备200包括由位于Seattle,Washington的F5Networks公司制造的被称为WebAccelerator和 BigIP的任意一个产品实施例。在另一个实施例中,设备205包括由位于Sunnyvale, California的JuniperNetworks公司制造的DX加速装置平台和/或诸如SA700、SA2000、 SA4000和SA6000装置的SSLVPN系列装置中的任意一个。在又一个实施例中,设备200包括 由位于SanJose,California的CiscoSystems公司制造的任一应用加速和/或安全相关的 设备和/或软件,例如CiscoACE应用控制引擎模块业务(ApplicationControlEngine Moduleservice)软件和网络模块以及CiscoAVS系列应用速度系统(Application VelocitySystem)。

在一个实施例中,该系统可以包括多个、逻辑分组的服务器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可以包括活动目录(ActiveDirectory)。客户机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'在不同的网络上。在另一个实例中,第一WAN优化设备205可以部署用于第一服务 器群组38,而第二WAN优化设备205'可以部署用于第二服务器群组38'。

在一个实施例中,设备205是用于加速、优化或者以其他方式改善诸如往和/或返 于WAN连接的业务量的任一类型和形式的网络业务量的性能、操作或服务质量的装置。在一 些实施例中,设备205是一个性能提高的代理。在其它实施例中,设备205是任一类型和形式 的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备205是由位于 Ft.LauderdaleFlorida的CitrixSystems公司出品的被称为WANScaler的产品实施例中 的任意一种。在其它实施例中,设备205包括由位于Seattle,Washington的F5Networks公司 出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任意一种。在另一个实施例 中,设备205包括由位于Sunnyvale,California的JuniperNetWorks公司出品的WX和WXC WAN加速装置平台中的任意一种。在一些实施例中,设备205包括由SanFrancisco, California的RiverbedTechnology公司出品的虹鳟(steelhead)系列WAN优化设备中的任 意一种。在其它实施例中,设备205包括由位于Roseland,NewJersey的ExpandNetworks公 司出品的WAN相关装置中的任意一种。在一个实施例中,设备205包括由位于Cupertino, California的Packeteer公司出品的任意一种WAN相关设备,例如由Packeteer提供的 PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备205包括由位于San Jose,California的CiscoSystems公司出品的任一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上的计算环境的网络环境。 在一些实施例中,服务器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'的安全虚拟专用网连接,例如SSLVPN连接。在又一些实施例中,设 备200提供在客户机102和服务器106之间的连接和通信的应用防火墙安全、控制和管理。

在一些实施例中,应用递送管理系统190根据多个执行方法以及根据经由策略引 擎195应用的任一验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的应 用递送技术。使用这些技术,远程用户可以从任一网络连接装置100获取计算环境以及访问 服务器存储的应用和数据文件。在一个实施例中,应用递送系统190可以驻留于服务器106 或在服务器106上执行。在另一个实施例中,应用递送系统190可以驻留于多个服务器106a- 106n上或在多个服务器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包括CitrixSystems公司的例如MetaFrame或 Citrix表示(Presentation)服务器TM的Citrix访问套件TM的任一部分和/或由微软公司出 品的任意一种微软终端服务。在一个实施例中,应用递送系统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的CitrixSystems公司出品的独立计算架构 (ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以 使用任一类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客 户机。在其它实施例中,应用包括与VoIP通信相关的任一类型的软件,例如软IP电话。在进 一步的实施例中,应用包括与实时数据通信相关的任一应用,例如用于流式传输视频和/或 音频的应用。

在一些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提供 瘦-客户机计算的应用或远程显示表示应用的应用。在一个实施例中,服务器106或服务器 群组38作为应用而执行CitrixSystems公司的例如MetaFrame或Citrix表示服务器TM的 Citrix访问套件TM的任一部分和/或由微软公司出品的任意一种微软终端服务。 在一个实施例中,应用是由位于FortLauderdale,Florida的CitrixSystems公司开发的 ICA客户机。在其它实施例中,应用包括由位于Redmond,Washington的微软公司开发的远程 桌面(RDP)客户机。此外,服务器106可以运行应用,例如,所述服务器106可以是提供例如由 位于Redmond,Washington的微软公司出品的微软Exchange的电子邮件服务的应用服务器、 web或Internet服务器、或桌面共享服务器、或协作服务器。在一些实施例中,任意一种应用 可以包括任一类型的寄载服务或产品,例如由SantaBarbara,California的Citrix Online部门提供的GoToMeetingTM、由位于SantaClara,California的WebEx公司提供的 WebExTM、或由位于Redmond,Washington的微软公司提供的微软OfficeLiveMeeting。

仍然参考图1D,网络环境的一个实施例可以包括监控服务器106A。监控服务器 106A可以包括任一类型和形式的性能监控业务198。性能监控业务198可以包括监控、测量 和/或管理软件和/或硬件,包括数据收集、集合、分析、管理和报告。在一个实施例中,性能 监控业务198包括一个或多个监控代理197。监控代理197包括用于在诸如客户机102、服务 器106或设备200和205的装置上执行监控、测量和数据收集活动的任一软件、硬件或其组 合。在一些实施例中,监控代理197包括诸如VisualBasic脚本或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)递送模型的性能。

在一些实施例中,监控业务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的CitrixSystems公司出品的被称为EdgeSight的任意一种产品实施例。在另一个 实施例中,性能监控业务198和/或监控代理198包括由位于PaloAlto,California的 Symphoniq公司出品的被称为TrueView产品套件的产品实施例的任一部分。在一个实施例 中,性能监控业务198和/或监控代理198包括由位于SanFrancisco,California的TeaLeaf 技术公司出品的被称为TeaLeafCX产品套件的产品实施例的任一部分。在其它实施例中,性 能监控业务198和/或监控代理198包括由位于Houston,Texas的BMC软件公司出品的诸如 BMC性能管理器和巡逻产品(BMCPerformanceManagerandPatrolproducts)的商业业 务管理产品的任一部分。

客户机102、服务器106和设备200可以被部署和/或执行在任一类型和形式的计算 装置上,例如可以在任一类型和形式的网络上通信并执行此处描述的操作的计算机、网络 装置或设备。图1E和1F描述了可用于实施客户机102、服务器106或设备200的实施例的计算 装置100的框图。如图1E和1F所示,每个计算装置100包括中央处理单元101和主存储器单元 122。如图1E所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的点击 装置127。每个计算装置100也可以包括另外的可选元件,例如一个或多个输入/输出装置 130a-130b(通常使用附图标记130来指示)以及与中央处理单元101通信的高速缓存140。

中央处理单元101是响应并处理取自主存储器单元122的指令的任一逻辑电路。在 许多实施例中,中央处理单元由微处理器单元提供,例如:由位于MountainView, California的Intel公司出品的产品;由位于Schaumburg,Illinois的Motorola公司出品的 产品;由位于SantaClara,California的Transmeta公司出品的产品;由位于White Plains,NewYork的国际商业机器公司出品的RS/6000处理器;或者由位于Sunnyvale, California的AdvancedMicroDevices公司出品的产品。计算装置100可以基于任一的这 些处理器、或者可以如此处所描述地操作的任一其它处理器。

主存储器单元122可以是可以保存数据并允许由微处理器101直接访问的任一存 储位置的一个或多个存储芯片,例如静态随机存取存储器(SRAM)、突发式SRAM或同步突发 式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPMDRAM)、增强型DRAM (EDRAM)、扩展数据输出RAM(EDORAM)、扩展数据输出DRAM(EDODRAM)、突发式扩展数据输 出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双 数据速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、或 者可以如此处所描述地操作的任一其它可用的存储芯片。在图1E中所示的实施例中,处理 器101通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1E描述了 在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如, 在图1F中,主存储器122可以是DRDRAM。

图1F描述了在其中主处理器101通过有时被称为背端总线的次级总线来直接与高 速缓存140通信的实施例。在其它实施例中,主处理器101使用系统总线150与高速缓存140 进行通信。高速缓存140典型地具有比主存储器122更快的响应时间,并且典型地通过SRAM、 BSRAM或EDRAM来提供。在图1E中所示的实施例中,处理器101通过本地系统总线150与多个 I/O装置130进行通信。多种总线可以用来将中央处理单元101连接到任意一种I/O装置130, 所述总线包括VESAVL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总 线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使 用高级图形端口(AGP)来与显示器124进行通信。图1F描述了在其中主处理器101通过 HyperTransport、快速I/O或InfiniBand来直接与I/O装置130通信的计算机100的一个实施 例。图1F还描述了混合本地总线和直接通信的一个实施例:处理器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。另外,操作系统和软件可以从可引导介质中运行,所述可引导介质 例如像的可引导CD,作为来自于knoppix.net可用作GNU/Linux分发的GNU/ Linux的可引导CD。

进一步地,计算装置100可以包括通过多种连接联接到局域网(LAN)、广域网(WAN) 或因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如, 802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任一或所 有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、插件 总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100连接 到可以传达并执行此处所描述的操作的任一类型的网络的任一其它装置。各式各样的I/O 装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨道垫、轨道球、麦克 风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打 印机。I/O装置130可以由如图1E所示的I/O控制器123控制。I/O控制器可以控制诸如键盘 126和例如鼠标或光笔的点击装置127的一个或多个I/O装置。进一步地,I/O装置还可以为 计算装置100提供存储装置128和/或安装介质116。还是在其它实施例中,计算装置100可以 提供USB连接以接收诸如由位于LosAlamitos,California的TwintechIndustry公司出品 的USB闪存驱动器系列装置这样的便携USB存储装置。

在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个 显示装置可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O 控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、 允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以 包括任一类型和/或形式的视频适配器、视频卡、驱动程序和/或库,以联系、通信、连接或以 其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以联 接多个显示装置124a-124n。在其它实施例中,计算装置100可以包括多个视频适配器,每个 视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计算装置100的操作 系统的任一部分可以被配置用于使用多个显示器124a-124n。在其它实施例中,一个或多个 显示装置124a-124n可以由一个或多个诸如例如通过网络连接到计算装置100的计算装置 100a和100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将另一个计算 机的显示装置用作计算装置100的第二显示装置124a的任一类型的软件。本领域普通技术 人员将认识和理解计算装置100可以被配置为具有多个显示装置124a-124n的多个方法和 实施例。

在进一步的实施例中,I/O装置130可以是在系统总线150和外部通信总线之间的 网桥170,所述外部通信总线例如USB总线、AppleDesktop总线、RS-232串行连接、SCSI总 线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异 步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel 总线或串行附加小型计算机系统接口总线。

图1E和1F中描述类型的计算装置100典型地在控制任务的调度和对系统资源的访 问的操作系统的控制下操作。计算装置100可以运行任一操作系统,例如任意一种版本的微 软操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任一 版本的Mac任一的嵌入式操作系统、任一的实时操作系统、任一的开放源操作系统、任 一的专用操作系统、用于移动计算装置的任一操作系统、或者可以运行在计算装置上并执 行此处所描述的操作的任一其它操作系统。典型的操作系统其中包括:WINDOWS3.x、 WINDOWS95、WINDOWS98、WINDOWS2000、WINDOWSNT3.51、WINDOWSNT4.0、WINDOWSCE 和WINDOWSXP,所有这些均由位于Redmond,Washington的微软公司出品;由位于 Cupertino,California的苹果计算机出品的MacOS;由位于Armonk,NewYork的国际商业机 器公司出品的OS/2;以及由位于SaltLakeCity,Utah的Caldera公司发布的可免费使用的 Linux操作系统或者任一类型和/或形式的Unix操作系统,以及其它。

在其它实施例中,计算装置100可以具有和所述装置一致的不同的处理器、操作系 统和输入装置。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、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可以包括如上所述的与图1E和1F有关的任一处理器101。在一些实施例中,中央处 理单元262可以在单个的处理器中执行加密处理器260的功能。另外,硬件层206可以包括用 于每个处理单元262和加密处理器260的多个处理器。例如,在一个实施例中,设备200包括 第一处理器262和第二处理器262'。在其它实施例中,处理器262或262'包括多核处理器。

虽然通常所示设备200的硬件层206具有加密处理器260,但处理器260可以是用于 执行与诸如安全套接字层(SSL)或传输层安全(TLS)协议的任一加密协议相关的功能的处 理器。在一些实施例中,处理器260可以是通用处理器(GPP),并且在进一步的实施例中,可 以具有用于执行任一安全相关协议的处理的可执行指令。

虽然在图2中用某些元件来说明设备200的硬件层206,但设备200的硬件部分或部 件可以包括计算装置的任一类型和形式的元件、硬件或软件,诸如此处结合图1E和1F来举 例说明和讨论的计算装置100。在一些实施例中,设备200可以包括服务器、网关、路由器、交 换机、网桥或其它类型的计算或网络装置,并具有与此相关的任一硬件和/或软件元件。

设备200的操作系统将可用的系统存储器分配、管理或者以其他方式分离成内核 空间204和用户空间204。在示例的软件架构200中,操作系统可以是任一类型和/或形式的 Unix操作系统,尽管本发明并未这样限制。因而,设备200可以运行任一操作系统,例如任意 一种版本的微软操作系统、不同版本的Unix和Linux操作系统、用于Macintosh 计算机的任一版本的Mac任一的嵌入式操作系统、任一的网络操作系统、任一的实时 操作系统、任一的开放源操作系统、任一的专用操作系统、用于移动计算装置或网络装置的 任一操作系统、或者可以运行在设备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中操作。在一个实施例中,高速缓存管理器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-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP 欺骗协议。

因而,多协议压缩引擎238为经由桌面客户机以及甚至移动客户机访问应用的用 户加速性能,所述桌面客户机例如微软Outlook以及诸如由诸如Oracle、SAP和Siebel的通 用的企业应用所启动的任一客户机的非web瘦客户机,所述移动客户机例如掌上电脑。在一 些实施例中,通过执行于内核模式204中以及与访问网络堆栈267的分组处理引擎240结合 在一起,多协议压缩引擎238可以压缩诸如任一应用层协议的由TCP/IP协议所携带的任意 一种协议。

通常也被称为分组处理引擎或分组引擎的高速层2-7集成分组引擎240负责管理 由设备200经由网络端口266接收和发送的分组的内核级处理。高速层2-7集成分组引擎240 可以包括用于在例如接收网络分组或发送网络分组的处理期间排队一个或多个网络分组 的缓冲器。另外,高速层2-7集成分组引擎240与一个或多个网络堆栈267通信以经由网络端 口266发送和接收网络分组。高速层2-7集成分组引擎240和加密引擎234、高速缓存管理器 232、策略引擎236和多协议压缩逻辑238一起工作。更具体地,加密引擎234被配置为执行分 组的SSL处理,策略引擎236被配置为执行诸如请求级内容交换和请求级高速缓存重定向的 与业务量管理相关的功能,而多协议压缩逻辑238被配置为执行与数据的压缩和解压缩相 关的功能。

高速层2-7集成分组引擎240包括分组处理定时器242。在一个实施例中,分组处理 定时器242提供一个或多个时间间隔以触发输入(即,接收)或输出(即,发送)网络分组的处 理。在一些实施例中,高速层2-7集成分组引擎240响应于定时器242来处理网络分组。分组 处理定时器242提供任一类型和形式的信号给分组引擎240,以通知、触发或传达时间相关 的事件、间隔或发生。在许多实施例中,分组处理定时器242以例如像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包括图形用户界 面(GUI)210、命令行接口(CLI)212、命令解释程序(shell)服务214、健康监测程序216和守 护服务218。GUI210和CLI212提供一个装置,通过所述装置,系统管理员或其它用户可以 与设备200的操作相互作用并控制设备200的操作,例如通过设备200的操作系统,并且两者 之一是用户空间202或内核空间204。GUI210可以是任一类型和形式的图形用户界面,并且 可以通过文本、图形或者以其他方式通过像浏览器的任一类型的程序或应用来呈现。CLI 212可以是任一类型和形式的命令行或基于文本的接口,例如由操作系统提供的命令行。例 如,CLI212可以包括命令解释程序,所述命令解释程序是允许用户与操作系统相互作用的 工具。在一些实施例中,CLI212可以通过bash、csh、tcsh或ksh型命令解释程序来提供。命 令解释程序服务214包括程序、服务、任务、进程或可执行指令以支持用户通过GUI210和/ 或CLI212与设备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之 间的通信的SSLVPN连通性280、交换/负载平衡284、域名服务解析286、加速288和应用防火 墙290。每个服务器106可以提供一个或多个网络相关的服务270a-270n(称为服务270)。例 如,服务器106可以提供HTTP服务270。设备200包括一个或多个虚拟服务器或虚拟网际协议 服务器,其被称为vServer、VIP服务器或仅仅称为VIP275a-275n(此处也被称为vServer 275)。vServer275根据设备200的配置和操作来接收、拦截或者以其他方式处理客户机102 和服务器106之间的通信。

vServer275可以包括软件、硬件或软件和硬件的任一组合。vServer275可以包括 在设备200中的用户模式202、内核模式204中或其任一组合中操作的任一类型和形式的程 序、服务、任务、进程或可执行指令。vServer275包括任一逻辑、功能、规则或操作以执行此 处所描述的技术的任一实施例,例如SSLVPN280、交换/负载平衡284、域名服务解析286、 加速288和应用防火墙290。在一些实施例中,vServer275建立到服务器106的服务270的连 接。服务275可以包括可以连接和通信到设备200、客户机102或vServer275的任一程序、应 用、进程、任务或可执行指令组。例如,服务275可以包括web服务器、HTTP服务器、ftp、电子 邮件或数据库服务器。在一些实施例中,服务270是用于监听、接收和/或发送用于诸如电子 邮件、数据库或企业应用的应用的通信的守护进程或网络驱动程序。在一些实施例中,服务 270可以在一个特定IP地址或IP地址和端口上进行通信。

在一些实施例中,vServer275将策略引擎236的一个或多个策略应用到客户机 102和服务器106之间的网络通信。在一个实施例中,策略与VServer275有关。在另一个实 施例中,策略基于一个用户或一组用户。在又一个实施例中,策略是全局的并且应用到一个 或多个vServers275a-275n以及经由设备200通信的任一用户或用户组。在一些实施例中, 策略引擎的策略有条件,在所述条件时根据诸如网际协议地址、端口、协议类型、报头或分 组中的字段的通信的任一内容或者诸如用户、用户组、vServer275、传输层连接和/或客户 机102或服务器106的标识或属性的通信上下文来应用策略。

在其它实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客 户机102访问服务器106的计算环境15、应用和/或数据文件的验证和/或授权。在另一个实 施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客户机102的验证和/ 或授权,以使应用递送系统190递送计算环境15、应用和/或数据文件的一个或多个。在又一 个实施例中,设备200根据策略引擎236对远程用户或远程客户机103的验证和/或授权来建 立VPN或SSLVPN连接。在一个实施例中,设备102根据策略引擎236的策略来控制网络业务 量和通信会话的流量。例如,设备200可以根据策略引擎236来控制对计算环境15、应用或数 据文件的访问。

在一些实施例中,vServer275建立诸如经由客户机代理120与客户机102的TCP或 UDP连接的传输层连接。在一个实施例中,vServer275监听并接收来自于客户机102的通 信。在其它实施例中,vServer275与客户服务器106建立诸如TCP或UDP连接的传输层连接。 在一个实施例中,vServer275建立到运行在服务器106上的服务器270的网际协议地址和 端口的传输层连接。在另一个实施例中,vServer275将到客户机102的第一传输层连接与 到服务器106的第二传输层连接关联起来。在一些实施例中,vServer275建立到服务器106 的传输层连接池并多路复用经由所述池化的传输层连接的客户机请求。

在一些实施例中,设备200提供在客户机102和服务器106之间的SSLVPN连接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或者任一其它类型和形式的安全协 议来建立具有安全级的连接。在一些实施例中,SSLVPN可以使用任意类型和形式的加密用 于建立或者维持安全访问。SSLVPN可以经由诸如使用HTTPS(安全超文本传输协议)的浏览 器来建立和/或访问。SSLVPN可以通过支持SSL的浏览器或者应用来建立或者提供。

可以通过使用基于客户机或者免客户机的方法来建立或者提供SSLVPN连接或者 会话。基于客户机的SSLVPN可以使用任一类型和形式客户机代理或者客户机102上任一软 件相关的代理,来建立SSLVPN连接或者会话。例如,可以经由下载到客户机的SSLVPN客户 机代理来提供基于客户机的SSLVPN,诸如从设备下载的。客户机代理可以被设计并且配置 为在客户机和设备或者服务器之间建立和提供SSLVPN功能性、连接和访问。

免客户机SSLVPN可以是不使用下载并安装到客户机102的SSLVPN客户机代理、 软件或者程序来建立SSLVPN连接或者会话的任一SSLVPN。在一些实施例中,免客户机SSL VPN可以是不需要客户机102来安装或者执行被设计和构成为提供SSLVPN功能性的预定软 件或者可执行文件以建立和另一个网络装置的SSLVPN连接的任一SSLVPN。在一些实施例 中,经由不下载或者不需要使用VPN或者SSLVPN客户机代理的SSL使能的浏览器来建立免 客户机SSLVPN。免客户机SSLVPN连接或者会话可以使用标准浏览器或者应用的协议和通 信,诸如SSL使能的浏览器。免客户机SSLVPN连接或者会话可以通过此处描述的在第一网 络和第二网络之间翻译、重写或者转换请求和响应的内容的中间设备或者应用来提供。

在一个实施例中,设备200在虚拟专用网104上寄载客户机102的内联网网际协议 或内联网IP282地址。客户机102具有诸如第一网络104上的网际协议(IP)地址和/或主机 名称的本地网络标识符。当经由设备200连接到第二网络104'时,设备200在第二网络104' 上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或主机名称 的网络标识符。使用客户机建立的内联网IP282,设备200在第二或专用网104'上监听并接 收指向客户机102的任一通信。在一个实施例中,设备200在第二专用网104上充当或代表客 户机102。例如,在另一个实施例中,vServer275监听并响应到客户机102的内联网IP282 的通信。在一些实施例中,如果第二网络104'上的计算装置100发送请求,则设备200处理所 述请求,就像它是客户机102一样。例如,设备200可以响应到客户机的内联网IP282的查 验。在另一个实例中,设备可以与第二网络104上的请求与客户机的内联网IP282连接的计 算装置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可以包括如上面结合图1D所讨论的性能监控代理197。在 一个实施例中,设备200从如图1D中所描述的监控业务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 的诸如SSLVPN会话的任一虚拟专用网连接和/或会话的性能。在进一步的实施例中,监控 代理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。由此,客户机、浏览器或者服务器和服 务器应用不需要知晓或者了解免客户机SSLVPN访问方案。

设备200可以经由之前描述的SSLVPN280模块来提供用于访问资源的功能。在一 个实施例中,设备200通过在用于和设备200通信的客户机102上提供、安装或者执行SSL VPN代理来提供基于客户机的对网络的访问。在一些实施例中,设备200提供对资源(诸如 http/https/文件共享)的免客户机SSLVPN访问,而不需要下载SSLVPN客户机或者代理到 客户机102。例如,用户可以期望从诸如处于机房的外部机器来访问公司内的资源,在该外 部机器上用户并没有特权来安装客户机或者不期望经历客户机安装过程。当装置(例如市 场上的新的PDA)不支持SSLVPN客户机而装置运行的是SSL使能的浏览器,则免客户机SSL VPN特征也是有用的。在其他实施例中,设备200基于策略和任一策略规则、动作和/或条件 来在对资源的基于客户机和免客户机SSLVPN访问之间选择用户。

客户机可以包括任一类型和形式的用户代理,可以是浏览器、编辑器、网络爬虫程 序(web穿越自动机)或者任一其它终端用户工具或者程序。客户机102可以包括任一类型和 形式的浏览器。在一个实施例中,浏览器是WashingtongRedmond的微软公司制备的任一版 本的InternetExplorer(IE)。在另一个实施例中,浏览器是网景通信公司制备的任一版本 的网景浏览器。在其他实施例中,浏览器是称之为Firefox并且由California的Mozilla Foundation提供的并且在www.mozilla.com可以找到的任一版本的开放源浏览器。在又一 个实施例中,浏览器是NorwayOslo的OperaSoftwareASA制备的称之为Opera的任一版本 的浏览器。在一些实施例中,客户机102执行或者包括任一类型或者形式的应用或者程序, 用于显示web页面、web内容、HTML、XML、CSS(层叠式样式表)、Java脚本或者HTTP内容。

在图3A描述的实施例的操作中,用户登入设备200提供的SSLVPN站点,诸如通过 设备200寄载的域名和IP地址。例如,用户经由客户机102的浏览器可以选择或者输入URL到 SSLVPN站点。设备200可以验证用户并且还可以进一步确定用户访问设备200或者SSLVPN 站点的授权。在成功验证之后,设备为客户机提供入口页面来经由浏览器显示给用户。入口 页面可以包括导航盒(navigationbox),诸如一组一个或者多个用户接口元件用于用户来 选择操作或者运行应用。入口页面可以包括到用户可访问的其它页面或者URL的链接。入口 页面上的URL或者链接可以索引或者识别设备200提供的SSLVPN站点的主机名称或者IP地 址。

用户经由入口页面可以例如通过点击有效超链接或者URL来选择一个或者多个 URL。随之,浏览器或者客户机将请求传送给设备200寄载的域。例如,如图3A中描述的,用户 可以经由设备请求服务器106的应用:“https://sslvpn.x.com/cvpn/http/server.x.com/ app.cgi”。在一些实施例,用户发送另一个请求,诸如“https://proxy.x.com/cvpn/http/ server.x.com/app.cgi”。设备200从客户机102接收请求并且重写该请求以发送给服务器。 例如,如图3A中描述的,设备可以移除或者删除设备所寄载的域名诸如“sslvpn.x.com”或 者“proxy.x.com”并且将请求的剩余部分转发给服务器106。

响应于该请求,服务器将内容发送给客户机。响应的内容或者体可以包括到服务 器的其他页面或者到网络104’上的其他服务器的嵌入式链接或者URL,诸如到“http:// server.x.com/app.cgi”的嵌入式链接。设备重写该首部和体来修改任一URL,以索引到SSL VPN站点的域名或者IP地址,使得经由客户机浏览器的任一其它URL或者链接选择将请求发 送给设备200。设备发送修改后的内容给客户机102。设备200诸如经由AppFw290(有时称之 为AppSecure模块290)可以设计并且构建为基于策略引擎的策略来重写请求和响应的URL。 该页面和在此SSLVPN会话期间从服务器随后接收的其他页面中的链接(URL)由设备通过 指向SSLVPN站点(VPNVIP275)的链接和初始请求URL(绝对或者相对)编码在该请求URL 中的方式来进行修改。

现在参考图3B,描述用于提供VPN访问以及cookie管理的VPN环境的另一个实施 例。总的来说,设备200可以包括用于处理如此处描述的基于免客户机和/或客户机的任一 SSLVPN功能性的VPN模块280。设备和/或VPN模块280可以具有AAA模块来执行任一类型和 形式的验证、授权和审核(AAA)和/或跟综和管理VPN会话信息。AAA模块还可以执行任一类 型或者形式的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。

设备还可以包括AppFW280,其在CitrixSystem公司制备的设备的情况下称为 AppSecure。AppSecure280模块可以包括用于执行任一类型和形式的内容重写,诸如URL重 写的逻辑、功能或运算。在一些实施例中,AppSecure280模块执行到客户机和服务器之间 的请求和/或响应的任一类型和形式的内容注入。在一些实施例中,AppSecure模块280将脚 本插入到对客户机的响应中,诸如Java脚本,来执行任一类型和形式的期望的功能性。

用于免客户机SSLVPN访问的设备200的任一部件可以响应于配置或者通过配置 驱动,诸如经由策略引擎的任意一个或者多个策略。策略可以指导和确定通过VPN模块执行 的URL编码和译码的类型和形式。在一些实施例中,策略可以指导和确定cookie代理如何并 且何时管理和代理cookie。在其他实施例中,策略可以指导并且确定AppSecure模块如何并 且何时执行URL重写和/或内容注入。策略可以指导用户访问专用网络和专用网络上的应用 的方式。策略可根据访问方案配置,该访问方案可以包括基于用户、客户机的类型和形式、 网络的类型和形式、访问资源的类型、所使用应用的类型、暂时信息以及可以通过设备经由 传输到的网络业务量来确定的任一信息的任一组合的访问。

参考图3B,讨论经由设备200用于免客户机SSLVPN访问的包流。响应于成功的登 入请求,VPN设备可以发送入口页面给登入请求的发送者。入口页面可以具有结合图3A描述 的“vpn编码格式”的一个或者多个链接。入口页面流经以下描述的响应码路径。当用户点击 入口页面中的任一URL时,包流可以以多种方式并且使用多个步骤来执行。在一些实施例 中,对于步骤Q1的请求路径,设备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,设备可以 将请求发送给服务器。在一些实施例中,只有在授权成功的情况下,设备才将该请求发送给 服务器。

在从服务器经由设备到客户机的响应路径中,在步骤S1,设备可以接收来自服务 器的响应。VPN模块280可以处理该响应。VPN模块可以将该响应首部传递到cookie代理模块 并且将响应体传递到AppSecure模块。在步骤S2,cookie代理可以从响应的首部移除未被配 置或者以其它方式识别为客户机所消耗cookie的cookie并且将它们保存在当前会话所使 用的cookie存储器中。在步骤S3,AppSecure模块可以根据重写策略来重写“vpn编码形式” 的任一URL。AppSecure模块还可以将任一脚本插入响应体中,诸如要在客户机侧执行的 Java脚本代码。在步骤S4,设备可以发送修改后的响应给客户机。在许多实施例中,任一个Q 或者S步骤以任一顺序或者以与此处所描述的任一其它步骤或者实施例的任一组合进行。

D、用于配置和细粒度策略驱动WEB内容检测和重写的系统和方法

现在参考图4,描述用于配置和策略驱动web内容检测和重写的系统的视图。总的 来说,该系统包括和设备200通信的客户机102。在一个实施例中,设备200包括策略引擎 236、SSLVPN模块280、URL重写器430和数据库440。在另一个实施例中,策略引擎还包括免 客户机策略405,基于客户机策略410和一个或者多个访问配置文件415A-415N(总的称为访 问配置文件415)。设备200和服务器106相通信。在一个实施例中,一个或者多个应用420a- 420n(总的称为应用420)在一个或者多个服务器106上执行。客户机102传送URL请求401,该 请求在设备200处被拦截。设备200修改该请求401并且将修改的请求401’转发给服务器 106。

在一个实施例中,由客户机102传送的请求401包括设备提供的SSLVPN站点的URL 链路。在另一个实施例中,请求401是对于SSLVPN的外部站点的URL请求。在另一个实施例 中,请求401包括要求访问SSLVPN的验证数据。在又一个实施例中,响应于用户在成功验证 到SSLVPN之后访问在客户机处接收的入口页面上的链路来传送该请求401。在一些实施例 中,请求401包括用于以下一个或者多个的URL:web页面、静态图像、动态图像、音频文件和 视频文件。在一些实施例中,请求401包括访问保存在安全网络上的一个或者多个服务器 106上的资源、应用或者服务的URL。该请求可以包括用于访问资源、应用或者服务的URL,该 URL与正被访问的服务器106所识别或者接受的URL不同但相关联。在一些实施例中,来自客 户机102的请求在转发给服务器106前被重写、修改或者转换。

在一些实施例中,包括在请求401中的URL的一般形式可以是:<方案名称>:<分级 部分>[?<查询>][#<片段>];方案名称通常识别和URL相关联的协议。方案名称可以包括但 不限于以下内容:http(超文本传输协议)、https(安全http)、aaa(直径协议)、aaas(安全 aaa)、dns(域名系统)、imap(因特网消息访问协议)、ftp(文件传输协议)、ldap(轻量级目录 访问协议)、news(新闻组协议)、telnet(电信网络协议)、nntp(网络新闻传输协议)、和pop (邮局协议)。URL可以包括和任意类型和形式的URL的一部分或者URL相关的文本,诸如 “http://www.xyz.com/xyz/xyzpage.htm”或者“ftp://ftp.xyz.com/xyz/xyztext.txt”, “ldap://[1985:db8::7}/f=GB?objectClass?one”。

分级部分本质上期望持有分级的标识信息。在一个实施例中,分级部分开始为双 正斜线(“//”),之后是权限部分。在一些实施例中,分级部分包括定位网络上资源的路径信 息。在另一个实施例中,权限部分包括主机名称。在又一个实施例中,权限部分包括以“”结 束的可选用户信息部分(例如用户名:密码)。在一个实施例中,查询部分包括实际上不分 级的信息。在另一个实施例中,片段部分包括允许次级资源的间接识别的附加识别信息。

设备200可以拦截URL请求401并且将该请求传递给SSLVPN模块280。在一个实施 例中,和策略引擎236通信的SSLVPN模块280确定是否重写URL。在一些实施例中,URL重写 策略可以配置为提供期望的粒度。在具有较细水平粒度的其中一个实施例中,SSLVPN模块 280响应于策略引擎236提供的策略来决定请求访问SSLVPN的客户机102是允许免客户机 访问还是允许基于客户机的访问。在一些实施例中,SSLVPN模块基于策略405或者410的一 个或者多个条件来决定免客户机访问或者基于客户机访问。在其中一个这样的实施例中, 客户机102可以是不允许用户下载SSLVPN客户机的机器。在另一个这样的实施例中,客户 机102是不支持SSLVPN客户机但可以运行SSL使能的浏览器的装置。在另一个这样的实施 例中,SSLVPN模块280可以执行端点扫描来基于以下的一个或者多个来确定客户机102不 支持基于客户机的策略410:不兼容的操作系统、防火墙和反病毒软件。

在一些实施例中,设备200基于该请求401的任意部分来识别策略。请求401可以包 括指示或者协助指示设备200将识别或者选择的策略的部分。在一些实施例中,设备200基 于网络包的首部来识别策略。在其他实施例中,设备200基于网络包的载荷部分识别策略。 在其他实施例中,设备200基于另一个策略来识别策略。在一个实施例中,设备200可以基于 所识别的策略来充当透明代理。在一些实施例中,设备200在策略间切换以根据网络的安全 条件授权免客户机或者基于客户机的访问。通过示例,在一个实施例中,设备200可以识别 策略以在没有检测到反病毒软件或者防火墙存在时授权免客户机访问,而一旦检测到反病 毒软件或者防火墙可运行时就切换到基于客户机的模式。

设备200可基于来自请求的任意细节、信息或者指示来识别策略。在一些实施例 中,设备200基于已经发送请求的客户机102上的用户来识别策略。例如,用户可以被指定为 使用免客户机的SSLVPN会话而不是基于客户机的SSLVPN会话,或者与之相反。在进一步 的实施例中,设备200基于客户机102已经从服务器106请求的应用、资源或者服务来识别策 略。例如,客户机仅使用基于客户机或者免客户机的SSLVPN会话来访问一些应用。在进一 步的实施例中,设备200基于关于客户机102的信息来识别策略。关于客户机的信息可以包 括客户机和服务器106或者相关服务器交互的历史、客户机访问服务器106上特定资源的许 可、客户机访问服务器106上特定资源的验证或者与客户机和服务器交互相关的任意其它 信息。在一些实施例中,设备200基于客户机102正访问的服务器106来识别策略。例如,一些 服务器可以使用或者提供基于客户机的SSLVPN会话,而其他服务器可以使用或者提供免 客户机的SSLVPN会话。在一些实施例中,策略的识别是基于和请求401相关的网络包的任 意部分。在一些实施例中,设备200基于一个或者多个正则表达式或者RegEx来识别策略。在 进一步的实施例中,客户机的请求和任意数量个RegEx相匹配或者比较,该任意数量个 RegEx可以包括用于识别策略或者识别特定URL或者请求的一部分的任意数量个字符、串、 一部分文本或者一部分URL。基于客户机的部分请求和RegEx的匹配或者比较结果,设备200 可以识别策略。

在一个实施例中,免客户机策略405可以配置为提供期望水平的粒度。在一个实施 例中,免客户机策略405可以基于用户配置文件来配置。在另一个实施例中,策略405可以基 于用户或者用户组来配置。在一些实施例中,策略可以基于网络类型、IP地址或者请求类型 中的一个或者多个来配置。在一些实施例中,策略405可以基于客户机所请求或者访问的应 用、资源或者服务来配置。在进一步的实施例中,策略405基于其它策略来配置。在其他实施 例中,多个策略可以逻辑组合在一起。

在一个实施例中,通过诸如也称为AppSecure的AppFW290的应用编程接口(API) 来进行配置。在其他实施例中,命令行接口(CLI)的命令用来配置SSLVPN的免客户机策略 405。在其中一个这样的实施例中,诸如以下的CLI命令用来全局配置免客户机的SSLVPN:

setvpnparameter-ClientLessVpnModeon

在另一个这样的实施例中,免客户机的SSLVPN经由会话动作提供更细的粒度。在 一个实施例中,以下CLI命令可以用来在会话动作中启用免客户机的SSLVPN:

addvpnsessionaction<actionname>-ClientLessVpnModeon

在一些实施例中,免客户机的SSLVPN策略405配置为指定URL编码机制。在其中一 个这样的实施例中,免客户机策略405配置为在全局级别使用以下CLI命令来指定URL编码 机制:

setvpnparam-ClientLessModeUrlEncoding(opaque|transparent|encrypt)

在一个实施例中,“不透明(opaque)”模式涉及URL的主机名称部分的编码,使得用 户不能在清晰文本中看到主机名称。在另一个实施例中,“透明(transpant)”模式涉及不进 行编码,使得用户可以查看正在访问哪个主机。在又一个实施例中,在“透明”模式中,用户 可以查看URL的主机名称和路径信息。在又一个实施例中,“加密(encrypt)”模式涉及对URL 的一个或者多个部分进行加密。在一个实施例中,主机名称和路径信息在“加密”模式中加 密。在另一个实施例中,使用对称加密机制的会话密钥来进行加密。在其它实施例中,使用 本领域内的普通技术人员清楚的多个加密机制来进行加密。

在一些实施例中,URL编码机制专用于会话策略。在其中一个这样的实施例中,URL 编码机制可以配置专用于用户。在另一个这样的实施例中,URL编码机制可以配置为专用于 一个组。在另一个这些实施例中,URL编码机制可以配置专用于虚拟服务器(vServer)。在一 个实施例中,URL可以配置为专用于会话策略,作为会话策略的动作中的参数。这可以使用 诸如以下的CLI命令来实现:

addvpnsessionaction<actionname>-ClientLessModeUrlEncoding(opaque|

transparent|encrypt)

在一些实施例中,在具有免客户机策略405的免客户机的SSLVPN中使用一个或者 多个访问配置文件415来提供更细的粒度。在一个实施例中,访问配置文件415包括用于指 示重写器430的关于重写策略的重写标签。重写策略可以包括用来重写或者修改服务器106 或者客户机102内容或者传输中的经过设备200的每个URL的指令。例如,用于特定URL的重 写策略可以提供用来重写、覆写、修改或者增加来自客户机102或者服务器106的内容的URL 的任意部分的指令。在一些实施例中,重写策略可以提供用来从客户机102或者服务器106 的内容排除或者去除URL的任意部分的指令。在另一个实施例中,访问配置文件415包括用 于检测URL的模式类(称为patclass)。在又一个实施例中,patclass包括或者含有正则表达 式(RegEx)。正则表达式可以包括字符、数字和符号的任意组合,用来检测经过设备200的一 个或者多个URL。在一些实施例中,RegEx包括URL的一个或者多个部分或者段,或者URL的部 分,用来检测服务器106发送给客户机102的内容中的一个或者多个特定的URL。在进一步的 实施例中,正则表达式包括用于匹配或者检测指定类型的内容中的一个或者多个URL的文 本、脚本、字符和数字。该内容可以是服务器106响应于客户机102的请求而提供给客户机的 任意类型和形式的内容。在又一个实施例中,RegEx包括一组密钥组合,以便于对搜索URL字 符串的多种控制。在另一个实施例中,访问配置文件415包括一个或者多个patclass,该 patclass包括传递给客户机的cookie名称。在一个实施例中,访问配置文件可以使用诸如 以下的CLI命令来建立:

setvpnclientlessAccessProfile<profileName>

[-URLRewritePolicyLabel<string>]

[-JavaScriptRewritePolicyLabel<string>]

[-ReqHdrRewritePolicyLabel<string>]

[-ResHdrRewritePolicyLabel<string>]

[-RegexForFindingURLinJavaScript<string>]

[-RegexForFindingURLinCSS<string>]

[-RegexForFindingURLinXComponent<string>]

[-RegexForFindingURLinXML<string>][-ClientConsumedCookies<string>]

在另一个实施例中,访问配置文件415链接到免客户机访问策略405来提供细粒 度。在又一个实施例中,免客户机访问策略405使用诸如以下的CLI命令链接到访问配置文 件415:

addvpnclientlessAccessPolicy<policyName><rule>< vpnclientlessAccessProfile>

访问策略415在规则评估为真时选择访问配置文件415。

在一些实施例中,访问配置文件415和多个应用420a-420n(总的称为应用420)的 一个或者多个相关联。例如,访问配置文件415可以配置为预定的应用420。在一个实施例 中,可以存在配置用于一组应用420的一个全局访问配置文件。在另一个实施例中,每个应 用420可以具有和其相关的单独的访问配置文件415。在又一个实施例中,和应用420a相关 的访问配置文件415用于应用420a的所有版本。在又一个实施例中,可以存在与应用420a的 每个版本相关的单独的访问配置文件。在一些实施例中,可以存在和另一个访问配置文件 415相关的一个或者多个访问配置文件415。在其他实施例中,访问配置文件可以专用于一 个或者多个用户、应用、用户组和应用组。在其他实施例中,访问配置文件415可以根据本领 域内的普通技术人员清楚的期望粒度水平来配置。

在一个实施例中,应用420是包括但不限于WA.Redmond的微软公司制造的Out lookWebAccess(OWA)2003和OWA2007的电子邮件应用。在另一个实施例中,应用420可以 是诸如WA.Redmond的微软公司制造的Sharepoint2007的文档管理平台。在其他实施例中, 应用420可以是本领域内的普通技术人员熟知的任意其它软件或应用。在图4中,所有的应 用420示为在服务器106上执行。在其他实施例中,应用420可以在不同服务器上执行。在其 他实施例中,应用420可以在逻辑组合的服务器群组的一个或者多个服务器上执行。

在一些实施例中,SSLVPN免客户机策略405限制到一个或者多个VPN实体。在一个 实施例中,免客户机策略405限制到VPN全局。在另一个实施例中,免客户机策略405限制到 VPN服务器。在又一个实施例中,免客户机策略405限制到验证、授权和计费(AAA)协议的用 户。在又一个实施例中,免客户机策略405限制到AAA组。在一些实施例中,免客户机策略405 使用诸如如下的CLI命令限制到VPN实体:

bind<entity>-policy<clientlessAccesspolicyName>-priority<pri>

在一个实施例中,SSLVPN模块280和URL重写器430相通信来通知URL重写器430关 于从策略引擎236获取的重写策略。在另一个实施例中,URL重写器直接和策略引擎236相通 信来获取重写策略。重写策略可以包括转换、修改或者覆写服务器106或者客户机102发送 的任意特定URL的指令或者指示。在一些实施例中,重写策略提供用来将特定URL修改或者 重写到另一个URL中的指令或者指示。该修改、改变或者转换可以包括重写、覆写、剪切和粘 贴、加密、替换或者以其他方式转换特定URL或者特定URL的任意部分的任意组合。在一些实 施例中,重写器430重写请求401中的URL并且将修改的URL转发给服务器106。在一个实施例 中,重写器430重写除了文件的扩展名类型之外的整个URL,以允许浏览器导出MIME类型。在 另一个实施例中,重写器430重写该主机名称使得主机名称为SSLVPN站点下的子目录。在 另一实施例中,重写器重写绝对URL,使得不改变相对URL。在又一个实施例中,重写器430重 写主机名称和相对URL。重写器430可以以多个方式中的一个或者多个来进行重写。在一个 实施例中,重写器430将例如诸如http://www.sslvpn.com的SSLVPN站点下的http:// www.unencoded_url.comURL编码为http://www.sslvpn.com/9oatj。在另一个实施例中, 重写器430使用一些会话密钥来对称加密和解密URL。URL的这样的加密称之为模糊化 (obfuscation)。在一个实施例中,重写器430不加密文件扩展名类型和/或SSLVPN主机名 称。在另一个实施例中,重写器430加密路径信息来遮蔽服务器处的目录结构。在一个实施 例中,由SSLVPN模块提供用于加密和解密的密钥。在另一个实施例中,该密钥使用会话ID 来获取。通过例子,URLhttp://www.unencoded_url.com/testsite/contents/file5.html 可以加密为另一个URL,诸如https://svpn.mysite.com/EURL/ whhyghfgdyonfdnv9898aaf.html。在一个实施例中,可以使用公知的编码和译码方案来促 进对URL的标记以用于未来的SSLVPN会话。在另一个实施例中,重写器430使用可逆转换来 重写SSLVPN站点的初始URL。在这样的实施例中,初始URL可以从重写的URL容易地提取。通 过示例,URLhttp://www.xyz.com/htmil/index.html可以重写为URL:/cvpn/http/ www.xyz.com/html/index.html。

中间设备200可以将任意的访问配置文件、策略、规则和动作应用到经过中间设备 200的网络业务量的任意级别粒度的部分或者子集。该粒度级别可以基于该配置从细到粗。 此处描述的访问配置文件规则、规则和策略的逻辑、标准或者条件可以限定或者指定为应 用到经由设备200传输的网络业务量或者传输的任意期望子集或者部分。在一个方面,粒度 级别是指配置可以应用到的网络话务量的一部分的等级、测量值、细度或者粗糙度。在十分 粗略或者粗糙粒度的配置中,访问配置文件、规则或者策略可应用到所有的网络业务量。在 十分细的粒度的配置中,访问配置文件或者策略可以应用到特定用户的网络业务量的指定 子集,诸如特定用户的特定应用的业务量或者业务量的一部分。

在一些粒度的配置中,访问配置文件、策略或者规则应用到发送请求到服务器的 任意客户机102。策略、规则或者访问配置文件可以限定为地址,或者应用到任意客户机 102,并且可以基于客户机102的任意配置或者关于客户机102的信息,诸如客户机102请求 的部分。类似地,策略、规则或者访问配置文件可以限定为地址,或者应用到任意服务器 106,并且可以基于客户机106的任意配置或者关于服务器106的信息,诸如服务器106所响 应的部分。在一些粒度的配置中,访问配置文件、策略或者规则限定为应用到客户机102用 来经由设备200连接到服务器106的指定会话或者连接。

在进一步的实施例中,限定访问配置文件、策略或者规则以应用到经由SSLVPN会 话或者连接来连接的任意客户机102。在进一步的实施例中,限定访问配置文件、策略或者 规则以应用到经由免客户机的SSLVPN会话或者连接来连接的任意客户机102。在进一步的 实施例中,限定访问配置文件、策略或者规则以应用到经由基于客户机的SSLVPN会话或者 连接来连接的任意客户机102。在进一步的实施例中,限定访问配置文件、策略或者规则以 应用到发送请求到特定服务器106的任意客户机102或者客户机会话。在又一个实施例中, 限定访问配置文件、策略或者规则以应用到请求服务器上特定应用或者资源的任意客户机 102或者客户机会话。在进一步的实施例中,限定访问配置文件、策略或者规则以基于例如 cookie是否被启用或者停用的cookie配置应用到任意客户机102或者客户机会话。

在进一步的实施例中,限定访问配置文件、策略或者规则以应用到发送包括特定 URL、或者特定URL的一部分的请求的任意客户机102或者客户机会话。在又一个实施例中, 限定访问配置文件、策略或者规则以基于由客户机102发送的请求的一部分和访问配置文 件、策略或者规则的相或者密钥之间的匹配来应用到任意客户机102或者客户机会话。在一 些实施例中,限定访问配置文件、策略或者规则以基于关于访问服务器106的客户机102的 信息来应用到任意服务器106或者服务器会话。这样的信息可以包括客户机102的请求的一 部分或者特征、客户机102的设置或者配置、或者客户机102的任意其它相关信息。在一些实 施例中,限定访问配置文件、策略或者规则以基于服务器106的配置或者服务器106发送到 客户机102的内容的特征来应用到任意服务器106或者服务器会话。

现在参考图5,示出描述设备200执行URL重写所采用的方法500的实施例的步骤的 流程图。设备200从客户机上的浏览器接收URL请求(步骤510)。驻留在设备200上的SSLVPN 模块280经由策略确定是否提供免客户机或者基于客户机的访问到SSLVPN(步骤515)。策 略引擎236还确定是否存在和该请求相关的访问配置文件415(步骤520)。驻留在设备200上 的URL重写器430响应于该访问配置文件和/或策略来重写URL(步骤525)。设备200将修改的 请求转发给服务器106(步骤530)。

在一个实施例中,设备200从网络104上的客户机接收URL请求(步骤510)。在另一 个实施例中,设备200可以驻留在客户机器102上。在一个实施例中,在设备200处响应于用 户访问由设备200提供的入口页面来接收诸如请求401的客户机请求。该请求可以包括任意 类型和形式的内容。在一些实施例中,URL请求包括任意数量的URL。在进一步的实施例中, URL请求包括关于客户机102上的用户的信息。在又进一步的实施例中,URL请求包括关于客 户机102的信息,诸如客户机网络连接的安全级别、客户机的安全特性、用户特征或者关于 客户机的任意类型和形式的信息。在进一步的实施例中,URL请求包括关于服务器106的信 息,客户机102请求从该服务器106访问信息、服务或者资源。

设备200可经由策略引擎236提供的策略来确定为SSLVPN提供免客户机还是基于 客户机的访问(步骤515)。免客户机或者基于客户机的SSLVPN会话可以是客户机102和服 务器106之间经由设备200的会话、客户机102和设备200之间的会话或者设备200和服务器 106之间的会话。在一个实施例中,策略引擎236提供的免客户机策略405是可配置的。在一 个实施例中,策略引擎236提供的基于客户机的策略410是可配置的。在另一个实施例中,也 可以配置确定提供免客户机还是基于客户机的访问的策略。在一个实施例中,可以基于请 求401的一部分来做出确定。在另一个实施例中,如果客户机不具备许可或者资源来支持基 于客户机的访问,则确定提供免客户机的访问。在又一个实施例中,设备总是确定提供免客 户机访问。在又一个实施例中,基于以下的一个或者多个来确定免客户机和基于客户机的 访问:请求401的网络包、网络条件、客户机的操作系统及其版本、防火墙、运行在客户机上 的反病毒软件和客户机的浏览器。在一些实施例中,设备200识别基于客户机102所请求的 应用来指示是建立基于客户机还是建立免客户机的SSLVPN会话的会话策略。在进一步的 实施例中,设备识别基于来自客户机102的请求的URL来指示是建立基于客户机的SSLVPN 会话还是建立免客户机的SSLVPN会话的会话策略。用于识别会话策略的URL可以由访问配 置文件415或者访问配置文件415的RegEx来检测和识别。在一些实施例中,设备200识别基 于客户机102上的用户来指示是建立基于客户机的SSLVPN会话还是建立免客户机的SSL VPN会话的会话策略。客户机102上的用户可以具有特权或限制,使得依赖于这样的配置设 备200对于用户认识到并且识别出基于客户机或者经由免客户机的SSLVPN会话的会话策 略。在一些实施例中,设备200识别基于关于客户机102的信息来指示是建立基于客户机的 SSLVPN会话还是建立免客户机的SSLVPN会话的会话策略。在一些实施例中,信息可以包 括客户机102的标识,诸如因特网协议(IP)地址、主机名称、客户机102发送请求所经由的网 络的名称、客户机102的互联网提供者的名称、或者关于任意其他客户机102的信息。在一些 实施例中,设备200识别基于客户机102的请求所识别的服务器来指示是建立基于客户机的 SSLVPN会话还是免客户机的SSLVPN会话的会话策略。在又一个实施例中,设备200识别基 于客户机102请求的服务器106的资源或者服务的类型来指示是建立基于客户机的SSLVPN 会话还是建立免客户机的SSLVPN会话的会话策略。在进一步的实施例中,设备200识别基 于客户机102请求的服务器106的特定资源或者服务来指示是建立基于客户机的SSLVPN会 话还是免客户机的SSLVPN会话的会话策略。

在一些实施例中,访问配置文件415和请求401相关联。在一个实施例中,策略引擎 236确定对于请求401应该调用哪个访问配置文件(步骤520)。访问配置文件415可以基于会 话策略的识别或者基于客户机102的请求来调用。在一个实施例中,基于请求401的一部分 做出该确定。例如,设备200根据请求的体的一部分和/或首部来确定要使用策略405或者 410和/或要使用访问配置文件415。在一些实施例中,基于访问配置文件415的RegEx来识别 访问配置文件415。在进一步的实施例中,访问配置文件415的RegEx与客户机请求的URL或 者URL的一部分相匹配,并且响应于该匹配,识别所匹配的RegEx的访问配置文件415。在另 一个实施例中,基于URL请求401所请求的应用420来确定访问配置文件。在又一个实施例 中,策略引擎确定调用多于一个的访问配置文件415用于请求401。在一个实施例中,访问配 置文件415提供重写策略给重写器430。在另一个实施例中,访问配置文件提供解析请求的 策略来检测URL。在一些实施例中,存在内置的缺省配置文件。在其中一个这样的实施例中, 如果访问配置文件没有选择任意其它配置文件,则选择缺省配置文件。

在一个实施例中,驻留在设备200上的URL重写器如策略引擎所指示的那样来重写 URL(步骤525)。在另一个实施例中,重写策略存在于访问配置文件415中。重写策略可以是 通过将RegEx与客户机请求的URL或者URL的一部分相匹配来识别的访问配置文件415的一 部分。在又一个实施例中,重写策略作为单独的实体存在于策略引擎中。在一些实施例中, 重写策略指定哪种类型的内容将要被重写。内容类型总的可以称为转换类型。在一个实施 例中,转换类型是URL。在另一个实施例中,转换类型是文本。在又一个实施例中,转换类型 是http请求(http_req)。在又一个实施例中,转换类型是http响应(http_res)。在一个实施 例中,重写策略可以使用诸如以下的CLI命令来增加到现存的策略中:

addrewritepolicylabel<labelName><transform>

在另一个实施例中,重写动作可以使用诸如以下的CLI命令以更高的粒度来指定:

addrewriteaction<action-name>clientless_vpn_encode/clientless_vpn_ decode/

clientless_vpn_encode_all/clientless_vpn_decode_all<target>

设备200将修改的请求转发给服务器106(步骤530)。在一个实施例中,设备200通 过可以和客户机和设备之间的网络104大致相同或者不相同的网络104’来转发修改的请求 给服务器106。在另一个实施例中,设备200经由一个或者多个中间设备200’(未示)转发修 改的请求。

现在参考图6,示出描述从服务器通过设备传送到客户机的服务器响应和修改的 服务器响应的实施例的框图。简单概述,服务器响应601从服务器106经由网络104’传送给 设备200。设备200通过重写服务器响应601中的URL来修改服务器响应601。修改的响应601’ 随后经由网络104传送给客户机102。

响应于服务器106从设备200接收修改的请求401’(未示),从服务器106传送服务 器响应601。服务器响应601可以是对于任意客户机102传输或者请求的任意响应。在一些实 施例中,服务器响应601是对于请求401的响应。服务器响应601可以包括以下一个或者多个 资源:静态图像、动态图像、音频文件和视频文件。在其中一个实施例中,静态图像是诸如 GIF、JPEG或者PNG的光栅图像格式。在另一个这样的实施例中,静态图像是诸如SVG闪烁的 矢量格式。在又一个实施例中,动态图像是动态GIF图像、Java小程序或者Shockwave图像。 在又一个实施例中,音频文件可以是以下多个格式的其中一个:MIDI、WAV、M3U和MP3。在另 一个实施例中,视频文件可以是以下多个格式的其中一个:WMV、RM、FLV、MPG和MOV。在一个 实施例中,服务器响应601可以包括交互文本、视图和按钮。在一些实施例中,服务器响应 601的一个或者多个资源通过URL识别。在一个实施例中,使用诸如XML、HTML或者XHTML的标 记语言来建立一个或者多个URL605。在另一个实施例中,服务器响应601中的一个或者多 个URL610包括层叠样式表(CSS)和元数据。在又一个实施例中,服务器响应601中的一个或 者多个URL620包括诸如Java脚本或者AJAX的脚本。在又一个实施例中,服务器响应601中 的一个或者多个URL615包括使用用户接口(UI)语言所写的部件(X部件)。

设备200识别服务器响应601中的多种URL605、610、615、620并且根据由策略引擎 236诸如经由访问配置文件指定的重写策略来重写、修改或者转换URL。服务器响应601中的 各种URL可以使用可以与任意的各种URL的一部分相匹配的正则表达式来识别或者检测。在 一个实施例中,修改的服务器响应601’随后通过网络104传送给客户机102。在另一个实施 例中,修改的服务器响应601’包括通过修改标记语言URL605建立的URL605’。在又一个实 施例中,修改的服务器响应601’包括通过修改CSSURL610建立的URL610’。在又一个实施 例中,修改的响应601’包括通过修改X部件URL615建立的URL615’。在另一个实施例中,修 改的响应601’包括通过重写Java脚本URL620建立的URL620’。在其他实施例中,修改的响 应可以包括本领域内的普通技术人员清楚的其它部件、脚本和对象。在一个实施例中,设备 200可以将服务器响应601中不存在的内容置于修改的响应601’中。在另一个实施例中,修 改的响应601’可以和服务器响应601大体相同。

现在参考图7,示出描述通过设备修改或者重写服务器响应上的一个或者多个URL 的方法的实施例的步骤的流程图。该设备200接收服务器响应601(步骤710)。策略引擎确定 服务器响应601中出现的内容的类型并且确定经由访问配置文件415如何检测内容中的URL (步骤715)。策略引擎还确定经由访问配置文件如何重写URL(步骤720)。重写器430重写URL (步骤725)并且设备200将修改的响应转发给客户机102(步骤730)。

在一个实施例中,服务器响应601包括不同类型的内容。在一个实施例中,服务器 响应包括使用诸如扩展标记语言(XML)、超文本标记语言(HTML)或者扩展HTML(XHTML)的标 记语言建立的内容。在另一个实施例中,服务器响应601包括层叠样式表(CSS)和元数据。在 又一个实施例中,服务器响应601包括诸如Java脚本或者AJAX的脚本。在又一个实施例中, 服务器响应601包括使用用户接口(UI)语言所写的部件(X部件)。在其他实施例中,服务器 响应可以包括对于本领域内的普通技术人员清楚的文件、对象、图像、视频和交互内容。在 一些实施例中,服务器响应601包括客户机102所请求的服务器提供的应用。在进一步的实 施例中,服务器响应601包括客户机102请求的任意资源或者服务。

在一个实施例中,该设备通过网络104’接收服务器响应601(步骤710)。在另一个 实施例中,服务器响应601包括由一个或者多个URL识别的一个或者多个资源。如结合图6详 细描述的,服务器响应可以包括多个资源中的一个或者多个。

和策略引擎236相通信的设备200确定存在于响应601中的内容的类型(步骤715)。 在一个实施例中,通过解析该响应并且检测内容类型的存在来进行该确定。在另一个实施 例中,通过将搜索串模式类(patclass)和响应601相匹配来进行该确定。在一个实施例中, 设备200检测所确定内容类型中的嵌入URL的存在。在另一个实施例中,经由称为正则表达 式(RegEx)的一组密钥组合来进行URL检测,以促进搜索串上的多种控制。在一些实施例中, RegEx嵌入到免客户机访问配置文件415中。RegEx可以包括可用来与服务器内容的任意部 分匹配的任意字符、数字和符号的任意组合,以检测或者识别一个或者多个URL。在一个实 施例中,访问配置文件415包括用于检测Java脚本的URL的RegEx。在另一个实施例中,访问 配置文件415包括用于检测CSS的URL的RegEx。在另一个实施例中,访问配置文件415包括用 于检测X部件的URL的RegEx。在又一个实施例中,访问配置文件415包括用于检测诸如XML的 标记语言的URL的RegEx。访问配置文件415可以包括一个或者多个RegEx和重写策略,用来 检测或者识别特定的URL并且重写或者修改所识别的特定URL。在一个实施例中,可以使用 诸如以下的CLI命令将RegEx指定在访问配置文件415的内部:

[-RegexForFindingURLinJavaScript<string>]

在一些实施例中,用户可以限定规则来检测设备未识别的内容中的URL。在其他实 施例中,用户可以指定RegEx来检测所识别的内容类型中的URL。

重写器430可以根据策略引擎236指定的策略重写所检测或者识别的URL(步骤 725)。在一些实施例中,重写器430使用来自访问配置文件415的一个或者多个重写策略来 重写经由来自访问配置文件415的RegEx所检测或者识别的URL。在一个实施例中,重写策略 嵌入访问配置文件415中。在另一个实施例中,用于响应的重写策略可以不同于用于请求的 重写策略。在又一个实施例中,用于请求和响应的重写策略可以大致上相同。在又一个实施 例中,由诸如AppFW290的应用编程接口解析响应601的体。在一个实施例中,通过使用诸如 以下的CLI命令将管理重写的策略增加到策略引擎236:

AddrewritePolicyLabel<string>]

在另一个实施例中,策略引擎指定重写器430传递特定的URL,而不重写。在又一个 实施例中,通过将重写策略中的多个条件逻辑组合可以提供细粒度。通过示例,通过诸如以 下的CLI命令可以表示细粒度重写策略:

addrewritepolicyns_cvpn_default_abs_url_pol'(url.startswith(" http://")||

url.startswith("https://"))&&!url.hostname.server.startswith(" schemas.")&&

!url.hostname.domain.contains_any("ns_cvpn_default_bypass_domain")'

ns_cvpn_default_url_encode_act

在此例中,策略ns_cvpn_default_abs_url_pol用来重写所有的绝对URL,其中服 务器名称不是“schemas”并且域不与ns_cvpn_default_bypass_domainpatclass中指定的 任意域相匹配。在一些实施例中,在客户机102执行重写。在其中一个这样的实施例中,设备 200将Java脚本插入到修改的响应601’中,以在客户机102’处执行。在另一个这样的实施例 中,对于设备200不能识别为URL的部分响应,调用客户机侧重写。在其他实施例中,重写策 略可以配置为处理服务器响应601中的压缩内容。

一些CLI命令接下来通过例子描述。在一个实施例中,管理员可以指定如何使用诸 如以下的CLI命令来识别诸如OWA2007的应用:

addvpnclientlessAccessPolicyowa_2007_pol

'http.req.url.path.get(l).eq("owa2007")'ns_cvpn_owa_profile

在另一个实施例中,通过使用诸如以下CLI命令将该策略限制到vpn全局可以将其 全局激活:

bindvpnglobal-policyowa_2007_pol-priority10

在一个实施例中,将存在用于OutlookWebAccess的内置配置文件ns_cvpn_owa_ policy并且相同配置文件将用于OWA2003和OWA2007。在另一个实施例中,将存在缺省免 客户机访问策略ns_cvpn_owa_policy,其在缺省URL(/exchange,/owa,/exchweb和/ public)用于提供OutlookWebAccess情况下选择OWA配置文件。在又一个实施例中,存在 用于免客户机访问ns_cvpn_default_profile的内置通用配置文件,如果没有其它免客户 机访问策略选择任意其它配置文件,则选择该配置文件。该缺省配置文件将启用到任意web 站点的免客户机访问,其使用标准HTML并且不使用Java脚本建立URL。

设备200将修改的响应601’转发给客户机102(步骤730)。在一些实施例中,设备 200将任意数量的修改的响应601’转发给任意数量的客户机102。在进一步的实施例中,设 备200将服务器响应601转发给客户机。在进一步的实施例中,设备200将修改的响应601’转 发给客户机102,该修改的响应601’被修改或者转换为包括具有对特定URL的改变或者修改 的服务器响应601的所有内容,该特定URL诸如URL605、610、615和620。修改的响应601’的 内容可以包括响应601的任意部分以及修改的URL,该修改的URL使用一个或者多个RegEx来 识别或者检测并且使用访问配置文件415的重写策略来修改或者重写。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号