用于会话管理和用户鉴别的方法和设备的制作方法

文档序号:6419016阅读:257来源:国知局
专利名称:用于会话管理和用户鉴别的方法和设备的制作方法
技术领域
本发明涉及本发明涉及计算机系统,说的更具体些,本发明涉及用户鉴别和用户会话的位置管理。
背景技术
计算机系统的构造范例随着时间而改变。早些时候,计算机包括所谓的“主机”(mainframe)计算机,由多个“哑终端”(dumb terminal)对其存取。主机是提供计算能力和数据存储的中央站。哑终端是显示由主机提供的数据的显示装置,它还提供了把某些数据传送给主机的装置。以后有其他的系统,包括台式计算机、客户机/服务器结构,而最近,又有所谓的网络计算机。
台式计算机是一种自备式(self contained)计算系统,其中,所有的应用程序和数据都存在于台式计算机系统的本身。这些系统以个人计算机的方式来实施,并且推动了在家庭和办公室中使用计算机。台式计算机的一个缺点是在系统中使用的硬件的寿命较短。台式计算机由微处理器驱动,并且当可以得到更快和功能更强大的微处理器时,就需要更新现有的台式系统,或者购买新的台式系统。在许多办公室中,到处有个人台式计算机,有时数以千计乃至数以万计。这些庞大系统的缺点是在各别系统上的应用程序和数据缺少兼容性。某些用户可以有软件应用程序的更新的版本,它们不能与软件的较老的版本向后兼容。解决这个问题的办法是在所有的系统上保持一致的软件。然而,对每个系统升级以及提供软件的经许可的拷贝和软件升级的成本很高。
客户机服务器系统是这样的系统,其中,可由个人计算机客户机通过网络访问数据和/或应用程序的中央存储。这在保持共享数据方面提供了一些行政管理(administrative)效率。然而,用户机仍然具有本地应用程序和数据,它们能呈现已经描述的台式系统中面临的同样类型的问题。
近来,互联网的兴起已经导致建议使用所谓的“网络计算机”。网络计算机是个人计算机的经过删削的(stripped down)版本,它的存储空间较小,存储器较小,并且运算能力常常也较差。其观点是,网络计算机将通过互联网存取数据,因而将只把特别任务所需的应用程序提供给网络计算机。当应用程序不再被使用时,就不再把它们存储在网络计算机上。对这些系统有一些批评,如缺少完整的台式系统的能力,还不是便宜得足以证明能力的降低是合算的。并且即使网络计算机是台式计算机的子设备,网络计算机仍然要求硬件和软件升级,以保持合适的性能水平。
在RFC2131中提供动态主机构造协议的一例。RFC1321和2104包含MD5,或消息文摘(digest)。在RFC1994中包含点对点查询(challenge)主机鉴别协议。
发明概述鉴别和会话管理系统能够与一个系统结构一起使用,该系统结构在人类接口(human interface)装置(HID)和计算服务提供器(诸如服务器)之间划分功能性(functionality)。当用户藉助于HID与系统连接时,对服务器执行的鉴别管理器与HID交互作用,以证实用户。对服务器执行的会话管理器代表用户管理在提供计算服务(例如,程序)的计算机上运行的服务。会话管理器通知会话中的每个服务,用户使用给定的台式机与系统相连。当用户与系统相连时,服务能把显示输出引至HID。当用户与系统分开时,藉助于鉴别管理器和会话服务器通知为用户执行的每个服务。在通知用户已经与系统分开后,当停止服务对台式机的显示时,服务继续执行。
附图简述

图1是用于本发明的一个或多个实施例中的系统构造的一例。
图2示出按照本发明的实施例的鉴别和会话管理部件和它们的交互作用。
图3提供用于按照本发明的实施例响应于上电操作初始化网络终端的过程流。
图4A-4C提供用于按照本发明的实施例响应于唤醒操作初始化网络终端202的过程流。
图5A-5B提供按照本发明的实施例的鉴别过程流。
图6提供按照本发明的实施例的查询过程流。
图7和8提供在本发明的一个或多个实施例中使用的系统构造的一些例子。
发明详述描述了一种用于会话管理和用户鉴别的方法和设备。在下面的描述中,为了提供对于本发明的更彻底的描述,提出了许多具体的细节。然而,显然,对于熟悉本领域的人而言,可以实践本发明而无需这些具体的细节。在另一些情形中,没有详细描述公知的特征,从而不致模糊本发明。
总的看法按照本发明的一个或多个实施例描述用于鉴别系统用户和在系统中代表用户执行的管理服务的方法和设备。在本发明的一个实施例中,在一个系统结构中进行鉴别和会话管理,该系统结构把计算功能在用户HID和诸如服务器的计算服务提供者之间进行划分。
图1、7和8提供了用于本发明的一个或多个实施例的系统结构的一些例子。能够在标准台式计算机系统(诸如在图1中描述的)或者在任何其他的计算机系统(包括客户机一服务器系统、网络计算机、或包括图7和8的人类接口装置系统)中实施本发明。
计算机执行环境(硬件)的实施例本发明的实施例能够作为计算机软件以计算机可读代码,或者字节码类文件的形式来实施,其中,计算机可读代码在诸如图1所示的通用计算机上执行,而字节码类文件可在这种计算机上运行的JavaTM运行时间环境中执行。把键盘110和鼠标器111耦合至双向系统总线118。键盘和鼠标器用于把用户输入引入至计算机系统,并且把该用户输入传送至处理器113。除了鼠标器111和键盘110之外,或者代替鼠标器111和键盘110,可以使用其他合适的输入装置。耦合至双向系统总线118的I/O(输入/输出)单元119代表诸如打印机、A/V(音频/视频)I/O、等等。
计算机100包括视频存储器114、主存储器115和海量存储器112,这些存储器连同键盘110、鼠标器111和处理器113都耦合至双向系统总线118。海量存储器112可以包括固定的和可移动的媒体,诸如磁、光或磁光存储系统,或任何其他可用的海量存储器技术。总线118可以包括例如32位地址线,用于寻址视频存储器114和主存储器115。总线118例如也可以包括32位数据总线,用于在诸如处理器113、主存储器115、视频存储器114和海量存储器112等部件之间传递数据。另一种做法是,不用分开的数据线和地址线,而使用多路复用数据/地址线。
在本发明的一个实施例中,处理器113是诸如680×0处理器等由Motorola制造的微处理器,或者诸如80×86或Pentium处理器等由Intel制造的微处理器,或者来自Sun MicrosystemsTM,Inc的SPARCTM微处理器。然而,也可使用任何其他合适的微处理器或微型计算机。主存储器115包括动态随机存取存储器(DRAM)。视频存储器114是双口视频随机存取存储器。视频存储器114的一个端口耦合至视频放大器116。视频放大器116用于驱动阴极射线管(CRT)光栅监视器117。另一种做法是,能够用视频存储器114来驱动平板或液晶显示器(LCD),或任何其他合适的数据呈现装置。视频放大器在本领域中是众所周知的,并且可以用任何合适的设备来实现。这个电路把存储在视频存储器114中的像素数据转换为适合由监视器117使用的光栅信号。监视器117是一种适合于显示图形图像的监视器。
计算机100也可以包括耦合至总线118的通信接口120。通信接口120提供双向数据通信,它藉助于网络链路121耦合至本地网络122。例如,如果通信接口120是综合业务数字网(ISDN)卡,或者是调制解调器或电缆调制解调器(cable modem),则通信接口120提供至相应类型的电话线路的数据通信连接,该电话线路包括网络链路121的一部分。如果通信接口120是局域网(LAN)卡,则通信接口120藉助于网络链路121提供至兼容的LAN的数据通信连接。无线链路也是可以的。在任何一种实施中,通信接口120发送和接收电信号、电磁信号或光信号,这些信号载有表示不同类型信息的数字数据流。
网络链路121一般通过一个或多个网络提供至其他数据装置的数据通信。例如,网络链路121可以通过本地网络122提供至本地服务器计算机123或者至由互联网服务提供商(ISP)124操作的数据设备的连接,而ISP124又通过现在一般称之为“互联网”的世界范围的分组数据通信网络125提供数据通信服务。局域网络122和互联网125都使用载有数字数据流的电信号、电磁信号或光信号。通过各种网络的信号和在网络链路121上并通过通信接口的120的信号(它们载有往返于计算机100的数字数据)是传送信息的载波的例示形式。
计算机100能够通过网络、网络链路121和通信接口120发送消息和接收数据,包括程序代码。在互联网的例子中,远地服务器计算机126可以通过互联网125、ISP124、本地网122和通信接口120对于应用程序传送所请求的代码。
当接收到代码时,可以由处理器113来执行该代码,和/或存储在海量存储器112或其他非易失性存储器中,以供以后执行。在此情形中,计算机100能够以载波的形式得到应用程序代码。
应用程序代码可以用任何形式的计算机程序产品来实施。计算机程序产品包括构造来存储或传送计算机可读代码的媒体,或者潜嵌入计算机可读代码的媒体。计算机程序产品的一些例子是CD-ROM盘、ROM卡、软盘、磁带、计算机硬盘驱动器、网络上的服务器和载波。
人类接口装置计算机系统本发明也可应用于这样的计算机系统,其中,要显示的数据是通过网络提供的。该网络可以是局域网、广域网、互联网、万维网(world wide web)或任何其他合适的网络结构。本发明的一个实施例用于这里称之为人类接口装置计算机系统的计算机系统架构中。
在此系统中,系统的功能在显示和输入装置、以及数据源和服务之间划分。显示和输入装置是人类接口装置(HID)。如此划分此系统,从而从HID去掉状态和计算功能,而让它们驻留在数据源或服务中。在本发明的一个实施例中,一个或多个服务通过某个互连构造(fabric)(诸如网络)与一个或多个HID通信。这种系统的一个例子在图7中示出。参看图7,该系统包括计算服务提供器700,它通过互连的构造701把数据传送至HID702。
计算服务提供器一在HID系统中,可在服务提供器或服务中找到计算能力和状态保持。服务不限于一台特定的计算机,而可以分布于一台或多台传统的台式系统(诸如结合图1描述的台式系统),或者与一些传统的服务器相连。一台计算机可以有一个或多个服务,或者一个服务可以可以由一台或多台计算机来实施。服务提供计算、状态和数据给HID,并且服务在共有的当局和管理者的控制之下。在图7中,在计算机710、711、712、713和714中找到服务。
服务的例子包括X11/Unix服务、存档视频服务、Windows NT服务、JavaTM程序执行服务,等等。这里的服务是指提供输出数据和对用户请求和输入作出响应的进程。
互连构造一在本发明中,互连构造是用于在服务和HID之间运送数据的多条合适的通信路径的任何路径。在一个实施例中,互连构造是作为以太网实施的局域网。也可以使用任何其他的本地网络。本发明也考虑使用广域网、互联网、万维网,等等。互连构造可以用物理媒体(诸如导线或光缆)来实施,或者可以在无线环境中实施。
HID-HID是这样的装置,用户用它来访问由服务提供的计算服务。图7示出HID721、722和723。HID包括显示器726、键盘724、鼠标器725和音频扬声器727。HID包括把这些装置连接至互连构造以及把数据发送至服务和从服务接收数据所需的电子线路。
图8示出HID的方框图。把HID的部件内部耦合至PCI总线812。网络控制部件802通过线路814与互连构造(诸如以太网)通信。音频编码解码器(codec)803接收在接口816上的音频数据,并且耦合至部件802。在线路813上提供至USB控制器801的USB数据通信。
嵌入式处理器804例如可以是具有耦合的快闪存储器805和DRAM806的Sparc2ep。USB控制器801、网络控制器802和嵌入式处理器804都耦合至PCB总线812。视频控制器809也耦合至PCB 812。视频控制器例如可以是ATIRagePro+帧缓冲器控制器,它在线路815上提供SVGA输出。分别通过视频解码器810和视频编码器811提供进出视频控制器的NTSC数据817。智能卡接口808也可以耦合至视频控制器809。
上面描述的计算机系统只是为了举例的目的。本发明的实施例可以在任何类型的计算机系统或者编程或处理环境中实施。
在本发明的一个或多个实施例中,构造鉴别和会话管理部件以鉴别用户以及定位和管理会话。会话是代表用户执行的一个或多个服务的有关集合的持续表示。本发明的实施例根据用户的当前位置来鉴别用户和再定位用户会话,而在要构造来进行用户确认和再定位的会话中不要求服务。本发明的实施例对于所有的用户服务鉴别用户一次。使用本发明的实施例,把服务引至用户当前使用的HID(或其他终端装置)。用户不需对每个服务进行登录和为特定的HID建立新的连接。
按照本发明的实施例,鉴别是单向鉴别,它提高了鉴别的易管理性和规模可改变性(scalability)。不需交换密钥也不需在中央数据库中进行密钥查找。
图2示出按照本发明的实施例的鉴别和会话管理部件和它们交互作用。网络终端202是人类接口装置(HID)(例如HID 821、822和823)。作为其功能的例子,HID具有对用户显示服务的输出和从用户得到至服务的输入。网络终端202具有对例如从软件程序(例如,服务230-238、鉴别管理器204和会话管理器206)接收到的命令(例如,显示命令)作出响应的能力,而软件程序是对计算服务提供器(例如,计算机710、711、712、713和714)执行的。从用户接收到的输入例如递送至实现用户请求的服务。
一个以上的服务器能够执行包括一个会话的多个服务。例如,在会话208中,在服务器210上执行服务230,在服务器212上执行服务232和234,而在服务器214上执行服务236和238。
用户通过开始登录而访问系统(例如,服务器、会话、服务和网络终端)。在登录期间,由鉴别管理器204使用户有效。能够使用各种技术以允许用户开始登录。例如,用户能够通过按在网络终端202上的一个键而开始登录。
在本发明的一个实施例中,用户通过在与网络终端202相连的读卡器(例如,读卡器216)中插入一张智能卡而访问系统。智能卡是这样一张卡,它能够信息存储在诸如智能卡的磁条或存储器中。智能卡能够存储发送至网络终端202的用户信息(诸如用户标识(即,用户ID,诸如64位数)和密码(例如,128位随机数))。密码在鉴定用户过程中使用。
网络终端202明白(或能够得到)其互连网络地址和鉴别管理器204的地址。当用户开始登录时,网络终端202开始与鉴别管理器204通信以开始鉴别。鉴别管理器204是一个程序,它对通过互连网络(例如,诸如局域网(LAN))连至网络终端202的计算服务提供器是有效的(例如,执行)。然而,应该清楚,该网络终端202能够使用其他互连网络技术(诸如光纤通道回路或点对点电缆)连至鉴别管理器204。网络终端202发送启动请求至鉴别管理器204,它包括用户识别(用户ID)。
在本发明的一个鉴别管理器204响应于启动请求通过开始鉴别而使用户有效。鉴别能够包括任何机构,它对系统核实用户ID。能够使用只有用户知道的密钥或密码或者生物测定学(biometrics)信息来鉴别用户。
在本发明的一个实施例中,鉴别是通过证实由用户在网络终端202处输入的个人标识号(PIN)进行的,鉴别管理器204发送命令(即,查问命令)以在用户终端202处开始输入用户PIN。由网络终端202把用户输入打包,并发送至鉴别管理器204(即,查问响应)。
鉴别管理器204用保留在鉴别数据库218中的用户信息、由用户提供的信息以及在鉴别期间产生的信息来证实查问响应。当对用户鉴别时,给予用户对会话的访问(即,会话208)。
如果从用户那里接收到期望的结果,则鉴别管理器204通知会话管理器206(通过连接消息),用户已经在网络终端202上登录入系统。使用容纳在数据库中的会话信息为会话管理器206识别服务器、端口和会话标识符(ID)。会话管理器206是这样的程序,它对计算服务提供器有效,并且例如通过互连网络连至鉴别服务器204和网络终端202。鉴别管理器204使用容纳在鉴别数据库218中的会话管理器206的服务器和端口信息发送消息至会话管理器206。
响应于来自鉴别管理器204的连接消息,会话管理器206通知用户的当前会话中的服务(即,会话208中的服务),用户被连至网络终端202。即,会话管理器发送连接消息至服务230-238,以把输出引至网络终端202。会话管理器206保证被认为是会话所需的服务的那些服务正在执行。如果不是,则会话管理器206使得它们被启用。用户能够与会话内的服务230-238(例如,会话208)交互作用。网络终端202通过互连网络(诸如局域网或其他互连技术)连至服务器210、212和214(和服务230-238)。用户也能开始新的服务或终止现有的服务。
用户通过从读卡器移走卡而与系统分开。表示断开的其他机制也能于本发明一起使用(例如,在网络终端202上的“停止活动”(sign off)按钮)。即使用户把卡从读卡器216移走,服务230-238仍能继续运行。即,在用户与系统不连接(例如,注销)期间用户的相关联的会话和包括会话的服务仍能继续存在。当用户从读卡器216移走卡时,网络终端202通知鉴别管理器(例如,通过断开消息),后者又通知会话管理器206(例如,通过断开消息)。会话管理器206通知服务230-238(例如,通过断开消息),后者终止传送显示命令至网络终端202。然而,在用户不登录在网络终端上的期间,服务230-238继续执行。用户能够再回来登录使用网络终端(诸如网络终端202),连至会话208,并且与服务230-238交互作用。
虽然图2描绘了每样是单个实体,但应该明白,能够有网络终端202、鉴别管理器204、会话208的多个实体。例如,可以有多个鉴别管理器204的实体用于服务网络终端202,或多个网络终端202的实体。例如,能够按照网络的拓朴把鉴别管理器204的多个实体组织在一个层次结构中,或者它们能够全体(globally)可供使用。
鉴别管理器具有多于一个实体的情况可以改进系统的规模性能(scalability),因为可以根据当前的负荷(例如,用户数)增添(或去除)鉴别管理器204的实体。此外,提高了可靠性,因为能够配置鉴别管理器204的冗余实体。
类似地,可以有多个会话管理器206的实体。与鉴别管理器204一样,会话管理器206的多个实体能够提高系统的规模性能和可靠性。
会话管理器会话管理器206保持有会话数据库220,该数据库包含着用户、会话和服务之间的映象。会话管理器206管理服务,这些服务包括由会话管理器206管理的每个会话。例如,会话管理器206保持会话208和会话208中的服务230-238。
为访问一个计算服务提供器,为用户首先建立一个帐户,或使该帐户有效。例如,按照本发明的一个实施例,为了允许某个用户,把userID(用户标识)、PIN和存储有userID和秘密代码的智能卡给该用户。此外,为该用户创建一个会话。如下面所述,一个会话可以没有或有多个所需的服务。当创建会话时,可能需要启用某些所需的服务。一当启用了一个服务,它就继续有效,而不管用户是否连至系统。当用户初次登录时,可以启用所需服务的结算。
一个用户不限于一个会话。在任何给定的时刻,可以有多个会话与一个用户相关联。会话数据库220包含着识别会话和在会话中的与用户相关联的服务的记录。能够把一个被允许的用户从系统中去除。当把用户从系统中去除时,就从系统和会话数据库220中去除所有与该用户相关联的会话。与用户会话相关联的服务也告中止。
一当允许用户使用一个系统时,该用户能够藉助于网络终端202在系统上登录。当鉴别管理器204通知会话管理器206,用户被连至网络终端202时,会话管理器206通知用户会话(即,构成一个会话的一些服务)。会话管理器206向会话数据库查询,以识别和通知会话的服务。例如,会话数据库220包括识别会话208和包括在会话208中的服务230-238的信息。
会话数据库220包含会话记录和动态会话记录,它们识别会话和与一个会话相关联的服务。会话数据库220可以是一个或多个数据库或数据存储体(data store)。例如,可以把永久会话记录存储在配置文件中,而把动态会话记录存储在数据库系统的存储器中。永久会话记录包含用户的配置信息,并且一般例如是在允许用户使用系统时创建的。一个动态会话记录识别与用户相关联的那些服务。动态会话记录识别在永久会话记录和当前有效服务中与一个用户会话相关联的所需的服务。下面包含了对于按照本发明的一个实施例的永久会话记录的格式sessionID serviceID serviceHost servicePort isLazysessionID字段唯一地标识包含所需服务的会话。serviceID字段唯一地标识与由sessionID识别的会话相关联的一个服务。serviceHost字段和servicePort字段标识服务在其上运行的服务器和服务器上的能用来接收通信的端口。isLazy字段识别启用服务的方式。例如,isLazy可以规定,在创建了会话后立即开始服务,或当用户首次访问系统时开始服务。serviceID、serviceHost、servicePort、isLazy可以多次出现(occurrence),每次出现识别一个由sessionID识别的与会话相关联的一个所需的服务。
动态会话记录识别会话所需的服务和当前在会话中执行的那些服务。例如,从永久会话记录检索会话所需的服务。动态会话记录能够识别当前代表用户执行的零个或多个服务(所需的或相反)。
在动态会话记录中用来存储关于一个服务的信息的字段取决于该服务是所需的服务还是服务。当前有效的所需的服务也是当前服务。识别会话的所需服务的动态会话记录的格式与永久会话记录格式相同。下面识别按照本发明一个实施例的与当前执行的服务相关联的一个记录的格式sessionLink TCPSocketfd requiredSeviceLink serviceIDsessionLink字段标识服务的会话。在会话管理器206和会话中的当前执行的服务之间建立一个开放连接(或管道)。能够用开放连接来通知会话管理器206或者服务,其他的已经非正常地(或者相反)终止。在本发明的一个实施例中,开放连接是TCP套接字(socket)连接,它由TCPSocketfd字段标识。然而,应该明白,任何形式的可靠的连接技术可以与本发明的实施例一起使用,只要该连接技术能够提供连接被禁止或消失的通知。
服务具有一个存储在serviceID字段中的标识符。能够把当前运行的服务链接至所要的服务。由requiredServiceLink来标识至所要的服务的链接。如果没有至所要服务的链接,则requiredServiceLink为零。
也能用动态会话记录来存储关于至网络终端(例如,网络终端202)的连接的信息。下面包含了按本发明的一个实施例标识链接的字段sessionLink status IPAddress一个用户可以与多个会话相关联。sessionLink字段标识当前链接着用户连至网络终端202的会话。例如,sessionLink可以具有sessionID值作为其值。status字段识别网络终端202与会话的连接状态(即,连接或断开)。IPAddress字段包含网络终端202的互连网络地址。在本发明的一个或多个实施例中使用IP地址。然而,应该明白,另外的互连技术可以使用另外的寻址方案。例如,异步传输模式(ATM)网络可以使用十三个数字开关前缀/端点标识符。
会话管理器206能够使用此信息以发送状态消息至网络终端202。如若网络终端202不在某个时间间隔内响应,则会话管理器206认为用户不再使用网络终端202,并且发送断开消息至会话中的每个服务。
会话管理器206觉察的其他信息包括至服务的开放连接(例如,具有开放TCPSockefd的服务)的列表,以及开放连接与会话和会话中的服务之间的映象。例如,可以根据会话记录来编辑信息。
可用于会话管理器206的信息能够用来对会话定位。例如,给定一个服务,可以找到包含该服务的会话和/或包含在一个会话中的一些服务。此外,例如,可以对一个会话定位,该会话与给定的用户或网络终端202的一个实体相关联,而不管它是否当前执行。
服务启用当会话管理器206从鉴别管理器204接收到消息,用户连至网络终端202,则会话管理器206启用当前没有激活的那些所要的服务。会话管理器206还通知当前激活的服务,以把输入/输出(I/O)引至网络终端202。能够用命令协议来表示I/O,该命令协议用来与网络终端202及其外围装置通信。(附录A包含有按照本发明的一个实施例的命令协议的例子。)为了启用一个服务,会话管理器206访问在服务器上执行服务,该服务用以开始这个服务。例如,会话管理器206发送一个请求至服务器上的公知的端口,并且为会话管理器206传送sessionHost、sessionPort和sessionID。服务器连至与服务相连接的网络终端202,并且使用服务器的本机的(native)鉴别和许可,以允许用户访问服务器。例如,在UNIX操作环境中,可以用在网络终端202处显示的“CDE登录”屏幕来开始UNIX服务,以鉴别用户和保证达到用户连至服务的愿望。
为了会话管理器206在服务器上开始一个服务,给出开始服务所需的特权。可能不希望把这些特权给予会话管理器206。此外,在当前的联网环境中,服务器可能运行不同的操作系统。在此情形中,为了启用一个服务,会话管理器206必须觉察到每个操作环境的过程。
另一种做法是,在服务器上运行的会话觉察的应用程序能够执行启用并向会话管理器206登记服务。在此情形中,会话管理器206无需具有需要的特权。此外,对于在多种操作环境上启用服务,会话管理器206不必实施集中的模型。启用服务的责任留给了会话觉察的在不同的操作环境中运行的应用程序。会话觉察的服务器应用程序具有会话管理器206(例如,具有会话管理器206的sessionID、sessionHost和sessionPort)及其接口(例如,消息格式)的资料。
会话觉察的服务器应用程序能够响应于从会话管理器206接收到的请求而启用服务。会话管理器206发送启用消息至服务器应用程序,该程序具有在服务器操作环境中开始服务的许可。服务器应用程序为会话管理器206启用该服务,并且用有效的sessionID来响应会话管理器206。在UNIX和NT系统中,例如,能够在操作环境中得到sessionID。例如,可以用这种方式开始诸如视频窗口等的服务。
另一种做法是,会话觉察的应用程序能够联系一个服务,以得到其许可,其形式为以密码方式标记的认可。服务器应用程序能够传送sessionID和标记的认可至会话管理器206。如果会话觉察的应用程序(它没有认可但有服务描述)联系会话管理器206,则会话管理器206能够从网络终端202请求批准,以保证用户认可该服务。如果用户作出肯定的响应,这把该服务添加至会话。
会话管理器消息会话管理器206接收和产生消息,以管理在会话中的服务。除了在这里描述的那些之外的技术能够用于启用服务。如果会话管理器206启用一个服务,则它发送一个启用消息至服务器(或者会话觉察服务器应用程序)。例如,会话管理器206能够产生一个启用消息以开始在会话数据库220中识别的所要的服务。作为另一个例子,会话管理器206能够发送一个启用消息以再激活一个所要的被确定为已经终止的服务(例如,藉助于在会话管理器206和服务之间的一个开放的TCP连接)。
当网络终端202的用户成功地与系统连接时,会话管理器206接收连接消息。响应于连接消息,会话管理器206证实,所有所要的服务已开始,并且开始了那些不在运行的服务。会话管理器206发送消息(例如,连接消息)值会话中的服务,以把I/O引至网络终端206。
当接收到断开消息时,会话管理器206发送一个断开消息至会话中的每个服务,以引导它们终止发送I/O至网络终端202。
会话管理器206能够周期地发送状态消息至网络管理器206,以保证网络终端202仍然连接着。例如,会话管理器206能够检查会话数据库220的动态会话记录,以识别当前连至网络终端的每个会话。即,会话管理器206能够检查会话数据库220中的动态会话记录中的与一个网络终端相关联的状态字段。会话管理器206发送一个状态请求(例如,一个“ping”(声脉冲))至与会话连接的每个网络终端。如果在某个时间间隔(例如,20秒)内从网络终端202接收不到回应,则会话管理器206认为该会话已为无效,并且它发送一个断开消息至会话中的每个服务,指令它们终止显示操作。
网络终端202用“卡插入”(Card In)或“卡取出”(Card Out)状态来响应从会话管理器206来的状态(例如,ping)请求。如果从网络终端接收到“CardOut”状态,则会话管理器206发送断开消息至每个会话服务。
如果响应于状态请求而发送“Card In”状态,则网络终端202也指出在读卡器216中插入卡的数目、从卡插入开始算起的秒数和卡标识符(ID)。卡ID例如是用于用户会话的会话标识符(ID)的值。会话管理器至少保持从网络终端202接收到的最后状态信息,以将新的状态信息与先前的状态信息作比较。如果,例如,插入的数目或者插入的秒数与最后状态信息不同,则会话管理器206考虑会话被禁止。在此情形中,会话管理器206发送断开消息至该会话的服务。
例如,当服务由会话觉察服务器应用程序开始时,把服务连接消息送至会话管理器206,如果服务具有合适的鉴别,则会话管理器206把该服务添加至该会话的服务列表,并且发送一个消息至服务,以把I/O引至网络终端202。
鉴别管理器鉴别管理器负责保证用户的合法性和用会话与用户相关联。在本发明的一个实施例中,在初始化进程(这将在下面详细描述)期间发生鉴别交换,以对用户进行鉴别。鉴别可以包括对系统证实用户标识的任何机制。例如,可以输入一个按键口令或者收集生物测定学数据以对用户进行鉴别。
鉴别数据库218包含着鉴别管理器204能够访问的用户信息和会话信息。在本发明的一个实施例中,包含在鉴别数据库218中的记录的格式如下userID secret PIN sessionHost sessionPort sessionIDuserID和secret字段包含的值与存储在用户智能卡中的那些值相同。一般,例如当允许用户使用系统时建立userID和secret值。在本发明的一个实施例中,secret字段包含一个128位的值。PIN字段是个人标识号(PIN),用户知道该号,并且在鉴别期间由鉴别管理器204请求该号。用userID、secret和PIN值来鉴别用户。如果用其他信息(诸如口令或生物测定学数据)来鉴别用户,则鉴别数据库218应能包含这些信息。
ssessionHost字段标识计算服务提供器(例如,服务器),该计算服务提供器是管理用户当前会话的执行会话管理器206。sessionPort字段标识用于与会话管理器206通信的端口。sessionID包含用于会话管理器206的唯一的标识符。如果鉴别成功,则sessionHost、sessionPort和sessionID字段用来把用户在网络终端202的位置通知会话管理器206。
在本发明的一个实施例中,使用查问机制来鉴别用户(图6提供了按照本发明的一个实施例的查问进程的流程。)鉴别管理器204发送查问至网络终端202,以证实用户的真实性。网络终端202准备查问响应,并且把它返回给鉴别管理器204。如果对于查问的响应与预料的一样,则对于鉴别管理器204证实了用户。
图5A-5B提供了按照本发明的一个实施例的鉴别进程的流程。鉴别进程可以重复一次以上,直至鉴别成功,或者重复(或循环)的次数超过某个数目。在步骤502处,把代表鉴别循环次数的标识符初始化为零。在步骤504处,产生一个用作查问次数的随机数。在步骤506处,鉴别管理器204向网络终端202发送N_AUTHENTICATE命令以及用于鉴别进程的信息包。
在本发明的一个实施例中,把下述信息连同N_AUTHENTICATE命令一起发送
code identifier lengthvalueSize valuecode字段标识包含在信息包中的信息的类型。例如,值“1”指出信息包中含有查问。identifier字段包含在步骤502处产生的值(即,循环指示器)。length字段标识信息包的长度。value字段包含在步骤504中产生的随机数或者查问的值。valueSize识别value字段的长度(例如,128位)。
在步骤508处,鉴别管理器204向网络终端发送重现(rendering)命令,敦促用户呈现其PIN。在步骤510处,鉴别管理器204等待来自网络终端202的响应或超时信号。
如果在步骤514处检测出超时,则在步骤514继续处理,以确定是否已经超过循环的最大值。如果没有超过,则在步骤518处继续处理,以递增标识符和在步骤504处继续处理,以开始新的鉴别循环。如果在步骤504处判定,已经出现了循环的最大值,则在步骤506处继续处理,其中,鉴别管理器204发送重现命令给网络终端202,指出鉴别失败,并且结束鉴别过程。例如,重现命令可以是命令协议的一部分,该协议用于与网络终端202及其外围装置通信。
查问例行程序包括由鉴别管理器204发送给网络终端202的命令,以俘获由用户输入的PIN并且产生响应。网络终端202产生响应值,它是散列函数(hash function)的输出(即,散列值或查问响应),它来自输入,包括用户PIN、标识符值、存储在用户的智能卡中的秘密值和查问值(例如,在步骤504中产生的随机数)。
散列函数能够取得可变长度输入并将它转换为固定长度的输出(散列值)。散列函数的一个例子是取得输入,并且返回一个字节,该字节包括所有输入字节的异或(XOR)。有许多可与本发明一起使用的散列函数的其他的例子。散列函数的一个例子是hmac_md5函数(RFC2104),它用于本发明的一个实施例,以产生响应。
按照本发明的一个实施例,由网络终端202使用下述数据包格式,以发送响应至鉴别管理器204code identifier length valueSize value userIDcode字段设置为值“2”,它指出在信息包中包含查问响应。value字段包含查问响应(例如,散列函数的结果)。userID字段包含用户的userID。
如果鉴别管理器204判定(在步骤510处),它收到来自网络终端202的响应,则在步骤512处继续处理,以判定由网络终端202返回的标识符是否与由鉴别管理器204产生的标识符匹配。如果匹配,则在步骤520处继续处理,以检查由网络终端202返回的响应。
在步骤520处,鉴别管理器204判定,查问响应是否与鉴别管理器204预期的响应匹配。例如,鉴别管理器204可以使用其标识符、PIN、秘密和查问值产生散列值。如果由鉴别管理器204产生的散列值与由网络终端202产生的查问响应相匹配,则鉴别部分地成功。鉴别管理器还证实,网络终端202和互连网络地址与用户的userID是有效的。如果证实了查问响应、互连网络地址和userID,则鉴别成功。如果不能证实,则鉴别失败。
如果鉴别成功,则在步骤528处继续处理,以发送N_AUTHENTICATE命令。按照本发明的一个实施例,该命令的格式如下code identifier lengthcode字段包含了值“3”,以指出已经对用户成功地进行了鉴别。在步骤530处继续处理,以向网络终端202发送重现命令,指出会话管理器206把用户连至一个用户会话。在步骤532处,鉴别管理器204通知会话管理器206,藉助于网络终端202把用户连至系统。在步骤532处,鉴别管理器204发送网络终端202互连网络地址和会话管理器206的sessionID给服务器,该服务器是执行会话管理器206(即,在用户鉴别数据库记录的sessionHost字段中被识别的服务器)。
如果鉴别失败,则在步骤522处继续处理,以发送N_AUTHENTICATE命令。与成功的鉴别相同,N_AUTHENTICATE命令包括code字段,该字段指出鉴别过程的状态。例如使用代码值“4”,以指出鉴别失败。在步骤524处继续处理,以向网络终端202发送重现命令,指出鉴别失败并且指令用户从读卡器移走智能卡。
鉴别过程在步骤526处结束鉴别过程。
参照图5A-5B描述的过程是鉴别过程的一例。应该理解,其他鉴别技术也能与本发明的实施例一起使用。在另一个实施例中,不要求用户输入PIN。在读卡器216中的用户卡足以鉴别用户。能够把userID和秘密值与识别符和从鉴别管理器204处接收到查问求散列,以由鉴别管理器204产生对查问的响应。这样,通过在读卡器中插入一张包含有用信息的卡,用户就能连至用户服务。
此外,应该明白,不进行用户鉴别也能使用本发明的实施例。例如,在一个信任或安全的环境中,可以无需证实用户的真实性。因此,在本发明的一个实施例中,把用户连至会话而不必首先由鉴别管理器204来进行鉴别。例如,用户只需提供标识(例如,userID)。如果用户提供有效的userID,则准许该用户访问与该userID相关联的会话。
当用户与网络终端202断开时,则通知鉴别管理器204,并将此断开通知会话管理器206。例如,当用户把智能卡从读卡器216中移走时,读卡器216通知网络终端202。网络终端202把此断开通知鉴别管理器。鉴别管理器204通知会话管理器206,用户已经与网络终端202断开。会话管理器206通知用户会话中的每个服务。
查问例行程序鉴别过程能够包括由鉴别管理器204启用的查问。图6提供按照本发明的用于处理查问的查问例行程序过程流。响应于从鉴别管理器204接收到的查问命令,对网络终端202执行查问例行程序。
在步骤602处,读取从用户处接收到的按键输入,直至按下回车或enter键。在步骤604处把按键输入翻译成ASCII字符。在步骤606,使用散列函数,根据标识符、PIN、秘密、和查问值的串接,产生散列值或查问响应。在步骤608处,把查问响应送至鉴别管理器204。在步骤610处,网络终端202等待来自鉴别管理器204的响应,或超时。如果发生响应或超时,则在步骤614处结束查问例行程序。
网络终端初始化当初次接通网络终端202时,它进行某些初始化。如果网络终端202通电,虽然用户不使用网络终端202,它也能处于睡眠(dormant)状态。用户例如能够使用这里描述的一种技术把网络终端中202从其睡眠状态唤醒。应该明白,能够使用其他技术来唤醒网络终端。
图3提供了按照本发明的一个实施例,响应于通电操作,对网络终端202进行初始化的进程流。在步骤302处,判定是否已经发生通电操作。如果没有发生,则继续处理,以等待通电操作。在步骤304处,由网络终端202向网络产生请求,以测试网络连接。在步骤306,判定是否接收到响应。如果没有接收到,则在步骤310处继续处理,以产生差错,并且在步骤302处继续处理,以等待通电操作。
如果在步骤306处判定,接收到回应,则在步骤308处继续处理,以发送确认(ACK)消息而能够在图4A的步骤402处继续网络终端202的初始化。
图4A-4C提供按照本发明的一个实施例的进程流,用于响应于唤醒操作对网络终端202进行初始化。参看图4A,网络终端202等待唤醒操作的通知。在本发明的一个实施例中,唤醒操作是把用户的智能卡插入读卡器216。
如果判定,智能卡被插入读卡器216中,则在步骤404继续处理,发送请求以得到鉴别管理器204和网络终端202的互连网络地址。另一种做法是,用户智能卡能够用互连网络地址预先编码。例如,藉助于读卡器216,根据智能卡能够读取互连网络地址。
在步骤406处,网络终端202等待响应,或者超时信号。如果发生超时,则在步骤412处继续处理,以判定是否已经超过尝试次数的最大值。如果已经超过次数的最大值,则在步骤410处继续处理,以产生差错。如果没有超过尝试次数的最大值,则在步骤414处继续处理,以递增尝试次数,并且在步骤404处继续处理,以再发送对互连网络地址的请求。
当接收到对请求的响应时,在步骤408处继续处理,以发送ACK。在图4B所步骤416处继续处理。在步骤416处,网络终端202向鉴别管理器204发送开始请求。在步骤418处,设置再尝试时间,在此时间内,网络终端202等候对于开始请求的响应。在步骤420处,设置一个变量,以指出网络终端202正在等候对于开始请求的响应。在步骤422处,网络终端202等候对于开始请求的响应。
如果判定,没有接收到响应,则在步骤424处继续处理,以判定是否已经超过再尝试时间。如果没有超过,则在步骤422处继续处理,以等待响应。如果已经超过再尝试时间,则在步骤426处继续处理,以判定是否已经超过尝试时间的最大值。如果超过,则在步骤428处继续处理,以产生差错,并且返回步骤416,重新发送开始请求。如果没有超过,进程继续到步骤430,以递增尝试次数,并且复位再尝试时间。在步骤432处,再次发送开始请求,并且在步骤444处继续处理,以判定卡是否已经从读卡器216移走。
如果在步骤422处判定,接收到响应,则在图4C的步骤434处继续处理。在步骤434处,网络终端202检查在步骤420中初始设置的变量,以判定是否在等待对开始请求的响应。如果是在等待,则在步骤436处继续处理,以判定响应是否为查问消息。如果不是查问消息,且如果未曾超过尝试次数的最大值,则在步骤424处继续处理,以重复开始请求。如果在步骤436处判定,接收到查问消息,则在步骤438处继续处理,以设置waiting_for_startup变量为否(即,“N”)。在步骤440处继续处理,以在步骤440和442处理查问请求。例如,能够如上面参照图5A-5B和6所述的那样来处理查问请求。
在步骤434处判定,网络终端202不在等待对开始请求的响应,则在步骤440和442处继续处理,以处理消息(例如,重现命令以显示由服务234产生的输出)。
在步骤444处,判定用户是否已经把智能卡从读卡器216移走。当用户把卡从读卡器216移走,则在步骤448处由网络终端202向鉴别管理器204发送断开消息。网络终端202等待来自鉴别管理器20的确认(ACK)消息。当接收到ACK消息时,在步骤450处,网络终端202清除屏幕,并且返回至步骤402,以等待另一个用户把智能卡插入读卡器216。
如果在步骤444判定,用户未曾把卡从读卡器移走,则在步骤446处继续处理,以判定网络终端是否在等待对齐开始请求的响应。如果是在等待,则在步骤422处继续处理,以判定是否已经接收到响应。如果网络终端不在等待对于开始请求的响应,则在步骤440和442处继续处理,以处理送至网络终端202的任何消息。
消息格式在本发明的一个实施例中,藉助于用户数据报协议(UDP)端口建立至网络终端202的连接。即,藉助于UDP连接发送包,并且在一个目的地UDP端口接收包。目的地UDP端口唯一地识别连接。由UDP首部(header)提供包长度和检验和(checksum)信息。缓冲器大小适合具有IP/UDP首部的以太网最大传递单元(MTU)。数据经网络以网络字节数顺序(大的在前方式(big-Endian))发送。
应该明白,能够使用其他的协议来取代UDP。例如,能够使用诸如ATMAAL5(AAL或ATM适配层)。
这样,已经描述了用于会话管理和用户鉴别的一种方法和设备。这里描述的特定的实施例仅仅是说明性的,因而不应限制本发明。本发明由权利要求书和及其等价物的全部范围来限定。
附录A命令协议例子重现命令有线协议命令格式所有数据在网络上以网络字节顺序(big-endian)传送并且比特域从MSB至LSB分组。
基本的描绘命令格式为<命令S><序列24><X:16><Y:16><宽度16><高度16><Info>命令代码 <Info>描述Set 0xA1 32比特值<X,B,G,R>的宽度×高度(宽度×高度<=512像素)Fill0xA2 一个32比特值<X,B,G,R>Glyph 0xA3 一个32比特值<X,B,G,R>,(高度×上限(宽度/8))位图字节(即,每行填充至8个比特)(宽度×高度<=2048像素);整个命令填充至下一32位边界Copy0xA4 <From_X:16><FROM_Y:16>Bilevel 0xA5 两个32比特值c0和c1,<X,B,G,R>,随后是(高度×上限(宽度/8))位图字节(即,每行填充至8个比特)(宽度×高度<=2048像素);整个命令填充至下一32位边界Set24 0xA6 经打包的24比特值<B,G,R>的宽度×高度填充至下一32位边界(宽度×高度<=512像素)SetYUV图像 0xA7 <SOURCE_W:16><SOURCE_H:16><RFU:8><LUMA_ENCODING:2><CHROMA_SUB_X:3><CHROMA_SUB_Y:3>随后是(SOURCE_W×SOURCE_H)像素Y(luma),每行填充至字节边界,并且(上限(SOURCE_W/X_Subsample)×上限(SOURCE_H/Y_Subsample))个字节,每个8比特带符号的U和V(色度)以CCIR-501值编码;整个命令填充至下一32比特边界;(SOURCE_W×SOURCE_H<=1024像素);(SOURCE_W<=WIDTH);(SOURCE_H<=HEIGHT)Set Cursor 0xA9 两个32比特值c0和c1、<X,B,G,R>,随后是两组(HEIGHT×上限(WIDTH/8))位图字节(即,每行填充至8比特)(WIDTH×HEIGHT<=64像素)。第一位图为像素值,第二位图为每个像素屏蔽。整个命令被填充至下一32比特的边界。Set Pointer 0xAA <INDEX:8><DIM:2><PAD:6>{<Z:16>{<P:16><R:16><E:16><PAD:16>}}|<PAD:16>注意所有的值是带符号的2的补码。角度值从-180~+180-(11sb)=+179.9945(整个范围的角度)WIDTH、HEIGHT被忽略。Set Key Locks 0xAB X、Y、WIDTH、HEIGHT被忽略。<INDEX:8><LOCKS:8><PAD:16>Damage Repair 0xAC <EPOCH:32><PAD:8><SEQ:24>Play Audio0xB1 X、Y、WIDTH、HEIGHT编码如下:X:4 音频序列数X:12 交错偏移Y 总序列长度-1WIDTH:4 混合器模式定义了信道#以包含在标准混合中。如果终端具有足够的信道满足请求则信道数被以原始方式发送并且不与其他信道组合。WIDTH:12 样本中的分组长度,最大为2000字节HEIGHT:4信道数-1HEIGHT:12交错大小-1首部之后是定义的样本数×信道数×16比特。整个命令被填充至32比特。
序列号对于每个命令递增。除了下述改变刷新命令的重大事件,序列号不可以全部为零。矩形可以不回卷。即x+width<0x10000和y+height<0x10000。
附加信息命令以不同格式定义<命令8><序列24><EPOCH:32><FILL:16*8>
命令 代码Flush 0xAFflsuh命令的序列号与先前命令的序列号相同,除了重大事件改变以外(参见下述)。即,序列号仅仅在像素改变或重大事件改变时递增。命令描述命令描述Set将<x,y>、<width,height>定义的矩形设定为下列像素值。对于区域内的每个像素有一个像素值。格式为按行的,即从<x,y>到<x+width-1,y>的“width”个像素值,然后是从<x,y+1>到<x+width-1,y+1>的像素,等等。<0,0>表示左上角。Fill 将<x,y><width,height>定义的矩形内的所有像素设定为单个32比特值。Glyph 32比特的值被放置在对应位图内每个比特的像素位置上,与零比特相关的位置不变化。利用每个字节中的MSB到LSB,按行(y,y+1,…)展开位图。Copy将<from_x,from_y><width,height>定义的矩形复制到<x,y><width,height>定义的矩形。客户必须确保交叠区域被正确复制(例如参见Solaris bstring(3))。Bilevel 两个32比特值c0和c1被放置在分别对应位图内每个为零和一的像素位置内。利用每个字节中的MSB到LSB,按行(y,y+l,…)展开位图。Set24 将<x,y><width,height>定义的矩形设定为如下的像素值。像素值打包为3个32位值<bgrb,grbg,rbgr>定义的4个像素。如果宽度不是4的倍数,则尾端与剩余值被打包并且填充至最接近的32比特值。对于区域内的每个像素有一个像素。布局是按行展开的,即对于((3*width+3)/4)-32比特字内的<x,y>-<x+width-1,y>有“width”像素值,随后是<x,y+1>-<x+width-1,y+1>等。<0,0>描述左上角。Set YUV Image将<x,y><width,height>定义的矩形设定为下列像素值。以source_w×source_h像素的CCIR/ITU.BT-601 Y′CbCr(或YUV)格式的图像译码为RGB。色度元素可以沿规定的水平和/或垂直方向子采样并且必须在变换前上采样。CHROMA_SUB_X和CHROMA_SUB_Y的值(分别为x_subsample和y_subsample)编码如下0-没有色度值;单色图像。1-以1作子采样(即没有子样本)2-以2作子采样3-以4作子采样4-7-未定义/保留LUMA ENCODING值如下0-Y(luma)由8比特的无符号数据指定1-Y(luma)由4比特的量化DPCM组成(参见以下)2、3-未定义/保留RFU保留在将来使用并且必须为零。在译码之后,RGB图像根据需要标度为宽度×长度像素。最终的图像放置在显示器的<x,y>上。注意如果CHROMA SUB X和CHROMA SUB Y为零,则图像为但是(仅仅是luma)并且没有U和V数据。一个设定为零而另一个设定为非零是无效的。分量顺序为Y(或者CCIR-601Y′)、U(CCIR-601Cb)和V(CCUR-601Cr)。Set Cursor 该命令设定本地显示光标的外表(由指针pointer
移动和报告)。光标最大为64×64的块,但是可以是任何小于该尺寸的块。如果特定像素的屏蔽值为‘1’,相应的光标像素被显示,如果特定像素的屏蔽值为‘0’,则光标在该位置是透明的,当屏蔽为‘1’时,‘0’的像素值为‘c0’,而当值为‘1’时为‘c1’。如果屏蔽为零,则像素值也应为零。零屏蔽和像素值1保留在未来扩展时使用。WIDTH和HEIGHT可以为零,表示未画出光标(等价于所有零的屏蔽)。指针跟踪继续正常工作。X和Y表示光标的‘热点’;例如报告光标图像事件的那个像素。这主要用于停止显示器边缘上的光标。X(0,WIDTH),Y(0,HEIGHT)。Set Pointer 设定指针的位置。指针
通常可以设定(识别或触摸屏)并且是二维屏幕光标。该命令向应用程序提供了持续设定指针,或者为应用程序提供了需要相对指针(例如将光标重新设定至先前位置)。这样存在几个限制根本不能设定指针(例如游戏杆)。指针值能够任意夹持以匹配指针设备或屏幕。一旦设定,用户可以继续移动指针,但是利用‘Pointer State’的状态消息报告。重新设定为准相对模式的指针的行为可以使不同的设备具有不同的行为;例如触摸屏仅仅在用户未“拖放”时是可以设定的。指针最多允许有6维。命令的维数和大小利用DIM比特设定。所有的指针值是带符号的2的补码。Set Key Locks 该命令为&lt;INDEX&gt;的键盘设定锁定值。锁定通常对应键盘上的光学显示,它可以由软件控制。如果锁定条件被指示,则应该将比特设定为屏蔽,否则应该清除该比特。由于一些键盘可以实现本地锁定(例如机械方式),所以设定锁定可能没有用。键盘的按键应该一直从键盘报告的状态中被解释。另一方面,如果是接口专用的,则由于正常的键盘和终端并不试图本地处理锁定,所以要求主机在接收到锁定按键代码时发布设定按键锁定命令。这是因为终端并不理解键盘或所需用户接口的语法。按键锁定位图来自启动键盘的USB类定义0x01Num Lock0x02 Caps Lock0x04 Scroll Lock0x08 Compose0x10 Kana所有其他比特都被保留--读取时忽略,设定时为零。Damage Repair它通知客户重大事件EPOCH内的序列号SEQ的所有毁坏消息和更早的消息已经被处理并修复了发送的数据。(参见Damage back-channel命令)。PAD必须为0。X、Y、WIDTH和HEIGHT必须为0;Play Audio 它播放48KHz的音频样本,并且可以嵌入图形命令流中。未定义的流数量被先到先服务的终端接收。流根据需要分配并且在缓冲器空时(当时间来临时没有数据播放--特别是接收的缓冲器发生错误和播放时)断开。终端校正时基漂移。数据按照交错方式发送以对消网络错误。样本序列被分解为交错尺寸并且最多1+(序列尺寸)/(交错尺寸)样本被以分组发送。样本选定如下<pre listing-type="program-listing"><![CDATA[ Sample sequence(sample_size); int seq_number=0; while(1){get_samples(sequence,sample_size); for(i=0;i<interlieave_size;i++){interleave offset=random_select(0..interleave_size);packet=new_packet(seq_number,sample_size,num_chan,num_chan,interleave_size,interleave_offset); for(j=interleave offset;j<sample_size; j+=interleave_size) emit(packet,sequenee[j]); send_packet(packet); } seq_number=(seq_number+1)%16;}]]></pre>注意分组的发送顺序可以(并且可能应该)是随机的。
例如对于交错为3和序列尺寸为8的情况,可以发送下列三个分组(样本) (0 1 2 3 4 5 6 7)pkt 1,off1147pkt 2,off0036pkt 3,off225序列被编号为终端知道何时对消错误并且发送样本序列。
样本是48KHz、16比特和线性的,并且可以包含最多16条信道。例如5信道样本将占用10个连续的字节。
对于终端支持的音频信道数量并无定义也没有办法能找出,但是最多16条信道可以立即发送。由于不同的信道数量可能超过终端支持的数量,所以对于第一批8条信道引入标准混合的概念。通过设定“MIX”域可以使其失效,该域确保某些索引信道不被混合在一起。后8条信道按照与前8条信道相同的方式混合,从而可以听到声音。如果没有足够的信道,则结果依赖于终端设置。
标准的分配信道如下
信道->1#chan 0 1 2 3 4 5 671mono2lr3lr sw4lr rl rr5lr rl rr sw6lr rl rr sw cf7lr rl rr sw cf top8lr rl rr sw cf clcr(l=左,r=右,r[lr]=后方{左,右},sw=subwoofer,cf=中央填充,c(lr)=中央(左,右),top=中央-中央)例如,如果有两个扬声器和一条信道是标准混合有效的,则一条信道将向左右扬声器发送。相反,如果同一终端发送6条信道,则将混合信道0、2、4、5并送至左扬声器而信道1、3、4、5将被混合并送至右扬声器。
终端扬声器按照同样方式设置。
在完整的说明书中可使用完整的混合矩阵。Flush在该命令后一段时间内显示流内可能没有命令;因此对于客户机来说是清除未完成重现的良好时机。重大事件域对于顺序号提供了32个附加的高位比特。FILL由16个全部设定为0xFF的字节组成。该命令提供了在丢失之后重新使数据流同步的机会。
清除命令的序列号通常与最后非清除命令相同。但是当重大事件穷尽时,(即最后命令的序列号为0xFFFFFF),发送序列号为零的清除命令和新的重大事件号(递增1)。返回信道命令有线协议状态消息格式基本状态命令格式为&lt;命令8&gt;&lt;时间24&gt;&lt;Info&gt;命令 代码 &lt;Info&gt;描述键盘状态 0xc1 &lt;INDEX:8&gt;&lt;COUNTRY CODE:8&gt;&lt;LOCKS:8&gt;&lt;MODIFIERS:8&gt;&lt;KEYCODE:8&gt;[8]指针状态 0xc2 &lt;INDEX:8&gt;&lt;DIM:2&gt;&lt;BUTTONS:6&gt;&lt;X:16&gt;{&lt;Y:16&gt;{&lt;Z:16&gt;{&lt;P:16&gt;&lt;R:16&gt;&lt;E:16&gt;}}}注意所有的数值是带符号的2的补码。角度值从-180到+180-(1-1sb)=+179.9945(整个范围的角度)。DIM维数0 X1 X,Y2 X,Y,Z3 X,Y,Z,P,R,H(yaw)激活区域 0xc3&lt;X:16&gt;&lt;Y:16&gt;&lt;WIDTH:16&gt;&lt;HEIGHT:16&gt;损坏 0xc4 &lt;EPOCH:32&gt;&lt;PAD0:8&gt;&lt;SEQ_L:24&gt;&lt;PAD1:8&gt;&lt;SEQ H:24&gt;注意TIME的单位为毫秒;它在2**24之后回卷(大约16秒)。状态消息描述命令描述键盘状态报告&lt;INDEX&gt;的键盘的状态。国家代码来自HID的USB设备类定义,6.2节。锁定来自启动键盘的USB类定义0x01 Num Lock0x02 Caps Lock0x04 Scroll Lock0x08 Compose0x10 Kana‘Set Key Lock′的命令可以用来复位这些锁定,并且如果在主机上检测到锁定键,则由于键盘通常不会本地处理锁定状态并且终端同样也不会,因此应该采用该命令。除指定的比特以外的比特都是保留的并且应该忽略。它们应该被设定为零。
修改符比特同样来自启动键盘的USB类定义0x01 左Control0x02 左Shift0x04 左Alt0x08 左GUI0x01 右Control0x02 右Shift0x04 右Alt0x08 右GUI总是有用于6个按键扫描码的空间。所有被按下的按键(非修改符)都被报告,最多6个按键。这提供了简单的翻转和和音能力。扫描码来自启动键盘的USB类定义。
特别注意的是,代码0x00表示时隙内没有事件,而时隙内的0x01表示超过8个按键被按下。修改符仍然在这种状态下被报告。一旦按下不超过9个的按键,重新启动正常报告。报告顺序是任意的并且不反映事件的顺序。指针状态报告&lt;INDEX&gt;的指针的状态。DIM表示报告的维数1、2、3或6。按钮来自启动键盘的USB类定义,比特零为‘基本′按钮(在左边),而数量从左到右递增。报告的数值都是绝对值并且是带符号的2的补码。激活区域指示保存在newt上的逻辑帧缓冲器的区域。具体而言,这是可以成功定义复制重现命令的“from”区域的区域。在规定时间上该区域在给定的客户机上可以改变,例如由于手持设备中pan-scan接口笔。而且不同的客户设备可以报告不同的激活区域。损坏指示来自序列号SEQ上并且在重大事件EPOCH中包含序列号SEQ_H的下游(重现器)命令未被来自服务器的客户接收。PAD0和PAD1必须为0。客户将继续报告损坏直到受影响的序列号的损坏修复消息被接收。如果SEQ L为0,则必须发送完整的当前屏幕图像。一旦对于给定的序列号发送损坏消息,则对于更早的序列号,没有新的后续损坏发送。但是为了在后面状态分组中节省空间,允许将两个或更多的范围合并为一个范围。DPCM YUV描述借助1的LUMA_ENCODING可以进一步压缩YUV数据。Luma数据编码如下
<pre listing-type="program-listing"><![CDATA[for each linelast_value=0x80for each luma value l in line difi=1-last value q_value=quant(diff) last_value=clap(last_value+dquant(q_value)) emit q_value endend]]></pre>Luma数据译码如下<pre listing-type="program-listing"><![CDATA[for each line last_value=0x80 for each quantization-value q_value in linelast_value=clamp(last_value+dquant(q_value))emit q_value endend]]></pre>Clamp为箝位表;clamp(i)为0 ifi<0;255ifi>255i otherwise.
所用的量化器为差值 代码 rquant-255~-91 0-100-90~-711-80-70~-512-60-50~-313-40-30~-164-20
-15~-85-10-7~-3 6-4-2~0 7-11~2 8 13~7 9 48~15 101016~30 112031~50 124051~70 136071~90 148091~25515100
权利要求
1.在计算机系统中,一种管理会话的方法,其特征在于,包括为与用户相关联的会话保持信息;启用所述会话中的至少一个服务,当所述用户与所述系统断开时,所述至少一个服务能够执行;当所述用户连至所述计算机系统的人类接口装置时以及当所述用户与所述人类接口装置断开时,通知所述至少一个服务;当所述用户连至所述人类接口装置时,所述至少一个服务引导其输出至所述人类接口装置。
2.如权利要求1所述的方法,其特征在于,所述信息包括所述至少一个服务的标识。
3.如权利要求2所述的方法,其特征在于,所述信息识别所述至少一个服务是否有效以及所述至少一个服务是否为所述会话所需的服务。
4.如权利要求3所述的方法,其特征在于,当所述至少一个服务是所需的服务时,在用户连至所述系统后,启用所述至少一个服务。
5.如权利要求1所述的方法,其特征在于,所述信息包括用户标识和鉴别信息。
6.如权利要求1所述的方法,其特征在于,还包括当所述用户与所述人类接口装置断开时,所述至少一个服务断开至所述人类接口装置输出的传输。
7.如权利要求1所述的方法,其特征在于,还包括用所述信息鉴别所述用户。
8.一种系统,其特征在于,包括可在计算机系统中执行的服务;网络终端,它能够接收来自所述服务的输出和发送所述输入至所述服务;会话管理器,当用户连至所述网络终端和当所述用户与所述网络终端断开时,构造所述会话管理器来通知所述服务;当所述用户连至所述网络终端时,构造所述服务发送输出至所述网络终端,而当所述用户与所述网络终端断开时,构造所述服务在执行期间停止发送输出至所述网络终端。
9.如权利要求8所述的系统,其特征在于,还包括鉴别管理器,它构造来确认所述网络终端的所述用户。
10.如权利要求9所述的系统,其特征在于,当有效用户连至所述网络终端时,由构造的所述鉴别管理器来通知所述会话管理器。
11.如权利要求8所述的系统,其特征在于,构造所述会话管理器来发送询问至所述网络终端,以判定所述用户是否连至所述网络终端。
12.如权利要求8所述的系统,其特征在于,还包括与所述用户相关联的会话,所述会话包括所述服务。
13.如权利要求8所述的系统,其特征在于,还包括与所述用户相关联的至少一个会话,每个所述会话包括多个服务。
14.一种计算机程序产品,其特征在于,包括计算机可用的媒体,它具有在其中实现的用于会话管理和鉴别的计算机可读的程序代码,包括计算机可读的程序代码,构造得使计算机保留与用户相关联的会话的信息;计算机可读的程序代码,构造得使计算机在所述会话中启用至少一个服务,当所述用户与所述系统断开时,能够执行所述至少一个服务;计算机可读的程序代码,构造它使得当所述用户连至所述计算机系统的人类接口装置以及当所述用户与所述人类接口装置断开时,计算机通知所述至少一个服务;计算机可读的程序代码,构造它使得当所述用户连至所述人类接口装置时,计算机把所述服务的输出引至所述人类接口装置。
15.如权利要求14所述的计算机程序产品,其特征在于,所述信息包括对所述至少一个服务的识别。
16.如权利要求15所述的计算机程序产品,其特征在于,所述信息识别所述至少一个服务是否激活以及所述至少一个服务是否为所述会话的所要的服务。
17.如权利要求16所述的计算机程序产品,其特征在于,当所述至少一个服务是所要的服务时,在用户连至所述系统后启用所述至少一个服务。
18.如权利要求14所述的计算机程序产品,其特征在于,所述信息包括用户识别和鉴别信息。
19.如权利要求14所述的计算机程序产品,其特征在于,还包括计算机可读程序代码,构造它使得当所述用户与所述人类接口装置断开时,所述至少一个服务停止把输出传送至所述人类接口装置。
20.如权利要求14所述的计算机程序产品,其特征在于,还包括计算机可读程序代码,构造它使得计算机使用所述信息来鉴别所述用户。
全文摘要
能够把鉴别和会话管理与在人类接口装置(HID)和计算服务提供器(诸如服务器)之间划分功能的系统结构一起使用。当用户通过HID连至系统时,对服务器执行的鉴别管理器与HID交互作用以确认用户。在服务器上执行的会话管理器管理在代表用户提供计算服务的计算机上运行的服务。会话管理器对在会话中的每个服务使用给定的HID通知用户被连至系统。当用户连至系统时,服务能够引导显示输出至HID。当用户与系统断开时,通过鉴别管理器和会话管理器通知为用户执行的每个服务。在作出用户与系统断开的通知后,服务能够继续执行,同时终止其至HID的显示。
文档编号G06F13/00GK1306716SQ99807543
公开日2001年8月1日 申请日期1999年4月20日 优先权日1998年4月20日
发明者G·A·沃尔, A·T·鲁贝格, J·G·汉克, J·D·诺思克特, L·L·布彻 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1