用于终端用户体验监控的系统和方法

文档序号:6476617阅读:184来源:国知局
专利名称:用于终端用户体验监控的系统和方法
技术领域
本申请总的涉及体验监控。更具体地,本申请涉及用于提供
终端用户体验监控的系统和方法。
背景技术
终端用户体验监控是一个富有挑战性的任务。对于HTML内容的终端用户体验由以下几个因素组成服务器响应请求的时间长度,浏览器加载web页面的时间长度,和在web页面上交付(render)相关内容的时间长度。后面的两个因素将依据浏览器类型和浏览器工具而变化。将详细描述用于测量实际的页面加载时间、将加栽时间与对于特定请求的服务器响应相关联,以及测量用户与页面相互作用的时间长度的机制。在一些配置中,在哪里"R告所测量的数据能够带来多种挑战。例如,为了使注入装置保持在某一性能阈值处操作,所测量的数据不可以被报告给注入脚本的装置。为了终端用户体验监控而开发的脚本可以采取多种形式。然而,由事件记录的某些事件提供比其它的更好的结果。终端用户对web性质的HTML内容的满意与在页面上没有错误是直接相关的。在web页面开发期间,难以确定第三方脚本或其它内容是否正确地加载。例如,如果终端用户正使用来自于一个或多个第三方的弹出阻挡器,这会影响导致错误发生的web页面的正确交付,并因此影响终端用户的体验。

发明内容
在一个方面,本申请以在多个域之间传递性能数据的方法为特征。所述方法包括在连接到第一域的终端用户的计算装置处接收包括由网络设备注入web页面中的脚本的web页面,在终端用户的计算装
ii置处执行脚本,以及记录在脚本中指示的性能参数。所述方法还包括发送对于由web页面标识的项目的请求到第二域的计算装置,以及将所记录的性能参数作为所发送的请求的一部分来发送给第二域的计算装置。在一个实施例中,所述方法包括将事件分类为统一资源定位器的询问参数的一部分。在另一个实施例中,所述方法包括将事件分类为对于由注入的脚本所创建的图像的URL源的询问参数。在进一步的实施例中,该图像由注入的脚本动态创建。在另一个实施例中,所述方法包括经由SSL通信将所记录的性能发送到第二域。在其它实施例中,所述方法包括将所记录的性能发送到第二域的服务器。此外,所述方法可以包括发送对于由web页面标识的图像的请求到第二域的计算装置。在另一个方面,本申请以在其上具有指令的计算机可读介质为特征,当所述指令被执行时提供在多个域之间传递性能数据的方法。所述计算机可读介质包括在连接到第一域的终端用户的计算装置处接收包括由网络设备注入web页面中的脚本的web页面的指令,在终端用户的计算装置处执行脚本的指令,以及记录在脚本中指示的性能参数的指令。所述计算机可读介质还包括发送对于由web页面标识的项目的请求到第二域的计算装置的指令,以及将记录的性能参数作为所发送的请求的 一部分发送给第二域的计算装置的指令。在又一个方面,本申请以用于在多个域之间传递性能数据的系统为特征。所述系统包括在连接到第一域的终端用户的计算装置处接收包括由网络设备注入web页面中的脚本的web页面的装置,在终端用户的计算装置处执行脚本的装置,以及记录在脚本中指示的性能参数的装置。所述系统还包括发送对于由web页面标识的项目的请求到第二域的计算装置的装置,以及将所记录的性能参数作为所发送的请求的一部分发送给第二域的计算装置的装置。在一个方面,本申请以用于确定web页面中错误的存在的方法为特征。所述方法包括在终端用户的计算装置处接收包括由网络设备嵌入的脚本的web页面,所述脚本具有当被所述计算装置执行时对浏览器错误事件的通知进行登记的指令,在终端用户的计算装置处执行脚本,以及当错误发生时记录在交付web页面期间的错误的发生。在一个实施例中,所述方法包括记录关于执行web页面内容的应用的信息。在进一步的实施例中,所述方法包括记录相对于web页面执行的错误发生的时间。在另 一个实施例中,包括由网络i殳备加速通过终端用户的计算装置接收web页面。所述方法还能够包括将所记录的错误发生报告给另一个计算装置,所述另一个计算装置位于第二域上。在进一步的实施例中,经由SSL协议与第二域的另一个计算装置报告发生。在另一个方面,本申请以用于确定web页面中错误的存在的系统为特征。所述系统包括在终端用户的计算装置处接收包括由网络设备嵌入的脚本的web页面的装置,所述脚本具有当被计算装置执行时对浏览器错误事件的通知进行登记的指令,在终端用户的计算装置处执行脚本的装置,以及当错误发生时记录在交付web页面期间的错误的发生的装置。在又一个方面,本申请以在其上具有指令的计算机可读介质为特征,当所述指令被执行时确定web页面中错误的存在。所述计算机可读介质包括在终端用户的计算装置处接收包括由网络设备嵌入的脚本的web页面的指令,所述脚本具有当被计算装置执行时对浏览器错误事件的通知进行登记的指令,在终端用户的计算装置处执行脚本的指令,以及当错误发生时记录在交付web页面期间的错误的发生的指令。在一个方面,本申请以测量与加载web页面相关的参数的方法为特征。所述方法能够包括在终端用户的计算装置处接收包括由网络设备注入的脚本的web页面,所述脚本具有当被执行时对于与attachEvent命令和addEventListener命令中的至少一个相关的事件的发生进行登记的指令,在终端用户的计算装置处执行脚本,以及记录在交付web页面期间与至少 一个命令相关的事件的发生。在一个实施例中,所述方法包括记录关于执行web页面内容的应用的信息。在另一个实施例中,所述方法包括记录相对于web页面执行的错误发生的时间。
在其它实施例中,attachEvent命令包括onreadystatechange 事件和onbeforeunload事件中的至少一个。在另一个实施例中, ad犯ventLi stener命令包括腦ContentLoaded事件、load事件和unload 事件中的至少一个。在又一个实施例中,所述方法包括由网络设备加速终端用户 的计算机装置接收web页面。在另一个方面,本申请以在其上具有指令的计算机可读介质 为特征,当所述指令被执行时测量与加载web页面相关的参数。所述计 算机可读介质包括在终端用户的计算装置处接收包括由网络设备注入 的脚本的web页面的指令,所述脚本具有当被执行时对于与attachEvent 命令和addEventListener命令中的至少一个相关的事件的发生进行登记 的指令,在终端用户的计算装置处执行脚本的指令,以及记录在交付web 页面期间与至少一个命令相关的事件的发生的指令。在又一个方面,本申请以用于测量与加载web页面相关的参 数的系统为特征。所述系统包括在终端用户的计算装置处接收包括由 网络设备注入的脚本的web页面的装置,所述脚本具有当被执行时为与 attachEvent命令和addEventUstener命令中的至少一个相关的事件的 发生而登记的指令,在终端用户的计算装置处执行脚本的装置,以及记 录在交付web页面期间与至少 一个命令相关的事件的发生的装置。在一个方面,本申请以测量与加载web页面相关的参数的方 法为特征。所述方法包括由网络设备拦截来自于计算装置的对web页 面的请求,由网络设备发送对web页面的请求到web服务器,以及由网 络设备拦截来自于web服务器的响应,所述响应包括所被请求的web页 面的至少一部分。所述方法还可以包括由网络设备注入具有指令的脚 本,所述指令当被计算装置执行时登记所通知的web页面事件的发生从 而创建所修改的响应,并且发送所修改的响应到请求web页面的计算装 置。在一个实施例中,所述方法包括由网络设备加速来自于计算 装置对web页面的被栏截的请求。在其它实施例中,所述方法包括加速 来自于web服务器的被拦截的响应以及到计算装置的被修改的响应。
在进一步的实施例中,所述加速包括至少一个压缩来自于计 算装置的对web页面的被拦截的请求、来自于web服务器的被拦截的响 应以及到计算装置的被修改的响应中的至少一个。在另 一个实施例中, 所述加速包括由网络设备应用传输控制协议池。在其它实施例中,所述加速包括由网络设备应用传输控制协 议多路复用。此外,所述加速可以包括由网络设备应用传输控制协议緩 冲。在又一个实施例中,所述加速包括由网络设备高速緩存被请求的web 页面中的至少一部分内容。在另 一个方面,本申请以在其上具有指令的计算机可读介质 为特征,当所述指令被执行时测量与加载web页面相关的参数。所述计 算机可读介质包括由网络设备拦截来自于计算装置的对web页面的请 求的指令,由网络设备发送对web页面的请求到web服务器的指令,以 及由网络设备拦截来自于web服务器的响应的指令,所述响应包括被请 求的web页面的至少一部分。所述计算机可读介质还包括由网络设备 注入具有指令的脚本的指令,当所述指令被计算装置执行时登记所通知 的web页面事件的发生从而创建所修改的响应,以及发送所修改的响应 到请求web页面的计算装置的指令。在又一个方面,本申请以用于测量与加载web页面相关的参 数的系统为特征。所述系统包括由网络设备拦截来自于计算装置的对 web页面的请求的装置,由网络设备发送对web页面的请求到web服务器 的装置,以及由网络设备拦截来自于web服务器的响应的装置,所述响 应包括被请求的web页面的至少一部分。所述系统还包括由网络设备 注入具有指令的脚本的装置,当所述指令被计算装置执行时登记所通知 的web页面事件的发生从而创建所修改的响应,以及发送所修改的响应 到被请求web页面的计算装置的装置。在又一个方面,本申请以用于测量与加载web页面相关的参 数的系统为特征。所述系统包括由网络设备拦截来自于计算装置的对 web页面的请求的装置,由网络设备发送对web页面的请求到web服务器 的装置,以及由网络设备拦截来自于web服务器的响应的装置,所述响 应包括被请求的web页面的至少一部分。所述系统还包括由网络设备
15注入具有指令的脚本的装置,当所述指令被计算装置执行时登记所通知
的web页面事件的发生从而创建所<务改的响应,以及发送所修改的响应 到被请求web页面的计算装置的装置。


下面的附图描述了本发明的某些说明性实施例,其中相同的 附图标记是指相同的元件。这些描述的实施例将被理解为对本发明的说 明而不是以任何方式对本发明进行限制。图1A是客户机经由设备来访问服务器的网络环境的实施例的
框图;图1B是经由多个设备来将计算环境从服务器递送到客户机的 网络环境的另 一个实施例的框图;图1C是经由一个或多个不同的设备来将计算环境从服务器递 送到客户机的网络环境的另 一个实施例的框图;图1D是经由网络来将计算环境从服务器递送到客户机的环境 的实施例的框图;图1E和1F是计算装置的实施例的框框图;图2B是用于在客户机和服务器之间优化、加速、负载平衡和 路由通信的设备的另 一个实施例的框图;图3是经由设备来与服务器进行通信的客户机的实施例的框
图;图4是用于提供终端用户体验监控的网络环境的实施例的图;图5描述将脚本注入web页面的方法的实施例;图6描述记录与使用web页面的终端用户体验相关的参数的
登记方法的一个实施例;图7是用于测量与使用web页面的终端用户体验相关的参数
的脚本的实施例;图8是用于测量与使用web页面的终端用户体验相关的参数的脚本的另一个实施例;图9是用于测量与使用web页面的终端用户体验相关的参数 的脚本的另一个实施例;以及图IO描述报告与使用web页面的终端用户体验相关的所收集 的参数的方法的 一个实施例。
具体实施例方式为了阅读下面的本发明的多个实施例的描述,说明下面的说 明书的各部分以及它们相应的内容是有帮助的 部分A描述网络环境和计算环境;
部分B描述用于将计算环境加速递送到远程用户的系统和设备架构 的实施例;
部分C描述用于加速在客户机和服务器之间的通信的客户机代理的 实施例;以及
部分D描述用于终端用户体-睑监控的系统和方法的实施例。
A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可 以部署这样的实施例的网络和计算环境是有帮助的。现在参考图1A,描 述了网络环境的一个实施例。总的来"i兌,网络环境包括经由一个或多个 网络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可以部署在网络IOV上。在 一个实施例中,第一设备200与第二设备200'相通信。在其它的实施例 中,设备200可以是在与客户机102相同或不同的网络104, 104'上的任 意客户机102或服务器106的一部分。 一个或多个设备200可以位于在 客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,设备200包括被称为Citrix NetScaler装 置的由位于Ft. Lauderdale Florida的Citrix Systems />司制造的任-意网络装置。在其它实施例中,设备200包括由位于Seattle,Washington 的F5 Networks公司制造的被称为WebAccelerator和BigIP的任意一个 产品实施例。在另一个实施例中,设备205包括由位于Sunnyvale, California的Juniper Networks />司制造的DX加速装置平台和/或诸如 SA700、 SA2000、 SA4000和SA6000装置的SSL VPN系列装置中的任意一 个。在又一个实施例中,设备200包括由位于San Jose, California的Cisco Systems公司制造的任意应用加速和/或安全相关的设备和/或软 件,例如Cisco ACE应用控制引擎才莫块业务(Application Control Engine Module service)软件和网络模块以及Cisco AVS系列应用速度系统 (Application Velocity System)。在一个实施例中,该系统可以包括多个逻辑分组的服务器 106。在这些实施例中,服务器的逻辑分组可以被称为服务器群组38。在 这些实施例中的一些实施例中,服务器106可以是在地理上分散的。有 时候,群组38可以被管理为单一的实体。在其它实施例中,服务器群组 38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多 个客户机102来执行一个或多个应用。在每个群组38中的服务器106能够是不同种类的。 一个或多 个服务器106能够根据一种类型的操作系统平台(例如,由位于 Redmond, Wa shi ng ton的微软公司出品的WIND0WS NT )来进行操作,而一 个或多个其它的服务器106能够根据另一种类型的操作系统平台(例如, Unix或Linux)来进行操作。每个群組38中的服务器106不需要与同一 群组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组
network, MAN)连接来互连。例如,群组38可以包括在物理上位于不同 的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的服务器 106。如果使用局域网(LAN)连接或一些形式的直接连接来连接服务器 106,则能够增加在群组38中的服务器106之间的数据传输速度。服务器106可以被称为文件服务器、应用服务器、web服务器、 代理服务器或网关服务器。在一些实施例中,服务器106可以有能力起到 应用服务器或主应用服务器的作用。在一个实施例中,服务器106可以包 括活动目录(Active Directory )。客户机102也可以被称为客户机节点 或端点。在一些实施例中,客户机102有能力起到寻求访问服务器上的应 用的客户机节点以及作为对于其它的客户机102a-102n提供对寄载的应 用的访问的应用服务器的作用。在一些实施例中,客户机102与服务器106进行通信。在一 个实施例,客户机102直接与群组38中的服务器106的其中一个进行通
19信。在另一个实施例中,客户机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可以被部署在第一分 支机构,而第二设备20(K被部署在第二分支机构、在一些实施例中,第 一设备200和第二设备200'彼此协同或联合工作,以加速客户机和服务 器之间的网络业务量或应用和数据的递送。现在参考图1C,描述了使用一个或多个其它类型的设备,例 如在一个或多个WAN优化设备205, 205'之间,来部署设备200的网络环 境的另一个实施例。例如,第一 WAN优化设备205显示在网络104和之间,而第二 WAN优化设备205'可以部署在设备200和一个或多个服务 器106之间。通过示例,公司可以在分支机构部署第一 WAN优化设备205, 而在数据中心部署第二 WAN优化设备205'。在一些实施例中,设备205 可以位于网络104'上。在其它实施例中,设备205'可以位于网络104上。 在一些实施例中,设备205'可以位于网络10或网络104"上。在一个实 施例中,设备205和205'在同一个网络上。在另一个实施例中,设备205 和205'在不同的网络上。在另一个实例中,第一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的产品实施例中的任意一种。在另一个 实施例中,i殳备205包括由位于Sunnyvale, California的Juniper Networks/>司出品的WX和WXC WAN加速装置平台中的任意一种。在一 些实施例中,设备205包括由San Francisco, California的Riverbed Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任意一 种。在其它实施例中,设备205包括由位于Roseland,NewJersey的Expand Networks公司出品的WAN相关装置中的任意一种。在一个实施例中,设 备205包4舌由4立于Cupertino, California的Packeteer公司出品的4壬 意一种WAN相关设备,例如由Packeteer提供的PacketShaper、 iShared 和SkyX产品实施例。在又一个实施例中,设备205包:fe由位于San Jose, California的Cisco Systems公司出品的任意WAN相关设备和/或软件, 例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。在一个实施例中,设备205提供用于分支机构或远程办公室的应用和数据加速业务。在一个实施例中,设备205包括广域文件服务 (WAFS)的优化。在另一个实施例中,设备205加速文件的递送,例如 经由通用Internet文件系统(CIFS)协议。在其它实施例中,设备205 在存储器和/或存储设备中提供高速緩存来加速应用和数据的递送。在一 个实施例中,设备205提供在任意级别的网络堆栈或在任意的协议或网 络层的网络业务量的压缩。在另一个实施例中,设备205提供传输层协 议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应 用和数据的递送。例如,在一个实施例中,设备205提供传输控制协i义 (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' 的安全虛拟专用网连接,例如SSL VPN连接。在又一些实施例中,设备 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包括Citrix Systems公 司的例如MetaFrame或Citrix表示(Presentation)月良务器11<的Citrix 访问套件tm的任意部分和/或由微軟公司出品的任意一种微软⑧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可以执行、操作或以其他方式^f是供应用,所述应 用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型 和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或能够在客户^/L 102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中, 应用可以是代表客户机102在服务器106上执行的基于服务器或基于远 程的应用。在一个实施例中,服务器106可以使用任意瘦-客户机或远程 显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft. Lauderdale, Florida的Citrix Systems公司出品的独立计算架构(ICA) 协议或由位于Redmond, Washington的微软公司出品的远程桌面协议 (RDP)。应用能够使用任意类型的协议,并且它可以是例如HTTP客户机、 FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包 括与VoIP通信相关的任意类型的软件,例如软IP电话。在进一步的实 施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输 -現频和/或音频的应用。在一些实施例中,服务器106或服务器群组38可以运行一个 或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用的应 用。在一个实施例中,服务器106或服务器群组38作为应用而执行Ci trix Systems公司的例如MetaFrame或Citrix表示服务器頂的Citrix访问套 件tm的任意部分和/或由微軟公司出品的任意一种微软⑧Windows终端服 务。在一个实施例中,应用是由位于Fort Lauderdale, Florida的Citrix Systems公司开发的ICA客户机。在其它实施例中,应用包括由位于Redmond, Washington的微软公司开发的远程桌面(RDP)客户机。此外, 服务器106可以运行应用,例如,所述服务器106可以是提供例如由位 于Redmond, Washington的孩史软/>司出品的微:软Exchange的电子邮件月良 务的应用服务器、web或Internet服务器、或桌面共享服务器、或协作 服务器。在一些实施例中,任意一种应用可以包括任意类型的寄载服务 或产品,例如由Santa Barbara, California的Citrix Online部门提供 的GoToMeeting 、由位于Santa Clara, Cal ifornia的WebEx公司提供的 WebEx 、或由位于Redmond, Washington的微软公司提供的微软Office Live 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 )递送模型的性能。在一些实施例中,监控业务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 7>司出品的净皮牙尔为 EdgeSight的任意一种产品实施例。在另一个实施例中,性能监控业务 198和/或监控代理198包括由位于Palo Alto, California的Symphoniq 公司出品的被称为TrueView产品套件的产品实施例的任意部分。在一个 实施例中,性能监控业务198和/或监控代理198包括由位于San Francisco, California的TeaLeaf技术公司出品的^皮称为TeaLeafCX产 品套件的产品实施例的任意部分。在其它实施例中,性能监控业务198 和/或监控代理198包括由位于Houston, Texas的BMC软件公司出品的诸 如BMC性能管理器和巡逻产品(BMC Performance Manager and Patrol products)的商业业务管理产品的任意部分。客户机102、服务器106和设备200可以被部署为和/或执行 在任意类型和形式的计算装置,例如能够在任意类型和形式的网络上通 信并执行此处描述的操作的计算机、网络装置或设备。图1E和1F描述 了可用于实施客户机102、服务器106或设备200的实施例的计算装置 100的框图。如图IE和IF所示,每个计算装置100包括中央处理单元 101和主存储器单元122。如图IE所示,计算装置100可以包括可视显 示装置124、键盘126和/或诸如鼠标的点击装置127。每个计算装置100 也可以包括另外的可选元件,例如一个或多个输入/输出装置130a-130b (通常使用附图标记130来指示)以及与中央处理单元101通信的高速 緩存存储器140。中央处理单元101是响应并处理取自主存储器单元I"的指 令的任意逻辑电路。在许多实施例中,中央处理单元由微处理器单元提 供,例如由位于Mountain View, California的Intel公司出品的产品; 由4立于Schaumburg, Illinois的Motorola/>司出品的产品;由4立于SantaClara, California的Transmeta 司出品的产品;由位于White Plains, New York的国际商业机器公司出品的RS/6000处理器;或者由位
于Sunnyvale, California的Advanced Micro Devices公司出品的产品。 计算装置100可以基于任意的这些处理器、或者能够如此处所描述地才喿 作的任意其它处理器。主存储器单元122可以是能够保存数据并允许微处理器101 直接访问任意存储位置的 一个或多个存储芯片,例如静态随机存取存储 器(SRAM)、突发式SRAM或同步突发式SRAM (BSRAM )、动态随机存取存 储器(DRAM)、快速页面模式DRAM ( FPM DRAM)、增强型DRAM ( EDRAM )、 扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DRAM)、突发式 扩展数据输出DRAM( BEDO DRAM )、增强型DRAM( EDRAM )、同步DRAM( SDRAM )、 JEDEC SRAM、 PC100 SDRAM、双数据速率SDRAM ( DDR SDRAM )、增强型SDRAM
(ESDRAM )、同步《连接DRAM ( SLDRAM )、直接Rambus DRAM ( DRDRAM )、或 铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、 或者能够如此处所描述地操作的任意其它可用的存储芯片。在图IE中所 示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述) 与主存储器122进行通信。图1E描述了在其中处理器通过存储器端口 103 直接与主存储器122通信的计算装置100的实施例。例如,在图IF中, 主存储器122可以是DRDRAM。图1F描述了在其中主处理器101通过有时被称为背端总线的 次级总线来直接与高速缓存存储器14G通信的实施例。在其它实施例中, 主处理器101使用系统总线150与高速緩存存储器140进行通信。高速 緩存存储器140典型地具有比主存储器122更快的响应时间,并且典型 地通过SRAM、 BSRAM或EDRAM来提供。在图1E中所示的实施例中,处理 器101通过本地系统总线150与多个I/O装置130进行通信。多种总线 可以用来将中央处理单元101连接到任意一种1/0装置130,所述总线包 括VESA VL总线、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进行通信。计算装置IOO可以支持任意适当的安装装置116,例如用于接 收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、 CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动 器、USB装置、硬盘驱动器或适于安装像任意客户机代理120或其部分的 软件和程序的任意其它装置。计算装置IOO还可以包括存储装置128,例 如一个或多个硬盘驱动器或独立磁盘的冗余阵列,用于保存操作系统及 其它相关软件,以及用于保存诸如与客户机代理120相关的任意程序的 应用软件程序。可选地,任意一种安装装置116还可以:帔用作存储装置 128。另外,操作系统和软件能够从可引导介质中运行,所述可引导介质 例如像KNOPPIX⑧的可引导CD,作为来自于knoppix. net可用作GNU/Linux 分发的GNU/Linux的可引导CD。进一步地,计算装置100可以包括通过多种连接联接到局域 网(LAN)、广域网(WAN)或因特网的网络接口 118,所述多种连接包括 但不限于标准电话线、LAN或WAN链路(例如,802.11、 Tl、 T3、 56kb、 X. 25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任意或 所有连接的一些组合。网络接口 118可以包括内置网络适配器、网络接 口卡、PCMCIA网卡、插件总线网络适配器、无线网络适配器、USB网络 适配器、调制解调器或适于将计算装置100连接到能够传达并执行此处 所描述的操作的任意类型的网络的任意其它装置。各式各样的1/0装置130a-130n可以存在于计算装置100中。 输入装置包括键盘、鼠标、轨道垫、轨道球、麦克风以及绘画板。输出 装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打 印机。1/0装置130可以由如图1E所示的1/0控制器123控制。1/0控 制器可以控制诸如键盘126和例如鼠标或光笔的点击装置127的一个或 多个I/0装置。进一步地,1/0装置还可以为计算装置IOO提供存储装置 128和/或安装介质116。还是在其它实施例中,计算装置100可以提供USB连接以接收诸如由位于Los Alamitos, California的Twintech Industry公司出品的USB闪存驱动器系列装置这样的便携USB存储装置。在一些实施例中,计算装置100可以包括或连接到多个显示 装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。因 而,任意一种1/0装置130a-130n和/或1/0控制器123可以包括任意类 型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或 提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算 装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动程序 和/或库,以联系、通信、连接或以其他方式使用显示装置124a-124n。 在一个实施例中,视频适配器可以包括多个连接器以联接多个显示装置 124a-124n。在其它实施例中,计算装置100可以包_^舌多个视频适配器, 每个^L频适配器连接到一个或多个显示装置124a-124n。在一些实施例 中,计算装置100的操作系统的任意部分可以被配置用于使用多个显示 器124a-124n。在其它实施例中, 一个或多个显示装置124a-124n可以由 一个或多个诸如例如通过网络连接到计算装置100的计算装置100a和 100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将 另一个计算机的显示装置用作计算装置100的第二显示装置124a的任意 类型的软件。本领域普通技术人员将认识和理解计算装置100可以被配 置为具有多个显示装置124a-124n的多个方法和实施例。在进一步的实施例中,I/O装置130可以是在系统总线150 和外部通信总线之间的网桥170,所述外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、A卯leTalk总线、吉比特以太网总线、异步传送 模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总 线、FibreChannel总线或串行附加小型计算机系统接口总线。图1E和1F中描述类型的计算装置100典型地在控制任务的 调度和对系统资源的访问的操作系统的控制下操作。计算装置100能够 运行任意操作系统,例如任意一种版本的微软⑧Windows操作系统、不同 版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac 0S 、任意的嵌入式操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、或者 能够运行在计算装置上并执行此处所描述的操作的任意其它操作系统。
典型的操作系统其中包括WINDOWS 3. x、WINDOWS 95、WIN廳S 98、WIN,S 2000、 WINDOWS NT 3.51、 WINDOWS NT 4.0、 WINDOWS CE和WINDOWS XP, 所有这些均由位于Redmond, Washington的孩吏|欠/>司出品;由《立于 Cupertino, California的苹果计算机出品的MacOS; 由位于Armonk, New York的国际商业机器公司出品的OS/2;以及由位于Sal t Lake Ci ty, Utah 的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或 形式的Unix操作系统,以及其它。在其它实施例中,计算装置100可以具有和所述装置一致的 不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机 100是由Palm公司出品的Treo180、 270、 1060、 600或650智能电话。 在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括 指示笔输入装置以及五向导航装置。此外,计算装置100可以是任意工 作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移 动电话、任意其它计算机、或者能够通信并具有执行此处所描述的操作 的足够的处理器能力和存储容量的其它形式的计算或电信装置。B.设备架构
图2A举例说明了设备200的一个示例实施例。提供图2A中的设备 200的架构仅仅是为了说明,并不是意于进行限制。如图2所示,设备 200包括硬件层206和被分为用户空间202和内核空间204的软件层。硬件层206提供在其上执行内核空间204和用户空间202中 的程序和服务的硬件元件。硬件层206还提供允许内核空间204和用户 空间202中的程序和服务关于设备200向内和向外传递数据的结构和元 件。如图2所示,硬件层206包括用于执行软件程序和服务的处理单元 262、用于保存软件和数据的存储器264、用于在网络上发送和接收数据 的网络端口 266以及用于执行与在网络上发送和接收的数据的安全套接 字层处理相关的功能的加密处理器260。在一些实施例中,中央处理单元 262可以在单个的处理器中执行加密处理器260的功能。另外,硬件层206可以包括用于每个处理单元262和加密处理器260的多个处理器。处 理器262可以包括如上所述的与图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能够运行任意操作系统,例如任意一种版 本的微软⑧Windows操作系统、不同版本的Uni x和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中操作。在一 个实施例中,高速緩存管理器232的第一部分在用户空间202中执行, 而第二部分在内核空间204中执行。在一些实施例中,高速緩存管理器 232可以包括任意类型的通用处理器(GPP)或者诸如现场可编程门阵列 (FPGA)、可编程逻辑器件(PLD)或专用集成电路(ASIC)的任意其它 类型的集成电路。例如,策略引擎236可以包括智能统计引擎或者其它的可编 程应用。在一个实施例中,策略引擎236提供配置机制以允许用户标识、 指定、定义或配置高速緩存策略。在一些实施例中,策略引擎236还可 以访问存储器以支持诸如查找表或哈希表的数据结构来启用用户选择的 高速緩存策略决策。在其它实施例中,策略引擎236可以包括任意逻辑、 规则、功能或操作,以便确定和提供除了由设备200执行的安全、网络 业务量、网络访问、压缩或任意其它功能或操作的访问、控制和管理之 外的由设备200高速緩存的对象、数据或内容的访问、控制和管理。此 处进一 步描述特定高速緩存策略的进一 步的实例。在一些实施例中,策略引擎236可以提供配置机制以允许用 户标识、指定、定义或配置指导包括但不限于图2B中描述的诸如vServers 275、 VPN功能280、内联网IP功能282、交换功能284、 DNS功能286、 加速功能288、应用防火墙功能290和监控代理197的部件的设备的任意其它部件或功能的行为的策略。在其它实施例中,策略引擎236可以响 应于任意配置的策略来进行检查、评价、实现或者以其他方式产生作用, 并且还可以响应于策略来指导一个或多个设备功能的操作。加密引擎234包括用于操控诸如SSL或TLS的任意安全相关 协议的处理的任意逻辑、商业规则、功能或操作,或者另外的任意相关 功能。例如,加密引擎234加密并解密经由设备200传递的网络分组或 者其中的任意部分。加密引擎234还可以为客户机102a-102n、服务器 106a-106n或设备200设置或建立SSL或TLS连接。因而,加密引擎234 提供SSL处理的卸载和加速。在一个实施例中,加密引擎234 4吏用隧道 协议来在客户机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为经由桌面客户端以及甚至移动 客户端访问应用的用户加速性能,所述桌面客户端例如孩i專欠Ou11 ook以及诸如由诸如Oracle、 SAP和Siebel的通用的企业应用所启动的任意客 户端的非web瘦客户端,所述移动客户端例如掌上电脑。在一些实施例 中,通过执行于内核模式204中以及与访问网络堆栈267的分组处理引 擎MO结合在一起,多协议压缩引擎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集成分 组引擎M0可以与加密引擎234、高速緩存管理器232、策略引擎236和 多协议压缩引擎238交互、集成或通信。因而,可以响应于分组处理定 时器和/或分组引擎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。 GUI 210和CLI 212提供一个装置,通过所 述装置,系统管理员或其它用户能够与"i殳备200的才喿作相互作用并控制 设备200的操作,例如通过设备200的操作系统,并且两者之一是用户 空间202或内核空间204。 GUI 210可以是任意类型和形式的图形用户界 面,并且可以通过文本、图形或者以其他方式通过像浏览器的任意类型 的程序或应用来呈现。CLI 212可以是任意类型和形式的命令行或基于文 本的接口,例如由操作系统提供的命令行。例如,CLI212可以包括命令 解释程序,所述命令解释程序是允许用户与4乘作系统相互作用的工具。 在一些实施例中,CLI 212可以通过bash、 csh、 tcsh或ksh型命令解释 程序来提供。命令解释程序服务214包括程序、服务、任务、进程或可 执行指令以支持用户通过GUI 210和/或CLI 212与设备200或操作系统 相互作用。健康监测程序216被用于监控、检查、报告和确保网络系统 在正常工作以及用户通过网络接收所请求的内容。健康监测程序216包 括一个或多个程序、服务、任务、进程或可执行指令以提供用于监测设 备200的任意活动的逻辑、规则、功能或操作。在一些实施例中,健康 监测程序216拦截并检查经由设备200传递的任意网络业务量。在其它实施例中,健康监测程序216通过任意合适的方法和/或机制与一个或多
个下列单元连接加密引擎234、高速緩存管理器232、策略引擎236、 多协议压缩逻辑238、分组引擎240、守护服务218和命令解释程序服务 214。因而,健康监测程序216可以调用任意应用编程接口 (API)以确 定设备200的任意部分的状态、状况或健康。例如,健康监测程序216 可以周期性地查验或发送一个情况查询以检测程序、进程、服务或任务 是否有效以及当前正在运行。在另一个实例中,健康监测程序216可以 检查由任意程序、进程、服务或任务提供的任意状态、错误或历史记录, 以确定设备200的任意部分的任意情况、状态或错误。
的周期性服务请求的程序。在一些实施例中,守护服务可以将请求转发 给其它程序或进程,例如酌情转发给另一个守护服务218。如本领域技术 人员所知,守护服务218可以无人监护地运行以执行诸如网路控制的连 续的或周期性的全系统的功能或者执行任意期望的任务。在一些实施例 中, 一个或多个守护月良务218运行在用户空间202中,而在其它实施例 中, 一个或多个守护月l务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可以包括软件、石更件或软件和硬件的任意组合。 vServer 275可以包括在设备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 ;也址和端口上进4于通信。在一些实施例中,vServer 275将策略引擎236的一个或多 个策略应用到客户机102和服务器106之间的网络通信。在一个实施例 中,策略与VServer 275有关。在另一个实施例中,策略基于一个用户 或一组用户。在又一个实施例中,策略是全局的并且应用到一个或多个 vServers 275a-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连接的传输层连接。在一个实施例中,vServer275监听并接收来自于客户机102的通信。在其它实施例中,vServer 275 与客户服务器106建立诸如TCP或UDP连接的传输层连接。在一个实施 例中,vServer 275建立到运行在服务器106上的服务器270的网际协议 地址和端口的传输层连接。在另一个实施例中,vServer 275将到客户才几 102的第一传输层连接与到服务器106的第二传输层连接关联起来。在一 些实施例中,vServer 275建立到服务器106的传输层连接池并多路复用 经由所述池化的传输层连接的客户机请求。在一些实施例中,设备200提供在客户机102和服务器106 之间的SSLVPN连接280。例如,第一网络102上的客户机102请求建立 到第二网络104'上的服务器106的连接。在一些实施例中,第二网络104' 是不可从第一网络104路由的。在其它实施例中,客户一几102在公用网 104上,而服务器106在诸如公司网的专用网104'上。在一个实施例中, 客户机代理120拦截第一网络104上的客户机102的通信,加密所述通 信,并经由第一传输层连接发送所述通信到设备200。设备200将第一网 络104上的第一传输层连接关联到第二网络104上的到服务器106的第 二传输层连接。设备200从客户机代理102接收被拦截的通信,解密所 述通信,并经由第二传输层连接发送所述通信到第二网络104上的服务 器106。第二传输层连接可以是池化的传输层连接。因而,设备200提供 在两个网络104和104'之间用于客户机102的端到端安全传输层连接。在一个实施例中,设备200在虚拟专用网104上寄载客户机 102的内联网网际协议或内联网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提供下列一个或多个加速技术288 来在客户机102和服务器106之间进行通信l)压缩;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地址或由第二 设备20(T寄载的IP地址的客户机的DNS请求。在一些实施例中,设备 200响应具有由设备200确定的服务器106的IP地址的客户机的DNS请 求。在又一个实施例中,设备200为客户机102和服务器106之 间的通信提供应用防火墙功能290。在一个实施例中,策略引擎236提供 用于检测和阻塞非法请求的规则。在一些实施例中,应用防火墙290防 止拒绝服务(DoS)攻击。在其它实施例中,设备检查被拦截的请求的内 容以识别和阻塞基于应用的攻击。在一些实施例中,规则/策略引擎236 包括用于提供对多个种类和类型的基于web或因特网的脆弱点的保护的 一个或多个应用防火墙或安全控制策略,例如下列的一个或多个l)緩 冲器溢出,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可以监控和测量 vServers 275A-275N的性能与操作。在另一个实施例中,监控代理197 测量和监控设备200的任意传输层连接的性能。在一些实施例中,监控 代理197测量和监控通过设备200的任意用户会话的性能。在一个实施 例中,监控代理197测量和监控通过设备200的诸如SSL VPN会话的任 意虚拟专用网连接和/或会话的性能。在进一步的实施例中,监控代理197 测量和监控设备200的存储器、CPU和磁盘使用以及性能。在又一个实施 例中,监控代理197测量和监控诸如SSL卸载、连接池和多路复用、高速緩存以及压缩的由设备200执行的任意加速技术288的性能。在一些 实施例中,监控代理197测量和监控由设备200执行的任意负载平衡和/ 或内容交换284的性能。在其它实施例中,监控代理197测量和监控由 设备200执行的应用防火墙290保护和处理的性能。 C.客户机代理
现在参考图3,描述了客户机代理120的一个实施例。客户机102 包括用于经由网络104与设备200和/或服务器106建立和交换通信的客 户机代理120。简单概述,客户机102在计算装置IOO上操作,所述计算 装置100具有带有内核模式302和用户模式303的操作系统以及带有一 个或多个层310a-310b的网络堆栈310。客户机102已经安装和/或执4亍 一个或多个应用。在一些实施例中, 一个或多个应用可以经由网络堆才戋 310传递到网络104。诸如web浏览器的一个应用还可以包括一个第一程 序322。例如,第一程序322可以被用于在一些实施例中安装和/或执行 客户机代理120或者其任意部分。客户机代理120包括用于从一个或多 个应用中拦截来自于网络堆栈310的网络通信的拦截机制或拦截器3 5 0 。客户机102的网络堆栈310可以包括任意类型和形式的软件 或硬件或其任意组合,以用于提供到网络的连通性以及与网络的通信。 在一个实施例中,网络堆栈310包括用于网络协议套件的软件实现。网 络堆栈310可以包括一个或多个网络层,例如如本领域:技术人员所认识 和理解的开放系统互连(0SI )通信模型的任意网络层。因而,网络堆栈 310可以包括用于下列OSI模型的任意一层的任意类型和形式的协议1 ) 物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6) 表示层以及7)应用层。在一个实施例中,网络堆栈310可以包括在网际 协议(IP)的网络层协议上的传输控制协议(TCP),通常被称为TCP/IP。 在一些实施例中,可以在以太网协议上携带TCP/IP协议,所述以太网协 议可以包括诸如由IEEE 802. 3所覆盖的那些协议的IEEE广域网(WAN) 或局域网(LAN)协议的任意族。在一些实施例中,网络堆栈31G包括诸 如IEEE 802. 11和/或移动网际协议的任意类型和形式的无线协议。考虑到基于TCP/IP的网络,可以使用任意基于TCP/IP的协议,包括消息应用编程接口 (MAPI )(电子邮件)、文件传送协议(FTP)、 超文本传送协议(HTTP)、通用Internet文件系统(CIFS)协议(文件 传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协 议(WAP)、移动IP协议和IP上语音(VoIP)协议。在另一个实施例中, 网络堆栈310包括诸如修改的传输控制协议的任意类型和形式的传输控 制协议,例如事务TCP (T/TCP)、具有选择确认的TCP (TCP-SACK )、具 有大窗口的TCP ( TCP-LW )、诸如TCP-Vegas协议的拥塞预测协议以及TCP 欺骗协议。在其它实施例中,网络堆栈310可以使用诸如IP上UDP的任 意类型和形式的用户数据报协议(UDP),例如用于音频通信或实时数据 通信。进一步,网络堆栈310可以包括诸如TCP驱动程序或网络层 驱动程序的支持一个或多个层的 一个或多个网络驱动程序。网络驱动程 序可以被包括作为计算装置IOO的操作系统的一部分或作为计算装置100 的任意网络接口卡或其它网络访问部件的一部分。在一些实施例中,网 络堆栈310的任意一种网络驱动程序可以被定制、修改或改变以提供支 持此处描述的任意技术的网络堆栈310的定制或所修改的部分。在其它 实施例中,加速程序120被设计和构造以和由客户机102的操作系统所 安装或者以其他方式提供的网络堆栈310 —起操作或联合工作。网络堆栈310包括用于接收、获取、提供或者以其他方式访 问与客户机102的网络通信相关的任意信息和数据的任意类型和形式的 接口。在一个实施例中,到网络堆栈310的接口包括应用编程接口(API )。 接口还可以包括任意函数调用、挂钩或过滤机制、事件或回叫机制、或 任意类型的连接技术。网络堆栈310经由接口可以接收或提供诸如对象 的与网络堆栈310的功能或操作相关的任意类型和形式的数据结构。例 如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网 络分组。在一些实施例中,数据结构包括诸如传输层的网络分组的在网 络堆栈310的协议层处理的网络分组的一部分。在一些实施例中,数据 结构325包括内核级数据结构,而在其它实施例中,凝:据结构325包括 用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302 中操作的网络堆栈310的一部分相关的数据结构、或者运行在内核模式302中的网络驱动程序或其它软件、或者由运行或操作在操作系统的内核 模式中的服务、进程、任务、线程或其它可执行指令获得或收到的任意 数据结构。另夕卜,例如数据链路或网络层的网络堆栈310的一些部分可 以执行或才喿作于内核才莫式302,而诸如网络堆栈310的应用层的其它部分 执行或操作在用户模式303中。例如,网络堆栈的第一部分310a可以给 应用提供对网络堆栈310的用户模式访问,而网络堆栈310的第二部分 310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可 以包括诸如层5-7中的任意一个的网络堆栈310的一个或多个较上的层。 在其它实施例中,网络堆栈310的第二部分310b包括诸如层1-4中的任 意一个这样的一个或多个较低的层。网络堆栈310的第一部分310a和第 二部分310b中的每一个可以包括网络堆栈310的任意部分,在任意一个 或多个网络层,在用户模式203、内核模式202或其组合中,或者在网络 层的任意部分或网络层的接口点或用户模式203和内核模式203的任意 部分或4妾口点。拦截器350可以包括软件、硬件或软件和硬件的任意组合。 在一个实施例中,拦截器350在网络堆栈310中的任一点拦截网络通信, 并且将所述网络通信重定向或发送到被拦截器350或客户机代理120所 期望、管理或控制的目的地。例如,拦截器350可以拦截第一网络的网 络堆栈31Q的网络通信并发送网络通信给设备2 0 Q以用于在第二网络104 上的传输。在一些实施例中,拦截器350包括含有驱动器的任意类型拦 截器350,诸如被构造和设计为与网络堆栈310连接和工作的网络驱动程 序。在一些实施例中,客户机代理120和/或拦截器350在诸如传输层处 的网络堆栈310的一个或多个层操作。在一个实施例中,拦截器350包 括过滤器驱动程序、挂钩机制或任意格式和类型的适当的网络驱动程序 接口,所述接口例如经由传输驱动程序接口 (TDI )来联接于网络堆栈的 传输层。在一些实施例中,拦截器350联接于诸如传输层的第一协议层 以及诸如传输协议层之上的任意层的例如应用协议层的另 一个协议层。 在一个实施例中,拦截器350可以包括遵照网络驱动程序接口规范(NDIS ) 的驱动程序或NDIS驱动程序。在另一个实施例中,拦截器350可以包括小过滤器(min-niter )或迷你端口 ( mini-port )驱动程序。在一个实 施例中,拦截器350或者其部分操作于内核模式202中。在另一个实施 例中,拦截器350或者其部分操作于用户模式203中。在一些实施例中, 拦截器350的一部分操作于内核模式202中,而拦截器350的另一部分 操作于用户模式203中。在其它实施例中,客户机代理120操作于用户 模式203中,但经由拦截器350连接到内核模式驱动程序、进程、服务、 任务或一部分操作系统,以便获得内核级数据结构225。在进一步的实施 例中,拦截器350是诸如应用的用户模式应用或程序。在一个实施例中,拦截器350拦截任意的传输层连接请求。 在这些实施例中,拦截器350执行传输层应用编程接口 (API)调用以对 于该位置设置目的信息,诸如所期望的位置的目的地IP地址和/或端口 。 以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户 机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350 为到客户机102的本地IP地址和端口的连接设置目的地信息,客户机代 理120在客户机102的本地IP地址和端口上进行监听。例如,客户机4戈 理120可以包括在用于重定向的传输层通信的本地IP地址和端口上监听 的代理服务。在一些实施例中,客户机代理120随后传达重定向的传输 层通信到设备200。在一些实施例中,拦截器350拦截域名服务(DNS)请求。在 一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在另一 实施例中,拦截器发送被拦截的DNS请求到设备200以用于DNS解析。 在一个实施例中,设备200解析DNS请求并传达DNS响应给客户机代理 120。在一些实施例中,设备200解析经由另一设备200'或DNS服务器 106的DNS请求。在又一个实施例中,客户机代理120可以包括两个代理120 和120'。在一个实施例中,第一代理120可以包括操作于网络堆栈310 的网络层的拄截器350。在一些实施例中,第一代理120拦截诸如因特网 控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。 在其它实施例中,第二代理120'可以在传输层操作并拦截传输层通信。 在一些实施例中,第一代理120拦截在网络堆栈210的一层处的通信,并与第二代理120'连接或传达被拦截的通信到第二代理120'。客户机代理120和/或拦截器350可以相对于网络堆栈310的 任意其它协议层透明的方式操作于协议层或与协议层连接。例如,在一 个实施例中,拦截器350相对于诸如网络层的传输层之下的任意协议层 以及诸如会话、表示或应用层协议的传输层之上的任意协议层透明地来 操作网络堆栈310的传输层或与其连接。这允许网络堆栈310的其它协 议层按意愿地操作而不用修改来使用拦截器350。因而,客户机代理120 和/或拦截器350能够与传输层交互以保护、优化、加速、路由或负载平 衡经由诸如TCP/1P之上的任意应用层协议的通过传输层携带的任意协议 提供的任意通信。进一步地,客户机代理120和/或拦截器可以相对于任意应用、 客户机102的用户以及诸如与客户机102通信的服务器的任意其它计算 装置透明的方式来操作于网络堆栈310或与网络堆栈310连接。客户机 代理120和/或拦截器350可以以一定方式安装和/或执行于客户机102 上而不#"改应用。在一些实施例中,客户才几102或与客户^L 102通信的 计算装置的用户不知道客户机代理120和/或拦截器350的存在、执行或 搡作。因而,在一些实施例中,相对于应用、客户机102的用户、诸如 服务器的另一个计算装置、或者在由拦截器350联接的协议层之上和/或 之下的任意协议层透明地来安装、执行和/或操作客户机代理120和/或 拦截器350。客户机代理120包括加速程序302、流客户机306、收集代理 304和/或监控代理197。在一个实施例中,客户机代理120包括由位于 Fort Lauderdale, Florida的Citrix Syestems公司开发的独立计算架构 (ICA)客户机或者其任意部分,并且还被称为ICA客户机。在一些实施 例中,客户机120包括用于将应用从服务器106流式传输到客户机102 的应用流客户机306。在一些实施例中,客户机代理120包括用于加速客 户机102和服务器106之间的通信的加速程序302。在另一个实施例中, 客户机代理120包括用于执行端点检测/扫描以及为设备200和/或服务 器106收集端点信息的收集代理304。在一些实施例中,加速程序302包括用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户枳j
与服务器106的通信和/或诸如访问由服务器106提供的应用的对服务器 106的访问。加速程序302的可执行指令的逻辑、功能和/或操作可以执 行一个或多个的下列加速技术l)多协议压缩,2)传输控制协议池,3) 传输控制协议多路复用,4)传输控制协议緩冲,以及5)经由高速緩存 管理器的高速緩存。另外,加速程序302可以执行对由客户机102接收 和/或发送的任意通信的加密和/或解密。在一些实施例中,加速程序302 以集成的方法或方式来执行一个或多个加速技术。另外,加速程序302 能够在被携带为传输层协议的网络分组的有效载荷的任意协议或多个协 议上执行压缩。流客户机306包括用于接收和执行来自于服务器106的 流式传输的应用的应用、程序、进程、服务、任务或可执行指令。服务 器106可以将一个或多个应用数据文件流式传输到流客户机306,以用于 在客户机102上播放、执行所述应用或者以其他方式使所述应用被执行。 在一些实施例中,服务器106发送一组压缩的或封装的应用数据文件到 流客户机306。在一些实施例中,多个应用文件在文件服务器上被压缩和 存储在诸如CAB、 ZIP、 SIT、 TAR、 JAR或其它档案(archive)的档案文 件中。在一个实施例中,服务器106解压缩、解封装或解档(unarchives ) 应用文件,并发送所述文件到客户机102。在另一个实施例中,客户才几 102解压缩、解封装或解档应用文件。流客户机306动态地安装应用或其 中的部分,并执行应用。在一个实施例中,流客户机306可以是可执行 程序。在一些实施例中,流客户机306可以运行另一个可执行程序。收集代理304包括用于识别、获得和/或收集关于客户机102 的信息的应用、程序、进程、服务、任务或可执行指令。在一些实施例 中,设备200发送收集代理304到客户机102或客户机代理120。可以根 据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实 施例中,收集代理304发送收集的有关客户机102的信息给设备200。在 一个实施例中,设备200的策略引擎236使用收集的信息来确定并提供 对客户机到网络104的连接的访问、马全证和授权控制。在一个实施例中,收集代理304包括端点;险测和扫描机制, 其识别和确定客户机的一个或多个属性或特性。例如,收集代理304可以识别和确定任意一个或多个以下的客户机侧属性1)操作系统和/或 操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进 程,和5 )文件。收集代理304还可以识别和确定客户机上的任意一个或 多个下列软件的存在或版本l)防病毒软件,2)个人防火墙软件,3) 反垃圾邮件软件,和4)因特网安全软件。策略引擎236可以具有根据客 户机或客户机侧属性的任意一个或多个属性或特性的一个或多个策略。在一些实施例中,客户机代理120包括如结合图1D和2B所 讨论的监控代理197。监控代理197可以是诸如Visual Basic或Java脚 本的任意类型和形式的脚本。在一个实施例中,监控代理129监控和测 量任意部分的客户机代理120的性能。例如,在一些实施例中,监控代 理129监控和测量加速程序302的性能。在另一个实施例中,监控代理 129监控和测量流客户机306的性能。在其它实施例中,监控代理129监 控和测量收集代理304的性能。在又一个实施例中,监控代理129监控 和测量拦截器350的性能。在一些实施例中,监控代理129监控和测量 客户机102的诸如存储器、CPU和磁盘的任意资源。监控代理197可以监控和测量客户机的任意应用的性能。在 一个实施例中,监控代理129监控和测量客户机102上的浏览器的性能。 在一些实施例中,监控代理197监控和测量经由客户机代理120递送的 任意应用的性能。在其它实施例中,监控代理197测量和监控诸如基于 web或HTTP响应时间的应用的最终用户响应时间。监控代理197可以监 控和测量ICA或RDP客户机的性能。在另一个实施例中,监控代理197 测量和监控用户会话或应用会话的规格。在一些实施例中,监控代理197 测量和监控ICA或RDP会话。在一个实施例中,监控代理197测量和监 控设备200在加速递送应用和/或数据到客户机102的过程中的性能。在一些实施例中以及仍然参考图3,可以使用第一程序322 来自动地、静默地、透明地或以其他方式地安装和/或执行客户机代理120 或者其中的诸如拦截器350的部分。在一个实施例中,第一程序322包 括诸如一皮加载到应用并由应用执行的ActiveX控件或Java控件或脚本的 插件部件。例如,第一程序包括由web浏览器应用加载并运行在例如应 用的存储空间或上下文中的ActiveX控件。在另一个实施例中,第一程序322包括由诸如浏览器的应用加载并运行的一组可^l行指令。在一个 实施例中,第一程序322包括被设计和构造的程序来安装客户机代理120。 在一些实施例中,第一程序322通过网络来从另一个计算装置获得、下 载或接收客户机代理120。在另一个实施例中,第一程序322是客户机 102的操作系统上的诸如网络驱动程序的安装程序或用于安装程序的即 插即用管理器。 D.终端用户体验监控
参考图4,用于提供终端用户体验监控的系统的一个实施例包括客户 机102、 一个或多个网络104和104'、服务器106、性能监控服务器198 以及设备200。上面已经描述了客户机102、网络104和104、服务器 106、性能监控服务器198以及设备200的多个细节以及实施例,并且在 这里不进行重复。如图所示,性能监控服务器198直接与客户机进行通 信而没有设备的干扰。概念上,这个配置能够被认为具有第一域上的客 户机102与web服务器106的通信以及第二域上的客户机102与性能监 控服务器198的通信。如这里所使用的,域涉及定位因特网上的组织或 实体的统一资源定位器(URL)的部分,例如www. citrix. com。在其它实 施例中,客户机与性能监控服务器198之间的通信发生在相同的域。在一个操作方案中,客户机102执行web浏览器应用并从web 服务器106请求web页面。web浏览器应用能够包括但不限于FIREFOX、 INTERNET EXPLORER、 CAMINO、 SAFARI 、 BLAZER、 MOSAIC或能够处理HTML 代码的任意其它应用。在一些实施例中,设备200单独或组合使用任意 的上述技术来提供所请求的web页面的加速递送给客户机102。此外,设 备200能够修改web页面并注入测量与客户机102的终端用户的视觉体 验相关的一个或多个参数的脚本。如此处所使用的,注入涉及增加、替 换或者以其他方式^f'务改产生的web页面内容以及与^青求的web页面相关 的计算机代码。注入能够被用于插入代码到web页面,使客户机来记录 与提供web页面给客户机102的终端用户所需的时间相关的一个或多个 参数。参考图5,显示和描述了将脚本注入web页面的方法500的实施例。方法500包括拦截(步骤510)来自于请求实体的对web页面的讳-求,发送(步骤520 )被拦截的请求到web服务器106,以及拦截(步骤 530 ) web服务器106的响应。方法500还包括将脚本注入(步骤540 ) web服务器106的响应以及发送(步骤550 )所修改的响应到请求实体。 在一些实施例中,方法500还包括加速(步骤560 )对web页面的请求以 及web服务器106的响应的一个或多个部分。在一个实施例中,设备200拦截(步骤510)从客户机102 到web服务器106的请求。设备200可以是任意一种上面提及的设备200。 例如,在一个实施例中,设备200是由位于Fort Lauderdale Florida 的Citrix Systems />司出品的NetScaler装置。客户才几102和i殳备200 之间的通信可以使用任意一种之前提到的技术和协议(例如,TCP/IP) 来发生。在一个实施例中,设备200传送(步骤520 )被拦截的请求给 在所述请求中指示的web服务器106。被拦截的请求可以被转发到web服 务器106而不被设备200修改,或者请求可以被设备200修改。例如, 设备200可以修改所述请求并使除了在初始请求中指示的web服务器之 外的web服务器响应所述请求。此外,设备200和web服务器106之间 的通信可以使用任意 一种上面提到的技术和协议来发生。在一个实施例中,设备200拦截(步骤530 ) web服务器106 的响应。设备能够可以任意一种上面提到的技术来启动拦截。在一些实 施例中,设备将所有或一部分的被请求的内容提供给客户机102。—旦被拦截,设备检查响应的内容,并且如果需要则将脚本 注入(步骤540 )所述响应从而创建被修改的响应。在一些实施例中,设 备200的多个部件确定是否将脚本注入所述响应。例如,策略引擎236 根据所指定的标准来确定是否通过将脚本注入响应来^f务改对web页面请 求的响应。在其它实施例中,设备的其它部件单独或组合地来做出决定。在修改以后,设备发送(步骤550 )所修改的响应给客户机 102。该通信可以使用任意一种之前提到的技术或协议来发生。在一些实施例中,设备200加速(步骤560 )在客户机102、 设备200和web服务器106之间的一个或多个通信。在多个实施例中,单独或组合地使用诸如l)传输层连接池、2)传输层连接多路复用、3)
传输控制协议缓沖、4)压缩和5)高速緩存的技术以加速通信。 一旦被 客户机102接收,应用(例如,web浏览器)处理所接收的被修改的响应。
参考图6,显示和描述了使用web页面记录与终端用户体验相 关的参数的登记方法600的一个实施例。在一个实施例中,方法600包 括在客户机接收(步骤610)所修改的响应,在交付web页面时执行(步 骤620 )脚本,以及记录(步骤630 )在脚本中指示的事件的出现。在其 它实施例中,方法600还包括记录(步骤640 )与交付web页面的应用的 性质相关的信息。在一个实施例中,客户机102接收(步骤610)所修改的响应。 所述响应使用任意一种先前提到的技术和协议来接收。被请求的web页 面和被注入的脚本的至少一部分被包括在所修改的响应中。在一些实施 例中,脚本包括指令,当所述指令被客户机102执行时使加载web页面 的应用为与交付web页面相关的一个或多个事件的通知而登记。如交付web页面的部分一样,客户机执行(步骤620 )脚本。 在一个实施例中,应用(例如,浏览器)执行脚本。在另一个实施例中, 诸如Java运行时间解释器的解释器执行脚本。此外,客户机102的处理 器能够执行脚本的指令。进一步地,专用的应用能够获得和处理来自于 web月良务的内容。在一个实施例中,当脚本执行时,客户机登记以接收在脚本 中指定的具体事件的出现的通知。在事件出现时,客户机记录(步骤630 ) 事件发生的时间。例如,客户机能够记录相对于开始交付web页面的事 件发生的时间。在其它情况中,其它定时机制能够被用于记录事件的发 生。例如,能够使用网络时钟、主时钟或某些其它时钟。参考图7,显示和描述了用于监控与客户机102的终端用户的 体验相关的参数的报头脚本的实施例。参考图8,显示和描述了用于在监 控与客户机102的终端用户的体验相关的参数中使用的页脚脚本的实施 例。报头和脚注一起使浏览器为特定事件登记并将那些事件的发生报告 给第二域的性能监控服务器198。更详细地,图7和图8的脚本合作来确定客户机102的终端用户的体验。对于"onreadystatechange,,和"onbeforeunload,,事件, 脚本包括指令以登记在支持"attachEvent"方法的浏览器(例如,微软的 Internet Explorer )上。浏览器然后在页面加载阶段期间激发第一事件, 而后者只是在页面被破坏之前激发。在遵循万维网联盟(W3C)和 "addEventUstener,,约定的測览器上,扭卩本为"D0MContenaoaded,,、 "load"和"unload"事件登记。当页面加载时,当页面上的内容完全 加载时以及就在用户离开页面之前,浏览器按次序激发这些事件。在一 个实施例中,记录的事件发生被如下面所更详细描述地报告给性能监控 服务器198。
使用例如图7和图8中所示的脚本提供了收集与终端用户的 体验相关的信息的机制。脚本被设计为提供用户如何感知页面加载和交 付的一个总的视图。它被设计为轻量级的机制,并且因而不记录在web 内容中交付的特定项目的细节。因为当浏览器相信交付的页面已经发展 到适当的点时列出的事件发生,所以它们提供了终端用户观看页面体验 的现实表示。
参考图9,显示和描述了用于在监控与客户机102的终端用户 的体验相关的参数中使用的脚本的实施例。在该脚本中,浏览器为客户 机102的终端用户所经历的错误的发生而登记。不同的客户机可以具有 在其上执行的不同的应用(例如,弹出拦截器、脚本拦截器),能够影响 终端用户的体验。因而,被编程为web页面的部分的脚本也许不会正确 执行在客户机上。很难为所有可能的客户机配置来编程web页面。因而, 注入例如图9中所示的脚本为web页面提供者提供了一个机制以确定它 们的web页面的某些方面是否正在交付给客户机102。
更详细地,图9的脚本包括为樣t软的Internet Explorer以 及符合W3C的浏览器所特有的错误事件而登记并将那些事件的发生报告 给第二域的性能监控服务器198的指令。这些事件的登记确保脚本不与 任意应用限定的事件处理程序冲突。在一个实施例中,记录的事件发生 被如下面所更详细描述地报告给性能监控服务器198。
使用例如图9中所示的脚本提供了以下优点,例如提供给web 内容提供者确定终端用户是否体验到内容错误的能力,提供用于收集错误的集中式报告设备,而不需要内容提供者修改它们的内容,以及提供 精确定位错误在内容中的何处发生的机制。其它优点包括但不限于提供 确定受影响的用户设置和它们的浏览器配置的机制以及提供不影响终端 用户也不需要终端用户安装任意软件或其它部件的机制。同时,脚本不 影响开发者解决所述问题可能需要做出的努力。
参考图10,显示和描述了在多个域之中传达性能数据的方法 1000。方法1000包括「从第一域接收(步骤1010 )具有注入的脚本的web 页面,在第一域上的客户机102处执行(步骤1020 )脚本,以及记录(步 骤1030 )在脚本中指示的事件的发生。方法1000还包括发送(步骤1040 ) 对于在第二域的服务器上存储的web页面内容的请求以及发送(步骤 1050 )记录的性能参数到第二域的服务器。
用于注入脚本、执行脚本以及记录具体事件的发生的多种机 制和方法正如上所述,在这里不进行重复。
在一个实施例中,脚本包括发送(步骤1040 )对于修改的web 页面的内容的请求到第二域上的服务器的指令。例如,服务器可以是性 能监控服务器198。请求能够用于web内容的特定项目。实例包括但不限 于图像、音频文件、视频文件或任意其它类型的web内容。更具体地说, 请求可以包括对于被认为位于性能监控服务器198的"幻象(phantom)" 图画或项目的引用。所述项目可以实际上不存在于性能监控服务器198。
在另一个实施例中,实际请求的项目传送数据的性质。例如, 当性能緩慢时请求第一图像文件,当性能正常时请求第二文件,而当性 能超出正常时请求第三文件。在这样一个实施例中,监控服务器198包 括与处理这种类型的方案相关的知识。
在一些实施例中,客户机102将记录的性能数据作为请求的 一部分发送(步骤1050 )。假定另一个方法,在脚本执行期间调用性能监 控服务器198,而当脚本试图访问被调用的项目时所捕获的性能数据被 "卸(dropped off)"在性能监控服务器198服务器。
在进一步的细节以及另一个实施例中,当注入的脚本执行时, 被分类的事件被编码在由脚本动态创建的图像的URL源的查询参数中。 脚本使用该URL来联系性能监控服务器198并等待图像被返回的一段短的时间。如果在该段时间中没有返回图像,那么脚本放弃图像下载。当性能监控服务器198接收URL请求时,服务器将小的高速缓存的图像作 为数据返回,并在继续处理来保存所述事件的请求之前关闭HTTP连接。
使用如上所述的技术,实现了某些优点和特征。实例包括但 不限于通过从设备移除报告和性能监控处理来减少设备200的负载。此 外,等待URL返回图像帮助确保收集的事件数据被服务器接收,即使用 户放弃所述web页面。此外,实现下载^:弃处理有助于确保如果存在网 络错误或者脚本遇到忙的性能监控服务器,终端用户不会经历一个"忙" 的web浏览器。此外,在继续处理之前关闭web服务器上的HTTP连接有 助于确保终端用户不会被迫等待监控web站点来保存数据并允许web服 务器在保存数据的时候接受另外的HTTP连接。
使用上面提供的技术和特征,设备200的性能能够显示在多 个报告中。例如,能够使用一个或者多个脚本来显示web页面递送中的 改进。能够打开和关闭多个加速技术,并且在每个设置中能够比较终端 用户在交付web页面中的体验的比较。
使用上面提供的技术和特征,性能监控服务器能够保持应用 200的持续的操作的一个历史视图,从而允许其操作者确定设备的有效性 和能力。
使用上面提供的技术和特征,性能监控服务器能够保持对服 务器106上包含的应用的持续的终端用户体验的历史视图,从而允许应 用拥有者确定持续的应用修改是否正在改善应用的被感知的性能。
使用上面提供的技术和特征,性能监控服务器能够提供当其 自身出现不利的网络104和/或客户机102情况时以及当那些相同情况被 解决时在应用和/或设备的操作性能中的变化的指示。
使用上面提供的技术和特征,性能监控服务器能够提供在应 用基础结构的性能和终端用户对其体验之间的关系在时间的离散点上的 指示。
使用上面提供的技术和特征,性能监控服务器能够提供可以 阻止与web应用的成功相互作用的问题的预警。
使用上面提供的技术和特征,性能监控服务器能够提供体验给定性能方案的用户集的性质的指示。
使用上面提供的技术和特征,性能监控服务器能够提供web应用的哪一个区域正在体验差的性能的指示。
权利要求
1、一种在多个域之间传递性能数据的方法,所述方法包括在连接到第一域的终端用户的计算装置处接收包括由网络设备注入web页面中的脚本的web页面;在所述终端用户的所述计算装置处执行所述脚本;记录在所述脚本中指示的性能参数;发送对于由所述web页面标识的项目的请求到第二域的计算装置;以及将所记录的性能参数作为所发送的请求的一部分来发送给所述第二域的所述计算装置。
2、 如权利要求l所述的方法,其中所述记录包括将事件分类为统一资源 定位器的询问参数的 一部分。
3、 如权利要求l所述的方法,其中所述记录包括将事件分类为由所述注 入的脚本所创建的图像的URL源的询问参数。
4、 如权利要求3所述的方法,其中所述图像由所述注入的脚本动态创建。
5、 如权利要求l所述的方法,其中所述发送所记录的性能参数包括经由 SSL通信来发送所记录的性能到所述第二域。
6、 如权利要求l所述的方法,其中所述发送所记录的性能参数包括发送 所记录的性能到所述第二域的服务器。
7、 如^又利要求1所述的方法,其中所述发送对于由web页面标识的项目 的请求到第二域的计算装置包括发送对于由web页面标识的图像的请求到第 二域的计算装置。
8、 一种在其上具有指令的计算机可读介质,当所述指令被执行时提供在 多个域之间传递性能数据的方法,所述计算机可读介质包括在连接到第一域的终端用户的计算装置处接收包括由网络设备注入web 页面中的脚本的web页面的指令;在所述终端用户的所述计算装置处执行所述脚本的指令; 记录在所述脚本中指示的性能参数的指令;发送对于由web页面标识的项目的请求到第二域的计算装置的指令;以及将所记录的性能参数作为所发送的请求的一部分来发送给第二域的计算 装置的指令。
9、 如权利要求8所述的计算机可读介质,其中所述记录的指令包括将事 件分类为统一资源定位器的询问参数的一部分的指令。
10、 如权利要求8所述的计算机可读介质,其中所述记录的指令包括将 事件分类为由注入的脚本所创建的图像的URL源的询问参数的指令。
11、 如权利要求1Q所述的计算机可读介质,其中所述图像由所述注入的 脚本动态创建。
12、 如权利要求8所述的计算机可读介质,其中所述发送所记录的性能 参数的指令包括经由SSL通信来发送所记录的性能到所述第二域的指令。
13、 如权利要求8所述的计算机可读介质,其中所述发送所记录的性能 参数的指令包括发送所记录的性能到所述第二域的服务器的指令。
14、 如权利要求8所述的计算机可读介质,其中所述发送对于由web页 面标识的项目的请求到第二域的计算装置的指令包括发送对于由web页面标 识的图像的请求到第二域的计算装置的指令。
15、 一种在多个域之间传递性能数据的系统,所述系统包括 在连接到第一域的终端用户的计算装置处接收包括由网络设备注入web页面中的脚本的web页面的装置;用于在终端用户的计算装置处执行脚本的装置; 用于记录在脚本中指示的性能参数的装置;用于发送对于由web页面标识的项目的请求到第二域的计算装置的装置;以及用于将所记录的性能参数作为所发送的请求的一部分来发送给所述第二 域的计算装置的装置。
16、 如权利要求15所述的系统,其中所述用于记录的装置包括将事件分 类为统 一 资源定位器的询问参数的 一 部分的装置。
17、 如权利要求15所述的系统,其中所述用于记录的装置包括将事件分 类为由注入的脚本所创建的图像的URL源的询问参数的装置。
18、 如权利要求17所述的系统,其中所述图像由所述注入的脚本动态创建。
19、 如权利要求15所述的系统,其中所述用于发送所记录的性能参数的装置包括经由SSL通信来发送所记录的性能到所述第二域的装置。
20、 如权利要求15所述的系统,其中所述用于发送所记录的性能参数的 装置包括发送所记录的性能到所述第二域的服务器的装置。
21、 如权利要求15所述的系统,其中所述用于发送对于由web页面标识 的项目的请求到第二域的计算装置的装置包括发送对于由所述web页面标识 的图像的请求到第二域的计算装置的装置。
22、 一种用于确定web页面中错误的存在的方法,所述方法包括 在终端用户的计算装置处接收包括由网络设备嵌入的脚本的web页面,所述脚本具有当被所述计算装置执行时对浏览器错误事件的通知进行登记的 指令;在所述终端用户的所述计算装置处执行脚本;以及 当错误发生时记录在交付web页面期间的错误的发生。
23、 如权利要求22所述的方法,进一步包括记录关于执行web页面内 容的应用的信息。
24、 如权利要求22所述的方法,其中所述记录包括记录相对于所述web 页面执行的错误发生的时间。
25、 如权利要求22所述的方法,进一步包括由所述网络设备加速所述 终端用户的计算装置接收所述web页面。
26、 如权利要求22所述的方法,进一步包括将所记录的错误发生报告 给另一个计算装置,所述另一个计算装置位于第二域上。
27、 如权利要求26所述的方法,其中所述报告包括经由SSL协议与所述 第二域的另一个计算装置进行通信。
28、 一种在其上具有指令的计算机可读介质,所述指令当被执行时确定 web页面中错误的存在,所述计算机可读介质包括在终端用户的计算装置处接收包括由网络设备嵌入的脚本的web页面的 指令,所述脚本具有当被所述计算装置执行时对浏览器错误事件的通知进行 登记的指令;在所述终端用户的计算装置处执行脚本的指令;以及 当错误发生时记录在交付web页面期间的错误的发生的指令。
29、 如权利要求28所述的计算机可读介质,进一步包括记录关于执行所 述web页面内容的应用的信息的指令。
30、 如权利要求28所述的计算机可读介质,进一步包括记录相对于所述 web页面执行的错误发生的指令。
31、 如权利要求28所述的计算机可读介质,进一步包括由所述网络设备4n:击^^'士'々夂HI ii AA"、J"贫罢4在,1+ 6F^-'去',"。K & AA 士e人
32、 如权利要求28所述的计算机可读介质,进一步包括将所记录的错误 发生报告给另 一个计算装置的指令,所述另 一个计算装置位于第二域上。
33、 如权利要求32所述的计算机可读介质,其中所述报告的指令包括经 由SSL协议与所述第二域的另一个计算装置通信的指令。
34、 一种用于确定web页面中错误的存在的系统,所述系统包括 在终端用户的计算装置处接收包括由网络设备嵌入的脚本的web页面的装置,所述脚本具有当被所述计算装置执行时为浏览器错误事件的通知而登 记的指令;在所述终端用户的计算装置处执行脚本的装置;以及当错误发生时记录在交付web页面期间的错误的发生的装置。
35、 如权利要求34所述的系统,进一步包括记录关于执行web页面内容 的应用的信息的装置。
36、 如权利要求34所述的系统,其中所述用于记录的装置包括记录相对 于web页面执行的错误发生的时间的装置。
37、 如权利要求34所述的系统,进一步包括由所述网络设备加速所述终 端用户的计算装置接收web页面的装置。
38、 如权利要求34所述的系统,进一步包括将所记录的错误发生报告给 另一个计算装置的装置,所述另一个计算装置位于第二域上。
39、 如权利要求38所述的系统,其中所述用于报告的装置包括经由SSL 协议与所述第二域的另 一个计算装置进行通信的装置。
40、 一种用于测量与加载web页面相关的参数的方法,所述方法包括 在终端用户的计算装置处接收包括由网络设备注入的脚本的web页面,所述脚本具有当被执行时对与attachEvent命令和addEventListener命令中 的至少一个相关的事件的发生进行登记的指令;在所述终端用户的计算装置处执行脚本;以及记录在交付web页面期间与至少 一个命令相关的事件的发生。
41、 如权利要求40所述的方法,进一步包括记录关于执行web页面内 容的应用的信息。
42、 如权利要求40所述的方法,其中所述记录包括记录相对于web页面 执行的错误发生的时间。
43、 如权利要求4Q所述的方法,其中所述attachEvent命令包括 onreadystatechange事件。
44、如权利要求40所述的方法,其中所述attachEvent命令包括 cmbeforeimload事件。
45、 如权利要求40所述的方法,其中所述addEventUstener命令包4舌 DOMContentLoaded事件。
46、 如权利要求40所述的方法,其中所述addEventListener命令包括 load事件。
47、 如权利要求40所述的方法,其中所述addEventListener命令包括 unload事件。
48、 如权利要求40所述的方法,进一步包括由所述网络设备加速所述 终端用户的计算机装置接收所述web页面。
49、 一种在其上具有指令的计算机可读介质,所述指令当被执行时测量 与加载web页面相关的参数,所述计算机可读介质包括在终端用户的计算装置处接收包括由网络设备注入的脚本的web页面的 指令,所述脚本具有当被执行时对于与at tachEvent命令和ad犯ventLi s tener 命令中的至少 一个相关的事件的发生进行登记的指令;在所述终端用户的计算装置处执行所述脚本的指令;以及记录在交付所述web页面期间与至少一个命令相关的事件的发生的指令。
50、 如权利要求49所述的计算机可读介质,进一步包括记录关于执行web 页面内容的应用的信息的指令。
51、 如权利要求49所述的计算机可读介质,其中所述记录的指令包括记 录相对于web页面执行的错误发生的时间的指令。
52、 如权利要求49所述的计算机可读介质,其中所述attachEvent命令包括onreadystatechange事件。
53、 如权利要求49所述的计算机可读介质,其中所述attachEvent命令 包括onbeforeimload事件。
54、 如权利要求49所述的计算机可读介质,其中所述addEventListener 命令包括DOMContentLoaded事件。
55、 如权利要求49所述的计算机可读介质,其中所述addEventListener 命令包括load事件。
56、 如权利要求49所述的计算机可读介质,其中所述addEventListener 命令包括unload事件。
57、 如权利要求49所述的计算机可读介质,进一步包括由所述网络设备 加速所述终端用户的计算机装置接收所述web页面的指令。
58、 一种用于测量与加载web页面相关的参数的系统,所述系统包括 在终端用户的计算装置处接收包括由网络设备注入的脚本的web页面的命令中的至少 一个相关的事件的发生进行登记的指令;在所述终端用户的计算装置处执行所述脚本的装置;以及记录在交付所述web页面期间与至少 一个命令相关的事件的发生的装置。
59、 如权利要求58所述的系统,进一步包括记录关于执行web页面内容 的应用的信息的装置。
60、 如权利要求58所述的系统,其中所述用于记录的装置包括记录相对 于web页面执行的错误发生的时间的装置。
61、 如权利要求58所述的系统,其中所述attachEvent命令包括 onreadystatechange事件。
62、 如权利要求58所述的系统,其中所述attachEvent命令包括 onbeforeunload事件。
63、 如权利要求58所述的系统,其中所述addEventListener命令包括 DOMContentLoaded事件。
64、 如权利要求58所述的系统,其中所述ad犯ventListener命令包括 load事件。
65、 如权利要求58所述的系统,其中所述addEventListener命令包括unload事件。
66、 如权利要求58所述的系统,进一步包括由所述网络设备加速所述终 端用户的计算机装置接收所述web页面的装置。
67、 一种用于测量与加载web页面相关的参数的方法,所述方法包括 由网络设备拦截来自于计算装置的对web页面的请求; 由所述网络设备发送所述对web页面的请求到web服务器; 由所述网络设备拦截来自于所述web服务器的响应,所述响应包括被请求的web页面的至少一部分;由所述网络设备注入具有指令的脚本,所述指令当被所述计算装置执行 时登记所通知的web页面事件的发生从而创建被修改的响应;以及发送所述被修改的响应到请求所述web页面的计算装置。
68、 如权利要求67所述的方法,进一步包括由所述网络设备加速来自 于所述计算装置的对web页面的被拦截的请求、来自于所述web服务器的被 拦截的响应以及到所述计算装置的被修改的响应中的至少一个。
69、 如权利要求68所述的方法,其中所述加速包括压缩来自于所述计算 装置的对web页面的被拦截的请求、来自于所述web服务器的被拦截的响应 以及到所述计算装置的被修改的响应中的至少 一个。
70、 如权利要求68所述的方法,其中所述加速包括由所述网络设备应用 传输控制协议池。
71、 如权利要求68所述的方法,其中所述加速包括由所述网络设备应用 传输控制协议多路复用。
72、 如权利要求68所述的方法,其中所述加速包括由所述网络设备应用 传输控制协议緩沖。
73、 如权利要求68所述的方法,其中所述加速包括由所述网络设备高速 緩存被请求的we b页面中的至少 一部分内容。
74、 一种在其上具有指令的计算机可读介质,所述指令当被执行时测量 与加载web页面相关的参数,所述计算机可读介质包括由网络设备拦截来自于计算装置的对web页面的请求的指令; 由所述网络设备发送所述对web页面的请求到web服务器的指令; 由所述网络设备拦截来自于所述web服务器的响应的指令,所述响应包括被请求的web页面的至少 一部分;由所述网络设备注入具有指令的脚本的指令,所述脚本中具有的指令当 被所述计算装置执行时登记所通知的web页面事件的发生从而创建被修改的 响应;以及发送所述被修改的响应到请求所述web页面的计算装置的指令。
75、 如权利要求74所述的计算机可读介质,进一步包括由所述网络设备 加速来自于所述计算装置的对web页面的被拦截的请求、来自于所述web服 务器的被拦截的响应以及到所述计算装置的被修改的响应中的至少一个的指 令。
76、 如权利要求75所述的计算机可读介质,其中所述加速的指令包括压 缩来自于所述计算装置的对web页面的被拦截的请求、来自于所述web服务 器的被拦截的响应以及到所述计算装置的被修改的响应中的至少 一个的指 令。
77、 如权利要求75所述的计算机可读介质,其中所述加速的指令包括由 所述网络设备应用传输控制协议池的指令。
78、 如权利要求75所述的计算机可读介质,其中所述加速的指令包括由 所述网络设备应用传输控制协议多路复用的指令。
79、 如权利要求75所述的计算机可读介质,其中所述加速的指令包括由 所述网络设备应用传输控制协议缓沖的指令。
80、 如权利要求75所述的计算机可读介质,其中所述加速的指令包括由 所述网络设备高速緩存被请求的web页面中的至少一部分内容的指令。
81、 一种用于测量与加载web页面相关的参数的系统,所述系统包:fe: 由网络设备拦截来自于计算装置的对web页面的请求的装置; 由所述网络设备发送所述对web页面的请求到web服务器的装置; 由所述网络设备拦截来自于所述web服务器的响应的装置,所述响应包括被请求的web页面的至少 一部分;由所述网络设备注入具有指令的脚本的装置,所述指令当被所述计算装 置执行时登记所通知的web页面事件的发生从而创建被修改的响应;以及发送所述被修改的响应到请求所述web页面的计算装置的装置。
82、 如权利要求81所述的系统,进一步包括由所述网络设备加速来自于所述计算装置的对web页面的被拦截的请求、来自于所述web服务器的被拦 截的响应以及到所述计算装置的被修改的响应中的至少 一个的装置。
83、 如权利要求82所述的系统,其中所述用于加速的装置包括压缩来自 于所述计算装置的对web页面的被拦截的请求、来自于所述web服务器的被 拦截的响应以及到所述计算装置的被修改的响应中的至少 一个的装置。
84、 如权利要求82所述的系统,其中所述用于加速的装置包括由所述网 络设备应用传输控制协议池的装置。
85、 如权利要求82所述的系统,其中所述用于加速的装置包括由所述网 络设备应用传输控制协议多路复用的装置。
86、 如权利要求82所述的系统,其中所述用于加速的装置包括由所述网络设备应用传输控制协议緩冲的装置。
87、 如权利要求82所述的系统,其中所述用于加速的装置包括由所述网络设备高速緩存被请求的web页面中的至少一部分内容的装置。
全文摘要
本发明描述了用于操作商业以提供电话服务的系统和方法。所述方法包括接收包括由网络设备注入web页面中的脚本的web页面,在所述终端用户的计算装置处执行脚本,以及记录在所述脚本中指示的性能参数。所述方法还包括发送对于由所述web页面标识的项目的请求到第二域的计算装置,以及将所记录的性能参数作为所发送的请求的一部分来发送给所述第二域的计算装置。
文档编号G06F11/34GK101632067SQ200880008064
公开日2010年1月20日 申请日期2008年3月10日 优先权日2007年3月12日
发明者T·麦基 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1