用于与网络地址转换系统相关联的客户机的带外保活机制
背景
计算设备和连网的技术进步方便了对各种各样的信息和服务的访问,从而实际上允许从世界的任何地方进行访问。此外,随着计算机和便携式设备的数量的持续增加,连接性可以要求每一设备当其在网络上时都被唯一地标识。与支持为每一网络设备获取独立(或静态)IP地址的附加花费相反,一种被称为网络地址转换(NAT)的技术允许路由器后的或内部(或专用)网络上的多个IP节点共享单个公共IP地址。换言之,提供了一种允许将一组未注册的IP地址用于内部网络通信并将另一组IP地址用于外部或公共通信的标准。
通常,NAT设备采用具有可配置超时时间段的连接超时定时器,以在本机应用程序之间映射连接状态。如果一特定NAT端口映射表项未被入站或出站通信使用超过了超时时间段,则该连接的NAT定时器期满并且该项从表中清除。一旦该项被清除,则NAT后的共享节点不能再通过该连接达到,并且必须发起新连接(例如由该共享节点)。
防止NAT定时器超时(或期满)的一种常见机制被称为“保活”(KA)或“心跳”处理。在保活下,以比NAT超时时间段短的时间间隔在该连接上生成无用通信以复位(或刷新)定时器,并且从而保持该连接活动。在使用电池电源作为主电源的便携式设备(例如智能电话)的情况下,常规保活技术影响电池寿命并生成大量的无线活动来保持连接活动。
一种用于提供通过NAT的持久连接的解决方案是将保活机制作为本机应用协议的一部分来构建(带内解决方案)。然而,常规机制的缺点包括以下:必须修改底层本机应用协议来容纳KA机制;KA机制不能被翻新到常规应用程序,并且需要部署应用程序升级;以及,对KA机制的每一次更新都影响核心应用协议并且因此必须被测试。
另外,因为带内约束,优化常规KA机制是很困难的,带内约束包括:迫使KA分组大小不必要地大以容纳分层的本机应用头部(例如,大HTTP(超文本标记语言)和SOAP(简单对象访问协议)头部);应用逻辑约束KA逻辑并可能要求附加网络连接;应用级可能不支持对故障模式和恢复的快速检测;应用程序开发者可能不具有必需的资源、时间、或专业知识来致力于完善基本上是系统级解决方案的方案;以及,适应并响应于移动漫游和不同的连网环境中的困难。
概述
以下提出了简化概述以便提供对在此描述的各新颖实施例的基本理解。本概述不是详尽的概览,并且它不旨在标识关键/重要的元素,也不旨在描绘其范围。其唯一的目的是以简化的形式来介绍一些概念,作为稍后提出的更为详细的描述的序言。
所公开的体系结构提供一种用于通过采用带外(OOB)技术来保持网络地址转换(NAT)设备的连接状态活动的解决方案,该带外技术可在本机应用程序连接外部应用而不对该底层本机应用程序和/或应用协议施加任何要求或修改。本技术提供单独的保活(KA)应用程序,该保活应用程序通过将KA分组注入到本机应用程序来维持连接并且此后在该KA分组到达本机应用程序之前移除(例如丢弃)该KA分组,来以OOB方式与本机应用程序一起操作。在替换实现中,KA分组不被移除而是由本机应用程序来处理(例如,过滤、丢弃……)。
该体系结构充分利用了常见NAT状态管理机制中的“逻辑空洞”。这些逻辑空洞不是“隐错”并且由此不被认为是安全漏洞,而仅仅是对内连连网设备所施加的约束的人工产物。一个逻辑空洞的性质与基于连接活动来维持NAT状态相关。NAT设备启动每一活动连接的超时定时器,并在每次该连接经历通信(例如分组活动)时复位该连接的超时(或不活动)定时器。如果在给定连接上未检测到通信,则超时定时器对该连接期满并且该连接失败。此外,NAT通常不验证通信的合法性(例如该通信所来自的端点)。
利用该逻辑空洞,并且在一个示例性客户机/服务器环境中,可以采用在客户机和/或服务器上运行的第二网络KA应用程序作为OOB机制,来注入表现为来自本机连接的哄骗分组。这些注入的分组欺骗NAT设备复位该连接的不活动定时器,但不欺骗本机应用程序或使其混淆,这对哄骗而言是易于忘记的。因此,连接将不会由于NAT超时而终止,并且因此客户机/服务器协议将不必生成伪造的活动分组来保持该连接活动。
该体系结构向通过NAT设备的任意不活动网络连接提供持续性,并且对诸如TCP(传输控制协议)等面向连接的端对端传输协议和诸如UDP(用户数据报协议)等无连接传输协议有效。
为了实现前述及相关目的,此处结合以下说明书及附图来描述所公开的新颖体系结构的某些说明性方面。然而,这些方面仅指示了可利用此处公开的原理的各种方法中的少数几种,且旨在包括所有这些方面及其等效方面。结合附图阅读下面的详细描述,则其它优点和新颖特征将变得显而易见。
附图简述
图1示出根据一实施例的方便连接管理的计算机实现的系统。
图2示出对连接的每一本机应用程序采用一保活(KA)应用程序的系统。
图3示出用于使用带外(OOB)KA分组来维持连接的客户机/服务器系统。
图4示出其中KA应用程序操作来处理多个连接的连接状态的替换系统。
图5示出OOB KA管理的方法。
图6示出基于连接策略的连接管理方法。
图7示出基于传输协议来管理NAT连接不活动的方法。
图8示出生成并利用KA分组来进行连接管理的方法。
图9示出可用于执行所公开的KA体系结构的计算系统的框图。
图10示出可采用OOB KA处理的示例性计算环境的示意性框图。
详细描述
所公开的体系结构提供一种用于通过采用带外(OOB)技术来保持网络地址转换(NAT)设备和/或软件的连接活动的解决方案,该带外技术可在本机应用程序连接外部应用而不对该本机应用程序施加任何要求或修改。该体系结构通过从在NAT设备的观点来看表现为本机连接的一部分的OOB源(例如应用程序)注入哄骗(或保活(KA))分组,来充分利用常见NAT状态管理机制中的“逻辑空洞”。这些注入的分组使NAT设备复位该连接的不活动定时器但不欺骗本机应用程序或使其混淆,这对哄骗而言是易于忘记的。因此,连接(例如,基于TCP(传输控制协议)或UDP(用户数据报协议))将不再由于NAT超时而终止,并且因此客户机/服务器协议例如将不再需要生成伪造的带内KA分组来保持该连接活动。
现在参考附图,附图中相同的附图标记用于指代在全文中相同的元素。在以下描述中,为解释起见,描绘了众多具体细节以提供对本发明的全面理解。然而,显然,这些新颖实施例可以在没有这些具体细节的情况下实现。在其它情况下,以框图形式示出了公知的结构和设备以便于描述它们。
一开始参考附图,图1示出根据一实施例的方便连接管理的计算机实现的系统100。系统100包括用于在软件实体104(示为软件实体1和软件实体2)之间提供任意通信连接的连接组件102(例如NAT设备)。系统100还包括接口到连接组件102的、用于发送由连接组件102来处理以维持连接的OOB KA分组(或信号)的保活组件106。
在一个实现中,KA组件106监控软件实体104所在的计算系统上的TCP/IP栈系统表活动。例如,新表项指示可向其中插入KA分组的新连接。可以监控软件实体所在的系统中的TCP/IP表。例如,可以监控客户机系统表。类似地,在涉及服务器的情况下,可以监控服务器系统TCP/IP表中的项活动(例如,移除或新项)。
在替换和可任选实施例中,KA组件106可以监控软件实体104中的一个或两者的连接分组活动,并基于此将活动KA分组插入到连接中。KA分组可以由KA组件106外部地或在连接组件102的任一侧或两侧(例如,经由通过该连接路由分组的其它网络设备)插入到连接组件102的对应连接中,以使所插入的KA分组被连接组件102作为正常的带内通信来察觉。在连接组件102每次检测到分组(带内和/或保活)出现后,KA分组随后复位该连接的连接定时器。
系统表可由KA组件106来直接监控和/或经由连接组件102来间接监控。例如,如果表活动指示连接应被维持,则KA组件106将KA分组注入到该连接中,以使KA分组由连接组件102来处理以便复位连接定时器来维持该连接。
在替换和可任选示例中,软件实体104中的一个或多个所监控的连接分组活动(或连接分组活动的缺乏)可被传递给KA组件106,以使KA组件106向连接组件102发送KA分组,连接组件102随后将该KA分组插入到该连接中以用于自处理和超时定时器复位。在另一示例中,基于如由KA组件106所直接监控的连接分组不活动和保持该连接活动的期望,KA组件106可以用信号通知软件实体104中的任一个或两者在该连接上生成带内KA分组,以复位该连接的超时定时器。在软件实体104是KA应用程序的情况下,KA组件106可以用信号通知软件实体104中的任一个或两者将OOB分组插入到该连接中来维持该连接。应当理解,可以周期性地发送KA分组而不管表中的不活动或带内通信。
系统100的一个实现包括作为连接组件102的一部分的NAT设备,以使软件实体104通过该NAT设备来彼此通信。软件实体104(作为本机应用程序)经由该连接通过NAT来通信,从而通过规则的带内分组(只在本机应用程序之间)的通信创建活动连接。具有超时定时器的NAT设备基于从本机应用程序104接收到带内分组来不断地复位定时器。
然而,偶尔,如果NAT设备在超时时段内未接收到带内分组,则NAT丢弃该连接并且应用程序需要通过该NAT设备重新建立连接。该体系结构通过提供至少一个KA应用程序(例如作为KA组件106的一部分)来解决该问题,该KA应用程序与本机应用程序104中的一个或多个一起启动以使该KA应用程序生成KA分组并将其插入到该连接中,从而使得NAT设备自动地复位超时定时器并且因此维持该连接。在从系统表中移除表项时,不再向该连接插入KA分组。
在一个实现中,KA组件106响应于感测到操作系统TCP/IP表中的新项来启动KA应用程序。因此,可以管理通过NAT来操作的多个不同的连接。在另一实现中,为每一本机应用程序(或软件实体104)启动一个KA应用程序。在此,本机应用程序处理带内分组通信,而KA应用程序通过将KA分组插入到适当的NAT连接中来执行OOB分组活动以维持该连接,直到确定该连接应被断开为止。这将在图2中更详细地描述。
图2示出对连接的每一本机应用程序采用一KA应用程序的系统200。在此,KA组件106包括两个KA应用程序202:第一KA应用程序204(示为KA应用程序1)和第二KA应用程序206(示为KA应用程序2)。第一KA应用程序204和/或第二KA应用程序206中的一个或两者监控系统表项活动。在检测到新表项(例如在TCP/IP系统表中)时,KA应用程序(204和/或206)中的一个或两者开始将KA分组插入到该连接中。
在替换和可任选实施例中,在连接维持是基于分组通信而非表活动的情况下,第一KA应用程序204监控连接组件102(例如NAT设备)和第一本机应用程序208(示为本机应用程序1)之间的本机分组通信,和/或第二KA应用程序206监控连接组件102和第二本机应用程序210(示为本机应用程序2)之间的本机分组通信。如此处所描述的,本机应用程序(208和210)被称为带内通信,而KA应用程序(204和206)被称为OOB通信。通过监控与第一本机应用程序系统相关联的系统表,可以发现第一本机应用程序的网络5元组(例如,协议号、源IP地址、源端口、目的地IP地址和目的地端口)。基于该信息,第一KA应用程序204可以观察并基于所观察的连接组件102的超时来采用所需的KA刷新时间段。KA刷新时间段比连接组件102的超时时间段短,以便KA分组在该连接的超时时间段期满之前发送。例如,如果超时时间段是15分钟,则可以将刷新选为10分钟(或小于超时时间段的任何其它合适值)。
在一个替换和可任选操作中,基于刷新时间段,第一KA应用程序204会在连接组件102的每次超时时间段期满之前将KA分组注入到连接中。当然,这是基于第一本机应用程序208的分组活动的。换言之,如果第一本机应用程序208例如通过从第一本机应用程序208到第一KA应用程序204的信号来指示不再需要与第二本机应用程序210通信,则第一KA应用程序204将停止向该连接注入KA分组。因此,连接组件102随后将使该连接超时并且该连接将失败。
在一个实施例中,在第一KA应用程序204正在发送KA分组时,第二KA应用程序206将移除该KA分组。因此,第二本机应用程序210将不再需要不必要地处理KA分组。
根据类似的和可任选的操作,通过监控第二本机应用程序210和连接组件102之间的分组通信而非系统表,第二KA应用程序206发现第二本机应用程序的网络5元组(例如,协议号、源IP地址、源端口、目的地IP地址和目的地端口)。基于该信息,第二KA应用程序206可以观察并基于所观察的连接组件102的超时来采用合适的KA刷新时间段。基于该刷新时间段,第二KA应用程序206将在每次超时时间段期满之前向该连接注入KA分组。当然,这是基于第二本机应用程序210的活动的。换言之,如果第二本机应用程序210指示不再需要与第一本机应用程序208的通信,则第二KA应用程序206将停止向该连接注入KA分组。因此,连接组件102随后将使该连接超时并且该连接将失败。
在另一实施例中,在第二KA应用程序206正在发送KA分组时,第一KA应用程序204将移除该KA分组。因此,第一本机应用程序208将不必处理KA分组。
根据另一操作,通过监控第一和第二本机应用程序(208和210)两者与连接组件102之间的分组通信,对应的第一和第二KA应用程序(204和206)发现本机应用程序的网络5元组。基于该信息,第一和第二KA应用程序(204和206)可以观察并基于所观察的连接组件102的超时来采用所需的KA刷新时间段。基于该刷新时间段,第一和/或第二KA应用程序(204和206)将在每次超时时间段期满之前向该连接注入KA分组。当然,这是基于对应的第一和第二本机应用程序(208和210)的活动的。在又一实现中,只要在NAT超时期满的某点处,连接组件102的两侧都被刷新,则两个KA应用程序(204和206)可以独立地操作。
换言之,根据该可任选实现,如果第二本机应用程序210例如通过从第二本机应用程序210到第二KA应用程序206的信号来指示不再需要与第一本机应用程序208的通信,则第二KA应用程序206将停止向连接注入KA分组。类似地,如果第一本机应用程序208指示不再需要与第二本机应用程序210的通信,则第一KA应用程序204将停止向该连接注入KA分组。因此,连接组件102随后将使该连接超时并且该连接将失败。当第一和第二KA应用程序(分别是204和206)两者都在发送KA分组时,相对的第二和第一KA应用程序(分别是206和204)可以移除所接收到的KA分组。因此,第一第二本机应用程序(208和210)将不必被配置来处理KA分组。
图3示出用于使用OOB KA分组来维持连接的客户机/服务器系统300。更具体地,在客户机/服务器场景中,客户机304的客户机本机应用程序302打开通过NAT设备306到服务器310的服务器本机应用程序308的持久UDP或TCP连接。该体系结构对诸如TCP等面向连接的端对端传输协议和诸如UDP等无连接传输协议有效。客户机304还可以包括通过其发生通信的防火墙、过滤或多路复用组件312(此后统称为防火墙312)。通信经由客户机TCP/IP栈和表314,通过NAT设备306、服务器TCP/IP栈和表316、以及服务器防火墙318、到服务器本机应用程序308的连接来进行。栈(314和316)具有相关联的TCP/IP协议系统表,该表用所建立的每一新连接的新表项来更新并丢弃被丢弃的连接的表项。
根据一个实现,在客户机304和服务器310这两侧都启动KA应用程序(共同描述为KA组件106)。客户机KA应用程序320在客户机304上启动,且服务器KA应用程序322在服务器310上启动。可以理解,KA组件应用程序(320和322)可以用操作系统来启动以作为后台进程持续运行。如上所述,KA组件106(客户机和服务器KA应用程序中的一个或两者(320和/或322))可以经由与TCP/IP栈(314和316)相关联的TCP/IP表来发现连网5元组(例如,协议号、源IP地址、源端口、目的地IP地址、以及目的地端口)。
KA应用程序(320和322)可以共同或独立地观察并(基于所观察的NAT超时)采用所需的KA刷新时间段。例如,假定NAT设备306后(例如在专用侧)的客户机304打开到(在公共侧)服务器310的TCP连接,并且此后维持安静(无分组活动)。建立该连接在客户机TCP/IP系统表中产生新表项。在没有KA应用程序106的情况下,如在常规实现中,NAT设备306将使该连接状态超时并致使该TCP连接无用。利用以所描述的OOB方式操作的KA组件106确保了该TCP连接将不会由于NAT超时而终止,并且因此客户机/服务器协议将不必生成“伪造”带内活动来保持该连接活动。如果所观察的NAT超时例如是15分钟,则刷新时间段(或值)可以小于15分钟(例如10分钟)。一般而言,采用小于所观察的NAT设备超时时间段的KA刷新时间段。
在操作中,KA应用程序(320和322)共同地或独立地(取决于传输协议)从客户机304、服务器310或客户机304和服务器310两者发送KA(或哄骗)连接分组。KA组件106运作来在NAT设备306的接收侧移除哄骗分组,从而通过处理KA分组来消除接收本机应用程序中的混淆。
在替换实现中,在本机应用程序(客户机本机应用程序302或服务器本机应用程序308)足够稳健来处理哄骗分组而不会混淆(或造成出错)时,不执行KA组件106对哄骗分组的移除。这可以包括识别和丢弃哄骗分组。例如,可以在接收侧通过检查分组数据中唯一地定义哄骗分组的信息来过滤和/或移除KA分组。KA分组可以是零净荷分组(只有头部)。还可以使用其它方式。在每次接收到哄骗分组后(以及接收到本机分组后),NAT设备306复位NAT连接超时。由于TCP/IP协议的性质,所以哄骗是在原始IP层执行的,因为UDP/TCP协议不允许发送者和接收者两者的多个应用程序都绑定到相同的5元组。
KA组件106可以通过与相应的防火墙(312和318)和/或系统TCP/IP栈和表(34和316)通信来发现本机应用程序5元组另外,KA分组移除可以由相应的接收防火墙(312和318)使用过滤功能来实现。此外,系统300不限于客户机/服务器场景,而还适用于对等拓扑结构。
图4示出其中KA应用程序操作来处理多个连接的连接状态的替换系统400。系统400包括寻求通过NAT设备306与第二系统404通信的第一系统402(例如,便携式计算机)。第一系统402包括两个本机应用程序:第一本机应用程序406和第二本机应用程序408。第一系统402还包括接口到第一和第二本机应用程序(406和408)的第一KA应用程序410,其经由第一系统402的TCP/IP系统表项来监控第一系统402的本机应用程序系统间(402和404)活动。可任选地,第一KA应用程序410还可以经由NAT设备306来监控连接的连接状态。
类似地,第二系统404(例如web服务器)通过NAT设备306与第一系统402通信。在该具体示例中,第二系统404包括两个本机应用程序:第三本机应用程序412和第四本机应用程序414。第二系统404还包括接口到第三和第四本机应用程序(412和414)的第二KA应用程序416,其经由第二系统404的TCP/IP系统表项来监控第二系统404的本机应用程序活动。可任选地,第二KA应用程序416还可以经由NAT设备306来监控NAT连接的连接状态。
在该示例中,第一和第三本机应用程序(406和412)打开通过NAT设备306的第一连接(示为连接1),并且第二和第四本机应用程序(408和414)打开通过NAT设备306的第二连接(示为连接2)。基于第一系统402中的新TCP/IP系统表项和/或第二系统404中的新TCP/IP系统表项,第一和第二KA应用程序(410和416)向对应的第一和第二连接提供KA分组,以维持所需的第一和/或第二连接的连接状态。
在其中任一系统(402或404)中都没有本机应用程序活动的初始状态中,不启动KA应用程序(410和416)。在第一本机应用程序406打开通过NAT设备306的第一连接时,第一KA应用程序410启动并采用第一连接KA分组的刷新时间段。例如,第一连接到第三本机应用程序412是活动的;然而,如果该连接是不活动的并且期望该第一连接不应是不活动的,则第一KA应用程序410将自动地向该第一连接插入第一连接KA分组以维持该第一连接。在检测到第三本机应用程序412中的活动时,第二KA应用程序416(现在是接收KA应用程序)将从分组流中过滤出所接收到的KA分组。因此,第三本机应用程序412可以接收分组流而不受KA分组处理和/或过滤的妨碍。
如果第二本机应用程序408此时被激活,并且打开到第四本机应用程序414的第二连接,则因为第一KA应用程序410已经知道NAT设备306的刷新时间段,因此只要第二连接(连接2)需要不活动控制,则对于该第二连接将KA连接维持应用于NAT设备306。因此,第一KA应用程序410可以管理通过单个NAT设备306的多个连接。在替换操作中,第一KA应用程序410管理第一连接,而第二系统404的第二KA应用程序410管理第二连接。可以看到,在具有用于多个连接的多个端口的NAT设备的典型实现中,可以执行多个连接KA管理。
图5示出OOB KA管理方法。尽管出于解释简明的目的,此处例如以流图或流程图形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,这些方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其它动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非方法中的所有所示动作都是对于新颖实现所必需的。
在500处,打开不同系统的本机应用程序之间的NAT连接。在502处,确定该NAT连接的刷新时间段。换言之,KA应用程序可包括将基于其传送KA分组的刷新值表。刷新值可被硬编码(例如每30秒)在KA应用程序中,或KA应用程序可以使用预计算的值。可任选地,刷新时间段可由相关联的KA应用程序基于NAT超时时间段来自动地计算。在504处,基于系统表活动来监控连接。在506处,使用KA应用程序基于所选择的刷新值来自动地在发送侧将KA分组插入到连接。在508处,在接收侧按需移除KA分组。换言之,不要求接收KA应用程序在接收侧移除KA分组。
图6示出基于连接策略的连接管理方法。在600处,打开本机应用程序之间的NAT连接。在602处,相关联的KA应用程序基于NAT超时时间段来选择刷新值。在604处,获取并处理与该连接相关联的策略。在606处,使用KA应用程序基于所选择的刷新值来自动地在发送侧将KA分组插入到连接。在608处,根据策略用KA分组操作该连接。换言之,该策略可以指示该连接保持打开预定一段时间并在该时间期满之后关闭该连接,而不管带内或OOB分组通信是否已经终止。
图7示出基于类型传输协议来管理NAT连接不活动的方法。在700处,打开本机应用程序之间的NAT连接。在702处,基于本机应用程序的活动,启动对应的KA应用程序中的一个或多个。在704处,KA应用程序中的一个或多个基于NAT超时时间段来选择刷新时间段。在706处,KA应用程序基于栈表活动来监控对应的本机应用程序连接。在708处,基于TCP分组的先前通信,从KA应用程序中的每一个将KA分组自动地插入到该连接。另选地,在710处,基于UDP分组的先前通信,从KA应用程序中的一个或两者将KA分组自动地插入到该连接。因为TCP是面向连接的端对端传输协议,所以需要两个KA应用程序都操作来插入KA分组和移除KA分组。因为UDP是无连接传输协议,所以在大多数情况下,只需要KA应用程序中的一个操作来将KA分组插入到NAT连接中。
图8示出生成并利用KA分组来进行连接管理的方法。在800处,一个本机应用程序打开通过NAT设备的到另一本机应用程序的连接。在802处,在启动KA应用程序之后,KA应用程序中的一个或多个利用刷新时间段。在804处,发起发现过程来发现本机应用程序的连网5元组的发现过程。这可以经由TCP/IP表来进行。在806处,使用5元组信息来为特定连接构造KA分组。在808处,基于刷新时间段将KA分组插入到该连接以复位NAT超时定时器。在810处,通过NAT设备的已被处理的KA分组在到达本机应用程序之前被移除。
如在本申请中所使用的,术语“组件”和“系统”旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是但不限于,在处理器上运行的进程、处理器、硬盘驱动器、多个(光和/或磁存储介质的)存储驱动器、对象、可执行代码、执行的线程、程序、和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一台计算机内上/或分布在两台或更多的计算机之间。
现在参考图9,示出了可用于执行所公开的KA体系结构的计算系统900的框图。为了提供用于其各方面的附加上下文,图9及以下讨论旨在提供对其中可实现本体系结构的各方面的合适的计算系统900的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,本体系结构也可结合其它程序模块和/或作为硬件和软件的组合来实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。此外,本领域的技术人员可以理解,本发明的方法可用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上耦合到一个或多个相关联的设备。
所示各方面也可以在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任意方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、数字视频盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可以用于存储所需信息并且可以由计算机访问的任何其它介质。
再次参考图9,用于实现各方面的示例性计算系统900包括计算机902,计算机902包括处理单元904、系统存储器906和系统总线908。系统总线908向包括但不限于系统存储器906的各系统组件提供到处理单元904的接口。处理单元904可以是市场上可购买到的各种处理器中的任意一种。双微处理器和其它多处理器体系结构也可用作处理单元904。
系统总线908可以是若干种总线结构中的任一种,这些总线结构还可互连到存储器总线(带有或没有存储器控制器)、外围总线、以及使用各类市场上可购买到的总线体系结构中的任一种的局部总线。系统存储器906包括只读存储器(ROM)910和随机存取存储器(RAM)912。基本输入/输出系统(BIOS)储存在诸如ROM、EPROM、EEPROM等非易失性存储器910中,其中BIOS包含帮助诸如在启动期间在计算机902内的元件之间传输信息的基本例程。RAM 912还可包括诸如静态RAM等高速RAM来用于高速缓存数据。
计算机902还包括内置硬盘驱动器(HDD)914(例如,EIDE、SATA),该内置硬盘驱动器914还可被配置成在合适的机壳(未示出)中供外部使用;磁软盘驱动器(FDD)916(例如,从可移动磁盘918中读取或向其写入);以及光盘驱动器920(例如,从CD-ROM盘922中读取,或从诸如DVD等其它高容量光学介质中读取或向其写入)。硬盘驱动器914、磁盘驱动器916和光盘驱动器920可分别通过硬盘驱动器接口924、磁盘驱动器接口926和光盘驱动器接口928连接到系统总线908。用于外置驱动器实现的接口924包括通用串行总线(USB)和IEEE 1394接口技术中的至少一种或两者。
驱动器及其相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机902,驱动器和介质容纳适当的数字格式的任何数据的存储。尽管以上对计算机可读介质的描述涉及HDD、可移动磁盘以及诸如CD或DVD等可移动光学介质,但是本领域的技术人员应当理解,示例性操作环境中也可使用可由计算机读取的任何其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等等,并且任何这样的介质可包含用于执行所公开的方法的计算机可执行指令。
多个程序模块可存储在驱动器和RAM 912中,包括操作系统930、一个或多个应用程序932、其它程序模块934和程序数据936。所有或部分操作系统、应用程序、模块和/或数据也可被高速缓存在RAM 912中。应该明白,本体系结构可以用各种市场上可购得的操作系统或操作系统的组合来实现。应用程序932和/或模块934可包括本机应用程序、KA应用程序、和/或先前描述的KA组件。
用户可以通过一个或多个有线/无线输入设备,例如键盘938和诸如鼠标940等定点设备将命令和信息输入到计算机902中。其它输入设备(未示出)可包括话筒、IR遥控器、操纵杆、游戏手柄、指示笔、触摸屏等等。这些和其它输入设备通常通过耦合到系统总线904的输入设备接口942连接到处理单元908,但也可通过其它接口连接,如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等等。
监视器944或其它类型的显示设备也经由接口,诸如视频适配器946连接至系统总线908。除了监视器944之外,计算机通常包括诸如扬声器和打印机等其它外围输出设备(未示出)。
计算机902可使用经由有线和/或无线通信至一个或多个远程计算机,诸如远程计算机948的逻辑连接在网络化环境中操作。远程计算机948可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见的网络节点,并且通常包括以上相对于计算机902描述的许多或所有元件,尽管为简明起见仅示出了存储器/存储设备950。所描绘的逻辑连接包括到局域网(LAN)952和/或例如广域网(WAN)954等更大的网络的有线/无线连接。这一LAN和WAN连网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。
当在LAN网络环境中使用时,计算机902通过有线和/或无线通信网络接口或适配器956连接到局域网952。适配器956可以方便到LAN 952的有线或无线通信,并且还可包括其上设置的用于与无线适配器956通信的无线接入点。
当在WAN连网环境中使用时,计算机902可包括调制解调器958,或连接到WAN 954上的通信服务器,或具有用于通过WAN 954,诸如通过因特网建立通信的其它装置。或为内置或为外置以及有线或无线设备的调制解调器958经由串行端口接口942连接到系统总线908。在网络化环境中,相对于计算机902所描述的程序模块或其部分可以存储在远程存储器/存储设备950中。应该理解,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
计算机902可用于与操作上设置在无线通信中的任何无线设备或实体通信,这些设备或实体例如有打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签相关联的任何一个设备或位置(例如,公用电话亭、报亭、休息室)以及电话机。这至少包括Wi-Fi和蓝牙TM无线技术。由此,通信可以如对于常规网络那样是预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。
现在参考图10,示出了可采用OOB KA处理的示例性计算环境1000的示意性框图。系统1000包括一个或多个客户机1002。客户机1002可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,客户机1002可容纳cookie和/或相关联的上下文信息。
系统1000还包括一个或多个服务器1004。服务器1004也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器1004可以例如通过使用本体系结构来容纳线程以执行变换。在客户机1002和服务器1004之间的一种可能的通信能够以适合在两个或多个计算机进程之间传输的数据分组的形式进行。数据分组可包括例如cookie和/或相关联的上下文信息。系统1000包括可以用来使客户机1002和服务器1004之间通信更容易的通信框架1006(例如,诸如因特网等全球通信网络)。
通信可经由有线(包括光纤)和/或无线技术来促进。客户机1002操作上被连接到可以用来存储对客户机1002本地的信息(例如,cookie和/或相关联的上下文信息)的一个或多个客户机数据存储1008。同样地,服务器1004可在操作上连接到可以用来存储对服务器1004本地的信息的一个或多个服务器数据存储1010。
客户机1002和服务器1004两者都可以包括监控诸如NAT路由器、网关等网络接口(未示出)的KA应用程序。如上所述,客户机1002能以对等方式互连,这样通过使用本地KA应用程序,连接状态管理可以在客户机中的一个或两者的内部。
以上所描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多其它组合和排列都是可能的。因此,本新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在说明书或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡此时所解释的相似的方式为包含性的。