用于使用http-察觉的客户端代理的系统和方法

文档序号:7679376阅读:444来源:国知局
专利名称:用于使用http-察觉的客户端代理的系统和方法
技术领域
0001本发明总的涉M网技术,更^#地,本发明涉及^^]客户端代理来拦 截HTTP请求和响应以提^^尤化的通信。
背景技术
0002诸如web浏览器的多个应用^^] HTTP与服务器通信。这将导致给定网 络上大量的业务为HTTP业务。因此,通过优化和控制虚拟专用网络中的HTTP业务的 流可以获得多个益处。例如,可以使用高速緩存来改进重复的HTTP请求的服务。或 者例如,通过控制所请求资源的名称和与请求发送的任一数据可以获得多个益处。但 是,使用HTTP的不同应用的数量可能使得让所有HTTP应用M适应在虛拟专用网络 环境中操作的任务不现实。
0003许多虚拟专用网络与其中资源^求用户3^i正。例如,虚拟专用网络中 的用户可以被要求来提供名称和密码以登录网络,并且来获耳"寸某些资源的访问。 HTTP cookie (曲奇)可以被用^/A^户端传递^i正信息到虚拟专用网络设备。Web浏 览器经常^^]来管理这些5全i正cookie。
0004在使用web浏览器来管理HTTP cookie以验i正虚拟专用网络的用户可能 产生多个问题。例如,用户可以使用web浏览器来打开到虚拟专用网络的多个同时的 连接。在此情况中期望来自第一连接的^i正cookie被再次^^]以建立第二连接,使 得用户不需要重新输入验证信息。该特征难以实现给定跨越不同浏览器的多个 cookie管理策略,诸如超时和cookie高速缓存的可获得性。同样,例如,用户可以 经由虛拟专用网络试图打开非HTTP连^妻,在该情况中可能不使用web浏览器,意味 着马b正cookie不能^^得。
0005因此,期望存在一种需求,以在虚拟专用网络环境中能够拦截并解析 HTTP通信和管理cookie的客户端代理。

发明内容
0006本发明涉及使用HTTP-察觉(HTTP-aware)的客户端代理的系统和方法。在一个方面,本发明为用于使用在虚拟专用网络环境中操作的客户
端代理来拦截HTTP通信的方法。在一个实施例,该方法包括由在客户端上 执行的客户端代理在网络层拦截来自客户端上执行的应用的HTTP请求;修改 该HTTP请求;并且经传输层连接发送所修改的HTTP请求到服务器。在一些 实施例中,该方法可以包括增加、移除或者修改HTTP请求中的至少一个 cookie。在其他实施例中,该方法可以包括修改包含在该HTTP请求中的至少 一个名称-值对。
0007在第二方面中,本发明涉^J于^^]在虚拟专用网络环境中操怍的客户 端代理来拦截HTTP通信的计算机实现的系统。在一个实施例中,该系统包括客户 端计算装置;和^^户端上才;y亍的客户端代理,在网络层拦截来自客户端上执行 的应用的HTTP请求;修改该HTTP请求;并且经传输层连接发送所修改的HTTP 请求到服务器。
0008在第三方面,本发明为用于使用客户端代理在来自客户端的非 HTTP通信中启用HTTP cookie—睑il的方法。该方法包括由在客户端上扭^f亍 的客户端代理拦截来自客户端的连接请求;由客户端代理建立与网络设备的 传输层虚拟专用网络连接;经所建立的连接由客户端代理发送包括验证 cookie的HTTP请求;并且经由该连接由客户端代理发送该连接请求。
0009在第四方面,本发明为用于使用客户端代理在来自客户端的非 HTTP通信中启用HTTP cookie验证的计算机实现的系统,该系统包括客户 端计算设备;和在客户端上执行的客户端代理,其拦截来自客户端的连接请 求;建立与网络设备的传输层虛拟专用网络连接;经所建立的连接由客户端 代理发送包括验证cookie的HTTP请求;并且经由该连接由客户端代理发送 该连接请求。
0010在第五方面,本发明为用于^^]客户端代理#虚拟专用网络环嫂中使 用HTTP cookie启用安全验i正的方法,该方法包括由在客户端上执行的客户端 代理拦截从虛拟专用网络上的应用到客户端的包括cookie的HTTP通信;由 客户端代理,人HTTP通信移除cookie;由客户端4、理存^f诸所4妄收的cookie; 由客户端代理发送所修改的HTTP通信到客户端上执行的应用;由该客户端代 理拦截来自客户端的HTTP请求;由客户端代理在该HTTP请求中插入所接收 的cookie;并且发送所修改的HTTP请求到设备。
0011在第六方面,本发明为用于^if]客户端^J里^^虚拟专用网络环嫂中使用HTTP cookie启用^N^i正的计算机可^vf亍系统,该系统包括客户端计算设备和 客户端上执行的客户端代理,该客户端代理拦截从虚拟专用网络上的设备到客 户端的包括cookie的HTTP通信;从HTTP通信移除cookie;存储所接收的 cookie;发送所修改的HTTP通信到客户端上执行的应用;由该客户端代理拦 截来自客户端的HTTP请求;由客户端代理在该HTTP请求中插入所接收的 cookie;并且发送所^务改的HTTP请求到设备。
0012在以下附图和描述中提出本发明的不同实施例的细节。


0013该发明的这些和其他对象、方面、特征和优点参见下述结合附图
的细节描述将会更加明显并更好理解,其中
图1A是对于客户端通过设备访问服务器的网络环境的实施例的框图IB是用于通过设备从服务器传送计算环境到客户端的环境的实施例的
框图1C和ID是计算装置的实施例的框图2A是用于处理客户端和服务器之间的通信的设备的实施例的框图2B是用于优化、加速、负载平衡和路由客户端和服务器之间的通信的 设备的另 一个实施例的框图3是客户端通过设备与服务器通信的实施例的框图4是使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的 方法的实施例的框图5是使用客户端代理来启用HTTP cookie验证的方法的一个实施例的框
图6为使用客户端代理来在虚拟专用网络环境中使用HTTP cookie启用安 全验证的方法的框图7为用于对先前存储文件建立有效更新的方法的一个实施例的流程图; 图8为用于对先前存储文件建立有效更新的方法的另一个实施例的流程
图9为用于对先前存储文件建立和接收有效更新的方法的另一个实施例的 流程图10为用于将第二文件与第三文件组合的方法的一个实施例的流程图,其中第二文件来自先前存储的第 一文件,第三文件包括来自第二文件的数据
序列和在第一文件和第二文件中都存在的数据序列的长度和位置表示;和
图11为描述用于确定文件传输方法的方法的一个实施例的流程图。
0014从下面结合附图所提出的具体实施方式
将更加明了本发明的特 征和优点,其中,全文中相同的参考特征识别对应的元件。附图中,相同 的附图标记通常指示相同的、功能类似、和/或结构类似的元件。
具体实施例方式
A、网络和计算环境
0015在讨论设备和/或客户端的系统和方法的实施例的细节之前,讨 论可以部署在这些实施例中的网络和计算环境可能是有帮助的。现在参见图 1A,描述了网络环境的实施例。概括来讲,网络环境包括通过一个或多个网 络104、 104,(总的称为网络104)与一个或多个服务器106a- 106n (同样总 的称为服务器106,或远程机器106)通信的一个或多个客户端102a-102n (同样总的称为本地机器102,或客户端102)。在一些实施例中,客户端102 通过设备200与服务器106通信。
0016虽然图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通信。
0017网络104和/或104,是任一类型和/或形式的网络,并且可包括4壬 一的下述网络点对点网络,广播网络,广域网,局域网,电信网络,数据 通信网络,计算机网络,ATM(异步传输模式)网络,SONET (同步光纤网 络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施 例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104 和/或104,的拓朴可为总线型、星型或环型网络拓朴。网络104和/或104,以及网络拓朴可以是任一对于本领域普通技术人员所熟知的、可以支持此处描述 的操作的任一这样的网络或网络拓朴。
0018如图1A所示,设备200(此处也指为接口单元200或者网关200 ) 被示在网络104和104,之间。在一些实施例中,设备200可位于网络104上。 例如,公司的分支机构可在分支机构中布署设备200。在其它实施例中,设备 200可位于网络104,上。例如,设备200可位于公司的数据中心。在又一个实 施例中,多个设备200可布署在网络104上。在一些实施例中,多个设备200 可布署在网络104,上。在一个实施例中,第一设备200与第二设备200,通信。 在其它实施例中,设备200作为客户端102可为位于同一个或不同的网络104、 104,上的任一客户端102或服务器106的一部分。 一个或多个设备200可位 于客户端102和服务器106之间的网络或网络通信路径中的任一点。
0019在一个实施例中,系统可包括多个逻辑分组服务器106。在这些 实施例中,服务器的逻辑分组可以被称为服务器群组38。在这些实施例的一 些中,服务器106可为地理上分散的。在一些实例中,群组38可以作为单个 实体被管理。在其它实施例中,服务器群组38包括多个服务器群组38。在一 个实施例中,服务器群组执行代表一个或者多个客户端102的一个或者多个 应用。
0020在每个群组38中的服务器106可为不同种类。 一个或多个服务 器106可根据一种类型的操作系统平台(例如位于Washington, Redmond的 Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106 可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个群组38 的服务器106不需要与同一群组38内的另一个服务器106物理上接近。因此, 逻辑分组为群组38的服务器106的组可使用广域网(WAN)连接或中等区域 网(MAN)连接互联。例如,群组38可包括物理上位于不同大陆或大陆、 国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106使 用局域网(LAN)连接或一些直接连接的形式进行连接,则在群组38中的服 务器106间的数据发送速度将增加。
0021服务器106可指文件服务器、应用服务器、web服务器、代理 服务器或者网关服务器。在一些实施例中,服务器106可有作为应用服务器 或者主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目 录。客户端102也可称为客户端节点或端点。在一些实施例中,客户端102有能力作为在服务器上搜寻对应用的访问的客户端节点工作,也有能力作为
提供对用于其他客户端102a-102n的所寄载的应用的访问的应用服务器工作。0022在一些实施例中,客户端102与服务器106通信。在一个实施 例中,客户端102可与群组38中的服务器106之一直接通信。在另一个实施 例中,客户端102执行程序邻近应用以与群组38内的服务器106通信。还是 在又另一个实施例中,服务器106提供主节点的功能。在一些实施例中,客 户端102通过网络104与群组38中的服务器106通信。通过网络104,客户 端102例如可以请求执行在群组38中的服务器106a-106n寄载的各种应用, 并接收应用执行结果的输出用于显示。在一些实施例中,只有主节点提供要 求识别和提供地址信息的功能,其中的地址信息与寄载所请求的应用的服务 器106'相关。
0023在一个实施例中,服务器106提供网络(Web)服务器的功能。在 另一个实施例中,服务器106a接收来自客户端102的请求,将该请求转发到 第二服务器106b并以来自服务器106b对该请求的响应通过客户端102来响 应该请求。在又另一个实施例中,服务器106获得客户端102可用的应用的 列举以及地址信息,该地址信息与服务器106相关,该服务器106寄载由该 应用的列举所识别的应用。在又一个实施例中,服务器106使用web接口呈 现对客户端102的请求的响应。在一个实施例中,客户端102直接与服务器 106通信以访问所识别的应用。在另一个实施例中,客户端102接收诸如显示 数据的应用输出数据,该应用输出数据通过对在服务器106上所识别的应用 的执行而产生。
0024现在看图1B,示出了在客户端102上用于传送和/或操作计算环 境的网络环境。在一些实施例中,服务器106包括用于向一个或多个客户端 102传送计算环境或应用和/或数据文件的应用传送系统190。总的来"i兌,客户 端〗02通过网络104、 104,和设备200与服务器106通信。例如,客户端102 可驻留在公司的远程办公室里,例如分支才/^勾,并JJ良务器106可驻留在公司数据中 心。客户端102包括客户端代理120以及计算环嫂15。计算沐ft 15可l^亍或操作用 于访问、处理或^fM数据文件的应用。计算环境15、应用和/或数据文件可通过设备 200和/或服务器106传送。
0025在一些实施例中,设备200加速计算环境15或者其中的任一部 分到客户端102的传送。在一个实施例中,设备200通过应用传送系统190加速计算环境15的传送。例如,可^j ]此处描述的实施例勤。速应用可处理的流 应用和数据文件从中央公司数据中心到远程用户位置(例如/>司的分支才A^勾)的传送。
在另一个实施例中,设备200力口速客户端102和服务器106之间的传输层业务。设备 200可以提供用于加速/AJ良务器106到客户端102的^""传输层有效载荷的力口速技 术,诸如l)传输层连接池,2)传输层连接多路賴,3)传输控制协议緩沖,4) 压缩,以及5)高速緩存。在一些实施例中,设备200响应来自客户端102的请求, 提供服务器106的负载平衡。在其它实施例中,设备200充当^J里或;^i方问服务器来 提供对一个或者多个服务器106的访问。在另一个实施例中,设备200提供/A^户端 102的第一网络104到服务器106的第二网络104,的^^虚拟专用网络连接,诸如 SSLVPN连接。在又一些实施例中,设备200提供客户端102和服务器106之间的连 接和通信的应用防火墙安全、控制和管理。
0026在一些实施例中,基于多个执行方法并且基于通过策略引擎195 所应用的任一验证和授权策略,应用传送管理系统190提供应用传送技术来 传送计算环境到用户的桌面(远程的或者其它的)。使用这些技术,远程用户 可以从任一网络连接的装置100获取计算环境并且访问服务器所存储的应用 和数据文件。在一个实施例中,应用传送系统190可驻留在服务器106上或在其上 4W亍。在另一个实施例中,应用传送系统190可驻留在多个服务器106a-106n上或在 其上4^亍。在一些实施例中,应用传送系统190可在服务器群组38内^Vf亍。在一个 实施例中,#1^亍应用传送系统190的服务器106也可^f诸或提供应用和数据文件。在 另一个实施例中, 一个或多个服务器106的第一组可4似亍应用传送系统190,并且不 同的服务器106n可^j诸或提供应用和数据文件。在一些实施例中,应用传送系统19 0 、 应用和数据文件中的每个可驻留或位于不同的服务器上。在又一个实施例中,应用传 送系统190的^-"^分可驻留、扭軒、或被务賭于或分发到设备200或多4S殳备。
0027客户端102可以包^i十算环嫂15,用于扭/f刊吏用或者处理数据文件的 应用。客户端102通过网络104、 104,禾^i殳备200可以请求来自服务器106的应用 和数据文件。在一个实施例中,设备200可以转发来自客户端102的请求到服务器 106。例如,客户端102可以不具有;^4##或者本地可访问的应用和数据文件。响 应该请求,应用传送系统190和/或服务器106可以传送应用和数据文件到客户端 102。例如,在一个实施例中,服务器106可以按照应用;^u^发送应用以^^户端102 上的计算环境15中操怍。
0028在一些实施例中,应用传送系统190包括Citrix Systems, Inc的CitrixAccess Suite 的4i~^卩分,诸如MetaFrame或者Citrix Presentation Server 和 /或Microsoft公司制造的"fi的Microsoft Windows Terminal Services。在一 个实施例中,应用传送系统190可以通过远程显示协议或者以通过基于远禾线者基于 服务器计算的其它方式来传送一个或者多个应用到客户端102或者用户。在另一个实 施例中,应用传送系统190可以通过应用流来传送一个或者多个应用到客户端或者用 户。
0029在一个实施例中,应用传送系统190包括策略引擎195,用于控制和管 Jl) 十应用扭軒方法的访问、选#^应用的传送。在一些实施例中,策略引擎195确定 用户或者客户端102可以访问的一个或者多个应用。在另一个实施例中,策略引擎 195确定应用应该如何被传送到用户或者客户端102,例如才W亍方法。在一些实施例 中,应用传送系统190提供多个传送技术,从中^i^择应用^^亍的方法,诸如基于服 务器的计算、流式传输或者本地传送应用到客户端120用于本^#^亍。
0030在一个实施例中,客户端102请求应用程序的执行并且包括服务器 106的应用传送系统190选裤二执行该应用程序的方法。在一些实施例中,服务 器106从客户端102接收证书。在另一个实施例中,服务器106从客户端102 接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的 接收,应用传送系统l卯列举对于客户端102可用的多个应用程序。应用传 送系统190接收请求来执行所列举的应用。应用传送系统190例如响应策略 引擎的策略,选择预定数量的方法的其中一个来执行所列举的应用。应用传 送系统190可以选择执行应用的方法,使得客户端102来接收通过执行服务 器106上的应用程序所产生的应用输出数据。应用传送系统190可以选择4丸 行应用的方法,使得本地机器102在检索包括应用的多个应用文件之后来本 地执行应用程序。在又一个实施例中,应用传送系统190可以选择执行应用 的方法,以通过网络104流式传输应用到客户端102。
0031客户端102可以执行、操作或者以其它方式提供应用,该应用可 为任一类型和/或形式的软件、程序或者可^Vf于指令,例如任一类型和/或形式的web 浏览器、基于web的客户端、客户端-服务器应用、瘦^1户端计算客户端、ActiveX
才W亍指令。在一些实施例中,应用可以是^4^户端102在服务器106上^Vf亍的基于 月良务器或者基于远程的应用。在一个实施例中,服务器106可以^JHP瘦客户端或 者远程显示协"i棘显示输出到客户端102,诸如由Florida, Ft. Lauderdale的CitrixSystemslnc,制造的独立计算架构(ICA )协议,或者由Washington, Redmond的 Microsoft公司制造的远程桌面协议(RDP)。应用可<顿任一类型的协议,并且它可 为,例如,HTTP^:户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施 例中,应用包括涉WJ VoIP通信的《P类型的软件,例如软IP电话。在进一步的实 施例中,应用包括涉WJ实时数据通信的^-应用,例如用于流式传lt^LM和/或音 频的应用。
0032在一些实施例中,服务器106或服务器群组38可以正在运行一 个或多个应用,例如提供瘦客户端计算或远程显示表示应用的应用。在一 个实施例中,服务器106或服务器群组38作为一个应用了来执行Citrix Systems Inc.的Citrix Access Sui teTw的《壬一部分,例々口 MetaFrame或Citrix Presentation Server , 和/或Microsoft公司制造的Microsoft Windows
Terminal Services中的任--~个。在一个实施例中,应用是位于Florida,
Fort Lauderdale的Citrix Systems Inc.开发的ICA客户端。在其它实施例 中,应用包括由位于Washington, Redmond的Microsoft公司开发的远程 桌面(RDP)客户端。另外,服务器106可以运行一个应用,它可以是提供 电子邮件服务的应用服务器,例如由位于Washington, Redmond的 Microsof t 乂>司制造的Microsof t Exchange,或者web或Internet月l务器, 或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以 包括所寄载的服务或产品的任一类型,例如位于California, Santa Barbara 的Citrix Online Division ^是供的GoToMeeting , ^立于California, Santa Clara的WebEx Inc.提供的WebEx ,或者位于Washington, Redmond的 Microsof t/>司才是供的Microsof t Office Live Meeting。
0033客户端102、服务器106矛^i殳备200可以布署为和/或#(^亍在^^类型 和形式的计算装置上,诸如能够在任一类型和形式的网络Jiit信并纟W亍此处描述的操 作的计算机、网络装置或者设备。图1C和lD描述用于实iElJ:户端102、月l务器106 或者设备200的实施例的计算装置100的框图。如图1C和1D所示,每个计算装 置100包括中央处理单元101,以及主存储单元122。如图1C所示,计算装 置100可以包括虚拟显示装置124、键盘126和/或诸如鼠标的定点装置127。 每个计算装置100也可包括其它可选择的部件,例如一个或多个输入/输出装 置130a - 130b (总的使用标号130表示),以及与中央处理单元101通信的高 速緩存存储器140。0034中央处理单元101是响应并处理从主存储单元122取得的指令 的任一逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例 如由 California , Mountain View 的 Intel 7>司制造的;由 Illinois, Schaumburg的Motorola公司制造的;由Califirnia, Santa Clara 的Transmeta公司制造的;由New York, White Plains的International Business Machines公司制造的RS/6000处理器;或者由California, Sunnyvale的Advanced Micro Devices公司制造的。计算装置100可以基于 任一的这些处理器或者能够如此处描述操作的任一其它处理器。
0035主存储单元122可以是一个或多个存储芯片,这些存储芯片可 以存储数据并允许微处理器101直接访问任一存储位置,例如静态随机存储 器(SRAM)、突发(Burst) SRAM或同步突发(SynchBurst) SRAM (BSRAM), 动态随机存取存储器(DRAM)、快页模式(Fast Page Mode ) DRAM (FPMDRAM)、 增强型DRAM ( EDRAM )、扩展数据输出(Extended Data Output) RAM ( EDO RAM )、 扩展数据输出(Extended Data Output) DRAM (EDO DRAM)、突发扩展数据输 出DRAM ( BED0 DRAM )、增强型DRAM ( EDRAM )、同步DRAM ( SDRAM )、 JEDEC SRAM、 PC 100 SDRAM 、双数据率SDRAM (DDR SDRAM )、增强型SDRAM ( ESDRAM )、同步 链接DRAM ( SLDRAM )、直接Rambus DRAM ( Direct Rambus DRAM) ( DRDRAM) 或者铁电RAM (FRAM)。主存储器122可以基于任一上述的存储器芯片或者能 够进行如此处描述的操作的任一其它可用的存储器芯片。在图IC所示的实施 例中,处理器101通过系统总线150 (下面将更详细的介绍)与主存储器122 通信。图IC描述计算装置100的实施例,其中处理器通过存储器端口 103直 接与主存储器122通信。例如,在图ID中,主存储器122可为DRDRAM。
0036图1D描述的实施例中,主处理器101通过次级总线,有时称为 "背端"总线,直接与高速緩存存储器140通信。在其它实施例中,主处理 器101使用系统总线150与高速緩存存储器140通信。高速緩存存储器140 通常具有比主存储器122更快的响应时间,并通常通过SRAM、 BSRAM、或EDRAM ^是供。在图1C所示的实施例中,处理器101通过本地系统总线150与各种I/O 装置130通信。各种总线可以被用于连接中央处理单元101到任一 I/O装置 130,包括VESA VL总线、ISA总线、EISA总线、微通道结构(MCA)总线、 PCI总线、PCI-X总线、PCI-Express总线、或者NuBus。对于这样的实施 例,其中IA)装置是视频显示器124,处理器101可使用高级图形端口 (AGP)与显示器124通信。图1D描述了计算机100的实施例,其中主处理器101通 过HyperTransport, Rapid I/O或者InfiniBand与I/O装置130直接通信。 图1D也描述了一个实施例,其中本地总线和直接通信是混合的处理器101 使用本地互联总线与1/0装置130a通信,而与1/0设备130b直接通信。
0037计算装置IOO可以支持任一适合的安装装置116,例如用于接 收诸如3, 5英寸、5. 25英寸软盘或ZIP盘的软盘驱动器、CD-ROM驱动器、 CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬 盘驱动器、或者适用于安装软件、程序(例如任一客户端代理120或其中 的部分)的任一其它装置。计算装置IOO还可以包括存储装置128,诸如一 个或者多个硬盘驱动器或者独立磁盘的随机阵列,用于存储操作系统和其 它相关软件,以及用于存储诸如涉及客户端代理120的任一程序的应用软 件程序。可选地,任一安装装置116也可以被用作存储装置128。此外,操 作系统和软件可从可引导介质运行,例如诸如KN0PPIX ,, —种用于 GNU/Linux的可引导CD,该可引导CD可自ko叩pix. net作为GNU/Linux分 发获得。
0038此外,计算装置100可以包括通过多个连接来对接到局域网 (LAN)、广域网(WAN)或者因特网的网络接口 118,该多个连接包括但不 限于标准电话线、LAN或WAN链路(如802. 11、 Tl、 T3、 56kb、 X. 25 )、宽 带连接(例如,ISDN、帧中继、ATM)、无线连接或它们的任一或者全部的 组合。网络接口 118可以包含内置网络适配器、网络接口卡、PCMCIA网卡、 卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合 将计算装置100对接到能够通信和执行此处所描述操作的任一类型网络的 任一其它装置。
0039在计算装置100中提供多个种类的1/0装置130a-130n。输入 装置包括键盘、鼠标、轨迹板、轨迹球、麦克风、以及绘画板。输出装置包 括视频显示器、扬声器、喷墨打印机、激光打印机、及染料升华(dye-sublimation)打印机。如图1C所示,I/O装置130可以由I/O控制器123控 制。1/0控制器可以控制诸如键盘126和定点装置127(例如鼠标或者光学笔) 的一个或者多个工/0装置。此外,I/O装置也可为计算装置100提供存储器 128和/或安装介质116。仍然在其它实施例中,计算装置100可以提供USB 连接用来接收手持USB存储装置,例如由California, Los Alamitos的Twintech Industry Inc.制造的USB闪烁驱动器系列装置。0040在一些实施例中,计算装置100可以包括多个显示装置 124a-124n或与其相连,这些显示装置可以是相同或不同的类型和/或形式。 同样的,1/0装置130a-130n中的任意一个和/或1/0控制器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的各种方式和实施例。0041在进一步的实施例中,I/O装置130可为在系统总线150和外部 通信总线间的桥170,外部通信总线例如USB总线、A卯le Desktop总线、RS-232 串行连接、SCSI总线、FireWire总线、FireWire800总线、Ethernet总线、 AppleTalk总线、Gigabit Ethernet总线、异步传输模式总线、HIPPI总线、 Super HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线、 或者串行连接(Serial Attached)小型计算机系统接口总线。0042图1C和图ID中所描述种类的计算装置100通常在操作系统的 控制下操作,该操作系统控制对任务的调度和对系统资源的访问。计算装置100 可jEi^行任一操怍系统,例如任一版本的Microsoft Windows操怍系统,不同版 本的Unix和Linux々喿作系统,用于Macintosh计算机的任一版本的Mac OS ,任 一&A式操作系统,^"-实时操作系统,任一开放源操怍系统,任一专有操作系统, 用于移动计算装置的任一才喿作系统,或者可以在计算装置J^行并4A/f亍此处所述4斜卡 的任一其它操作系统。典型的操作系统包括由Washington, Redmond的Microsoft公司制造的WINDOWS 3. x、 WINDOWS 95、 WINDOWS 98、 WINDOWS 2000、 WINDOWS NT 3. 51、WIND0WS NT 4. 0、WIND0WS CE和WINDOWS XP;由California, Cupertino的Apple计算才几7>司制造的MacOS; 由New York, Armonk的 International Business Machines制造的OS/2;以及由Utah, Salt Lake City 的Caldera公司发布的可自由获得的操作系统Linux,以及除此之外的任一类 型和/或形式的UniX"l喿作系统。
0043在其它实施例中,计算装置IOO可以具有与该装置相容的不同 的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是 palm Inc.制造的Treo180、 270、 1060、 600或者650的智能电话。在此实施 例中,Treo智能电话在PalmOS操作系统的控制下运行并且包括触针输入装置 以及五向导向装置。此外,计算装置IOO可以是任一工作站、桌面计算机、 膝上型或笔记本计算机、服务器、手持计算机、移动电话、任一其它计算 机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的 其它形式的计算或者电信装置。
B、设备架构
0044图2A示出设备200的一个示例实施例。图2A中的设备200的架构仅仅 通过示意的方i^皮提供,并不意于要限制本发明。如图2所示的,设备200包括硬件 层206和分为用户空间202和内核空间204的4欠件层。
0045硬件层206提供硬件元件,在内核空间204和用户空间202内的禾辨和 月良务在该硬件元件上被^i亍。硬件层206 ^ki是供结构和元件,使得在内核空间204 和用户空间202内的程序和服务对于设备200 ,4内又向夕卜通信数据。如图2所示, 硬件层206包括用于#^亍软件禾踏和服务的处理单元262、用于^j诸软件和数据的存 储器264、用于在网络J^送和接收数据的网络端口 266以及用于扭J亍涉及在网络 上被发送和接收的数据的加密套4转协议层处理的功能的加密处理器260。在一些 实施例中,中央处理单元262可在单独的处理器中扭^亍加密处理器260的功能。另外, 硬件层206可包括用于每个处理单元262和加密处理器260的多个处理器。处理器 262可以包括以上结合图1C和1D所述的任一处理器101。在一些实施例中,中^h 理单元262可在单独的处理器中执行加密处理器260的功能。另夕卜,硬件层206可包 括用于每个处理单元262和加密处理器260的多处理器。例如,在一个实施例中,设 备200包括第一处理器262和第二处理器262,。在其它实施例中,处理器262或者262,包括多核处理器。
0(M6虽然设备200的硬件层206通常示出带有加密处理器260,但是处理器 260可为扭軒涉及^—加密协议的功能的处理器,例如加密套4^协议层(SSL)或 者传输层安全(TLS)协议。在一些实施例中,处理器260可为通用处理器(GPP), 并iMi进一步的实施例中,可为具有用于扭軒任一安全相关协议的处理的可扭軒指 令。
0047虽然在图2中设备200的硬件层206示出具有一些元件,但是设备 200的硬^H卩分或部件可包^i十算装置的^""类型和形式的元件、硬件或软件,例如 此处结合图1C和1D示出和讨论的计算装置100。在一些实施例中,设备200可包括 月l务器、网关、路由器、交换机、桥接器或其它类型的计算或网络装置,并且具有与 jH^目关的ft^硬件和/或软件元件。
0048设备200的操怍系统分g己、管理或另外分离可用的系统^i^诸器到内核空 间204和用户空间202。在示例的软件架构200中,操作系统可为任一类型和/或形 式的Unix才喿怍系统,虽然本发明并未如此限制。同样的,i殳备200可iLi^行^"""操 作系统,例如任一片反本的Microsoft Windows #^乍系统,不同版本的Unix和Linux 才剁卡系统,用于Macintosh计算机的任一版本的Mac 0S , 4—"式#^系统, ^~"网^#{乍系统,^""实时^f乍系统,任一开源才斜乍系统,任一专有才剁乍系统,用 于移动计算装置或网络装置的任一操怍系统,或者可以在设备200上运行并^I^亍此处 所述操作的任一其它操怍系统。
0049内核空间204被保留用于运行内核230,包括4P装置驱动器、内核扩 ^il其它内核相关库欠件。就^象本领;或^支术人员所知的,内核230是净剁乍系统的核心, 并提供对设备104的资源和硬件相关元件的访问、控制和管理。根才射殳备200的实施 例,内核空间204也包括与高速缓存管理器232协同工作的多个的网络服务或进程, 有时^M尔为^的高速緩存,其益处此处将进一步详细描述。另夕卜,内核230的实施 例#^赖于通过设备200安装、配置或其它方式使用的操怍系统的实施例。
0050在一个实施例中,设备200包括一个网络i^^戋267,例如基于TCP/IP 的》斜戋,用于与客户端102和/或服务器106通信。在一个实施例中,使用网绍J斜戋 267与诸如网络108的第一网络以及第二网络110通信。在一些实施例中,设备200 终止第一传输层连接,例如客户端102的TCP连接,并建立到服务器106的第二传输 层连接,用于由客户端102^^],例如,在设备200和服务器106处终止第二传输层 连接。可通过单独的网络i斜戋267建立第一和第二传输层连接。在其它实施例中,设备200可包括多个网络堆栈,例如267或267,,并且可在一个网络i斜戋267建立或 终止第一传输层连接,在第二网络i斜戈267,可建立或者终止第二传输层连接。例如, 一个网络:t斜戋可用于在第一网络上接)]t^发送网络包,并且另一个网络舉战用于在第 二网络上接收和发送网络包。在一个实施例中,网络^^戋267包括用于排队一个或多 个网络包的緩沖器243,其中网络包由设备200发送。
0051如图2所示,内核空间204包括高速緩存管理器232、高il^2-7集 成包引擎240、加密引擎234、策略引擎236以及多协i5UE缩逻辑238。在内核空间 204或内核模式而不颜户空间202中运行这些部件或进程232、 240、 234、 236和 238提高这些部件中的每个的单独的和结合的性能。内核才斜乍意味着这些部件或进程 232、 240、 234、 236和238在设备200的操怍系统的核地址空间中运行。例如,在 内核模式中运行加密引擎234通过移动加密和解密^f乍到内核来提高加密性能,从而 减少^内核模式中的^f诸空间或内核线程与在用户模式中的存储空间或线程之 间的转换的数量。例如,在内核模式中获得的数据可以不需^^专输或拷贝到运行在 用户才莫式的进禾14^^呈,例如从内核级数提结构到用户级数据结构。在另一个方面, 也可减少内核模式和用户模式之间的上下文切换的数量。另夕卜,在任^^f牛或进程 232、 240、 234、 236和238间的同步和R间的通信在内核空间204中可被更有效 地拟亍。
0052在一些实施例中,部件232、 240、 234、 236和238的任^4卩分可在内 核空间204中运行或才乘作,而这些部件232、 240、 234、 236和238的其它部分可在 用户空间202中运行或才剩乍。在一个实施例中,设备20(HM内核级数据结构来提供 对一个或多个网络包的任一部分的访问,例如,包括来自客户端102的请^il者来自 月l务器106的响应的网络包。在一些实施例中,可以由包引擎240通it^网络i械 267的传输层马区动H4妻口或选虑器获得内核级数据结构。内核级数据结构可包凌诚过 与网络i斜戋267相关的内核空间204可访问的任一接口和/或数据、由网络舉线267 接41il发送的网络业务或包。在其它实施例中,^""^P件或进程232、 240、 234、 236 和238可使用内核级数据结构来#^亍部件或进程的期望的操作。在一个实施例中,当 JM内核级数据结构时,部件232、 240、 234、 236和238在内核模式204中运行, 而在另一个实施例中,当^JD内核级数据结构时,部件232、 240、 234、 236和238 在用户模式中运行。在一些实施例中,内核级数据结构可被拷贝或传输给第二内核级 数据结构,或4^f可期望的用户级凄t据结构。
0053高速緩存管理器232可包括软件、硬件或软件和硬件的任意组合,以提供对任一类型和形式的内容的高速緩存访问、控制和管理,例如对fJl由源服务器
106服务的动态产生的对象。由高速緩存管理器232处理和^H渚的数据、对象或内容 可包括^—格式的数据,例如标记语言,或通过^—协i^t信。在一些实施例中,高 速緩存管理器232复制^i^诸在其它地方的原始数据或先前被计算、产生或发送的数 据,其中相对于读高速緩存^i^诸元件,原始数据可能需要更长的访问时间以便取得、 计算或以别的方式获得。一^Sjt据被^^诸在高速緩存^f诸元件中,将来的4M可通过 访问高速緩存的副本而非再取回或再计算原始数据而实现,因而减少了访问时间。在 一些实施例中,高速缓存^f渚元件nat包^封殳备200的务賭器264中的数据对象。在 其它实施例中,高速緩存^f诸元件可包括具有比^f诸器264更快的存取时间的^(诸 器。在另一个实施例中,高速缓存#^诸元件可以包4射殳备200的任一类型和形式的存 储元件,诸如硬盘的部分。在一些实施例中,处理单元262可提供被高速缓存管理器 232 4錢的高速緩存^^诸器。在又一个实施例中,高速緩存管理器232可<錢##器、 ^[诸设备或处理单元的^~"^#组合来高速缓存数据、对^^其它内容。
0054另外,高速緩存管理器232包括用于i^f亍此处描述的设备200的技术的 任一实施例的^"-逻辑、功能、规则或4剁乍。例如,,高速緩存管理器232包括基于 无效时间周期的终止,或者来自客户端102或服务器106的无效命令的接收,无效对 象的逻辑或功能。在一些实施例中,高速缓存管理器232可作为在内核空间204中执 行的牙踏、月良务、进禾試任务来:^1乍,并JL^其它实施例中在用户空间202中4似亍。 在一个实施例中,高速緩存管理器232的第-"^分在用户空间202内扭行,而第二部 分在内核空间204内扭肝。在一些实施例中,高速H存管理器232可包括任一类型的 通用处理器(GPP),或者任一其它类型的集成电路,例如现场可编程门阵列(FPGA)、 可编程逻辑器件(PLD)或者专用^电路(ASIC)。
0055策略引擎236可包括,例如,智能统计引擎或其它可编程应用。在一个 实施例中,策略引擎236提供西己置机制以允许用户识另iJ、指定、限定或配置高速緩存 策略。在一些实施例中,策略引擎236也访问^f诸器以支持数据结构,例如查^JJl 哈希表,以启用用户选择的高速緩存策略决定。在其它实施例中,策略引擎236可包 括任一逻辑、规则、功能或才刺乍以决定和提供除了对^、网络业务、网络访问、压 缩或其它任一由设备200 ^^亍的功能或才刺乍的访问、控制和管理打卜的对设备200 所高速緩存的对象、数据、或内容的访问、控制和管理。特定高速緩存策略的其它实 施例在此处进一步描述。
0056加密引擎234包括用于控制任一躬,相关协议处理,例如SSL或TLS,或其相关的任一功能的^"^逻辑、商业MJ'j、功能或操怍。例如,加密引擎234加密 并解密通过设备200通信的网络包,或其任一p分。加密引擎234也可4汰客户端 102a-102n、月良务器106a-106n或设备200来安絲建立SSL或TLS连接。同样的, 加密引擎234提供SSL处理的卸载和加速。在一个实施例中,加密引擎234偵月l5^ii 协i^^提供M户端102a-102n和服务器106a-106n间的虚拟专用网络。在一些实施 例中,加密引擎234与加密处理器260通信。在其它实施例中,加密引擎234包^拔 行在加密处理器260上的可l^f亍指令。
0057多协议压缩引擎238包括用于压缩一个或多个网络包协议(例》4皮设备 200的网绍3斜戋267使用的^^协议)的任一逻辑、商业類U'J、功能或才喿作。在一个 实施例中,多协议压缩引擎238双向压缩^J:户端102a-102n和服务器106a-106n 间任一基于TCP/IP的协议,包括消息应用编程接口 (MAPI)(电子邮件email )、文 件传丰針办议(FTP)、超文本传專針办议(HTTP)、通用Internet文件系统(CIFS)协议
(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP )、无纟驗用协议(WAP )、 移动IP协议以及IP上il^ (VoIP)协议。在其它实施例中,多协"RA缩引擎238 提供基于超文^#记语言(HTML)的协议的压缩,并且在一些实施例中,提^^i-"标 记语言的压缩,例如可扩展标记语言(XML)。在一个实施例中,多协i50i缩引擎238 提^^壬一高性能协议的压缩,例如为设备200设计的用于设备200通信的^""协议。 在另一个实施例中,多协^Ci缩引擎238 ^^]修改的传输控制协议(例如事务TCP
(T/TCP)、带有选择确认的TCP (TCP-SACK )、带有大窗口的TCP (TCP-LW)、例如
载荷或^-~通信。
0058同样的,多协议压缩引擎238通过桌面客户端,例如Micosoft Outlook 和非web瘦客户端,诸如由通用企业应用像Oracle、 SAP和Siebel启动的^f可客户 端,甚至移动客户端,例如便携式个人计算机,徊口賴户访问应用的^^亍。在一些 实施例中,多协i^缩引擎238通it^内核模式204内部^^亍并与访问网络i斜戋267 的包处理引擎240 ^,可以压缩TCP/IP协议承载的^^可协议,例如应用层协议。
0059高it^ 2-7 ^包引擎240,通常^#为包处理引擎,或包引擎,通过 网络端口 266负责设备200接收和发送的包的内核m理的管理。高i4^ 2-7 ^包 引擎240可包括在处理期间用于排队一个或多个网络包的緩冲器,例如用于网络包的 接4b戈者网络包的发送。另夕卜,高i4^2-7城包引擎240通过网络端口 266与一个 或多个网络i斜戋267通信以发出和接收网络包。高絲2-7 包引擎240与加密引擎234、高速缓存管理器232、策略引擎236和多协^Oi缩逻辑238协同工作。更具 体地,配i^。密引擎234以执行包的SSL处理,配置策略引擎236以执行涉及业## 理的功能,例々"青求级内容切换以及请求级高速緩存重定向,并配置多协议压缩逻辑 238以扭軒涉及数据压缩和解压缩的功能。
0060集成高速层2-7的包引擎240包括包处理定时器242。在一个实施例中, 包处理定时器242提供一个或多个时间间隔以触发输入的(即接^4者输出(即发 送))网络包的处理。在一些实施例中,高速层2-7集成包引擎240响应于定时器242 处理网络包。包处理定时器242向包引擎240提^f壬一类型和形式的信号以通知、触 发或通信与时间相关的事件、间隔或发生。在许多实施例中,包处理定时器242以毫 秒级4喿怍,例如100ms、 50ms、或25ms。例如,在一些实施例中,包处理定时器242 提供时间间隔或者其它方式导致高i4yg 2-7 ^的包引擎240以10ms时间间隔处理 网络包,而在其它实施例中,以5ms时间间隔,并iL^进一步的实施例中,M^iJ 3、 2或lms时间间隔。高速层2-7集成包引擎240在操作期间可与加密引擎234、高速 緩存管理器B2、策略引擎236以及多协议压缩引擎238对接、M或通信。同样的, 响应于包处理定时器242和/或包引擎240,可^/f亍加密引擎234、高速緩存管理器 232、策略引擎236以及多协i滅缩逻辑238的任一逻辑、功能或4剁乍。因此,在由 包处理定时器242提供时间间隔的粒度(例如少于或等于10ms的时间间隔), 可4W亍加密引擎234、高速緩存管理器232、策略引擎236以及多协iiUi缩逻辑238 的任一逻辑、功能或操作。例如,在一个实施例中,响应于高iW 2-7 M包引擎 240和/或包处理定时器242,高速緩存管理器232可^frf壬一所高速緩存的对象的无 效。在另一个实施例中,高速緩存的对象的终止或无效时间被设定为与包处理定时器 242的时间间P鬲相同的斗立度乡及,例如每10ms。
0061与内核空间204形^于比,用户空间202是操作系统的务賭区域或部分, 被用户模式应用或在用户才莫式中以其它方i^行的禾l^所使用。用户4莫式应用不能直 接访问内核空间204并且为了访问内核服务而^il]服务调用。如图2所示,设备200 的用户空间202包括图形用户界面(GUI )210、命令行接口 (CLI )212、壳服务(shell service) 214、 it^监控禾踏216以及守护(daemon)月良务218。 GUI 210和CLI 212 提^"-种方法,通过该方法系统管理员或其它用户可与设备200的操作相互作用并控 制该设备200的操怍,例如通过设备200的操作系统,并iUl者是用户空间202或者 内核空间204。 GUI 210可为^—类型和形式的图形用户界面,并且可通it^本、图 形或由^HI型的程序或应用的其它方式(例如浏览器)来呈现。CLI 212可为^—类型和形式的命令行或基于文本的接口,例如通过才斜乍系Mi^供的命令行。例如,CLI 212可包括壳(shell),该壳是使得用户能够与操作系统相互作用的工具。在一些 实施例中,可通过bash、 csh、 tcsh或者ksh类型的壳提供CLI 212。壳服务214包 4封呈序、服务、任务、进禾1^可4似亍指令以支持由用户通过GUI 210和/或CLI 212 与"i殳备200或者才喿怍系统的交互。
0062^^Hjit监控禾踏216来监控、检查、报告并确保网络系乡組常J被行 以^J ]户iLit过网^4妄^R/斤请求的内容。1ft^监控程序216包括一个或多个禾誘、服 务、任务、进禾試可#^亍指令,为监控设备200的^"-行为来提供逻辑、规则、功能 或操作。在一些实施例中,健康监控程序216拦截并检查通过设备200传递的任一网 络业务。在其它实施例中,健康监控程序216通过^"-合适的方法和/或机制与一个 或多个下述设备对接加密引擎234、高速緩存管理器232、策略引擎236、多协议 压缩逻辑238、包引擎240、守护服务218以及壳服务214。同样的,i^^监4封踏 216可调用^~"应用编程接口 (API)以确定设备200的任"卩分的状态、情况或健 康。例如,#^监控程序216可基于周期'l"生地查验或发送状态查询以检i^l序、进程、 月良务或任务是否彬敫活并当前jE^行。在另一个例子中,1ft^监控程序216可检 查由^""^呈序、进程、月l务或任务提供的任一状态、4射吴或历史日志以确定设备200 任"^卩分的^-"^f牛、情;XiUti吴。
0063守护服务218是连续的或在后台中运行的程序,并M理由设备200 接收的周期性服务请求。在一些实施例中,守护服务向其它禾踏或进程转发请求,例 如向合适的另一个守护服务218。如本领域技术人员所V/^口的,守护服务218可M 监护的运行,以扭軒连续的或周期性的系统范围功能,例如网络控制,或者"^f刊— 期望的任务。在一些实施例中, 一个或多个守护服务218运行在用户空间202中,而 在其它实施例中, 一个或多个守护服务218运行在内核空间。
0064现在参见图2B,描述了设备200的另一个实施例。总的来i兌,设备200 提供以下服务、功能或者操作的一个或者多个用于一个或者多个客户端102和一个 或者多个服务器106之间的通信的SSLVPN连接280、转换/负载平衡284、 ii^月良务 解析286、力口速288和应用防火墙290。在一个实施例中,设备200包括由Florida, Ft. Lauderdale的Citrix Systems Inc.制造的任一网络装置,称为CUrix NetScaler 装置。月良务器106的^""个可以提^-"个或者多个网络相关服务270a-270n (称为服 务270 )。例如,月良务器106可以提供http服务270。设备200包括一个或者多个虛 拟服务器或者虚拟互联网协议服务器,称为vServer、 VIP服务器或者仅是VIP275a-275n (此处^#为vServer 275 )。 vServer275根才射殳备200的配置和才刺乍来接 收、^^或者以其它方式处JH:户端102和服务器106之间的通信。
0065vServer 275可以包括软件、硬件或者软件和硬件的4—组合。vServer 275包括在设备200中的用户模式202、内核模式204或者其<—组合中运行的1^-~ 类型和形式的禾辨、服务、任务、进禾試者可冲W亍指令。vServer 275包括^fr^逻辑、 功能、失见则或者才喿怍,以扭軒此处所述技术的任一实施例,诸如SSLVPN280、转换 /负载平衡284、 ii^服务解析286、加速288和应用防火墙290。在一些实施例中, vServer 275建立到服务器106的服务270的连接。服务275可以包括能够连接到设 备200、客户端102或者vServer 275并与^it信的^-^呈序、应用、进程、任务或 者可才;W亍指令集。例如,服务275可以包括web服务器、http服务器、ftp、电子邮 件或者数据库服务器。在一些实施例中,服务270是守护进程或者网络驱动器,用于 监听、接收和/或发送用于应用的通信,诸如电子邮件、数据库或者企业应用。在一 些实施例中,服务270可以在特定的IP;4iit、或者IP地址和端口上通信。
0066在一些实施例中,vServer 275应用策略引擎236的一个或者多个策略 到客户端102和服务器106之间的网络通信。在一个实施例中,该策略与vServer 275相关。在另一个实施例中,该策略基于用户或者用户组。在又一个实施例中,策 略为通用的并且应用到一个或者多个vServer 275a-275n和通过设备100通信的任一
用户或者用户组。在一些实施例中,策略引擎的策5^有基于通信的^""内容应用该
策略的条件,通信的内容诸如互联网协说t也址、端口、协议类型、包中的首部或者域、 或者通信的上下文,诸如用户、用户组、vServer 275、传输层连接、和/或客户端102 或者服务器106的标识或者属性。
0067在其它实施例中,设备200和策略引擎236通信或者对接,以确定远程 用户或者远禾1^户端102访问计算环境15、应用、和/或来自服务器106的数据文件 的-^iiE^口/或授权。在另一个实施例中,设备200和策略引擎236通信或者对接,以 确定远程用户或者远禾錄户端102的验i財口/或授一X^使得应用传送系统190传送一 个或者多个计算环境15、应用、和/或数据文件。在又一个实施例中,设备200基于 对远程用户或者远禾1^户端102的策略弓1擎236的验i財口/或授;K^建立VPN或者SSL VPN连接。在一个实施例中,设备200基于策略引擎236的策略来控制网络业务和通 信会话的流。例如,设备200可以基于策略引擎236来控制对计算环境15、应用或 者数据文件的访问。
0068在一些实施例中,vServer 275与客户端102经客户端代理120建立传输层连接,诸如TCP或者UDP连接。在一个实施例中,vServer 275监听和接收来自 客户端102的通信。在其它实施例中,vServer 275与客户端服务器106建立传输层 连接,诸如TCP或者UDP连接。在一个实施例中,vServer 275建立到运行在服务器 106上的服务器270的互联网协^i4iit和端口的传输层连接。在另一个实施例中, vServer 275将到客户端102的第一传输层连接与到服务器106的第二传输层连接相 关联。在一些实施例中,vServer 275建立到服务器106的传输层连接池并iU至由池 化的传输层连接多路^客户端请求。
0069在一些实施例中,设备200提供客户端102和服务器106之间的SSL VPN 连接280。例如,第一网络104上的客户端102请求建立到第二网络104,上的服务器 106的连接。在一些实施例中,第二网络104,是不能从第一网络104路由的。在其它 实施例中,客户端102位于公用网络104上,并iU良务器106位于专用网络104,上, 例如企业网。在一个实施例中,客户端^J里120才誠第一网络104上的客户端102 的通信,加密该通信,并iU至第一传输层连接发送该通信到设备200。设备200将第 一网络104上的第一传输层连接与到第二网络104,上的服务器106的第二传输层连 接相关联。设备200接收来自客户端102的所拦截的通信,加密该通信,并且经第二 传输层连接发送该通信到第二网络104,上的月良务器106。第二传输层连接可以是^4匕 的传输层连接。同样的,设备200提供用于两个网络104、 104,之间的客户端102的 端到端^^专豸叙层连《1妻。
0070在一个实施例中,设备200寄载虚拟专用网络104上的客户端102的内 部网内部网协议或者intranetIP 282地址。客户端102具有本地网络识别符,诸如互 联网协议(IP)地i財口/或第一网络104上的主一;U称。当经设备200连接到第二网 络104',对于第二网络104,上的客户端102,设备200建立、分配或者以其它方式提 供IntranetIP,其是网络识别符,诸如IP地址和/或主机名称。设备200在第二或者 专用网络104,上监听和接收^^]客户端建立的IntranetIP 282的指向客户端102的任 一通信。在一个实施例中,设备200用作或者^4第二专用网络104上的客户端102。 例如,在另一个实施例中,vServer 275监听和响应到客户端102的IntranetIP 282 的通信。在一些实施例中,如果第二网络104,上的计算装置100发送请求,设备200 如同客户端102 —样来处理该^青求。例如,设备200可以响应对客户端IntranetIP 282 的查验。在另一个实施例中,设备可以与第二网络104,上请求与客户端IntranetIP 282 的连接的计算装置100建立连接,诸如TCP或者UDP连接。
0071在一些实施例中,设备200提供一个或者多个以下力口速技术288以#户端102和服务器106之间通信l)压缩;2 )解压缩;3 )传输控制协议池;4)传 输控制协议多路复用;5)传输控制协议緩沖;和6)高速緩存。
0072在一个实施例中,设备200通过开启与^"-服务器106的一个或者多个 传输层连接并且维持这些连接以允许由客户端经因特网的重复数据访问,来为月良务器 106緩解由重复开启和关闭到客户端102的传输层连接所带来的许多处理负载。该技 tt此处被称为"连接餘"。
0073在一些实施例中,为了无缝拼接/A^户端102经〉'W匕的传输层连接到服 务器106的通信,设备200通#传输层协议级修改序列号和确认号来翻译或多路复 用通信。这被称为"连接多路复用"。在一些实施例中,不需要应用层协议交互。例 如,在W占包(即,乂A^户端102接收的包)的例子中,包的源网络;l^il:被改变到设 备200的输出端口的地址,并且目的网络地址被改变到指定的服务器的地址。在出站 包(即,AJI良务器106接收的包)的例子中,源网络:feiibyj良务器106的地ib故改变 为设备200的输出端口的地址,并且目的地AU人设备200的地址被改变到请求客户端 102的地址。包的序列号和确认号^^皮翻译为到客户端102的设备200的传输层连接 上的客户端102所期待的序列号和确认。在一些实施例中,传输层协议的包校-3^4皮 重新计算以说明这些翻译。
0074在另一个实施例中,设备200提供转换或者负载平衡功能284用于客户 端102和服务器106之间的通信。在一些实施例中,基于层4或者应用层请求凄封居, 设备200分发业絲且将客户端请求指向服务器106。在一个实施例中,尽管网络层 或者网络包的层2标识目的服务器106,但设备200确^J艮务器106来分发由应用信 息和数据承载的作为传输层包的有效载荷的网络包。在一个实施例中,设备200
的健康监控程序216监4创良务器的健康来确定分发客户端请求用于哪个服务器106。 在一些实施例中,如果设备200探测到服务器106不可用或者具有超过预定阈值的负 载,设备200可以将客户端请求指向或者分发到另一个服务器106。
0075在一些实施例中,设备200用作域名服务(DNS)解析器或者以其它方 式提供来自客户端102的DNS请求的解析。在一些实施例中,设备拦截由客户端102 发送的DNS请求。在一个实施例中,设备200以设备200所寄载的IP地扯或其IP 地址来响应客户端的DNS请求。在此实施例中,客户端102发送用于iW的网络通信 到设备200。在另一个实施例中,设备200以第二设备200,所寄载的IP地》止或其IP 地址来响应客户端的DNS请求。在一些实施例中,设备200使用由设备200确定的服 务器106的IP地址来响应客户端的DNS请求。0076在又一个实施例中,设备200提供用于客户端102和服务器106之间通 信的应用防火墙功能290。在一个实施例中,策略引擎236提供用于探测和阻断非法 请求的规则。在一些实施例中,应用防火墙2卯保护避免拒^^良务(DoS)攻击。在 其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一 些实施例中,规则/策略引擎236包括一个或者多个应用防火墙或者^^控制策略, 用于提^f呆护,避免不同类或者类型的基于web或者因特网攻击,诸如以下一个或者 多个l)緩沖溢出,2 ) CGI-BIN #|史才彰从,3)表格/隐藏域才彰从,4 )强制浏览,5) cookie或者^i舌定位,6)中断的访问控制列表(ACL)或者弱的口令,7 )跨站脚本 (XSS), 8)命令注入,9)SQL注入,10) 4射^l虫发敏感信息泄漏,ll)密码学的不 ^f顿,12)服务器误配置,13)后门^i周^Ci4项,14)web站点毁损,15)平台 或者4刺乍系统攻击,和16)零天攻击。在实施例中,应用防火墙290以检查或者分 析用于以下一个或者多个的网络通信的形式来提供HTML格式域保护1)返回所需 要的域,2 )不增加允许的域,3 )只读和隐藏ii^y亍,4 )下拉列表和单选4斜Si或一 致,5)表域最大长度施行。在一些实施例中,应用防火墙290确保没有》务改cookie。 在其它实施例中,应用防火墙290通过执行合法URL来保护避免强迫浏览。
0077仍在又一些实施例中,应用防火墙290保护包括在网络通信中的任一机 密信息。应用防火墙290可以根据引擎236的规则或者策略^^企查或者分析任一网络 通信,以识别网络包的^-"域中的任一机密信息。在一些实施例中,应用防火墙290 识别网路通信中的信用卡号、口令、社会^号码、名称、患者号码、接触信息和年 龄的一个或者多个的出现。网络通信的编石解p分可以包4链些出现或者机密信息。基 于这些出现,在一个实施例中,应用防火墙290可以采取作用于网络通信上的策略, 诸如阻止发送网络通信。在另一个实施例中,应用防火墙290可以重写、移动或者以 其它方式掩蔽该所识别出的出iM者机密信息。
C、客户端4々里
0078J脉看图3,描i^:户端代理120的实施例。客户端102包括客户端代 理120,用于经网络104与设备200和/或服务器106来建立和交换通信。总的来说, 客户端102在计算装置100上操作,该计算装置100拥有带有内核模式302以^J ]户 模式303,以及带有一个或多个层310a-310b的网络i斜戋310的操作系统。客户端102 可以已经安装和/或扭行一个或多个应用。在一些实施例中, 一个或多个应用可通过 网络i斜戈310与网络104通信。诸如web浏览器的应用之一也可包括第-^踏322。例如,可在一些实施例中^^]第一禾1^ 322来安^/或^e客户端^J里120,或其 中^"~^分。客户端代理120包括冲^i几制或者^誠器350,用于^^经由网络J械 310来自 一个或者多个应用的网络通信。
0079客户端102的网络堆栈310可包括4壬一类型和形式的4欠件、或硬件或其 组合,用于提供与网络的连接和通信。在一个实施例中,网络i斜戋310包括用于网络 协i^且的软件实现。网络堆栈310可包括一个或多个网络层,例如为本领域技术人员 所公iA^了解的开放式系统互联(OSI)通信模型的任一网络层。同样的,网络i斜戋 310可包4射P类型和形式的协议,这些协议用于OSI模型的任一以下层1)物理 彬各层,2)数才繊各层,3)网络层,4)传输层,5)絲层,6)表示层,以及7) 应用层。在一个实施例中,网络舉战310可包括在互联网协议(IP)的网络层协"RJi 的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在Ethernet协i^Ji 承载TCP/IP协议,Ethernet协议可包括IEEE广域网(WAN)或局域网(LAN)协il 的^"-族,例^4皮IEEE 802. 3覆盖的那些协议。在一些实施例中,网络堆栈310包 4封壬一类型和形式的无线i"办议,例如IEEE 802. 11和/或移动互联网协议。
0080考虑基于TCP/IP的网络,可^^Hi^基于TCP/IP的协议,包括消息应 用编程接口 (MAPI)(电子邮件)、文件传!針办议(FTP)、超文本传丰針办议(HTTP)、 通用因特网文件系统(CIFS)协议(文件传输)、独立计勒匡架(ICA)协议、远程桌 面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP语音(VoIP)协议。在 另一个实施例中,网络i斜戋310包括任一类型和形式的传输控制协议,诸如修 文的传 输控制协议,例如事务TCP (T/TCP),带有选择确认的TCP (TCP-SACK),带有大窗口 的TCP (TCP-LW),拥塞预测协议,例如TCP-Vegas协议,以及TCP欺骗协议。在其 它实施例中,任一类型和形式的用户数据报协议(UDP),例如IP上UDP,可被网络 ^4戋31(H^i,诸如用于语^it信或实时数据通信。
0081另外,网络i斜戋310可包括支持一个或多个层的一个或多个网络驱动器, 例如TCP驱动器或网络层驱动器。网络驱动器可被包括作为计算装置100的才喿怍系统 的一卩分或者作为计算装置100的任一网络接口卡或其它网络访问部件的一部分。在 一些实施例中,网络i斜戋310的^"-网络驱动器可^t制、修改或调整以提供网络堆 栈310的定制或修改部分,用来支持此处描述的4—技术。在其它实施例中,设计并 构建加速程序120以与网络i斜戋310协同操作或工作,上述网络i斜戋310由客户端 102的^喿作系统安装或以其它方式^是供。
0082网络i斜戋310包括任一类型和形式的接口,用于接收、获得、提供或以其它方式访问涉^^户端102的网络通信的^"^f言息和数據。在一个实施例中,网络
堆栈310的接口包括应用编程接口 (API )。接口也可包括任一函数调用、钩子或过滤 机制、事件或回调机制、或^^类型的接口技术。网络i斜戋310通过接口可接)]线提 类型和形式的数据结构,例如对象,涉^J'j网络i械310的功能f线才剁乍。例 如,数据结构可包括涉及到网络包或一个或多个网络包的信息和数据。在一些实施例 中,数据结构包括在网络i斜戋310的协"R^处理的网络包的-"^分,例如传输层的网 络包。在一些实施例中,数据结构325包括内核I5J'J数据结构,而在其它实施例中, 数据结构325包括用户模式数据结构。内核飽'J数据结构可包括在内核模式302中操 作的网络舉民310的部分获得的或涉及的数据结构,或者运行在内核模式302中的网 络驱动器或其它软件,或者通##^系统的内核模式中运行或才剁乍的服务、进程、
任务、纟a試其它可^y亍指令获得或接收的任一数据结构。
0083jtb^卜,网络i斜戋310的一些部分可在内核才莫式302中4Mf或^f乍,例如, 数才射鈔各或网络层,而其它部分在用户模式303中扭軒或操怍,例如网络i斜戋310 的应用层。例如,网络i斜戈的第一部分310a可为应用提供对网络i斜戋310的用户模 式的访问,而网绍J斜戋310的第二部分310b提供对网络的访问。在一些实施例中, 网络;t斜戋的第"p分31 Oa可包括网络i斜戋310的一个或多个^Ji层,例如层5-7的 任意层。在其它实施例中,网络i斜戋310的第二部分310b包括一个或多个较低的层, 例如层1-4的任意层。网络i斜戋310第一部分310a和第二部分310b的每个可包括 网绍Jlia 310的任一部分,在任一一个或多个网络层,在用户模式303、内核模式302, 或其组合,或在网络层的任一部分或者指向网络层的接口点,或指向用户模式303 和内核模式302的接口点或者其^~-#分。
0084拦截器350可以包括软件、硬件、或者软件和硬件的任一组合。在一个 实施例中,拦截器350在网络i料戋310的任一点拦截网络通信,并且重定向或者发送 网络通信到拦截器350或者客户端代理120期望的、管理的或者控制的目的地。例如, 4誠器350可以拦截第一网络的网络i斜戋310的网络通信并JX送该网络通信到设备 200,用于在第二网络104,J^送。在一些实施例中,冲誠器350包括含有诸3—皮构 建禾^i殳计来与网络ili4戋310连接并一同工作的网络驱动器的马区动器的任一类型的拦 截器350。在一些实施例中,客户端代理120和/或拦截器350操作在网络堆栈310 的一个或者多个层,诸如在传输层。在一个实施例中,拉截器350包括滤波器驱动器、 钩子机制、或者对接到网络i斜戋的传输层的任一形式和类型的合适网络驱动^t妄口 , 诸如通过传输驱动##口 (TDI)。在一些实施例中,冲誠器350对接到诸如传输层的第一协议层和诸如传输协议层之上的任一层的另一个协议层,例如,应用协
议层。在一个实施例中,拦截器350可以包4M守网络驱动器接口规范(NDIS)的驱 动器,或者NDIS驱动器。在另一个实施例中,拄截器350可以包括微型滤波器或者 迷你端口驱动器。在一个实施例中,^^器350或其部分在内核模式302中4剁乍。在 另一个实施例中,4 器350或其部分在用户才莫式303中##。在一些实施例中,拦 截器350的-"^分在内核模式302中操作,而拦截器350的另-~^分在用户模式303 中^f卡。在其它实施例中,客户端^S 120在用户模式203中才剁乍,^it过4^l器 350对接到内核模式驱动器、进程、月良务、任务或者才剩乍系统的部分,诸如以获取内 核级数据结构325。在其它实施例中,拦截器350为用户模式应用或者程序,诸如应 用。
0085在一个实施例中,拦截器350才誠任意的传输层连接请求。在这些实施 例中,^^器350 ^^亍传输层应用编程接口 (API)调用以设置目的信息,诸如到期 望位置的目的IP地扯和/或端口用于定位。在此方式中,拦截器350 4誠并且重定向 传输层连接到由拦截器350或者客户端代理120控制或者管理的IP地址和端口 。在 一个实施例中,4誠器350设置目的信息,用于到客户端^J里120正监听的客户端 102的本地IP地扯和端口的连接。例如,客户端代理120可以包括为重定向的传输 层通信监听本地IP地址和端口的代J划l务。在一些实施例中,客户端^J里120Pil^ 将重定向的传输层通信传输到设备200。
0086在一些实施例中,^誠器35(U誠^^服务(DNS)请求。在一个实施 例中,客户端代理120和/或4誠器350解析DNS请求。在另一个实施例中,4誠器 发i^射誠的DNS请求到设备200用于DNS解析。在一个实施例中,设备200解析 DNS请求并且将DNS响应通信到客户端^J里120。在一些实施例中,设备200经另一 ^H殳备2QQ,或者DNS服务器106来解析DNS请求。
0087在又一个实施例中,客户端代理可以包括两个代理UO和l20,。 在一个实施例中,第一代理120可以包括在网络舉民310的网络层操作的拦截器350。 在一些实施例中,第一代理120 4誠诸如因特网控制消息协议(ICMP)请求(例如, 查马封口3M宗路由)的网络层请求。在其它实施例中,第二代理120,可以在传输层操 作并iU誠传输层通信。在一些实施例中,第一代理120在网络i斜戋310的一层41^ 通信并且与第二^J里120,对接或者将所^^的通信传输到第二代理120,。
议层透明的方式在一协^^操作或与b于接。例如,在一个实施例中,拦截器350可以以对诸如网络层的传输层之下的^-"协i^^i者如^i舌、表示和应用层协议的传
输层之上的^^协议层透明的方式在网络i斜戋310的传输层操怍或与之对接。这允许 网络舉戌310的其它协议层如所期望的揭作并无需修改以用于拦截器350。同样的, 客户端^J里120和/或^^器350可以与传输层对接以^、优化、力口速、路由或者 负载平衡经由传输层承载的^"-协议提供的^-"通信,诸如TCP/IP上的fr-"应用层 协议。
0089此外,客户端代理120和/或拦截器可以以对^"-应用、客户端102的 用户和与客户端102通信的诸如服务器的任一其它计算装置透明的方式在网络i斜戋 310上4^f乍或与^^N妄。客户端代應120和/或拦截器350可以以无需修7丈应用的方 式被安装和/iU^f亍^^户端102上。在一些实施例中,客户端102的用户或者与客 户端102通信的计算装置未意识到客户端代理120和/或担碱器350的存在、扭行或 者操作。同样的,在一些实施例中,客户端代理120和/或拦截器350以对应用、客 户端102的用户、诸如服务器的另一个计算装置、或者由拦截器350对接到的协i^ 之上和/或之下的任一协i^透明的方式被安装、执行、和/或操作。
0090客户端代理120包括加速程序302、流客户端306和/或收集代理304。 在一个实施例中,客户端代理120包括由Florida,Fort Lauderdale的Citrix Systems Inc.开发的独立计算架构(ICA)客户端或其部分,并且也指ICA客户端。在 一些实施例中,客户端代理120包括应用流客户端306,用于从服务器106流 式传输应用到客户端102。在一些实施例中,客户端代理120包括加速程序 302,用于加速客户端102和服务器106之间的通信。在另一个实施例中,客 户端代理120包括收集代理304,用于执行端点检测/扫描并且收集用于设备 200和/或服务器106的端点信息。
0091在一些实施例中,力口速禾踏302包括客户端侧加速详辨,用于^l^亍一 个或多个加速技术以力口速、增强或以其它方法改i^户端与服务器106的通信和/或 对服务器106的访问,例^i方问月良务器106提供的应用。加速禾誘302的可^(^亍指令 的逻辑、功能和/或操作可以才;M亍一个或多个以下的加速技术l)多协议压缩,2) 传输控制协议^4匕,3)传输控制协议多路复用,4)传输控制协议緩冲,以及5)通 过高速緩存管理器的高速緩冲。另夕卜,力口速禾踏302可4Mf由客户端102接收和/或 发送的^-~通信的加密和/或解密。在一些实施例中,加速程字302以^的方式或 者格式^f亍一个或者多个加速技术。另夕卜,加速禾辨302可以在传输层协议的网路包 的有效载荷承载的^""协议或者多协iiCU;^亍压缩。流客户端306包括用于接收和执行从服务器106所流式传输的应用的应用、程序、进程、服务、任务或
者可执行指令。服务器106可以流式传输一个或者多个应用数据文件到流客 户端306,用于播;故、执行或者以其它方式引起客户端102上的应用被#1行。 在一些实施例中,服务器106发送一组压缩或者打包的应用数据文件到流客 户端306。在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案 文件中,例如CAB、 ZIP、 SIT、 TAR、 JAR或其它档案文件。在一个实施例中, 服务器106解压缩、解包或者解档应用文件并且将该文件发送到客户端102。 在另一个实施例中,客户端102解压缩、解包或者解档应用文件。流客户端 306动态安装应用或其部分,并且执行该应用。在一个实施例中,流客户端 306可以为可执行程序。在一些实施例中,流客户端306可以能够启动另一个 可执4于程序。
0092收集代理304包括应用、程序、进程、服务、任务或者可执行 指令,用于识别、获取和/或收集关于客户端102的信息。在一些实施例中, 设备200发送收集代理304到客户端102或者客户端代理120。收集代理304 可以根据设备的策略引擎236的一个或者多个策略被配置。在其它实施例中, 收集代理304发送在客户端102上所收集的信息到设备200。在一个实施例中, 设备20Q的策略引擎236使用所收集的信息来确定和提供客户端到网络104 的连接的访问、验证和授权控制。
0093在一个实施例中,收集代理304包括端点检测和扫描机制,其 识别并且确定客户端的一个或者多个属性或者特征。例如,收集代理304可 以识别和确定以下任意一个或者多个客户端侧属性1)操作系统和/或操作 系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5) 文件。收集代理304也可以识别和确定客户端上以下任意一个或者多个的存 在或者版本1)防病毒软件,2)个人防火墙软件,3)防蠕虫软件,和4) 互联网安全软件。策略引擎236可以具有基于客户端或者客户端侧属性的任 意一个或者多个属性或者特征的一个或者多个策略。
0094在一些实施例中,仍旧参见图3,第一程序3"可以被用于自动 地、静默地、透明地或者以其它方式安装和/或执行客户端代理120或其部分, 诸如拦截器350。在一个实施例中,第一程序322包括插件,例如ActiveX控件或 Java控件或脚本,其加载到应用并由应用执行。例如,第一禾聘包4封皮web浏览器 应用裁^^和运行的ActiveX控件,例如在务賭器空间或应用的上下文中。在另一个实施例中,第一程序322包括可l^f亍指令组,该可#^亍指4^且被例如浏览器的应用^ 并#似亍。在一个实施例中,第"-#踏322包4封皮设计和构造的程序以安絲户端^J里 120。在一些实施例中,第-^辨322通过网络从另一个计算装置获得、下载、或接 |1^户端代理120。在另一个实施例中,第-^踏322 ^于#户端102的才刻乍系 统上安装例如网络驱动器的程序的安装程序或即插即用管理器。
0095SL^参见图4,示出用于^j ]在虚拟专用网络环境中^f乍的客户端代理 120来拦截HTTP通信的方法的实施例。总的来i兌,该方法包括在网络层由^1户端
修改该HTTP请求(步骤403 );并且经由传输层连接发i^斤修 文的HTTP请求到网络 设备200 (步骤405 )。
0096仍旧参见图4,更详细地,由#户端上#^亍的客户端代理120在 网络层^^来自^户端上IW亍的应用的HTTP请求(步骤401 )。该4誠可以由^-" 装置#^亍,包括但不限于此处讨论的TDI驱动器的使用。尽管所示实施例中拦41^ 在网络层,但是在^^也实施例中,4議可以发生在^i舌层或者传输层。应用可以包括 使用HTTP协议的^—应用,包括但不限于web浏览器和web应用。
0097在一些实施例中,可以对于用户、应用或者二者透明执行拦截。 在一些实施例中,可以对于发生拦截的层的之上或者之下的网络堆栈的一个 或者多个层透明地执行该拦截。
0098客户端代理在网络层拦截来自扭行^:户端上的应用的HTTP请求(步 骤401)之后,客户端代理可以修改HTTP请求(步骤403 )。
0099在一些实施例中,客户端^Jlit过增加、移除、或者修改包括在HTTP 请求中的cookie来修改HTTP请求。客户端代理可以增加、移除或者修改cookie以 ^(/f沐此处讨论的客户端代J對目关联的任一功能。
0100在一个实施例中,如此处所述,客户端代理可以增加包括将被 发送到VPNi殳备200的'验i正i正书的HTTP cookie。
0101在另一个实施例中,客户端代理可以增加包括高速緩存信息的HTTP cookie。例如,客户端代理可以增加包括客户端代理已经存储的所请求资源的之前版 本的信息的HTTP cookie。由于具有之前^[诸的版本,接4t;斤插入的cookie的网络 设备可以随后<嫂送发生改变的所请求资源的那部分。在图7开始讨论可以利用该技 术的高速緩存的一个M方法。
0102在一些实施例中,客户端代理120可以通过增加、移除或者修改包括在HTTP请求中的名称-值对来修改HTTP请求。这些名称-值对可以结 合客户端代理执行的任一功能来被修改,包括加速、池、高速緩存和安全性。 在一个实施例中,客户端代理可以(修改)HTTP首部中的名称-值对。
0103例如,客户端代理可以修改、增加或者移除跟随"连接"HTTP 消息首部的值,以指示客户端代理希望保持HTTP连接打开而不是关闭。这可 以通过插入"保持-活动,,值、或者移除"关闭"值来实现。
0104或者例如,客户端代理可以修改、增加或者移除跟随"来源页 面"(referrer) HTTP消息首部的值用于安全目的。通过移除"来源页面"变 量可以将操作者能够获取的关于客户端浏览历史的站点信息最小化。
0105或者例如,客户端代理可以》务改、增加或者移除跟随"授权"HTTP 消息首部的值。客户端代理可以代表客户端插入或者移除安全证书以提供对 资源的安全访问。
0106或者例如,客户端代理可以修改、增加或者移除跟随"高速緩存 -控制"的值。这可以被用来支持或者增强此处所述的任一高速緩存特征。
0107在一些实施例中,根据此处所述的任一功能,客户端代理可以增加、 移除或者修改HTTP请求指定的URL中的名称-值对。仍在其它实施例中,客户 端代理可以重写所请求的URL自身。
0108在一些实施例中,客户端代理可以基于HTTP首部指定的URL来进一步 确定路由决策。例如,如^户端正请》力寸应于和给定应用服务器相关联的文件的 URL,客户端代理可以直接路由客户端请求到应用月良务器。
0109修改HTTP请求(步骤403 )之后,客户端代理可以经由传输层 连接发送所修改的HTTP请求到网络设备200 (步骤405 )。该发送可以经由任 一传输层协议发生。在一个实施例中,可以经由SSL连接发送HTTP请求到网 络设备200。客户端代理可以在传输HTTP请求时执行此处所述的任一功能, 包括加速和压缩。
0110客户端代理也可以使用包括在所拦截的包中的HTTP信息来提供 或者增强此处所述的任一客户端代理功能。
0111例如,客户端代理可以使用HTTP信息M效路由客户端请求。客户端 代理可以建立到提供高速緩存功能的多^S殳备200的连接。客户端代理P話可以^^ 包括对于给定UR1的请求的包,并且确定该URL已经经由给定设备由客户端之前请求 过。客户端代理可以Fte发送包括HTTP请求的包到给定设备,使得设备高速緩存的^-对象可以被利用在响应中。
0112或者例如,客户端代理可以使用HTTP信息来确定请求是否应该 在所建立的SSL/VPN隧道上发送。在一个实施例中,客户端代理可以拦截包 括HTTP请求的一个或者多个包,并且检查包括在请求中的URL。客户端代理 可以随后基于URL中指定的域名来确定是否经由所建立的SSL/VPN隧道发送 包或者经由其它连接发送包。例如,公司可以配置客户端代理策略以使在职 员计算机上执行的客户端代理经由与公司操作的设备所建立的SSL/VPN连接 发送对于指定公司域名的URL的任一请求。
0113现在参见图5,示出使用客户端代理来启用来自客户端的非HTTP 通信中的HTTP cookie验证的方法的实施例。总的来说,该方法包括由客 户端上执行的客户端代理拦截来自客户端的连接请求(步骤501);由客户端 代理建立与网络设备的传输层虚拟专用网络连接(步骤503 );由客户端代理 经由所建立的连接发送包括验证cookie的HTTP请求(步骤505 );由客户端 代理接收HTTP响应,该HTTP响应包括验证cookie的接受(步骤507 );并且 由客户端代理经由该连接发送连接请求(步骤509 )。
0114仍旧参见图5,现在更详细地,在客户端102上执行的客户端代 理120拦截来自客户端的连接请求(步骤501 )。该拦截可以经由任一此处讨 论的方法发生,包括经由TDI驱动器。该连接请求可以包括来自客户端的请 求以打开任一类型的网络连接,包括非HTTP连接。在一个实施例中,连接请 求可以包括TCP SYN包。
0115乂All户端4M连4妻^青求(步骤501)之后,^:户端^C理可以与网绍4殳备 建立传输层虚拟专用网络连接(步骤503 )。该连接可以包括此处所描述的任一传输 层协议。在一个实施例中,传输层VPN连接可以包括SSL连接。在一些实施例中,客 户端代理可以利用之前存在的SSLVPN连接。仍在其他实施例中,客户端代理可以在 之前存在的VPN连接中建立新的连接。在这些实施例中,这些连接可以被^U匕或者与 iEM VPN连接中的^fei^接多路^ 。
0116建立传输层VPN连接(步骤503 )之后,客户端代^里可以经由所建立的 连接发送包括-险i正cookie的HTTP请求(步骤505 )。在一些实施例中,HTTP请求可 以包括由网络设备之前发送到客户端的验证cookie。例如,客户端代逸可以与网络 设备200建立SSL VPN连接,并且可以从网络设备接收^i正cookie。如^户端代 理期望打开与网络设备的第二连接,客户端代理可以随后重新发i^斤接收的cookie,提供-3M正而不需要请求第二次登录过程。
0U7验证cookie可以包括经由HTTP请求发送的^^ai正信息。在一个实施 例中,验证cookie可以包括马^正字符串,其允许网络设^^来^ii^户端的用户的身 份。在另一个实施例,马^i正cookie可以包括马M正字符串,其允许网络设备来^i正对 应于特定用户会话的请求。仍然在另一个实施例中,验证cookie可以包括马&正字符 串,其允许网络设^ii^j"应于特^用^S舌的请求。
0118在一个实施例中,客户端代理可以确保包括验证cookie的HTTP请求为 经由新连接发送的第一数据。例如,建立连接之后,客户端代理可以发送HTTP请求 "GETURLHTTP/l.lVAn…",^是马&正cookie。在一个实施例中,客户端代理可 以对客户端试图跟随连接请求发送的任一数据进行排队,直到HTTP请求^嫂送。在 另 一个实施例中,客户端代理可以对客户端试图跟随连接请求发送的^-数据进行排 队直到从网络设备接^JJ HTTP响应。
0119经由所建立的连接发送包括验证cookie的HTTP请求(步骤505 ) 之后,客户端代理可以接收HTTP响应,HTTP响应包括接受验证cookie (步 骤507 )。
0120接收包括接受验证cookie的HTTP响应(步骤507 )之后,客户 端代理可以经由所建立的连接发送连接请求(步骤509 )。客户端代理可以随 后执行任一附加步骤以服务连接请求并且建立所请求的连接。客户端代理可 以随后发送已经排队用于所请求连接的任一数据。
0121JJ^参见图6,示出^^客户端^J里^^虚拟专用网络环嫂中^^ HTTP cookie启用^4^ti正的方法。总的来i兌,该方法包4舌由扭^亍^^户端上的的客户 端代理^#/人虚拟专用网络上的设备到客户端的包括cookie的HTTP通信(步骤 601);由客户端代理从HTTP通信中移除cookie (步骤603 );由客户端^5里^#所接 收的cookie (步骤605 );由客户端代S^送修改的HTTP通信到扭軒^1户端上的应 用(步骤607 );由客户端代理拦截来自客户端的HTTP请求(步骤609 );由客户端代 理在HTTP请求中插7v^斤接收的cookie (步骤611);并魏送修改的HTTP请求到i殳 备(步骤613)。
0122仍旧参见图6,更详细地,#^亍^1户端102上的的客户端代理120 4^/人虛拟专用网络上的设备到客户端的包括cookie的HTTP通信(步骤601 )。该 cookie可以包括^-~—^i正证书,包括但不限于用户特定的、会4舌特定的、和应用特 定的驺3正证书。在一些实施例中,cookie可以被从设备发i^J)j客户端以响应登录请求和来自客户端的相关信息。客户端代理可以4M此处所描述的任一装置来拦截通 信,包括TDI驱动器。
0123在^^/人虚拟专用网络上的设备到客户端的包括cookie的HTTP通信 (步骤601)之后,由客户端^J^人HTTP通信中移除cookie (步骤603 )。客户端代 理可以通过移除包括cookie的HTTP首部中的名称-值对^A人HTTP响应中删除 cookie。
0124在一些实施例中,根据此处讨论的任一实施例,客户端代理也 可以增加、移除或者修改所接收的HTTP首部中的其它名称-值对。在一个实 施例中,客户端代理可以增加、移除或者修改HTTP首部,使得在接收到的HTTP 首部中由先前客户端代理对HTTP请求的改变所产生的任一信息被从客户端遮 掩。例如,客户端可以在识别多个版本的所请求资源的HTTP请求中插入名称 -值对,该资源当前高速緩存在客户端上。客户端代理随后可以接收包括一个 文件的HTTP响应,该文件由一个所识别版本的改变以及识别哪个版本作为基 础使用的HTTP首部中的名称-值对所组成。客户端代理除了组合所更新的版 本外,可以移除此名称-值对,使得高速緩存技术对于客户端应用透明。
0125由客户端^J里从HTTP通信中移除cookie (步骤603 )之后,客户端代 理可以存储所接收的cookie (步骤605 )。客户端代理可以^^H壬一^H诸方法或者装 置来4^诸所接收的cookie。在一个实施例中,客户端代理可以存储cookie作为磁盘 上的文件。在另一个实施例中,客户端代渡可以务賭cookie到RAM中。客户端^J里 可以<^]分类或者索引所#^渚的cookie的任一方法,包括但不限于按用户、会话、 应用、设备、连接或者VPN索引。
0126存4诸所4妻收的cookie (步骤605 )之后,客户端代理可以发送修改的 HTTP通信到扭J亍^:户端上的应用(步骤607 )。所修改的HTTP通4tT以佳Jf]此处所 描述的任一方式^^i^Jij客户端,包括TDI驱动器。
0127发送^^改的HTTP通信到扭^亍^1户端上的应用之后,客户端^J里可以 拦截来自客户端的HTTP请求(步骤609 )。该拦截可以经由此处讨论的任一方iC^生, 包括TDI驱动器。HTTP请求可以来自HTTP响应^^i^'J的应用,或者HTTP请求可 以来自第二应用。在一些实施例中,客户端代理可以拦截来自多个应用的HTTP请求。
0128拉截来自客户端的HTTP请求(步骤609 )之后,客户端代理可以在HTTP 请求中插A^斤接收的cookie (步骤611 )。客户端^J里通过搜索所接收的cookie的文 件、目絲者数据库来插入HTTP cookie,并且随后将cookie插入到请求中。在一些实施例中,客户端代理可以包括HTTP解析器,使得客户端代-里可以识别HTTP请求 的有效载荷边界。
0129在HTTP请求中插A^斤接收的cookie (步骤611) ^,客户端^J里 可以发送<奮改的HTTP请求到设备(步骤613 )。该传输可以经由此处所述的任一方法。 在一些实施例中,客户端^J里随后可以从指示cookie被接受的设备接收HTTP响应。0130在一些实施例中,客户端代理可以提供其他的cookie管理功能。 例如,,客户端代理可以探测何时VPN会话已经结束,并删除对应于该VPN会 话的任一存储的cookie。
0131现在参见图7到图11,示出高速J爰存和更新方法的详细示例,该方法 可以利用之前讨论的任一客户端cookie管理和HTTP察觉功能。
0132现在参见图7,示出用于建立对之前存储的文件有效更新的方法 的一个实施例。尽管图7描述的方法是在由网络设备200和客户端102来执 行的上下文中,但是该方法可以由此处讨论的任一计算设备自身或者以其任 一组合来执行。总的来说,该方法包括接收包括第一多个数据序列的第一 文件(步骤701);发送该第一文件到客户端或者客户端代理(步骤703 );接 收包括第二多个邀:据序列的第二文件(步骤709 );建立具有多个项目的哈希 表,多个项目的每一个对应于第一多个序列的相应一个,并且其中所述项目 的至少两个对应于交迭的数据序列(步骤711);对于所述第二多个数据序列 计算哈希值(步骤713 );比较第二多个数据序列的每一个和具有同样哈希值 的第一多个序列的序列,以确定在两个文件都存在的数据序列(步骤715); 存储在第一和第二文件中都存在的数据序列的长度和位置的表示(步骤717 ); 建立包括来自第二文件的数据序列以及在第 一和第二文件二者中都出现的所 述数据序列的长度和位置的表示的第三文件(步骤719);并且发送第三文件 到客户端或客户端代理(步骤721 )。
0133依旧参见图7并且现在更详细地,网络设备200接收包括第一多 个数据序列的第一文件(步骤701)。在一些实施例中,可以从网络211,、月良 务器205、数据库或者其中任一组合来接收第一文件。在一些实施例中,第一 文件可以从磁盘或者其他存储介质读取,从高速緩存获取,或者从RAM存取。 在其他实施例中,第一文件可以从网络设备200上执行的应用或者进程接收。 在一些实施例中,第一文件可以包括客户端或者客户端代理请求的文件。
0134第一文件可以包括对应于包含该文件的位或者字节序列的数据序列。第一文件可以包括任一文件协议,包括但不限于,HTML、 XML、 WML、 SVG、其它文档协议、图像文件协议、声音文件协议、视频文件协议和二进 制文件协议。在一些实施例中,该文件包括web页面或者web页面的部分。 在一些实施例中,文件包括以某频率更新的任一 web页面,包括但不限于新 闻页面、web应用页面、聊天室、公告板、体育页面、电子邮件页面、目录 列表、跟踪页面和web摄像(webcam )页面。接收第 一文件之后,网络设备 200可以存储或者高速緩存第一文件以准许之后的获取。在一些实施例中,网 络设备200可以根据此处所述的任一网络设备功能来修改所述第一文件。
0135在一些实施例中,接收第一文件(步骤701)之后,网络设备200 传输第一文件到客户端(步骤703 )。网络设备200可以经此处所述的任一网 络或者协议传输第一文件到此处所述的任一客户端或者客户端代理。网络设 备200可以根据网络设备执行的任一功能来修改第一文件,包括压缩、加速 和加密。尽管图7描述的网络设备200在步骤701之后立即传输第一文件, 在其他实施例中,所述传输可以在网络设备200接收第一文件(步骤701 )之 后发生的任一步骤(步骤705-721 )之后发生。
0136在一些实施例中,网络设备200可以存储所述传输的记录。所述 记录可以存储在任一存储元件中,包括数据库或者高速緩存。在一个实施例 中,网络设备200可以存取所述高速緩存来确定给定文件是否先前已经传输 到客户端。在一个实施例中,可以设置所述记录以在设定时间之后无效。例 如,如果网络设备200具有指示在每一天结束时给定客户端102删除来自其 高速緩存的所有文件的信息,则网络设备可以设置传输到客户端102的文件 的所有记录在每一天结束时无效。
0137在所示实施例中,网络设备200传输第一文件到客户端102 (步 骤703 )之后,客户端可以随后接收第一文件(步骤705 ),显示第一文件(步 骤707),并且存储第一文件(步骤708)。客户端可以根据此处所述任一实施 例来执行这些步骤。
0138在所示实施例中,网络设备200传输第一文件到客户端102或者 客户端代理120 (步骤703 )之后,网络设备接收包括第二多个数据序列的第 二文件(步骤709 )。在其他实施例中,网络设备200可以在传输第一文件到 客户端(步骤703 )之前或期间接收第二文件(步骤709)。第二文件可以包 括此处所述的任一的文件类型、协议、web页面和web页面的部分。接收到第二文件之后,网络设备200可以存储或者高速緩存第二文件以准许随后的
获取。在一些实施例中,网络设备200可以根据此处所述的任一网络设备功 能来修改所述第二文件。
0139在一些实施例中,第二文件可以包括客户端代理所请求的文件。 在一个实施例中,客户端代理可以发送对第二文件的请求到网络设备,该请 求包括识别客户端代理具有第一文件的存储的拷贝的信息。在一些实施例中, 该请求可以是HTTP请求。例如,客户端代理可以发送HTTP请求用于新闻 web页面。客户端代理可以在HTTP请求中插入下面的名称-值对
"previously-stored-version=826482764"(之前存储版本=826482764 ),其中, 826482764可以包括对应于之前存储的先前版本的新闻web页面的序列号或 者时间戳(因此对应于关于此数字讨论的第一文件)。设备200可以随后使用 此序列号或者时间戳来从其存储设备检索第 一文件。
0140在接收包括第二多个数据序列的第二文件(步骤709)之后,网 络设备可以建立具有多个项目的哈希表,多个项目中的每一个对应于第一多
(步骤711)。所述哈希表可以根据任一已知的哈希表算法来建立,所述哈希 表算法提供将数据序列或者对数据序列的引用存储为项目,并且随后有效搜 索所述表中匹配给定序列的项目的功能。在其他实施例中,网络设备可以在 接收第二文件(步骤709)之前或者期间建立哈希表(步骤711)。
00141在一些实施例中,哈希表中的项目可以对应于来自包括字节序 列的第一文件的数据序列。该字节序列可以是任一长度。在一个实施例中, 该序列是四字节序列。
0142在所示实施例中,至少两个哈希表项目对应于交迭的数据序列。 交迭的序列可以具有任一相同的字节数量。例如,如果文件包括序列
"abcdefghijklmnop",四字节序列交迭的例子除了 "cdef,和"fghi"之外, 还包括"cdef,和"defg"。在一个实施例中,哈希表项目对应于连续的交迭 字节序列。例如,如果文件包括序列"abcdefg",包括至少两个连续交迭四字 节序列的哈希表可以包括对应于序列"abcd,, "bcde" "cdef,和"defg"的项 目。
0143在一些实施例中,哈希表项目在给定时刻可以仅对应于来自第一 文件的给定部分或者"窗口"的数据序列。如果整个文件被立刻哈希的话,这允许该哈希表的尺寸小于该哈希表的可能的尺寸。在一些实施例中,仅哈 希第一文件的第一个X个字节,并且随后根据一些条件的发生,从表中移除
Y个项,随后在表中加入Y个项。在一个实施例中,使用64K字节的窗口尺 寸,并且根据某些条件的发生,窗口以32K字节移动。在此实施例中,哈希 来自第一文件的第一个64K字节的序列,并且随后根据某些条件的发生,移 除对应于来自文件的第一个32K字节的序列的项目,并且加入对应于来自文 件的下一个32K字节的序列的项目。
0144移动哈希窗口所基于的条件可以是改进哈希算法的执行时间、性 能或者压缩的任一条件。在一个实施例中,当在窗口的给定一半中已经发现 超过85%的序列匹配时则移动窗口。在另一个实施例中,当第二文件的^^定 比例已经和已有哈希项目比较时则移动窗口。在一个实施例中,当对于已经 与第 一文件相比的第二文件的适当部分哈希值已经被计算并且被比较时则移 动窗口。例如,如果第一文件为100K字节,第二文件是80K字节,当第二 文件的80/100*64K字节已经和哈希表中的序列相比4交时可以移动哈希窗口 。
0145网络设备200建立哈希表(步骤711 )之后,网络设备200可以 随后计算所述第二多个数据序列的哈希值(步骤713)。根据用于计算第一多 个序列的哈希值的相同的方法来计算所述哈希值。网络设备200可以以与其 从第一文件选择数据序列相同的方式来从第二文件选择数据序列。例如,如 果网络设备200建立的哈希表项目对应于来自第一文件的连续交迭的四字节 序列,网络设备可以选择来计算来自第二文件的连续交迭的四字节序列的哈 希值。
0146在计算第二多个数据序列的一些或者全部的哈希值(步骤713) 之后,网络设备200可以比较第二多个数据序列的每一个与来自具有相同哈 希值的第一多个序列的序列,以确定在两个文件中都出现的数据序列(步骤 715)。网络设备可以根据当前可用的任一哈希算法执行该步骤。所述比较可 以包括比较匹配的序列的随后字节以确定更长的匹配。例如,第一文件可以 包括序歹ll "abcdefghijklmno"并且第二文件可以包括序列"zyxwvutcdefghituv"。 如果在连续四字节序列上作哈希,网络设备200可以确定序列"cdef,在两个 文件中都出现。网络设备200随后比较匹配序列的随后字节以确定序列 "cdefghi"出现于两个文件中。因此,在一些实施例中,确定出现于两个文 件中的序列的长度可以随计算哈希值的序列的长度改变。在一些实施例中,可以设置匹配序列的最小和最大长度。
0147确定出现于两个文件中的数据序列(步骤715)之后,网络设备 200可以存储出现在第 一和第二文件二者中的所述数据序列的长度和位置的 表示(步骤717)。网络设备200可以在任一存储介质中存储该表示,包括高 速緩存、RAM、磁盘或者磁带。在一些实施例中,网络设备200可以在网络 设备200自身上存储该表示。在其他实施例中,网络设备200可以在另一个 计算设备100上存储该表示。在一些实施例中,可以存储数据序列的长度和 位置,同时网络设备200正比较第二多个数据序列的每一个和来自于具有相 同哈希值的第一多个序列的序列(步骤713)。在其他实施例中,对于要存储 的给定序列的长度和位置,可以要求最小长度。在一个实施例中,最小长度 可以指定为四字节。
0148在两个文件中都出现的所述序列的长度和位置的表示可以包括识 别序列的长度和位置的任一表示。在一些实施例中,所述序列的位置被存储 为文件中的绝对位置。在其他实施例中,所述序列的位置被存储为所述第一 文件中相对于一个给定参考指针的位置。在一个实施例中,所述参考指针可 以被固定,在另一个实施例中,所述参考指针可以根据设置的规则移动。
0149在一个实施例中,参考指针可以被初始设置指向第一文件的开始。 指针随后可以在每次发现长于5字节的匹配序列后递增。指针可能随后被增 加到指向第一文件中匹配序列的最后一个字节加一。在此实施例中,在两个 文件中都出现的所述序列的位置可以被存储为从参考指针的位置起正向或者 负向的给定数量字节。
0150在一些实施例中,所匹配序列的长度和位置被存储为固定长度整 数。在一个实施例中,所匹配序列的长度被存储为1字节整数,其中该整数 表示介于4到1027字节的长度。在此实施例中,所匹配序列的字节长度被限 制为4的倍数。在其他实施例中,任一其他位或者字节长度整数可以被用于 存储所述序列长度。在又一些实施例中,任一其他限制可以:故施加到所匹配 序列的字节长度,包括最小和最大长度以及限制字节长度到给定倍数。在又 一些实施例中,所匹配序列的长度可以存储为可变长度整数。在一些实施例 中,所匹配序列的位置可以被存储为可变长度整数。在其他实施例中,所匹 配序列的位置可以被存储为给定字节或者位长度的固定长度整数。
0151网络设备200存储出现在第 一和第二文件二者中的所述数据序列的长度和位置的表示(步骤717)之后,网络设备200可以建立包括来自第二 文件的数据序列和在第 一和第二文件中都出现的数据序列的位置和长度的表
置都存储之后,或者所述建立(717)可以与发现所匹配序列同时发生。第三 文件可以包含此处所述任一格式的长度和位置的表示。在一些实施例中,特 殊的字节或者位序列可以位于共享序列的长度和位置之前。
0152例如,如果第一文件包括字符串"abcdefghijklmnop",第二文件 包括字符串"xxxxxxxdefghijkxxxxxxcdefkxx ,,,第三文件可以包括序列 "xxxxxxx3, 8xxxxxx2, 4xxx"。在此例中,3、 8用于指明一个表示,以指示 从第一文件的字节3开始并且8字节长的序列(在一些实施例中该表示可以 是两个固定长度的二进制整数)。同样地,2、 4指明一个表示,以指示从第一 文件的字节2开始并且4字节长的序列。
0153作为另 一 个例子,如果第 一 文件包括包括字符串 "abcdefghijklmnop,,,第二文件包括字符串"xxxxxxxdefghijkxxxxxxcdefkxx'', 第三文件可以包括序列"xxxxxxx3, 8xxxxxx-9, 4xxx"。在此例中,共享序列 的位置被存储为与参考指针的相对距离,根据上述方法递增。在此例中,网 络设备200以与上例相同方式指示第一所匹配序列,因为参考指针初始指向 第一文件的开始。参考指针随后增加到指向第一文件中匹配序列的最后一个 字节加一的位置。因此,第二匹配序列被指示为-9、 4,其指示第二所匹配序 列发生在紧随第一文件中之前所匹配序列的字节之前的9个字节。
0154在一个实施例中,第三文件可以以字节协议编码,诸如ASCII。 在一个实施例中,二进制数据的每一组7个字节可以被编码为8个字节的 ASCII字符。这种转化可以使用任一公知的转化方法实现。ASCII字符可以对 应于任一现有的字符集定义,包括ISO-8859-l。在一些实施例中,第三文件 可以包括HTML文件。在一个实施例中,第三文件可以包括Javascript变量, 该Javascript变量包括来自第二文件的所述数据序列和出现在第 一和第二文件 二者中的所述数据序列的位置和长度的表示。在一个实施例中,第三文件还 可以包括含有用于通过处理所述Javascript变量来组合所述第二文件的功能的 Javascript函数。在其他实施例中,第三文件可以包括对含有所述功能的 Javascript函凄丈的引用。
0155以下HTML代码示出可以被传输到客户端的第三文件的一个例子。
<HTML>
<HEAD>
<SCRIPT>
var叩dateFile =" ~-"
<SCRIPT> </HEAD>
<BODY onload=create.Page ( updateFie ) > </BODY> </HTML>
0156在上述例子中,HTML文件包括命名为"updateFile"的Javascript 变量。该变量可以包括来自第二文件的数据序列和出现在第 一和第二文件二 者中的所述数据序列的长度和位置的表示。上述例子还包括对命名为
"createPage,,的Javascript函数的调用。所述函数或者可以包括在HTML文 件中或者存储在客户端上,其可以包括用于使用来自Javascript变量
"updateFile"的数据来组合所述第二文件的功能。在上述例子中,标准HTML 浏览器可以在载入HTML页面时执行"createPage"函数。"createPage"函数 还可以包括用于一旦第二文件被组合则改变HTML页面来显示所述第二文件 的功能。
0157建立包括来自第二文件的数据序列和出现在第 一和第二文件二者 中的所述数据序列的位置和长度的表示的第三文件(步骤719)之后,并且网 络设备200可以传输第三文件到客户端(步骤721)。所述传输可以通过此处 讨论的任一网络和方法发生。网络设备200可以根据网络设备200所执行的 包括压缩、加速和加密的任一功能来修改第三文件。
0158在一些实施例中,网络设备200可以发送对应于第二文件的该传 输的HTTP首部中的信息。继续之前的例子,网络设备可以将名称-值对 "previously-stored-version=826482764',插入以指示使用文件的哪个版本作为 第一文件,用于文件比较和压缩。0159传输第三文件到客户端(步骤721)之后,客户端102可以接收 第三文件(步骤723 ),执行Javascript函数以重新建立包括来自第二文件的数 据序列和第三文件所指示的第一文件中的序列的第二文件(步骤725 );并且 显示第二文件(步骤727)。客户端102可以根据此处描述的任一实施例执行 这些步骤。
0160现在参见图8,示出描述用于建立对先前存储文件的有效更新的 方法的另一个实施例的流程图。总的来说,该方法包括使用对应于第一文件 中的交迭数据序列的项目建立哈希表(步骤711);设置参考指针指向所述第 一文件的开始(步骤801);计算用于第二文件的数据序列的哈希值(步骤7H ); 并且确定在两个文件中是否都出现所述序列(步骤715)。该方法随后还可以 包括或者移动到第二文件中的下一序列(步骤809 )或者确定匹配序列的总长 度(步骤803 )并且确定所述长度是否超过最小阔值(步骤805 )。该方法随 后还可以包括或者移到第二文件中的下一序列(步骤809 )或者存储相对于参 考指针的匹配序列的长度和位置(步骤717)。该方法随后可以包括设置参考 指针指向第一文件中的匹配序列的最后一个字节加一 (步骤807 )并且随后移 到第二文件中的下一序列(步骤809)。在所述实施例中,可以由网络设备200 执行该方法。
0161依旧参见图8,现在更详细地,网络设备200使用对应于第一文 件中的交迭数据序列的项目建立哈希表(步骤711)。可以根据此处所述用于 建立哈希表的任一方法来执行该步骤。
0162在使用对应于第一文件中的交迭数据序列的项目建立哈希表(步 骤711)之后,网络设备200可以设置参考指针指向所述第一文件的开始(步 骤801 )。该参考指针可以包括任一类型的指针。
0163设置参考指针指向第一文件的开始(步骤801)之后,网络设备 200可以计算用于第二文件的数据序列的哈希值(步骤713)。可以根据此处 所讨论的用于计算所述哈希值的任一方法来执行该步骤。
0164计算用于第二文件的数据序列的哈希值(步骤713)之后,网络 设备200可以确定在两个文件中是否都出现所述序列(步骤715)。可以根据 此处所述的任一 方法来"t丸行该步骤。
0165如果不是在两个文件中都出现一个序列,网络设备200可以移动 到第二文件的下一个序列(809 )。所述下一序列可以包括发生在第二文件中给定序列之后的任一序列。在一个实施例中,下一个序列可以是前一序列之 后开始一字节的序列。在另一个实施例中,下一序列可以是前一序列之后开 始任一其他数量个字节的序列。在一些实施例中,移动到第二文件的下一个
序列(步骤809)可以伴以上述的移动哈希窗。如果不存在下一个序列,该方 法可以终止。
0166如果在两个文件中都出现一个序列,网络设备200可以通过比较 所匹配序列的随后的字节来确定匹配序列的总长度(步骤803 )。根据此处所 述的任一方法可以确定总长度。
0167网络设备200随后可以确定匹配序列的总长度是否超过一个给定 阈值(步骤805 )。可以根据此处所述的任一方法做出该确定。如果匹配序列 的长度没有超过最小阚值,网络设备200可以移动到第二文件的下 一个序列。
0168如果该长度超过最小阈值,网络设备200可以随后根据此处所述 的任一方法存储匹配序列的长度和相对于给定参考指针的位置。网络设备200 可以随后根据此处所述任一方法递增参考指针(步骤807 )。网络设备200随 后可以移动到第二文件的下一个序列(步骤809)。
0169现在参见图9,示出用于有效接收对先前存储文件的更新的方法 的一个实施例。总的来说,所述方法包括接收组合函数(步骤903 );接收 包括数据序列的第一文件(步骤705 );显示所述第一文件,存储所述第一文 件(步骤708);接收包括数据序列和在第一文件中的序列的位置和长度的表 示的第三文件(步骤723 );执行Javascript函数以建立包括来自第二文件的数 据序列和由第三文件指示的第一文件中的序列的第二文件(步骤725 );并且 显示所述第二文件(步骤727 )。
0170依旧参见图9,现在更详细地,网络设备200可以传输组合函数。 所述组合函数可以包括用于使用包括来自第二文件的数据序列和出现在第一 和第二文件二者中的所述数据序列的位置和长度的表示的文件来组合第二文 件的任一计算机可读程序装置。所述组合函数可以包括任一编程或者脚本语 言,包括Javascript或者Java。在一些实施例中,可以根据此处所述的任一其 他网络设备函数来传输该组合函数。在一个实施例中,该组合函数可以包括 在提供其它客户端侧加速功能的程序中。
0171在所示实施例中,网络设备200传输组合函数(步骤901 )之后, 客户端102或者客户端代理120接收组合函数(步骤903 )。客户端可以通过此处所述的任一网络、协议或者计算装置来接收所述组合函数。在一些实施
例中,客户端102从网络设备200接收组合函数。在一个实施例中,组合函
数可以被包括作为客户端侧加速程序的部分。在其他实施例中,组合函数可
以通过发送软件的4壬一方法被安装在客户端102上,该方法包括通过石兹盘或 者其他便携存储设备。在一些实施例中,客户端代理120可以接收并且之后 执行重组合函数,使得重组合函数的执行对于一个或者多个应用或者网络层 透明。
0172在所示实施例中,接收组合函数(步骤903 )之后,客户端102
或者客户端代理接收包括数据序列的第一文件。在所示实施例中,客户端102 从网络设备200接收第一文件。在其他实施例中,客户端102可以从任一计 算设备接收第一文件。所述文件可以包括此处所述任一文件类型或者协议。
0173客户端102接收包括数据序列的第一文件(步骤705 )之后,客 户端102可以显示所述第一文件(步骤707)。可以以任一对于给定文件合适 的方式显示该文件。在一些实施例中,文件可以被显示在web浏览器中。在 其他实施例中,文件可以被显示在商业应用中,诸如字处理器或者电子数据 表。在又一些实施例中,文件可以包括独立应用并且被照此显示。在一些实 施例中,文件可以对应于运行在虛拟计算环境中的应用。在一个实施例中, 文件可以对应于远程^丸行应用。在其他实施例中,文件可以对应于流应用。
0174客户端102显示所述第一文件(步骤707)之后,客户端102或 者客户端代理120可以存储所述第一文件(步骤708)。客户端102可以存储 第一文件到任一存储元件中,包括存储在高速緩存、磁盘、闪烁存储器或者 RAM中。在一些实施例中,客户端102可以压缩该文件用于存储。在其他实 施例中,客户端102可以仅存储文件的部分。在一些实施例中,客户端102 可以在显示所述第一文件(步骤707 )之前或者期间来存储所述第一文件(步 骤708 )。
0175客户端102存储所述第一文件(步骤708 )之后,所述客户端102 或者客户端代理120可以接收第三文件(步骤723 )。在所示实施例中,客户 端102从网络设备200接收第三文件。在其他实施例中,客户端102可以从 任一计算装置接收第三文件。所述文件可以包括此处所述的任一文件类型或 者协议。在一些实施例中,该文件可以包括ASCII字符。在其他实施例中, 该文件可以包括二进制数据。0176客户端102接收所述第三文件(步骤723 )之后,客户端或者客 户端代理120可以执行Javascript或者其他函数来组合第二文件(步骤725 )。 在一些实施例中,Javascript函数可以被包括在所述第三文件中。在其他实施 例中,该Javascript函数可以已经存储在客户端102上。在一些实施例中, Javascript函数可以在客户端侧加速程序中^是供。在一些实施例中,第三文件 可以包括到一个位置的链接,客户端102可以在该位置下载Javascript函数。
0177Javascript函数可以执行此处所述的任一技术或者任一技术的逆操 作来组合所述第二文件。在一些实施例中,Javascript函凄t可以包括在步骤903 接收的组合函数。在其他实施例中,Javascript函数可以包括对所述组合函数 的引用。在又一些实施例中,所述Javascript函数可以包括用于下载所述组合 函凄t的方法。
0178执行Javascript函数以组合所述第二文件(步骤725 )之后,所述
客户端可以显示所述第二文件(步骤727)。该文件可以根据此处所述用于显 示文件的任一方法来显示。
0179现在参见图10,示出用于将第二文件和第三文件进行组合的方法 的一个实施例,所述第二文件来自先前存储的第一文件,所述第三文件包括来 自第二文件的数据序列以及出王脉第一和第二文件二者中的数据序列的位置和长 度的表示。总的来说,该方法包括读取来自第三文件的数据集(步骤1002 )并 且确定所述数据集是否对应于出现在第 一和第二文件二者中的所述数据序列 的位置和长度(步骤1003 )。所述方法还可以包括在所述第一文件中的指定位 置读取指定长度的字节(步骤1005 );将所述字节加到第二文件(步骤1007 ); 将参考指针增加到指向从第一文件读取的字节的最后一个字节加一的位置 (步骤1009 );并且移到来自所述第三文件的下一数据集(步骤1013)。在一 个实施例中,所述方法可以由客户端102或者客户端代理120执行。在另一 个实施例中,所述方法可以由图9描述的组合函数来执行。
0180依旧参见图10,现在更详细地,客户端102可以设置参考指针指 向第一文件的开始。这可以根据此处所述的任一方法来执行。
0181设置参考指针(步骤1001 )之后,客户端102可以从第三文件读 取数据集(步骤1002 )。所述数据集可以包括所述第三文件的任一数量的位或 者字节。在一个实施例中,所述数据集随后存储在存储元件或者高速緩存中。
0182读取所述数据集(步骤1002 )之后,客户端102可以确定所述数据集是否对应于在第一文件中的序列的长度和位置。在一个实施例中,客户 端可以确定所述数据集是否包括特殊字符或者位序列。
0183如果所述数据集不对应于在第一文件中的序列的长度和位置,客 户端102可以将所述数据集加到第二文件(步骤1011 )。所述加到第二文件可 包括添加所述数据集到第二文件的末尾。客户端102可以随后移动到来自第 三文件的下一数据集(步骤1013)。
0184如果所述数据对应于在第一文件中的序列的长度和位置,客户端 102随后可以在第一文件中的指定位置读取指定长度的字节(步骤1005 )。客 户端可以通过识别此处描述的长度和位置的任一表示来确定所指定的长度和 位置。在一个实施例中,客户端可以随后存储所述指定字节到存储元件或者 高速緩存中。
0185在第一文件中的指定位置读取指定长度的字节(步骤1005 )之后, 客户端102随后可以将所述字节加到所述第二文件(步骤1007 )。所述加到所 述第二文件可以包括添加所述字节到第二文件的末尾。
0186客户端102可以随后将参考指针增加到指向从第一文件读取的字 节的最后一个字节加一的位置(步骤1009 )。这可以才艮据此处所述的任一方法 来执行。客户端102随后可以移到来自第三文件的下一数据集(步骤1013)。
0187现在参见图11,示出用于确定文件传输方法的方法的一个实施例。 所述方法可以由上述的任一机器或者机器的组合来执行,尽管以下实施例描 述该方法由网络设备200执行。总的来说,该方法包括接收来自客户端102 或客户端代理120对资源的请求(步骤1101 );发送对所述客户端的性能的请 求(步骤1103 );接收传达所述客户端性能的信息(步骤1105 );并且确定文 件传输方法(步骤1107)。
0188依旧参见图11,现在更详细地,网络设备200接收来自客户端或 者客户端代理120的请求(步骤1101 )。在一个实施例中,从客户端接收请求 (步骤1101 )包括直接从客户端接收请求。在其他实施例中,来自客户端102 的请求可以从上述的任一网络、连接和设备接收。所述请求可以包括前述的 任一协议。在一些实施例中,该请求可以仅包括从客户端102传输的请求。 在其他实施例中,该请求可以包括对来自客户端102的初始请求的修改。所 述修改可以包括在提供上述任一 网络设备服务过程期间的修改,以及对来自 于客户端102的请求或者一个新的请求的内容、格式、协议、寻址、首部或其它部分的修改。
一个请求可以包括由客户端102直接请求的资源,并且可
以包括在执行用于客户端102的任一服务过程期间所请求的资源。
0189从客户端接收请求(步骤1101 )之后,网络设备200发送对所述 客户端性能的请求(步骤1103)。在一个实施例中,所述请求可以被发送到客 户端102。在另一个实施例中,请求可以被发送到收集代理,如美国专利申请
序歹寸号 10/956832 "A METHOD AND APPARATUS FOR ASSIGNING ACCESS CONTROL LEVELS IN PROVIDING ACCESS TO NETWORKED CONTENT FILES"中所述,其内容通过 引用被明确引入本申请。所述收集代理可以驻留在与发送该请求的网络设备 同一个物理机器上,或者它们可以驻留在不同的物理机器上。所述请求也可 以被发送到文件、高速緩存、数据库、服务器、执行应用或者关于客户端102 的任一其他信息源。
0190发送对客户端性能的请求(步骤1103 )之后,网络设备200接收 传达所述客户端性能的信息(步骤1105)。所述信息可以从客户端102、或者 客户端代理120、收集代理、文件、高速缓存、数据库、服务器、执行应用或 者关于客户端102的任一其他信息源中接收。所述信息可以包括但不限于客 户端节点102的机器ID、操作系统类型、操作系统补丁的存在、所安装网卡 的MAC地址、客户端设备上的数字水印、活动目录中的成员、病毒扫描器的 存在、个人防火墙的存在、HTTP头、浏览器类型、设备类型、网络连接信息、 授权证书和以上讨论的任一其他性能或偏好。在一些实施例中,网络设备可 以存储或者高速緩存所述信息用于之后的获取。
0191接收传达所述客户端性能的信息(步骤1105 )之后,网络设备可 以确定对应于所述客户端102或客户端代理120的文件传输方法(步骤1107 )。 可以基于任一所接收到的信息做出所述确定。
0192在一些实施例中,响应在步骤1105接收的信息,网络设备200 可以确定根据图7中所述用于建立对先前存储文件的有效更新的方法来传输 文件。在一个实施例中,响应对应于客户端102存储器尺寸、连接速度、连 接带宽、处理器速度或者存储文件的之前存在的信息,做出该确定。
0193在一些实施例中,网络设备200可以响应步骤1105接收的信息 来确定传输组合函数到客户端102。例如,如果网络设备200接收到客户端 102不具有组合函数的信息以及指示客户端102有能力执行组合函数的信息, 网络设备可以传输组合函数到客户端102。在一些实施例中,所述组合函数可以与任一其他文件一起传输,包括请求的内容文件、或者根据网络设备200 的功能传输的其他文件。在一些实施例中,网络设备可具有多个组合函数。 例如,网络设备200可以具有优化用于不同计算环境、操作系统和硬件配置 的多个组合函数。网络设备随后可以响应步骤1105接收到的信息来确定哪个 组合函数传输到客户端102。
0194虽然本发明参考具体优选实施例来详细示出和说明,本领域内 的普通技术人员应该理解在不脱离由所附权利要求书限定的本发明的精神和 范围的情况下,可以对本发明在形式和细节上作出多种改变。
权利要求
1、一种用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信的方法,所述方法包括(a)由在客户端上执行的客户端代理在网络层或者传输层的其中之一拦截包括来自客户端上执行的应用的HTTP请求的一个或者多个包;(b)修改所述HTTP请求;并且(c)经传输层连接发送所修改的HTTP请求到服务器。
2、 权利要求1的方法,其中,步骤(a)包括由客户端代理拦截虚拟专用网络上从客户端到服务器的HTTP请求。
3、 权利要求l的方法,其中,步骤(b)包括修改包括在所述HTTP请求中的至少一个cookie。
4、 权利要求l的方法,其中,步骤(b)包括移除包括在所述HTTP请求中的至少一个cookie。
5、 权利要求l的方法,其中,步骤(b)包括(b-a )在所述HTTP请求中识别名称-值对;和(b-b)修改所述名称-值对的值。
6、 权利要求l的方法,其中,步骤(b)包括(b-a )在所述HTTP请求中识别URL;和(b-b)在所述HTTP请求中插入识别当前存储在所述客户端上的URL识别的资源的版本的信息。
7、 权利要求l的方法,其中,步骤(b)包括修改在所述HTTP请求中识别的URL。
8、 权利要求l的方法,其中,步骤(b)包括(b-a )在所述HTTP请求指定的URL中识别名称-值对;和(b-b )修改所识别的名称-值对的值。
9、 权利要求l的方法,其中,步骤(c)包括(c-a )响应所述HTTP请求中指定的URL,确定对应于服务所述请求的服务器的网络层地址;和(c-b)经由传输层连接,发送所修改的HTTP请求到所指定的地址。
10、 一种用于使用在虛拟专用网络环境中操作的客户端代理来拦截HTTP通信的计算机实现的系统,所述系统包括客户端计算装置;和在客户端上执行的客户端代理,在网络层拦截来自客户端上执行的应用的HTTP请求;修改所述HTTP请求;并且经传输层连接发送所修改的HTTP请求到服务器。
11、 权利要求10的系统,其中,所述客户端代理拦截虚拟专用网络上从客户端到服务器的HTTP请求。
12、 权利要求10的系统,其中,所述客户端代理修改包括在所述HTTP请求中的至少一个cookie。
13、 权利要求10的系统,其中,所述客户端代理移除包括在所述HTTP请求中的至少一个cookie。
14、 权利要求10的系统,其中,所述客户端代理在所述HTTP请求中识别名称-值对;和修改所述名称-值对的值。
15、 权利要求10的系统,其中,所述客户端代理在所述HTTP请求中识别URL;和在所述HTTP请求中插入识别当前存储在所述客户端上的URL识别的资源的版本的信息。
16、 权利要求10的系统,其中,所述客户端代理修改在所述HTTP请求中识别的URL。
17、 权利要求10的系统,其中,所述客户端代理在所述HTTP请求指定的URL中识别名称-值对;和修改所识别的名称-值对的值。
18、 权利要求10的系统,其中,所述客户端代理响应所述HTTP请求中指定的URL,确定对应于服务所述请求的服务器的网络层地址;和经由传输层连接,发送所修改的HTTP请求到所确定的地址。
19 、 一种用于^^]客户端代理来启用使用HTTP cookie的虚拟专用网络环嫂中的安4^封正的方法,所述方法包括(a )由扭軒^ll户端上的的客户端代/里4 /人虚拟专用网络上的设备到客户端的包括cookie的HTTP通信;(b)由客户端代理/人HTTP通信中移除cookie;(c )由客户端代理^^诸所接收的cookie;(d)由客户端^J嫂送修改的HTTP通信到#1^亍#户端上的应用;(e) 由客户端代理拦截来自客户端的HTTP请求;(f) 由客户端代理在HTTP请求中插7sJ斤接收的cookie;并且(g )发送修改的HTTP请求到设备。
20、 权利要求19的方法,其中步骤(a)包括由扭軒#户端上的的客户端代》里冲^A虚拟专用网络上的设备到客户端的包括cookie的HTTP通信,其中所述cookie包括授权证书。
21、 权利要求19的方法,其中步骤(e)包括由客户端代理才織虛拟专用网络上/A^户端到服务器的HTTP GET请求。
22、 权利要求19的方法,其中步骤(e)包括由客户端^J里拦截来自客户端的多个HTTP请求。
23、 权利要求19的方法,其中步骤(e)包括由客户端^J里拦截来自客户端上#(^亍的多个应用的多个HTTP请求。
24、 权利要求19的方法,还包括步骤(h)客户端代理确定与虚拟专用网络设备的客户端会话已经结束;并且(i )响应该确定,删除所存储的cookie。
25、 权利要求24的方法,其中,步骤(h)包括由客户端^J里确定客户端和虚拟专用网络设备之间的传输层连接已经终止。
26、 权利要求19的方法,其中步骤(f)包括由客户端代理在HTTP请求中插入包括用户验^i正i正书的cookie。
27、 权利要求19的方法,其中步骤(f)包括客户端代理在HTTP请求中插入包括应用特定的验证证书的cook i e 。
28、 权利要求19的方法,其中步骤(f)包括客户端^J錄HTTP请求中插入包括传输y^i舌信息的cookie。
29、 一种用于^jf]客户端代理来启用使用HTTP cookie的虚拟专用网络床竟中的^N^正的系统,所述系统包括^:户端计算装置;和#^亍#户端上的的客户端代理,4^/人虚拟专用网络上的设备到客户端的包括cookie的HTTP通信;从HTTP通信中移除cookie; #^诸所接收的cookie;发送修改的HTTP通信到#1^亍#户端上的应用;由客户端4"里拦截来自客户端的HTTP请求;由客户端代理在HTTP请求中插7v^斤接收的cookie;并JX送修改的HTTP请求到设备。
30、 权利要求29的系统,其中客户端^J里4誠包括从虚拟专用网络上的设备 到客户端的cookie的HTTP通信,其中所述cookie包括授权证书。
31、 权利要求29的系统,其中客户端^J里4^l^拟专用网络Ji/A^户端到服 务器的HTTP GET请求。
32、 权利要求29的系统,其中客户端^J里4誠来自客户端的多个HTTP请求。
33、 权利要求29的系统,其中客户端^J里^^来自客户端上^^亍的多个应用 的多个HTTP请求。
34、 权利要求29的系统,其中客户端代理确定与虚拟专用网络设备的客 户端会话已经结束;并且,响应该确定,删除所存^f诸的cookie。
35、 权利要求34的系统,其中,客户端^J里确定客户端和虚拟专用网络设备之 间的传输层连接已经终止。
36、 权利要求29的系统,其中客户端代J錄HTTP请求中插入包括用户驺3正证书 的cookie。
37、 权利要求29的系统,其中客户端代S^HTTP请求中插入包括应用特定的验 证证书的cookie。
38、 权利要求29的系统,其中客户端代理在HTTP请求中插入包括传输^"i舌信 息的cookie。
39、 一种用于使用客户端代理来启用来自客户端的非HTTP通信中的HTTP cookie验证的方法,所述方法包括(a )由客户端上执行的客户端代理拦截来自客户端的连接请求; (b )由客户端代理建立与网络设备的传输层虚拟专用网络连接;(c) 由客户端代理经由所建立的连接发送包括验证cookie的HTTP请求;和(d) 由客户端代理经由该连接发送连接请求。
40、 权利要求39的方法,其中,所述客户端代理关于以下网络层的其中 之一透明地执行应用层、表示层、会话层或者传输层。
41、 权利要求39的方法,其中,步骤(a)包括由客户端上执行的客户 端代理拦截来自客户端的传输层连接请求,其中,所述拦截发生在以下网络 层的其中一个传输层、网络层或者数据层。
42、 权利要求39的方法,其中,步骤(a)包括由客户端上4丸行的客户 端代理拦截TCP SYN包。
43、 权利要求39的方法,其中,步骤(c)包括在经由该连接发送任一数据 之前,客户端代理经由所建立的连接发送包括验i正cookie的HTTP请求。
44、 权利要求39的方法,其中,步骤(c)包括响应连接已经建立的确定, 客户端代理发送包括—睑证cookie的HTTP请求,所述cookie包括用户验证证 书。
45、 权利要求39的方法,其中,步骤(c)包括客户端代理经由所建立 的连接发送包括^S正cookie的HTTP请求,所述cookie包括应用特定的—险证 证书。
46、 权利要求39的方法,其中,步骤(c)还包括客户端代理接收HTTP 响应,所述HTTP响应包括 接收所述-睑i正cookie。
47. —种用于使用客户端代理来启用来自客户端的非HTTP通信中的HTTP cookie验证的计算才几实现的系统,所述系统包括客户端计算装置;和客户端上执行的客户端代理,拦截来自客户端的连接请求;建立与网络 设备的传输层虚拟专用网络连接;由客户端代理经由所建立的连接发送包括 验证cookie的HTTP请求;和由客户端代理经由该连接发送连接请求。
48、 权利要求47的系统,其中,所述客户端代理关于以下网络层的其中 之一透明地执行应用层、表示层、会话层或者传输层。
49、 权利要求47的系统,其中,客户端代理拦截来自客户端的传输层连 接请求,其中,所述拦截发生在以下网络层的其中一个传输层、网络层或 者数据层。
50、 权利要求47的系统,其中,客户端代理拦截TCP SYN包。
51、 权利要求47的系统,其中,客户端^J里经由所建立的连接在经由该连接 发送任一数据之前发送包括-3&正cookie的HTTP请求。
52、 权利要求47的系统,其中客户端代理经由所建立的连接发送包括验 证cookie的HTTP请求,所述cookie包括用户验证证书。
53、 权利要求47的系统,其中,客户端代理经由所建立的连接发送包括 验证cookie的HTTP请求,所述cookie包括应用特定的验证证书。
54、 权利要求47的系统,其中,客户端代理接收HTTP响应,所述HTTP 响应包括接收所述'睑i正cookie。
全文摘要
所描述的系统和方法用于使用在虚拟专用网络环境中操作的客户端代理来拦截HTTP通信。该方法包括由在客户端上执行的客户端代理在网络层拦截来自客户端上执行的应用的HTTP请求;修改该HTTP请求;并且经传输层连接发送所修改的HTTP请求到服务器。附加的方法可以包括增加、移除或者修改HTTP请求中的至少一个cookie。又一个方法可以包括修改包含在该HTTP请求中的至少一个名称-值对。该其它方法可以使用客户端代理来管理HTTP验证cookie。
文档编号H04L29/08GK101523865SQ200780036904
公开日2009年9月2日 申请日期2007年8月3日 优先权日2006年8月3日
发明者A·索尼, C·温卡塔拉曼, 何军晓 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1