具体实施方式
为了便于说明,以下讨论将用通用即插即用(UPnP)架构来描述资源信息分布功能。如这里使用的,术语“UPnP网络”描述了具有按照UPnP架构构造的一个或多个实体(例如设备)的网络(比如图3所示的示例性UPnP网络314),其中UPnP协议用于这些实体的宣告、恢复、描述、事件报告和控制。在当前的架构中,除了按照UPnP架构构造的实体以外的其它实体可以耦合到UPnP网络314。然而,这一特定的网络框架仅仅是示例性的。资源信息分布功能可以用其它类型的架构和网络来实现(也就是,所述功能不限于包括UPnP实体的网络)。
更具体地说,如将要简述的,UPnP网络314可以包括向一个或多个受信实体提供信息的一个或多个源实体。UPnP网络314可选择地包括一个或多个控制点实体,所述控制点实体用于协调信息从源实体到受信实体的传输、并且用于执行其它功能。例如,源实体可以包括一媒介服务器,或某些其它类型的设备。受信实体可以包括一控制点设备、一媒介呈现设备、或者某些其它类型的设备。一般而言,术语“实体”和“设备”在此应宽泛地解释;这些术语可以指用于执行上述任务的分立单机单元,或者可以包括由多个单元组成的系统,或者可以包括单元内包含的硬件和/或软件组件等等。为了简化讨论,这一章节中使用术语“设备”来描述与UPnP网络314耦合的任一类模块。(而且,媒介服务器设备也称为“媒介服务器”以简化讨论。)
此外,为了提供一个具体的例子,以下讨论将描述家庭环境中的资源信息分布功能,其中家里的一个人使用UPnP网络314来互连家庭内的多个媒介服务器和媒介呈现设备。然而,资源分布功能可用于任何环境,包括商业环境(例如在公司内)、学校环境(例如在中学或大学内)等等。
此外,UPnP网络314一般在相对小的且明确的地理区域内(例如在一建筑物内)把设备耦合在一起。然而,资源信息分布功能可用于更加地域性包围的环境。
此外,在以下讨论中,“资源”是指信息的任一单位。例如,资源可以对应于单个文件,或者可以对于文件的仅仅一部分,或者可以对应于多个文件的集合。例如,假定资源对应于一歌曲。该歌曲可以被保存在单个文件中、保存在单个文件的仅仅一部分中、或者被保存在几个文件中(其中这几个文件也组合来自其它歌曲的流)。更具体地说,如图3所示(注意到图的最右边),一资源存储器(下面将描述)中保存的示例性资源(R)可以包括各种信息成分,在此通称为“资源信息”。资源信息的一个这样的成分是“资源元数据”。资源元数据包含与资源有关的高层信息,比如资源的标题、与资源相关的艺术家、创作资源的日期等等。资源信息的另一成分是“资源内容”。资源内容包含资源元数据所描述的数据。例如,音频资源的资源内容会对应于用于回放给消费者的音频数据。(在说明书各部份中,使用术语“资源内容项”来表示与一特定资源相关联的资源内容;这里术语“项”的使用仅仅反映了语法方便的问题,以便使在特定的环境中使用术语“资源内容”变得清楚。)最后,以下描述将经常参照“资源内容”到一呈现设备的传输,用于在该呈现设备处显示。这一传输不排除除资源内容以外其它有关该资源的信息的传输;资源内容的传输还可以包括例如:伴随着资源内容的资源元数据。
此外,资源自身可以是个体成员资源的集合。例如,资源可以组成所谓的资源包含符或资源文件夹,或其它类型的资源集合。如将要讨论的,资源包含符是指媒介服务器用来内部管理这些成员资源的一个或多个成员资源的分组。资源文件夹是指媒介服务器使之对用户“可见”的一个或多个成员资源的分组。例如,媒介服务器可以包括一用户界面显示器(或其它显示机制),该显示器表示了多个资源文件夹,每个文件夹都可以包括一个或多个成员资源。然而,媒介服务器可以在资源包含符的环境下内部地管理这些成员资源。资源文件夹中的信息分配一般不同于资源包含符中的信息分配,但是在可选的实现中,分配可以相同。(而且,媒介服务器可以任选地使用户能观看与资源包含符和它们相应的成员资源有关的信息,并且按照逐个包含符来执行各种动作,而不是按照逐个文件夹来执行。)任何集合(或是资源包含符或是资源文件夹)自身都可以包括成员“子”集合(也就是,相应的子资源包含符或子资源文件夹)。
一类特定的资源集合是资源播放列表。该资源可以用文件来实现,文件是指音频、视频和/或照片资源(或其它类型的资源)的列表。
上述例子仅仅描述了资源能假定的一些显示;一般来说,术语“资源”抽象地表示了基于任一考虑因素的信息的任一集合。
在一种实现中,资源可以对应于媒介资源,比如音频资源(例如音乐、录音书籍等)、视频资源、图片资源(例如数字照片)等等。然而,这里所述的原理可用来为任一目的分发任一类信息。
这里所称的术语“处理”关于许多种动作。一种情况下,术语“处理”是指用来修改被处理的信息的动作。另一种情况下,术语“处理”是指仅用来对付被处理信息、或者作出与被处理的信息有关的决定的动作。这些仅仅是该术语能包含的许多类动作的一些例子。
进一步地说,为了执行各种管理任务(比如定义共享资源)而与这里所述的媒介服务器交互的任何实体在此都称为“媒介服务用户”。媒介服务器用户可以关于与媒介服务器交互的操作员,或者可以表示某些其它实体,包括为和媒介服务器交互而配置的逻辑功能。在一示例性实现中,媒介服务器用户被假定登录到媒介服务器上。在一种实现中,用户通过向媒介服务器提供身份信息而登录到媒介服务器上,此后媒介服务器根据配置验证该用户(例如通过要求用户提供密码或某些其它形式的验证)。媒介服务器的其它实现可能不要求用户为和媒介服务器交互而提供它们的身份。如下所述,登录媒介服务器用户会话的状态可以是活动的或不活动的。
从媒介服务器请求资源信息的任何实体都被称为资源信息消费者(为了简洁,下面简称为“消费者”)。消费者可以向媒介服务器请求资源元数据和/或资源内容。消费者可以表示希望从一控制点或一呈现设备与媒介服务器交互的操作员,或可以表示某些其它实体,包括被配置成与媒介服务器交互的逻辑功能。在操作员的情况下,同一个人可以既充当媒介服务器用户、又充当消费者;或者,可以由不同的个体来扮演这两个分别的角色。
最后,以可选方式(例如A或B)在说明书中给出多个例子。此外,该说明书包含那些在单个实现中组合两个可选方案的情况(例如A和B),即使该说明书没有特别提到这些情况。
该说明书包括以下章节:
A.用于实现资源共享的示例性系统
A.1.系统综述
A.2.系统的示例性应用
A.3.媒介服务器架构综述
a.媒介服务模块
b.内容目录设备监视(CDDM)模块
c.用户界面模块
A.4.快速用户切换规定
A.5.附加安全规定
a.IP地址限制
b.MAC地址验证
c.子网限制
d.TTL限制
e.设备和会话限制
f.限制候选设备用于验证UPnP动作
g.资源定位符退出
h.各种服务器安全性措施
A.6.URL参数化规定
B.示例性用户界面(UI)显示
B.1.用于授权新设备的示例性UI
B.2.用于共享资源的示例性UI
C.示例性进程
C.1.设备授权进程
C.2.资源共享进程
a.定义共享资源
b.基于请求来分发共享资源
c.参数化URL的处理
D.示例性计算机环境
A.用于实现资源共享的示例性系统
A.1.系统综述
图3描述了包括资源信息共享的示例性网络架构300。网络架构300包括经由UPnP网络314耦合在一起的多个UPnP设备302-312(下面为了简洁而简称为“设备”)。设备302-312包括上述的媒介服务器302和多个媒介呈现设备304-312。示例性的媒介服务器可以包括各类计算机,各类自动点唱机等等。示例性的呈现设备可以包括各类计算机、立体声系统、扬声器、电视、手持音频播放器等等。(尽管仅示出一个媒介服务器302,但是网络314可以包括任何数量的媒介服务器。而且,尽管示出了多个媒介呈现设备304-312,然而网络314可以仅包括一个媒介呈现设备,或可能不包括任何媒介呈现设备。)
UPnP网络314也任选地包括一个或多个控制点(例如控制点316、318)。控制点316、318可以与UPnP设备302-312之一集成。也就是,例如,呈现设备也可以包括用于和媒介服务器302交互的控制点功能。或者,一个或多个控制点可以独立于UPnP设备302-312而实现。示例性的控制点可以用各类计算机、个人数字助理(PDA)、专用逻辑模块等等来实现。总的来说,媒介呈现设备304-312以及控制点316、318可以充当资源信息受信实体以及其它角色,如下所述,这意味着它们能接收媒介服务器302所提供的资源信息。
UPnP网络314可以使用协议的任何组合在UPnP设备302-312、316、318之间传输信息,所述协议比如TCP/IP、SOAP、GENA、HTTP等等。它还可以包括网关、路由器、硬线链接、无线链接(例如射频链接)等等的任何组合(未示出)。
通过综述,当一个新的UPnP媒介呈现设备加入UPnP网络314时,它向媒介服务器302宣布它的存在。比方说,例如这一新的媒介呈现设备对应于图3所示的示例性设备306。媒介服务器302又警告媒介服务器302的用户(即“媒介服务器用户”)有关新媒介呈现设备306的存在。如下面详细讨论的,媒介服务器302可以通过把对应于新设备306的接收到的IP地址转换成其媒介访问控制(MAC)地址,或通过使用某些其它标识/许可机制,来确定新媒介呈现设备306的身份。然后,媒介服务器302赋予媒介服务器用户启用这一新设备306的选项。如果被启用,这一新设备306就成为设备组中被接受的成员,该成员是媒介服务器302被允许向其传输资源的成员。
在媒介传输操作自身当中,媒介服务器302把和资源存储器320中提供的资源相对应的资源信息路由到与网络314耦合的一资源信息受信实体。宽泛地说,为了执行这一操作,消费者可首先使用一控制点(比如控制点316)或其它设备来调查与媒介服务器302的资源存储器320中提供的资源相对应的资源信息。例如,这一操作可能需要调查资源的资源元数据,比如可用资源的标题、以及与资源有关的其它高层信息。在这种调查后,消费者可以选择与一资源相关的资源内容,用于在所选的呈现设备处显示,所选设备比如媒介呈现设备306。控制点316此后能设立资源内容从媒介服务器302到所选呈现设备306的传输。在一种实现中,UPnP架构300使用一非UPnP协议来实际执行资源内容从媒介服务器302到呈现设备306的传输,所述协议比如但不限于HTTP协议。
为了执行上面总结的功能,媒介服务器302包括资源信息共享功能322。以下讨论描述了资源信息共享功能322的高层特征。章节A.3更详细地描述了资源信息共享功能322的操作。
首先,路由程序可以包括定义要在网络314上共享的资源的任务。在一种示例性实现中,媒介服务器302被配置成在集合单位内指定可共享的资源,所述集合单位比如资源文件夹。也就是,资源信息共享功能322可以把一资源文件夹“加记号”为可共享,允许其中包含的至少一些资源能在网络314上被共享(基于下面讨论的考虑因素)。资源信息共享功能322可以经由一个或多个UI页面来执行这一功能,使媒介服务器用户能定义共享文件夹的可共享状态。章节B更详细地描述了这些UI页面。一般而言,继承应用于资源分层组织内资源的可共享状态。也就是,资源文件夹可以被视为一父亲资源,父亲资源包括可组成子资源的一个或多个个体成员资源。资源文件夹也可以包括子文件夹,每个子文件夹可以包括成员子资源。把一父亲资源指定为可共享一般会也有将其子资源指定为可共享的效应,包括全部其成员资源和子文件夹。然而,资源信息共享功能322也可以被配置成按照不同的继承范例进行操作。例如,在一种可选的情况下,父亲资源的可共享状态不可以自动地用于其子文件夹。
同样,资源信息共享功能322可以被配置成允许用户移除资源的可共享状态(例如使资源“不共享”)。例如,在一种情况下,不共享父亲资源会有不共享其子资源的效果。一种情况下,资源信息共享功能322可以禁止媒介服务器用户在子资源的父亲被指定为共享时不共享该子资源。另一种情况下,资源信息共享功能322会允许媒介服务器用户有选择地把共享子资源指定为不共享,因此超越了上述的继承方案。
可以采用许多其它策略来共享资源,上面列出的仅仅是许多可能性中的代表样例。例如,资源信息共享功能322可以被配置成允许媒介服务器用户在个体资源级别上把资源指定为可共享(而不是在资源集合级别上)。而且,资源信息共享功能322可以被配置成允许媒介服务器用户把其它类的集合指定为可共享。
按照另一示例性特征,并且如章节C中更详细地描述,媒介服务器302可以对它所共享的资源信息类型作出其它约束。例如,媒介服务器302可以共享从仅仅特定几类已知媒介文件获得的资源信息。同样,媒介服务器302可以拒绝共享从可移动驱动器、网络共享上的文件获得的资源信息。通过把共享限制为从已知的预期资源“总体”获得的资源信息,减少了对UPnP网络314的未经授权的访问的可能性。
资源信息共享功能322还允许媒介服务器用户来定义分布标准,该分布标准可被任选地用来控制资源信息(包括资源元数据和资源内容)的路由。例如,作为第一分布标准,资源信息共享功能322允许媒介服务器用户把资源信息的传输限制到特定的资源信息受信实体。作为第二分布标准,资源信息共享功能322允许媒介服务器用户使资源信息的传输取决于指定的个体是否需要许可该传输。例如,媒介服务器302可以这样配置:使得如果指定的个体登录到实现媒介服务器302的计算机上(且个体的终端会话是活动的),则隐含地满足了这一标准。这一特征可以设立以便考虑到只有在用户直接与实现媒介服务器302的控制台交互时才登录的媒介服务器用户,而不是与控制台远程交互(例如经由网络连接)的用户;然而在另一种实现中,媒介服务器用户可以在它们仅经由远程连接而登录时被视为是登录的。在另一情况下,媒介服务器302可以这样配置:使得只有在指定的个体明确确认传输可接受时(比如当指定的个体肯定地响应于与传输恰当性有关的UI询问时)才满足这一标准。在一示例性的实现中,上述“个体”对应于一媒介服务器用户,该用户已经把与分布标准相关的资源指定为可在网络上共享。这两个标准仅仅是说明性的;资源信息共享功能322可以利用支配资源信息传输的其它标准。例如,其它标准可以包括一日时限制,它把对资源信息的访问特权限制到一天中的某些时刻。资源信息共享功能322可以提供用于定义分布标准的一个或多个UI页面,所述分布标准支配了资源信息的分布,如章节B中将描述(下面)。
在一种实现中,第一分布标准集合对应于资源元数据的传输,而另一分布标准集合可对应于资源内容的传输。第一集合可能不同于第二集合。这意味着例如,不同的限制仅仅观看资源的标题而不是实际检取资源内容本身。或者,第一分布标准集合可能与第二分布标准集合相同。然而,即使分布标准相同,这仍可能有使消费者观看资源元数据但不观看资源内容的效果;这是因为例如,消费者可能在由分布标准授权接受资源元数据的控制点处接收到资源元数据,但消费者设法把资源内容置于被分布标准禁止接受资源内容的一个呈现设备上。预想到这一策略的其它变化。例如,资源信息共享功能322可以提供单个分布标准集合。这单个集合可以专有地支配资源元数据或资源内容或两者的散布。
按照一示例性实现,资源信息共享功能322在资源集合而不是个体资源的环境中指定了分布标准。例如,如上所述,媒介服务器用户可以使用上述的UI页面来把一资源集合分组为一资源文件夹,然后表示,只要满足特定的标准,那么与这一资源文件夹内的资源相关的资源信息(元数据、内容或两者)将要给共享给与UPnP网络314耦合的其它设备。该共享资源文件夹也可以包括一个或多个子文件夹,每个子文件夹都包括一个或多个资源。上述的同一类父-子继承方案可用来支配分布标准对资源等级的应用。例如,为资源文件夹建立的分布标准可应用于每个子文件夹以及资源文件夹内的资源(例如文件)。或者,资源信息共享功能322可以这样配置:使得与一资源文件夹相关联的分布标准仅应用于资源文件夹内一资源子集;例如,资源信息共享功能322可以这样配置:使得分布标准仅应用于资源文件夹内的个体资源,而不是资源文件夹可能包含的任何子文件夹内的资源。更一般地,资源信息共享功能322可以被配置以便在各种环境内超越上述的父-子继承方案。
同样,上述方案仅仅是示例性的和代表性的。存在许多其它改变。例如,资源信息共享功能322可允许媒介服务器用户把分布标准“附加到”资源文件夹内的个体资源,或者从个体资源中移除分布标准。或者或另外,媒介服务器302可以为资源包含符而非资源文件夹指定分布标准。如下在图6的环境中将详细描述,资源包含符是指媒介服务器302管理其资源而内部使用的集合,而资源文件夹是指媒介服务器用户直接与之交互的集合。媒介服务器302可以把分组的资源重新组织到文件夹内以创建包含符。
按照另一示例性特征,资源信息共享功能322允许媒介服务器用户定义不同的分布标准集合。例如,不同的用户可以定义相应的不同的分布标准集合。在资源信息共享功能322的相关用户登录到实现媒介服务器302的计算机系统上时,资源信息共享功能322可以自动地调用这些分布标准集合其中之一。或者,单个媒介服务器用户可以定义不同的分布标准集合。媒介服务器用户能调用这些集合其中之一以便最好地适合一特定的流行操作环境。例如,媒介服务器用户可以在他被期望在白天在家时激活用于周末的第一分布标准集合,而在他不被期望在白天在家时激活用于周中的另一集合。或者,一分布标准集合可以和另一分布标准集合合并,使得两个集合都能在任一给定时间使用。可以配置规则来解决集合间的可能冲突。同样,这些仅仅是代表性和示例性的情况;可以实现这一设计策略的许多其它改变。
其它实现可以对上述场景作出其它限制。在一示例性的实现中,资源信息共享功能322可允许媒介服务器用户仅为了这一特定媒介服务器用户已指定为可共享的那些资源添加或修改分布标准。
按照另一特征,资源信息共享功能322可以对一个或多个分布标准进行“硬编码”,使得这些分布标准无需用户经由UI页面(或通过其它机制)定义它们而自动地应用。此外,上面描述了多个因素来首先确定资源是否可共享,比如确定资源是否因为它被保存在可移动驱动器上而被禁止共享的因素等等。这些因素在概念上被认为是经硬编码的分布标准。“硬编码”在此意味着媒介服务器用户也许不能通过定义其它分布标准(比如受信实体相关的标准等等)所用的UI页面来修改这些因素。然而,在一种实现中,资源信息共享功能322可以包括使媒介服务器用户即使在这些因素处在各种环境下时也能改变的各种规定。
按照另一特征,各种机制可用来阻止媒介服务器用户检查和/或改变其它媒介服务器用户的分布标准。例如,在一种实现中,资源信息共享功能322仅允许媒介服务器用户来定义或修改资源的分布标准,只要媒介服务器用户已经把那些资源指定为可共享。这一设计策略的进一步改变也是可行的。
在路由操作本身中,资源信息共享功能322首先使消费者能搜索与共享资源相关联的信息。例如,如上面在综述中所表示,消费者可以使用控制点316(或其它设备)来输入一请求以便观看和资源存储器320中提供的资源相关联的资源元数据。更具体地说,请求可以是浏览请求、搜索请求或某一类其它请求。浏览请求是会导致在特定的指定类别中检取信息项的集合的UPnP动作,而搜索请求是会导致响应于指定的关键项来检取一个或多个目标信息项的UPnP动作。在任一情况下,这一请求的传输都由图3中的路径324表示。
资源信息共享功能322通过扫描描述共享资源的资源元数据集合以定位以下所述的资源从而响应于请求324,所述资源同时满足消费者的请求、还满足由一个或多个媒介服务器用户定义的任何相关分布标准(如果有的话)。例如,消费者可以请求媒介服务器302提供与喜剧流派中所有可用的视频资源相对应的资源元数据。资源信息共享功能322通过扫描资源元数据以定位任何相关资源来响应于这一请求,所述任何相关资源与指定的搜索项匹配并且满足任何相关的分布标准(比如限制这些资源向资源信息受信实体的子集显示的标准、比如防止向使用特定媒介呈现设备的孩子显示R级资源的标准)。注意到资源信息共享功能322可以被配置成任选地、也就是不必要应用分布标准。因此,如果不存在相关的分布标准,或如果媒介服务器302目前未被配置成应用分布标准,则分布标准对于限制资源信息的散布不起作用。
在资源信息共享功能322找到与满足上述约束条件的一个或多个资源相对应的资源元数据的情况下,资源信息共享功能322把该资源元数据发送到消费者。资源信息共享功能322所生成的响应可以用可扩展标记语言(XML)特别阐明。XML响应可以提供标识与可用资源有关的高层数据的资源元数据,比如与可用资源有关的名称、艺术家、创作日期、大小等等。资源元数据还提供资源定位符,比如统一资源定位符(URL),该定位符标识了从中能检取资源内容的网络位置。图3说明了由路径326对XML信息的这一传输。如果被适当装配,控制点316把接收到的XML信息转换成一显示格式,然后在监视器或其它显示设备(一般在图3中由控制点316所提供的显示显示328来表示)上显示该信息。另一方面,在一实现中,如果没有资源信息由于满足搜索参数且如果可应用而满足分布标准的约束条件而被确定为可用,则控制点316会从媒介302接收不到信息。该情况下,消费者可能不知道资源存储器320中保存的任何非匹配资源信息的存在和特征。(如这里使用的,术语“非匹配资源信息”是指与满足消费者的搜索参数但不满足分布标准的约束条件的资源有关的资源信息。)
由于多个原因而期望限制非匹配资源元数据的可用性。这一特征一般是有利的,因为它消除了消费者可能认为反对的资源元数据的显示(或消费者的监护人可能认为反对的)。同样,限制非匹配资源元数据的可用性有益于消除消费者可能不感兴趣的外来信息。在另一实现中,资源信息共享功能322也可以允许媒介服务器用户来提供这样的分布标准:所述分布标准在一特定资源的匹配元数据不满足相关分布标准的情况下,仅仅会滤除一些(但非全部)资源元数据。这可能适用于这样的情况:其中监护人仅仅希望阻止孩子在呈现设备处观看特定资源的标题,但不反对孩子接收一些表明这些资源存在于媒介服务器302中的信息。因此,这一情况下的分布标准的效应仅仅在应用时阻止了标题。在一种实现中,资源元数据自身会包括可用于支配控制点或其它资源信息受信实体显示资源元数据的方式的显示推荐。
最后注意到,再次提到资源(如上定义的)是指提供了例如一特定资源项的个体资源。此外,资源是指一资源集合(例如资源包含符、资源文件夹等等),该资源集合可以包括一个或多个成员资源(且可能包括一个或多个其它资源集合)。资源信息共享功能322因此可被配置成提供描述了一个或多个个体资源或资源集合的资源元数据。在前一情况下,资源元数据可以包括与个体资源有关的高层信息,比如个体资源的标题、作者等等。在后一情况下,资源元数据可以包括与资源集合有关的高层信息。这种高层信息可以包括描述全集合本身的任一类全局信息、以及与个体成员资源和资源集合中的子集(如果存在)有关的信息,比如个体成员资源的标题、作者等等。
为便于讨论,以下描述一般会假定各个资源的资源元数据包括一资源定位符,该资源定位符描述了可以在哪里找到资源内容(使得它能被随后检取)。然而,在一实现中,如果资源是一资源集合,则其资源元数据可能包括或可能不包括与之相关联的资源定位符。例如,所谓的播放列表资源包含符会有与之相关联的资源定位符。该资源定位符可用来或检取播放列表(例如歌曲的列表)、或检取播放列表中的每一首歌曲(例如“相连的”歌曲的集合)。播放列表可以标识怎样检取每一首歌曲,例如通过提供与歌曲相关联的个体资源定位符。然而,其它资源集合可能没有与之相关联的资源定位符。通常,任一给定应用可以包括具有资源定位符的集合、没有资源定位符的集合、或者有和没有资源定位符的集合的组合。为便于讨论,以下说明一般向人们暗示了资源元数据项和资源定位符之间的对应关系;然而,可能应用上述资源集合的条件,尽管不总是特别说明。
在观看了可用的资源后(经由所提供的资源元数据),消费者可能决定在所选的媒介呈现设备上,例如在呈现设备306上,播放与可用个体资源之一相对应的资源内容。这可以以多种方式执行。按照一种技术,控制点316(或其它代理)可以向呈现设备306提供与一所选资源内容项相对应的资源定位符,比如统一资源定位符(URL)。(同样,注意到这一资源定位符由媒介服务器302响应于消费者的初始询问而将其作为资源元数据的一部分提供给控制点316。)然后,呈现设备306可以把这一资源定位符提交给媒介服务器302。媒介服务器302使用所选的资源内容,然后向所选的呈现设备306显示这一资源内容。这一系列行动都可以在UPnP协议外执行,例如使用一HTTP GET操作、或其它类型的操作。在该操作中,呈现设备306向媒介服务器302提供一HTTP GET命令。该命令包括资源定位符。图3用路径330表示这一动作。媒介服务器302通过提供所请求的资源内容进行响应。图3用路径332表示这一动作。除HTTP GET协议以外可以使用的其它协议有IEEE1394、RTSP/RTP等等。也可以使用各种媒介组流技术来把资源内容从媒介服务器302传输到媒介呈现设备306。而且,多个资源定位符可以被转发到呈现设备306,然后被传输到媒介服务器302以执行多个资源内容项全体的传输,而不是一个个的分别为所述各项发送各个资源定位符。
如上所述,使用HTTP GET协议(或其它协议)来检取实际资源内容也可以任选地根据分布标准而作出。也就是,如上所述,第一分布标准集合可以支配资源元数据的散布,第二分布标准集合可以支配资源内容的分布。第一集合可以与第二集合相同,或者第一集合可以不同于第二集合。通过使用第二标准集合,如果相关的分布标准表明正在请求的呈现设备未被授权接收该内容,则媒介服务器302会禁止资源内容的分布。这一规定防止未经授权的呈现设备尝试用它从授权设备接收到的(或有许可或没有许可)资源定位符来接收资源内容。这一规定也会阻止曾经被授权但不再被授权的设备通过使用“失效的”(例如陈旧的)资源定位符以尝试访问资源内容,从而接收到资源内容。
在一种情况下,媒介服务器302可以防止资源内容分布到一设备,即使同一个设备被许可接收资源元数据。或者,媒介服务器302可以防止资源元数据分布到一设备,即使该设备自身能访问资源内容。一般而言,术语“第一分布标准集合”和“第二分布标准集合”是抽象的概念,仅表示可以把不同的标准集合应用于资源元数据和资源内容的分布。在一种情况下,这两个集合可以照字面意义上由两个分开的参数库来实现。在另一情况下,这两个集合可以通过向每个标准附加字段或属性以表明各个标准是应用于资源元数据的分布还是应用于资源内容的分布来实现。在另一情况下,可以提供单个标准集合,假设它隐含地应用于资源元数据和资源内容两者的分布,或者应用于资源元数据或资源内容的任一个的分布。为实现这一散布策略,许多其它变化也是可行的。
除了上述设备相关的标准以外,其它类型的分布标准可应用于资源内容的散布。例如,在上述资源元数据散布的情况下,如果相关的分布标准表明所指定的个体没有向这一传输给予所需的许可,媒介服务器302可以禁止资源内容的分布;这一标准在一种情况下可以这样满足:通过要求这一个体目前且活动地登录到实现媒介服务器302的计算机系统上。其它标准仍可以支配资源内容的分布。
在另一种实现中,媒介服务器302可以不使资源内容的分布取决于分布标准。这一实现的前提可以是:如果消费者具有和媒介服务器302所提供的资源内容相对应的有效资源定位符,则假定消费者有适当的权利来自己访问资源内容。这是因为消费者会需要满足在分布标准中提出的条件,所述分布标准支配资源元数据的分布以便首先获得资源元数据。
A.2.系统的示例性应用
图4示出上述资源共享策略在一家庭环境中的示例性应用。然而,如上所述,
这里所述的原理可应用于任一环境,比如商业、学术组织等等。
图4中,家庭402的示意图包括多个房间,比如小房间404、儿童室406、父母的卧室408、厨房410以及起居室412。图4还示出家402中的三个人,包括父亲414、母亲416和孩子418。
小房间404包括媒介服务器420和相关的资源、以及呈现设备M 422。儿童室406包括呈现设备N 424。父母的卧室408包括呈现设备O 426。厨房410包括呈现设备P 428。而起居室412包括呈现设备430和432(Q和R)。尽管未示出,然而各个控制点可以遍布在家庭402内。例如,小房间404内的设备M 422也可以充当一接入点,消费者可以从该接入点与媒介服务器420交互。由于媒介服务器420位于小房间404内,因此小房间404可以充当用于设立分布标准的控制中心,所述分布标准支配了资源在家庭中的分布。母亲416在该例中通过设立这些标准而充当媒介服务器用户。最后,小房间404还包括用于把所有设备耦合在一起的路由器434。路由器434以常规方式运作,也就是,根据与资源信息及其它信息相关的寻址信息把所述信息路由到各个设备。
资源信息共享功能322可以提供大量不同的资源共享情况来适合不同的环境和目的。以下讨论中略述了一些资源共享可能性,以便讨论可以怎样采用资源信息共享功能322的具体例子。
在第一种情况中,媒介服务器用户(也就是正在使用媒介服务器420)可能希望挑选第一组特定的资源编入资源文件夹,然后标记与该资源文件夹内的资源相关的资源信息,用于仅分配给儿童室406内的设备N 424。因此,孩子418可以访问他或她自己房间内适当的孩子的资源信息(例如资源元数据和/或资源内容)。与此同时,父母414、416在他们浏览或搜索资源元数据时不会看到这一资源元数据;这具有不使父母414、416被他们不感兴趣的资源元数据充斥的有益效果。
在第二种情况中,父母414、416可能希望把动作流派的资源信息仅分配给他们自己,用于在他们自己的房间408内观看。父母414、416可能关心例如这一资源信息中的暴力不适合他们的孩子418观看。媒介服务器用户可以通过规定动作流派的R级资源信息集合仅应该在父母房间408内的设备O 426上播放,从而来实现这一约束条件。因此,孩子418不能从他或她的房间406访问这一不许可的资源信息;孩子418甚至也不知道这一不许可的资源信息存在(由于资源信息共享功能322甚至可以向孩子屏蔽与这些资源有关的资源元数据)。
在第三种情况中,媒介服务器用户可以把与特定的其它资源集合相关的资源信息标记为适用于在任一呈现设备上显示。这通过在为这些资源集合定义分布标准时规定“全部设备”来实现。
除了上述设备相关的约束条件以外,媒介服务器用户可以使对资源信息的访问取决于所选的运行媒介服务器420的个体是否暗示或明确表示传输这一资源信息。例如,在第四种场景中,当母亲416登录到媒介服务器420上时(且她的终端会话是活动的)满足这一标准。该情况下,从母亲416仅仅与媒介服务器420同时期地交互能推断出她许可资源信息的传输。在另一情况下,这一标准仅在母亲416许可传输时满足。这可以通过在她的孩子试图访问特定的资源元数据或资源内容时显示一弹出式消息来完成。传输仅在母亲416肯定地响应这一询问时才继续。
另一方面,规定“全部用户”的用户标准不会对资源信息的显示造成任何限制。换言之,如果设置了这一标准,则可以在任一授权设备上显示资源信息,而无需运行媒介服务器420的个体的许可。然而,设备相关的标准可以对在哪里显示资源信息作出独立的限制,因此有效地防止特定的设备接收到这些资源。
再一次,资源信息共享功能322可以提供除设备相关的标准和用户许可相关的标准以外的其它类型标准,比如和资源耗用时的日时有关的各种标准等等。同样,再一次,上述特征可等效地应用于除家庭环境以外的其它环境,比如商业环境。
最后,如下面在章节A.5中更详细地描述,家庭402外的各个实体会尝试以未经授权的方式与家庭网络交互。例如,家庭402中提供的部分网络可以用无线链路来实现;该情况下,未经授权的实体可能与家庭402足够接近地工作以便将自己表示成一有效的控制点或呈现设备。在另一情况下,未经授权的实体可以用广域网(比如互联网)来表示一个体,以便故意或不注意地接入媒介服务器420所提供的资源信息。在任一情况下,上述资源共享策略都可用来限制资源信息到一组已知和受限的呈现设备的分布。这会有防止未经授权的实体访问资源信息的效应,因为这些实体不在可能接收资源信息的预先许可的设备列表上。分布还取决于运行媒介服务器402的指定个体的许可。这又使未经授权的访问路径有了另一障碍(因为这一标准要求媒介服务器用户暗示或明确许可发放少量资源信息)。下面的章节A.5描述了为阻碍对资源信息的未经授权的访问而设计的几个其它规定。
A.3.媒介服务器架构综述
图5是图3所示的示例性媒介服务器302的更详细的描述。媒介服务器302可以用软件、固件(例如固定的逻辑电路)或软件和固件的组合来实现图5所示的各个块。这里使用的术语“逻辑”一般表示软件、固件、或者软件和固件的组合。在软件实现的情况下,所示的块可以表示在一处理设备(例如CPU)上执行时执行指定任务的程序代码的集合(和/或公布的声明)。程序代码可以被保存在一个或多个计算机可读存储器设备中。
通过综述,媒介服务器302架构包括三个主要组件。第一个主要组件是媒介服务模块502。媒介服务模块502提供(host)资源信息共享代码、监视UPnP网络314是否有新设备的代码、以及用于共享资源内容的服务器。媒介服务模块502还保持用来支配网络314上资源元数据和资源内容的分布的配置数据(例如包括共享资源文件夹列表、所许可设备列表、为资源信息传输提供许可所需的媒介服务器用户列表等等)。
第二个主要组件是内容目录设备监视(CDDM)服务模块504。如下详细说明,CDDM设备模块504与媒介服务模块502相比,具有较高的访问特权以便和媒介服务器302的系统资源交互。这样,媒介服务器302使用CDDM服务模块504来允许少量特权操作,所述特权操作是媒介服务模块502由于其低访问特权而不能执行的。下面详细列举和描述了CDDM服务模块504所提供的操作。
第三个主要组件是配置和控制面板模块506(为了简洁称为控制面板模块506)。控制面板模块506允许一登录的用户来许可或拒绝对加入网络314的新设备的授权,还管理一共享资源文件夹列表并且定义相关的分布标准。控制面板模块506还在媒介服务器302遇到关键的系统差错时警告媒介服务器用户。
如在子章节A.4(下述)中所述,媒介服务器302实现了快速用户切换(FUS)。FUS技术允许不止一个媒介服务器用户在任一个时刻登录到宿主媒介服务器302的计算机系统上。该情况下,媒介服务器302提供了可以同时运行的控制面板模块506的多个实例。图5特别示出以下示例性情况:其中模块实例506用来和用户508交互、模块实例510用来和用户512交互、模块实例514用来和用户516交互。然而,每个用户能在任一时刻起动控制面板模块506的最多一个实例。私有应用编程接口(API)518把控制面板模块506耦合到媒介服务器302中的其它组件。
上述三个模块的每一个都在不同的所谓“用户环境”中操作。媒介服务模块502在任一所谓的“被制止(clamped-down)”用户环境中运行,比如所谓的本地服务用户环境或网络服务环境(要在下面描述)。CDDM服务模块504在所谓的本地系统用户环境中运行。而控制面板模块506在所谓的登录用户的用户环境中运行。基本上,被制止用户环境提供了与UPnP功能集合有关的访问特权,比如监视UPnP网络314是否有新设备、共享资源信息等等。然而,被制止用户环境可能允许访问由实现媒介服务器302所需的计算机系统所提供的特定资源,比如实际读取、删除、和写入磁盘上保存的资源。本地系统用户环境(由CDDM服务模块504使用)提供了对这些核心计算机资源的访问,此外,可以修改对这些计算机资源的访问许可以便允许被制止的用户环境访问这些计算机资源。因而,被制止用户环境(由媒介服务模块502使用)和本地系统用户环境(由CDDM服务所使用)彼此互补以便提供实现UPnP共享功能所必要的功能。登录用户的用户环境(由控制面板模块506使用)提供了与一登录的用户(例如用户508)特别相关的访问特权。
期望把不同的功能分配给不同的安全用户环境以便保护媒介服务器302的资源,更宽泛地说,是保护宿主媒介服务器302的计算机系统的资源。例如,媒介服务器302可以在后台模式下执行特定的操作,而没有任何媒介服务器用户登录到媒介服务器302上。一种这样的后台操作必须在出现关键系统差错时或者在已经在网络314上检测到新的媒介呈现设备或控制点时通知媒介服务器用户(在任一情况下,这都由起动控制面板模块506而执行)。期望防止与这些后台任务相关的功能直接与媒介服务器302所提供的全部系统资源直接交互。为此,媒介服务器302使用CDDM服务模块504,该模块504在本地系统用户环境中运行,以便补充媒介服务模块502(它在被制止用户环境中运行)。如上所述,CDDM服务模块504具有必要的访问特权来访问超出被制止用户环境范围的核心系统资源。
在以下讨论中,为便于说明,被制止用户环境在使用本地服务用户环境的特定实现环境中描述。本地服务用户环境是指由微软
操作系统创建的特殊账户,该特殊账户一般像其它常规用户账户一样不允许对计算机系统的交互式登录。然而,如上所述,也可能用网络服务环境(在微软
操作系统中也称为预定义的用户环境)实现被制止的用户环境、或某些其它用户环境。本地服务用户环境和网络服务用户环境具有与之相关联的一组类似特权,但是这些用户环境所提供的好处并不相同。例如,网络服务用户环境提供了由和运行
操作系统的网络耦合的其它机器所辨认的证书。相反,本地服务用户环境证书仅在用户的本地机器上被辨认;而且,一个机器的本地服务用户不能在其它机器上被验证。
图3环境中介绍的资源信息共享功能322总体上表示了上述的三个组件502、504和506。每一个这些上述组件都会在下面依次描述。
a.媒介服务模块
首先,设备监视模块520从和UPnP网络314耦合的设备接收通知。例如,这一模块520检测到由已被加入UPnP网络314的新呈现设备所生成的宣告。然后,这一模块520通知媒介服务器302中的其它模块有关这一事件,这一事件触发了其它动作(将在下面详述,例如参照图16和17)。设备监视模块520还检测到由耦合到UPnP网络314的控制点作出的请求。如图5所示,资源信息消费者(例如简称为“消费者”)可以开始这一请求,以便浏览或搜索媒介服务器302所提供的资源元数据。设备监视模块520接着通知内容目录服务模块有关这一请求,这一请求触发了其它动作(下面将详述)。
资源监视器模块522监视资源存储器320(图3介绍)中是否有新加入的、删除的或修改的资源。在检测到变化后,资源监视器模块522通知内容目录服务模块526有关资源的变化。内容目录服务模块526保持了资源存储器320中提供的资源目录。如图5所示,内容目录服务模块526还与一消费者交互,该消费者输入一请求以浏览或搜索资源存储器320所提供的资源。内容目录服务模块526通过检取资源元数据并将其传输到该消费者而响应于这一请求,所述资源元数据描述了满足消费者请求并且满足与该请求有关的任何分布标准的可用资源。
资源存储器320自身可以表示单个资源贮藏器或多个贮藏器。资源存储器320可以用磁性存储设备、光学存储设备、EEPROM存储设备以及/或任何其它类型的存储设备来实现。资源存储器320中可以保存的示例性可读资源包括:.bmp图像文件、.gif图像文件、.jpeg图像文件、.png图像文件、.GIFf图像文件、.avi视频文件、.mp3音频编Mpeg文件、.mpeg视频Mpeg文件、.wav音频文件、.wma音频文件、.wmv视频文件等等。这仅仅是说明性的示例性列表。资源存储器320可以与媒介服务器302的其它部分位于同处,或可以全部或部份地位于一个或多个分开的位置。在后一情况下,媒介服务器302可以远程地管理资源存储器320中提供的资源。
资源传输模块524协调资源内容到一媒介呈现设备(比如图3所示的媒介呈现设备306)的传输。在一种实现中,资源传输模块524是一HTTP服务器。资源内容的传输通过接收到资源内容请求(比如在使用HTTP服务器的情况下的HTTPGET请求)而起动。资源传输模块524通过在满足相关分布标准(如果可应用)时发送资源内容而进行响应。在一种实现中,资源传输模块524通过连接管理器服务模块530的帮助来执行这一任务。连接管理器服务模块530管理媒介服务器302和呈现设备之间的耦合,所述耦合用于接收资源内容。控制点(例如控制点314或316)可以调用这一模块530使媒介服务器302准备好资源信息的卓越传输。这一准备必须匹配媒介服务器302和呈现设备的能力、发现和UPnP网络314中正在进行的资源信息传输有关的信息、并且建立和断开媒介服务器302和呈现设备之间的连接。(注意到,用HTTP技术执行资源内容传输的特征示例性实现可以通过省去一个或多个上述功能来简化该处理。)
在一种示例性的和说明性的HTTP实现中,连接管理器服务模块530可以支持一GetProtocolInfo方法。该方法返回一个媒介服务器302能发出和接收的协议信息类型的用逗号隔开的列表。控制点使用该信息在媒介服务器302和所选的呈现设备(例如媒介呈现设备306)之间建立媒介连接。每个ProtocolInfo项都是传输协议、网络、多用途互联网邮件扩展(MIME)类型以及附加信息的组合,总体由以下格式规定:Protocol:Network:Content_Format:Additional Info。
媒介服务模块502也可以包括一任选的音频-视频(AV)传输服务模块(未示出)。如果得到支持,AV传输服务模块可用来控制资源内容向呈现设备的回放。这一模块特别允许一控制点停止资源内容的流、暂停资源内容的流、搜索资源内容内一特定位置(使用查找函数)、等等。
在图5的特定例子中,媒介服务模块502可以使用一HTTP服务器524来协调资源内容的传输(比如HTTP 1.1服务器)。该服务器524响应于HTTP GET请求的接收而分发资源内容。HTTP GET请求指定了期望资源的URL,URL又响应于资源元数据到受信实体(例如控制点)的先前传输而被提供给媒介呈现设备,控制点又可能已经被消费者的先前搜索或浏览请求所提示。只要满足相关的分布标准,服务器524通过从与指定URL相对应的资源存储器320中检取资源内容、把资源内容变换为所请求的媒介格式(如果需要是)、以及把该资源内容提供给消费者,从而进行响应。一资源的URL可以具有如下的示例性形式:
http://machine ip:port/ResourceId
其中“ResourceId”是指由内容目录服务模块526分配给资源内容的标识符。除了HTTP-GET以外可以使用的其它用于传输资源内容的协议包括IEEE-1394、RTSP/RTP等等。
内容目录服务模块526提供使媒介服务器302能把资源信息(特别是资源元数据)共享给媒介呈现设备的功能核心。它包括一共享的资源存储器532。在一种实现中,共享资源存储器532包括一目录和相关的资源元数据,所述资源元数据描述了在资源存储器320中提供的要被共享的资源。
更具体地说,简要浏览一系列的图,图6示出可用来把共享资源存储器532中的信息组织到虚拟资源包含符内的示例性分层架构,例如目录600。该图中,“根”资源包含符602包含目录600的所有其它资源包含符。“音乐”资源包含符604包括归类到音乐的资源包含符。“音乐/全部音乐”资源包含符606包括在内容目录内共享的全部音乐资源。“音乐/专辑”资源包含符608包括各个专辑的资源包含符,其中每个这样的资源包含符包括属于该专辑的音乐资源。“音乐/艺术家”资源包含符610包括各个艺术家的资源包含符,其中每个这样的资源包含符都包括由该艺术家创作的全部音乐作品的资源。“音乐/流派”资源包含符612包括各个流派的资源包含符,每个这样的资源包含符都包括属于该流派的音乐作品的资源。
“视频”资源包含符614包括归类视频的资源包含符。“视频/全部视频”资源包含符616包括在内容目录内共享的全部视频资源。“视频/演员”资源包含符618包括各个演员的资源包含符,每个这样的资源包含符都包括表征该演员的资源。“视频/流派”资源包含符620包括各个流派的资源包含符,每个这样的资源包含符都包括属于该流派的视频资源。
“图片”资源包含符622包括归类图片的资源包含符。“图片/全部图片”资源包含符624包括在内容目录内共享的全部图像资源。(尽管未示出,但可以包括一“图片/专辑”资源包含符,所述包含符基于文件夹名字包括各个图片专辑的资源包含符。而且,尽管未示出,可以包括“图片/获得日期”资源包含符,该包含符包括在一给定日期获得的每组图片的资源包含符)。
最后,“用户文件”资源包含符626包括持有属于个体用户的资源的资源包含符。图6示出与示例性的N个用户相关联的资源包含符628的集合。
目录600中的各个资源包含符都有与之相关的目标ID。例如,视频/演员资源包含符会有目标ID“包含符:VideoActor”。一般而言,图6所示的目录600是示例性的;其它目录可以使用资源的不同组织和选择。
在一种实现中,目录600中所示的包含符内的每一个个体资源都对应于保存在资源存储器320中的一个单独相应的资源文件。但是,如上所述,“资源”应该被理解为一种抽象的信息集合。单个资源可以仅用文件的一部分来保存(其中这样的文件也可能保存与其它资源有关的信息)。或者,单个资源可以优于不同文件的集合被保存。同样注意到,资源集合(比如图6的资源包含符)自身组成资源。
返回图5,共享资源存储器532包括与目录600中的共享资源相关联的资源元数据534。如上所述,资源元数据一般包括描述资源内容的高层信息,比如名字、艺术家、创作日期、资源大小、与资源内容相关的像URL这样的资源定位符、等等。共享资源存储器532也可以保存标准信息536,标准信息536描述了和用来限制资源信息(包括资源元数据和资源内容)在相应的控制点和呈现设备散布到适当消费者的资源集合(例如资源文件夹或资源包含符)相关联的标准。如上所述,一个示例性的标准可以支配授权哪些设备来接收资源信息。另一个标准可以支配需要哪些运行媒介服务器302的指定个体(如果有)来为资源信息传输的发生提供许可。
更具体地说,如章节A.1所述,标准信息536可以包括两个标准集合:支配资源元数据散布的一个集合、以及支配资源内容散布的另一个集合。这些集合可以用两个分开的存储器、用与一共同存储器相关的字段或属性、或使用某些其它技术来实现。第一标准集合可以不同于第二标准集合,表明和资源内容的呈现相比、不同的约束条件支配了资源元数据的显示,或者这两个集合可以相同。或者可以使用单个集合来支配资源元数据、资源内容或其两者的散布。为便于下面的讨论,假定标准信息536保留单个标准集合,该单个集合用于少量发放资源元数据以及资源内容。
在一种实现中,资源元数据534与个体共享资源相关联,其中共享资源可以对应于资源存储器320上保存的文件。该情况下,资源元数据534可以通过在服务初始化时“爬”过共享文件而被提取。根据共享文件的数目,这一操作会用去适当的时间量。在另一种实现中,资源元数据534可以被保持在共享资源存储器532的相关数据库中。在还有一个例子中,资源元数据534可以从资源存储器320内的全部共享文件中提取,并且被保存在一个或多个分开的文件中。(例如,媒介服务器302可以为资源存储器320中使用的每个文件系统卷标使用一个分开的文件,其中每个文件系统卷标可以对应于一个分开的驱动器字母。这一规定便于资源元数据的收集,尤其在采用可移动卷标的情况下,比如USB硬驱;媒介服务器302只有在其相应的驱动器目前已安装时才会尝试从一卷标读取资源元数据。)相关数据库和/或分开文件的使用会减少与初始化媒介服务器302相关联的时间量。例如,当使用分开文件策略时,分开文件可以被快速地加载到内存中以便提供资源元数据534,这和努力地爬过整个资源存储器320以提取该信息相反。
类似地,在一种实现中,标准信息536可以与资源存储器320所提供的个体可共享资源文件夹相关联。该情况下,与共享文件(属于资源存储器320所提供的相应的共享资源文件夹)相关的标准信息536可以通过在服务初始化期间以和上述相同的方式“爬”过共享资源文件夹来提取。这会用去可估计的时间量。因此,为了加速该过程,媒介服务器302可以采取一相关数据库策略和/或一分开文件策略(类似于上述用于资源元数据534的存储和管理的情况)。在一种实现中,标准专用的相关数据库和/或分开文件用来提供标准信息536,标准信息536不同于用来提供资源元数据534的元数据专用的相关数据库和/或分开文件。在另一实现中,可以使用单个相关数据库和/或分开文件来保存资源元数据534和标准信息536两者。在另一种实现中,资源元数据534和/或标准信息536可以持续,并且从操作系统注册表中读回。
如上所述,在一种实现中,标准信息536可以应用于资源文件夹。媒介服务器用户可以通过显示与资源文件夹有关的信息的一个或多个用户界面页面来创建这一关联。在另一实现中,标准信息可以和目录600(图6所示)中的资源包含符相关联或者和目录600中包括的个体资源相关联。媒介服务器302可以在此通过显示与资源包含符有关的信息的一个或多个用户界面页面来创建这一关联。虽然以下讨论描述了用于实现前一情况(有关把资源文件夹和标准相关联)的功能,也可以提供类似的功能来实现后一情况(有关把资源包含符与标准相关联)。在两种情况下,分布标准可用来支配资源元数据和资源内容的散布。资源包含符的组织(称为媒介服务器302中资源的内部组织)一般不能被预期和资源文件夹的分层相匹配(称为媒介服务器用户与之交互的资源的组织),尽管在这两个组织之间可能存在关系(例如资源包含符和资源文件夹)。
无论使用哪种方法来构造资源元数据534,媒介服务器302都能对被许可保存在一存储器内的元数据作出各种约束,所述存储器用来保留资源元数据534。在一例中,应用以下示例性的约束条件:(a)媒介服务器用户共享资源信息对于保存被共享的资源信息的文件必须有读许可;(b)保存被共享的资源信息的文件必须有已知的媒介类型;(c)如果保存被共享资源信息的文件是一硬链接或是一浏览器快捷键,尝试共享资源信息的媒介服务器用户必须对根本的资源具有读许可;(d)保存被共享的资源信息的文件不能被隐藏;(e)保存被共享的资源信息的文件不能是一隐藏文件夹;(f)保存被共享的资源信息的文件不能被保存在可移动驱动器上;以及(g)保存被共享的资源信息的文件不能在网络共享上。同样,这些约束条件仅仅是示例性的;其它应用可以根据特定应用的要求来减轻或移除这些约束条件中的一个或多个。
继续图5的讨论,内容目录服务模块526还包括一共享资源管理存储模块538。该模块538一般充当管理共享资源存储器532中保存的信息的作用。例如,共享资源管理模块538在资源监视器模块522通知它资源已被加入、修改或从资源存储器320中被删除时、更新共享资源存储器532。
在一种实现中,共享资源管理模块538跟踪最初共享出每一个共享资源文件夹的媒介服务器用户。共享资源管理模块538可以被配置成仅允许已建立了共享资源文件夹的媒介服务器用户来修改与该共享资源文件夹相关联的分布标准信息536、或者“不共享”该资源文件夹(也就是,移除该资源文件夹的可共享状态)。例如,在一种实现中,假定媒介服务器用户已经建立了共享文件A、B和C的访问特权。该情况下,共享资源管理模块538可以被配置成仅允许该用户来为这些文件应用分布标准。或者假定文件A、B和C已经被分组到该媒介服务器用户不被许可共享的其它资源在内的一文件夹。如果共享资源管理模块538被配置成允许媒介服务器用户向文件夹应用分布标准,则这些标准一般仍然仅对于文件A、B和C有效。其它实现能以各种方式减轻这些约束条件。
在一分开的文件或多个文件中提供资源元数据516的情况下,共享资源管理模块538还可以包括用于维持这些分开文件的功能。这一功能可以包括“爬”过资源存储器320上的共享文件以便在服务初始化期间查找目录600上标识的共享文件变化的后台进程。这一功能也可以包括和资源监视器模块522交互以便在资源文件夹内检测到变化时提供通知的机制。共享资源管理538可以在确定分开的文件要被破坏时扔出这些文件;共享资源管理模块538随后能通过爬过共享资源文件夹以便从中检取元数据来重构分开的文件。一般而言,共享资源管理模块538可以采用多种其它相干性技术来确保分开的文件准确地反映了共享资源的元数据。
操作中,内容目录服务模块526一般允许消费者调查与共享资源相对应的资源元数据。更具体地说,在一典型的交互中,消费者经由控制点发送一请求以浏览或搜索与目录600中提供的共享资源相关联的资源元数据。设备监视模块520以下面将详述的方式检测这一请求,然后响应于此,通知内容目录服务模块526。内容目录服务模块526通过扫描资源元数据534以定位满足消费者请求的任何资源从而进行响应。例如,消费者可能已请求内容目录服务模块526来示出一个特定流派中的全部资源元数据;或者消费者可能已请求内容目录服务模块526来提供与一目标资源有关的资源元数据(例如通过指定特定的关键词用于搜索目标资源)。这一进程可能得出一个或多个匹配的资源元数据项。然后,内容目录服务模块526(如果可应用)也可以根据共享资源存储器532中保存的标准信息536来检验任何匹配的资源元数据,并且挑选出不满足相关标准的任何匹配的资源元数据项。(可能禁用这一规定,使得标准信息在资源信息的散布中不起作用。)然后,内容目录服务模块526会把一列继续存在的匹配资源元数据格式化为一XML消息,然后把该XML消息发送给消费者。这一资源元数据可以描述个体匹配资源以及包括个体成员资源在内的资源集合(比如资源包含符)。
接收的控制点设备可以把XML消息转换成一显示格式(例如HTML),然后显示这一信息供消费者观看。该显示可以提供标识了匹配资源元数据的媒介列表。然后,消费者可以命令媒介呈现设备306来播放与媒介列表中一个或多个项相关联的资源内容。这可以通过把和媒介列表中所选项相关联的资源定位符(比如URL)传送到一所选的呈现设备(比如呈现设备306)来执行。这些资源定位符由媒介服务器302发送给消费者的XML消息中指定。(然后,再次注意到,浏览操作的结果会返回资源包含符,例如资源包含符列表;资源包含符可能有或可能没有与之相关联的资源定位符,如果没有,它们自身不能被显示在呈现设备处供回放,尽管包含符中标识的个体资源可以被回放。)
媒介服务模块502的另一个组件是控制面板COM对象540。一般而言,这一对象540允许控制面板模块506检取和设置媒介服务模块502中的配置数据。在一示例性实现中,对象540是一组件对象模型(COM)对象。一般而言,COM对象执行一个或多个任务。也就是,COM对象经由一接口来实施功能,应用程序可以调用该接口来执行其预定的任务。
在媒介服务器502的环境下,控制面板模块506经由控制面板COM对象540与媒介服务模块502交互。为充当这一角色,控制面板COM对象540执行以下示例性的任务。首先,控制面板COM对象540允许控制面板模块506来列举已被恢复的设备、检取它们的当前状态(例如它们是已被许可、拒绝还是既没有被许可又没有被拒绝)、取得用来填充UI的设备信息(比如设备的制造商、图标、型号等等)、并且许可或拒绝设备。其次,控制面板COM对象540允许控制面板模块506管理共享资源文件夹列表,所述共享资源文件夹包含资源存储器320上保存的可共享资源以及与这些资源文件夹相关联的任何相关的分布标准信息536(比如被许可接收与这些共享资源文件夹相关的资源信息的设备列表)。为此,控制面板COM对象540允许控制面板模块506检取目前共享的资源文件夹列表和它们相关的分布标准信息536,以便不共享这些资源文件夹、以便创建新的共享资源文件夹和/或分布标准、以便修改与一共享资源文件夹相关的分布标准、等等。最后,当媒介服务模块502发现UPnP网络314上的新控制点或媒介呈现设备时,它使用控制面板COM对象540和控制面板宿主的回叫对象542(下面将详细讨论)来通知控制面板模块506。
为了适应快速用户切换(FUS),媒介服务器502允许多个控制面板模块506同时为活动。然而,在一种实现中,媒介服务器502允许每个终端服务会话仅有一个活动的控制面板模块506。
b.CDDM模块
如上所述,媒介非服务模块502在本地服务用户环境中运行(更具体地说是被制止的用户环境),而CDDM服务模块504在本地系统用户环境中运行。本地服务用户环境和本地系统用户环境相比一般有更多的限制性访问特权。因而,媒介服务模块502依赖于CDDM服务模块504来执行它自身没有访问权利来执行的一系列功能。按照一个示例性实现,被委托给CDDM服务模块504的特权功能在下面描述。
首先,当设备监视模块520已经在网络314上检测到新的媒介呈现设备306或控制点316时,CDDM服务模块504执行起动控制面板模块506的角色。这使媒介服务器用户能许可或拒绝该设备。被许可的设备随后被允许访问与媒介服务器302的共享资源相对应的资源信息(资源元数据和资源内容)。CDDM服务模块504也在下面情况时起动控制面板模块506:(a)媒介服务器用户登录到媒介服务器302计算机上(或如下所述,重新连到这一计算机上前面已建立的终端服务器会话);以及(b)媒介服务器302前面已检测到没有被任何媒介服务器用户许可或拒绝过的设备。
此外,CDDM模块504起动控制面板模块506以便警告媒介服务器用户有关各种差错和条件。例如,CDDM服务模块504可以警告媒介服务器用户:没有找到IP地址在可允许的前面配置的IP地址范围(例如在私有IP地址范围或自动IP地址范围内)内的任何网络接口。或者CDDM服务模块504可以警告媒介服务器用户:当资源信息共享功能322服务不在运行时,资源存储器320上的共享资源文件夹已经被删除或重命名。一般而言,CDDM服务模块504在目前活动的登录用户的情况下加载控制面板模块506。CDDM服务模块504通过接收登录用户的标记以及通过调用一CreateProcessAsUser函数来起动控制面板模块506。然而,在这样做以前,它确保控制面板模块506在目前活动的登录用户的终端服务器会话中尚未运行。
其次,CDDM服务模块504调节与一所保存的资源文件夹相关联的访问特权,使得媒介服务模块504能访问资源文件夹以执行其规定的功能(比如构造资源元数据534)。这可以如下执行:通过改变与共享资源文件夹相关的访问控制列表(ACL)以允许本地服务用户环境的访问。在一示例性实现中,这赋予了本地服务用户环境对于资源文件夹内容的读、写和删除访问。(也就是,资源文件夹经过ACL以便赋予本地服务用户环境除了读访问以外的写和删除访问;这是因为一些媒介类型应该在它们在UPnP网络314上可用前被解码。用于对文件解码的工具有时在包含所述文件的目录中创建了临时文件。临时文件接着应该被删除。)
第三,CDDM服务模块504监视媒介服务器302以检测新的媒介服务用户何时登录或登出用于实现媒介服务器302的计算机系统。它还确认登录到媒介服务器302上的媒介服务器用户的身份。也就是,如上所述,媒介服务模块502可以根据目前在媒介服务器计算机器上活动的已登录媒介服务器用户的身份、来限制资源信息的共享。因而,媒介服务模块502可以使用CDDM服务模块504所提取的用户信息,考虑到目前活动的已登录媒介服务器用户来确定它是否具有共享资源信息的许可。(通过使用WTSQueryUserToken函数来检取已登录媒介服务器用户的标记、并且通过使用GetTokenInformation函数从标记中检取媒介服务器用户的SID,CDDM服务模块504可以确定媒介服务器用户的身份。)
c.控制面板模块
控制面板模块506提供了使媒介服务器用户能许可或拒绝对被加入UPnP网络314的新设备的授权的功能。控制面板模块506还允许媒介服务器用户定义共享资源文件夹和相关的分布标准。如上所述,一标准可以限制资源信息(例如资源元数据和资源内容)仅散布到指定的设备。另一标准可以使资源的散布取决于使用媒介服务器302的指定个体是否明确或暗示地许可共享资源信息。如果指定的个体仅仅登录到媒介服务器302上,则他或她就被视为已明确许可(在一种实现中),个体的会话目前是活动的。控制面板模块506可以通过一系列UI显示(UI页面)来执行上述任务。这些UI显示在下面章节B中将进一步详述。控制面板模块506可以用一小程序来实现(小程序即在应用程序环境中执行的程序),并且可以在已登录媒介服务器用户的环境中运行。
媒介服务器302可以以两种方式来激活控制面板模块506。其一,媒介服务器用户可以手动地激活控制面板模块506。其二,媒介服务模块502可以自动地起动控制面板模块506,例如以便在新的呈现设备加入UPnP网络314时通知媒介服务器用户。
在一种实现中,媒介服务器302在每一个终端服务器会话中提供了控制面板模块506的单个实例。因而,当控制面板模块506起动时,它确认控制面板模块506的另一个实例尚未在该终端服务器会话中运行。然后,控制面板模块506确定媒介服务模块502是否在运行;如果不是,则控制面板模块506使它起动。然后,控制面板模块506共同创建由媒介服务模块502(上面描述)宿主的控制面板COM对象540。最后,控制面板模块506创建它所宿主的客户机回叫COM对象542;它接着调用与控制面板COM对象540相关联的Initialize()函数,将客户机回叫对象542传给该函数。媒介服务模块502使用客户机回叫对象542来通知控制面板模块506有关特定的事件,比如服务关闭、后台数据变化、或者是在控制面板506运行时发现UPnP网络314上的新控制点或媒介呈现设备。
A.4.快速用户切换(FUS)规定
FUS技术为了在与不同的响应媒介服务器用户相关的不同计算会话之间的切换提供了一种方便的技术。例如,该技术允许第一媒介服务器用户连到一计算机并运行一应用程序,后面跟着运行另一应用程序的第二媒介服务器用户。当第二媒介服务器用户连到计算机时,计算机会保存和第一媒介服务器用户会话相关的应用程序实例以及桌面设置。当第一媒介服务器用户再次连到计算机时,计算机会在第一媒介服务器用户断开时恢复和他或她的计算机会话相关联的应用程序以及设置。通过记录与连续使用计算机的不同的响应媒介服务器用户相关联的多个应用程序实例和桌面设置,FUS技术可以以上述方式在任何数量的媒介服务器用户之间反复。提供FUS的一种示例性的商品是由微软公司(Redmond,华盛顿)提供的Window操作系统。相反,在传统的计算解决方案中,在允许第二媒介服务器用户连到计算机之前,计算机会要求第一媒介服务器用户登出,从而在把第二媒介服务器用户连到同一台计算机时终止第一媒介服务器用户的应用。
对媒介服务器302应用FUS技术允许同时存在控制面板模块506的多个实例。例如,如上所述,控制面板模块实例506与媒介服务器用户A 508相关联,控制面板模块实例510与媒介服务器用户B 512相关联,控制面板模块实例514与媒介服务器用户C 516相关联。然而,向上述UPnP媒介服务器环境应用FUS技术产生了各种困难。这一章节描述了一示例性的FUS解决方案,它解决了上述UPnP媒介服务器302环境内的这些问题。
首先,虽然如上所述,媒介服务器302允许同时运行控制面板模块506的不止一个实例,然而媒介服务器302仅允许每个终端服务器会话有一个控制面板模块506。为了实施这一特征,媒介服务器302要求每个控制面板模块506在使用COM对象540之前创建这一对象并且初始化它(通过调用Initialize()函数)。当调用Initialize函数时,调用者应该提供客户机回叫COM对象542。
更具体地说,当客户机调用Initialize()函数时,媒介服务模块502从客户机的模仿标记中提取客户机的终端服务器会话ID。然后,媒介服务模块502确定这一会话ID是否与另一客户机相关联。如果是,则媒介服务模块502调入该客户机的回叫对象542以确定该客户机是否仍然“存活”。如果客户机仍旧为活动的,则拒绝新的客户机。否则,媒介服务模块502接受新的客户机并且保存客户机的回叫对象542供将来使用。
其次,由于媒介服务器302现在容纳了多个媒介服务器用户,它因此能被配置成在把新设备引入网络314时通知不止一个已登录的媒介服务器用户。媒介服务器302还解决了在发现一设备时没有媒介服务器用户登录到媒介服务器302上的情况(或者在发现设备时媒介服务器用户已登录但是不活动)。在这些情况下,媒介服务器302推迟通知媒介服务器用户有关新设备的存在,直到媒介服务器用户登录或继续一现有的会话为止。
第三,控制面板模块506认识到:模块的其它实例(例如实例510和514)可能同时活动、并且修改全局数据,全局数据比如设备的授权状态或者共享资源文件夹列表。为了解决这一情况,媒介服务器302在任一客户机修改全局数据时通知与活动的全部客户机相关的COM客户机回叫对象542。
最后,媒介服务器302还包括用于排除可能“假扮成”控制面板模块506的所谓欺诈应用程序的机制。图5示出一示例性的这种欺诈应用程序544。更具体地说,媒介服务器302把媒介服务模块502和控制面板模块506之间的API 518实现为一私有API(因为它把媒介服务器302内的内部组件耦合在一起)。个体可能尝试对API 518进行反向工程,允许欺诈应用程序544调入媒介服务模块502并且窜改其配置数据。
为了解决这些问题,当客户机成功地调用了和控制面板COM对象540相关的Initialize()函数时,媒介服务模块502还向各个客户机分配了唯一的客户机ID。更具体地说,媒介服务模块502通过调用与客户机的回叫对象542相关的函数来通知客户机有关这一ID。媒介服务模块502也记录所分配的ID。然后,当客户机稍后再次调用服务时,客户机被预期提供其客户机ID。媒介服务模块502检测调用者目前提供的ID,并将这一ID与前面记录的客户机ID相比较。也就是,媒介服务模块502可以通过从其模仿标记中检取客户机的终端服务器会话ID从而独立地标识客户机,并因此知道应该由客户机提供的客户机ID。如果这些ID相匹配,则媒介服务模块502许可调用;否则,媒介服务模块502拒绝调用。
如上所述,多个用户可能同时登录到媒介服务器302上。媒介服务器302可以被配置成基于从和用户相关的相应客户机标记中提取的终端服务会话ID来区分这些用户。
客户机ID从而防止了欺诈应用程序544“欺骗”控制面板模块506。使用客户机回叫对象542来通知客户机有关其ID相对于欺诈应用程序提供了额外的确保(与返回ID作为Initialize()函数的变元的可选技术相比)。这是因为欺诈应用程序544必须满足在调用Initialize()函数时提供COM客户机回叫对象542的附加难题。
媒介服务器302可以通过要求媒介服务模块502和控制面板模块506在这两个组件间建立正式交互前交换其它机密信息,从而提供附加的安全层。
A.5.附加安全规定
上述资源共享特征(用标准信息536实现)最常见是用于阻止授权用户访问那些媒介服务器用户希望保持私有的资源信息(例如,由于在参照图4讨论的家庭有关应用中提出的任何原因)。类似的私有性问题也存在于宿舍应用中(一般是把UPnP网络314应用于可能有相对大量授权用户的任一设置,但其中媒介服务器用户仍然希望有选择地把特定的资源信息少量分发给这一UPnP网络314的授权参与者的仅仅一个子集)。
上述的资源共享特征也提供了一种用于保护UPnP网络314的资源不被未经授权实体访问的机制。也就是,资源共享特征限制了资源散布到一已知的设备域。因此,禁止这一已知域以外的设备访问UPnP网络314的资源。通过使资源信息传输取决于指定媒介服务器用户的明确或暗示许可,资源共享特征还提供了附加的保证。
然而,资源共享特征不可能解决UPnP网络314所面临的每一个已知安全威胁,特别是关于未经授权(与授权的相对)用户的情况。而且,未经授权用户所造成的安全威胁在性质上是动态的和机会主义的,这样,媒介服务器用户可能有这样的担忧:资源共享资源可能不能经受对UPnP网络314安全性的不可预见的将来挑战。
上述担忧保证用附加的安全机制来补充资源共享特征,所述附加安全机制被设计成保护UPnP网络314的资源信息特别不被未经授权的用户访问。附加措施也会是期望,以便进一步确保授权用户不接收不用于他们消费的私有资源信息。更具体地说,UPnP网络314至少面临两个安全性问题。第一安全性问题由未经授权实体可能“接进”UPnP网络314所提供的资源信息而造成。这一实体可能在UPnP网络314外部工作,并且尝试经由电缆调制解调器、DSL调制解调器、拨号连接、无线连接或某些其它耦合策略来接进UPnP网络314。第二个问题由授权或未经授权的实体可能把资源信息分布到UPnP网络314原始范围以外的大量听众而造成。这称为“超分布”场景。超分布可以是故意的或非故意的。
这一章节描述了多种用于解决上面两个问题的技术。这些技术的任一个可以单独应用,也就是,没有其它技术而应用。媒介服务器302也可以应用这些技术的任何组合,包括这些技术的任何两个、三个、四个等等的组合,以便确保UPnP网络314减轻这些问题。实际上,在一种实现中,媒介服务器302可以应用全部技术。媒介服务器302或其它管理接口也可以任选地赋予媒介服务器用户通过适当配置的用户界面显示单独地启用和禁用这些技术的能力。
图7示出一UPnP应用,该UPnP应用会充当用于描述媒介服务器302所提供的许多安全性技术的载体(vehicle)。这一应用一般在图4所示的应用后被建模。该应用应用于本地设置中,比如家庭702。家庭702包括多个房间。每一间房间都可以包含一个或多个UPnP设备。在图7的说明性情况中,家庭702包括经由路由器718与设备706-716耦合的媒介服务器704。路由器718也耦合到另一路由器720。路由器718可以包括用于把媒介服务器704耦合到设备706-716的硬线连接以及/或者无线连接。例如,示例性的一个设备(例如设备714)经由无线耦合(例如RF、红外等等)与路由器718通信。
图7还示出未被授权与家庭702中的UPnP网络314交互的代表性样例,包括实例722、724和726。实体722使用设备728尝试经由无线通信与家庭UPnP网络314交互。这一设备728可能表示带有无线连接的媒介呈现设备,或者相似的装置。实体724使用设备730尝试经由一网络(比如广域网)与UPnP网络314交互。例如,这一设备730可能表示经由互联网732、调制解调器733和路由器718与媒介服务器704耦合的任一类计算机设备(例如个人计算机、服务器等等)(或者在另一种实现中,不经过路由器718路由而经由互联网732和调制解调器733直接耦合到媒介服务器704)。调制解调器733可以是一拨号调制解调器、宽带调制解调器或其它类型的调制解调器。最后,实体726使用设备734来尝试经由路由器720与UPnP网络314交互。这些未经授权的实体和设备仅仅是尝试访问UPnP网络314的资源的广泛不同类型入侵者的说明。
为了阻碍上述实体,UPnP网络314可以包括一个或多个下述机制。
a.IP地址限制
(图3的)资源信息共享功能322可以被限制到一预定的非公共地址范围,这会有排除公共宽带话务的效果。在一示例性实现中,预定地址范围为192.168范围(例如按照一示例性实现是从192.168.0.0到192.168.255.255)和自动IP范围(例如按照一示例性实现是从169.254.0.0到169.254.255.255)。其它示例性的非公共地址范围为10.0.0.0到10.255.255.255以及172.16.0.0到172.31.255.255(根据一种示例性实现)。可以使用这些范围的任一个,或者可以使用这些范围的组合(或可以使用一些其它范围)。这些范围无需是邻接的(例如在任一个这些范围内可以有“不可使用的”间隙)。一般而言,上述范围可以根据许多关系而变化(例如通过改变范围的“端点”)。
比方说,为了说明,使用192.168和自动IP范围。选择这一范围是因为:许多常用的家庭网络路由器都有少量散布192.168范围内地址的内置DHCP服务器。而且,宽带网络上的大多数路由器被设计成仅仅删除指定了192.168范围内的目标IP地址的消息。因而,资源信息共享功能322不会响应于具有192.168范围外的地址的任何请求,192.168范围内的任何消息一般都不适合通过公共宽带网络的路由器传播。这会导致在私有UPnP网络314和公共宽带网络或拨号连接之间产生一安全墙。图7通过在媒介服务器704和互联网732之间示出一封锁的访问符号736来说明这一概念。这一封锁的访问阻止家庭702内或家庭702外的人使用媒介服务器704来通过宽带网络超分布其资源。这一规定还阻止家庭702内或家庭702外的人以未经授权的方式接进UPnP网络314。
为了实现这一特征,(图5的)资源传输模块524、内容目录服务模块526和设备监视模块500可以全部被配置成仅监视在预定地址范围内的接口以及/或者丢弃始发自其它IP地址的请求。资源信息共享功能322可以提供禁止媒介服务器用户(或任何其它人)修改这一预定地址范围的各种机制,比如通过对这一地址范围进行硬编码而不是使其成为媒介服务器用户配置可访问的参数。
b.MAC地址验证
如上所述,资源信息共享功能322使用设备的媒介访问协议(MAC)地址或者其它设备专用信息来验证该设备。该技术中,资源信息共享功能322首先标识被加入UPnP网络314的新设备的IP地址。(新设备首先用图5的设备监视模块520来检测。)然后,资源信息共享功能322使用SendARP函数把IP地址转换成MAC地址,所述SendARP函数是由微软公司的使用地址解析协议(ARP)的互联网协议帮助所提供的。如上所讨论的,资源信息共享功能322接着可以使用在(下面)章节B中要讨论的用户界面显示来通知媒介服务器用户有关新设备的存在。如果媒介服务器用户授权了该设备,则在资源信息共享功能322随后作出UPnP请求(比如浏览或搜索请求)或者作出内容相关的请求(比如HTTP GET请求)时,资源信息共享功能322使用IP和MAC地址来验证该设备。来自未经授权的设备的请求被忽略。使用始发请求的MAC地址来验证设备是有利的,因为单单IP地址是不可靠的(因为IP地址会根据DHCP服务器的可用性而改变)。
该MAC验证技术在阻止无线设备(比如设备728)获得对UPnP网络314的未经授权的访问时尤其有用。例如,如果实体722由家庭702驱动并且同时使用无线访问设备728,则资源信息共享功能322可能显示一弹出式消息,该弹出式消息询问(媒介服务器704的)媒介服务器用户他或她是否希望授权该设备。除非媒介服务器用户选择许可访问,否则资源信息共享功能322就拒绝对这一设备728的访问。
MAC地址验证在与其它安全性措施结合使用时最具价值,所述其它措施比如IP地址限制(在上面子章节(a)中描述)。例如,没有IP地址限制的MAC验证可能不在其中媒介服务器704直接连到宽带网络的网络配置中提供充分的保护(或者当媒介服务器704经由拨号连接耦合到外部功能时)。没有IP地址限制,资源信息共享功能322就能检测到家庭外的“相邻”设备,并且询问媒介服务器用户这些设备是否应被验证;这可能不会造成安全性风险,但它由于弹出式消息的频繁显示而成为麻烦。而且,假定宽带(或拨号)调制解调器连到互联网服务器提供商的网络上的一代理地址解析协议(ARP)路由器。该情况下,在资源信息共享功能322验证子网上通过代理ARP路由器被路由的所有设备的任一个时,资源信息共享功能322会有效地验证所有设备。
c.子网限制
在一示例性实现中,资源信息共享功能322要求其网络客户机在它所运作的同一子网上运作。由于这一限制,资源信息共享功能322忽视了从其本地子网外的客户机接收到的UPnP行动请求和资源内容检取请求。这会造成进一步降低工作在UPnP网络314范围外的设备能访问其资源的可能性。
注意到,上述MAC地址验证程序不跨过子网边界而工作,因为ARP协议不跨过子网边界发送ARP分组;因此,如果使用MAC地址验证,则该技术也会从本质上把操作限制到单个子网。但使用资源信息共享功能322来实施子网限制不同于SendARP()所提供的暗示子网限制;例如,后一技术可能由于修改技术中所使用的路由表而得到损坏。
还注意到,缺省情况下,SSDP服务(例如微软公司在操作系统平台上提供的服务)把广播SSDP宣告限制到子网。也就是,UPnP设备使用SSDP来通过网络宣告它们的存在,因此,对于缺省设置而言,资源信息共享功能322不会被其它子网上的UPnP设备所检测。然而,这一SSDP特征不同于资源信息共享功能322所执行的子网限制,因为前一种技术取决于注册表可配置的设置。同样,SSDP宣告不限于192.168和自动IP地址范围。
d.TTL限制
资源信息共享功能322可以限制一个使用期限(TTL)参数以便进一步降低许可未经授权的实体与UPnP网络314的资源信息交互的可能性。在一示例性实现中,TTL参数是一互联网协议(IP)参数,该参数一般对应于在消息从源节点被发送到目标节点的过程中所遍历的节点(例如IP第3级节点,比如路由器等等)的数目。每个IP分组包括一个TTL参数。在UPnP网络314的环境内,TTL参数可能限制由内容恢复服务模块526所发送的消息的路由,所述消息包含与共享资源相关联的资源元数据。或者或另外,TTL参数也能限制对资源内容请求(比如HTTP GET消息)的响应的路由。例如,设为数字3的TTL参数会足以禁止资源信息在一公共宽带网络上的散布(因为通过公共宽带网络到一目的地的传输一般会使消息暴露给三个以上的路由器)。在其中资源信息共享功能322把UPnP网络314限制为可能仅包括一个路由器的单个网络的示例性情况下,TTL参数可以被设为低达1。在一示例性实现中,资源信息共享功能322可以对TTL参数进行硬编码,使得它不容易被媒介服务器用户(或被任一其它实体)所改变。
例如,注意到图7的示例性情况,其中TTL参数已被设为1。这一设置会禁止媒介服务器704把资源元数据和资源内容分发到实体726,因为这一实体726经由多于一个路由器耦合到媒介服务器704。因此,TTL设置有效地阻止了对路由器720的访问,如阻止的访问符号738所示。把TTL参数设为一低值也会禁止资源信息在互联网732上的散布,因为这一宽带传输会使许多中间路由器路由到其最终目的地。
e.设备和会话限制
资源信息共享功能322可以限制把在任一时刻授权的UPnP设备数目限制为一预定数目(比如在一例中为10个设备)。在一种实现中,指定的UPnP设备最大数目可以包含可以和UPnP网络耦合的所有类型的设备,包括媒介呈现设备、媒介服务器、控制点等等。在另一种实现中,指定的设备最大数目会仅与一类或多类UPnP设备有关,比如仅和媒介呈现设备有关。资源信息共享功能322也可以把并发的资源内容服务会话(比如并发的HTTP会话)的数目限制为一预定数(比如在一例中为10个会话)。资源信息共享功能322可以对这两个参数(即最大设备数和最大会话数)进行硬编码,以便防止媒介服务器用户(或任一其它实体)容易地改变这些参数从而避免这一限制。
在图7的环境下,家庭UPnP网络314可以把设备数限制为5,这能阻止设备716访问资源信息(资源元数据和资源内容)。这一被拒绝的访问在图7中由阻止访问符号740标记。这一规定帮助确保即使经授权的媒介服务器用户也不能使用UPnP网络314来把资源分发到大量受信者(例如在超分布场景下)。这一规定也一般会阻止在互联网732上分布资源元数据和资源内容的尝试,到公共宽带传输同处包括大量参与者尝试访问共享资源的程度。
f.限制候选设备用于验证UPnP动作
资源信息共享功能322也可以把交互仅仅限制到这样的设备:所述设备已经调用了UPnP动作或者已经使用SSDP作为媒介呈现设备而在UPnP网络314上宣布它们自身。(前一限制适用于未在UPnP网络314上宣布它们自身、但被许可与UPnP网络314交互的UPnP控制点。)这些限制帮助排除企图与资源信息共享功能322交互的未经授权的实体。也就是,潜在的“黑客”会需要获得并运行适当的UPnP软件,以便与资源信息共享功能322所共享的资源信息交互;这一要求提出了禁止对UPnP网络314未经授权的访问。例如,由于这些限制,黑客不能仅仅通过打开Web浏览器以及向资源信息共享功能322发送与一共享资源对应的前面公布的资源定位符,从而访问资源信息共享功能322所共享的资源内容。而是设备必须首先确认它是一个正确的UPnP经授权的设备,例如通过发送一初始UPnP动作请求(例如,对应于一浏览或搜索请求);只有在允许设备使用资源内容检取请求访问资源内容时。(注意到,在一示例性实现中,在前面未被许可的情况下尝试检取资源内容的设备甚至不被呈现给媒介服务器用户供批准,即使它们是新发现的设备;也就是,这些设备可以被忽略。)
作为进一步的保护措施,资源信息共享功能322会要求每一个设备将自己宣布为具有唯一设备号(UDN)的媒介呈现设备。在一种实现中,资源信息共享功能322确认呈现设备的UDN不同于目前或前面在UPnP网络314上检测到的其它媒介呈现设备的UDN。如果资源信息共享功能322的UDN与已经检测到的UDN匹配,则它能静静地拒绝对媒介呈现设备的访问。而且,一旦已经检测到一设备是媒介呈现设备,资源信息共享功能322就能要求其UDN保持不被改变。如果资源信息共享功能322检测到一变化,则它能静静地拒绝对设备的访问。而且,如果一媒介呈现设备具有一序列号,则资源信息共享功能322就能要求这一序列号也保持不被改变。如果资源信息共享功能322检测到序列号中的变化,则它默然拒绝对设备的访问。
g.资源定位符退出
如上所述,资源信息共享功能322使用资源定位符(比如但不限于HTTP URL)来定义其资源的位置。每个资源定位符的组成部份是标识相关资源内容的资源ID(例如ResourceID)。资源信息共享功能322可以通过周期性地改变标识其资源内容项的资源定位符来提供进一步的安全保护。(在以下讨论中,术语“资源内容项”是指与资源存储器320内保存的所选资源相关联的资源内容;加入术语“项”仅仅是为了语法上的方便和清楚。)这可以通过周期性地改变标识资源内容项的资源ID来执行。这一保护会对资源定位符的使用作出时间限制。例如,消费者可以执行一UPnP浏览或UPnP搜索动作来检取一个或多个资源定位符。然而,由于资源信息共享功能322周期性地改变这些资源定位符,因此消费者被强迫以相对及时的方式使用一资源内容检取请求(使用所检取的资源定位符)来检取资源内容。如果消费者等待过长,这些资源定位符酒会变得过时和无效。因而,如果资源定位符被泄漏给未经授权的实体,则这些资源定位符不会很长时间都有效;这限制了由资源定位符不期望的公开所造成的损害。
h.各种资源传输模块524安全性措施
上述几个机制帮助保护资源传输模块524(例如可以用HTTP服务器实现)不受到各种安全威胁。例如,依靠IP地址限制措施,资源信息共享功能322仅在私有范围(例如192.168范围)或自动IP范围内的网络接口上起动资源传输模块524。而且,依靠设备和会话限制,资源信息共享功能322把资源内容检取会话的数目限制为一预定数(例如10个会话),并且把所许可设备的数目限制为一预定数(例如10个设备)。依靠TTL限制,资源信息共享功能322可以把TTL参数限制为一预定数(比如3),从而限制了在提供资源内容响应时所涉及的路由器数目。依靠UPnP动作限制,资源信息共享功能322可以只有在资源内容请求始发自前面许可的设备时才服务于这些请求;它会忽视全部其它请求。(更具体地说,资源信息共享功能322无需向媒介服务器用户显示尝试访问资源内容的新设备以供许可。)而且,资源信息共享功能322只有在媒介服务器用户共享出被许可访问文件系统上的资源(例如文件)的资源内容时才会共享出资源内容;这使被拒绝访问媒介服务器302上的资源的媒介服务器用户不能在UPnP网络314上的设备上播放其内容。资源信息共享功能322还会确定共享是否被限制为特定的设备,或者基于登录到媒介服务器系统上的特定个体而被预调节。
资源传输模块524还可以包括多种其它安全性措施。例如,如果客户机打开一通信插孔并且局部地写入资源内容检取请求或者不以及时方式读取资源内容响应,则资源传输模块524可以被配置成“超时”。在一示例性实现中,资源信息共享功能322可以把这些超时设为5分钟。这些超时可以被硬编码以便防止媒介服务器用户(或任何其它人)容易地改变它们的值。
按照另一特征,资源传输模块524可以把资源内容检取请求限制为预定大小,比如约4000字符。
按照另一特征,资源传输模块524可以确认资源定位符。确认必须确保资源定位符符合预定的格式,比如:http://machine ip:port/ResourceID(即,在使用HTTPURL的情况下)。资源传输模块524也可以谨慎地分析和确认请求报头。
A.6.URL参数化规定
再一次,参照图3,注意到从媒介服务器302检取资源信息会包括四个主要的信息交换。在第一交换中(由路径324表示),消费者可以使用控制点316将一UPnP询问发送到媒介服务器302。该UPnP询问可以被构成为一浏览请求或者一搜索请求。在浏览请求中,消费者的目的是扫描与媒介服务器302所提供的资源相关联的资源元数据的集合。在搜索请求中,消费者的目的更加有针对性,例如,为了查找由各种搜索项所标识的媒介服务器302所提供的特定资源元数据等等。
在任一情况下,在第二交换中(由路径326表示),媒介服务器302通过显示与一个或多个资源(例如资源存储器320中的文件)相关联的满足消费者请求的资源元数据来进行响应。该资源元数据可以包括与匹配资源有关的各个高层信息,比如标题、流派、艺术家、创作日期等等。该资源元数据也可以包括标识从中能检取资源内容项的相应网络位置的资源定位符(比如URL)。为便于讨论,在这一章节中,假定URL结合HTTP服务器的特殊使用;然而,这里所述的原理可以应用于其它类型的资源定位符和相关的资源内容服务器。(在以下讨论中,术语“资源内容项”是指与资源存储器320中所保存的所选资源相关联的资源内容;加入术语“项”仅仅是为了语法上的方便和清楚。)
假定在观看了资源元数据后,消费者选择一相应的资源内容项以显示在呈现设备上,比如呈现设备306。该情况下,在第三交换中(由路径330表示),消费者使呈现设备306能向媒介服务器302发送一请求,指示媒介服务器302检取所选的资源内容项。例如,消费者可以把与所选内容项相关联的URL传送到呈现设备306。呈现设备306通过向媒介服务器302发送一个指定了所选资源内容项的HTTP GET请求来进行相应。该HTTP GET请求包括与所选的资源内容项相对应的URL(由控制点传送到那里)。
最后,媒介服务器302通过在URL所指定的位置处检取所选的资源内容项从而响应于HTTP GET请求。在第四交换中(由路径332表示),媒介服务器302接着把所选的资源内容项提供给呈现设备306。
这一章节的其余部分描述了一种用于改进上述信息交换的效率的技术。
首先,注意到资源存储器一般会以预定义的原始媒介格式来保存文件。术语“媒介格式”包含与一资源有关的任何特征,所述特征影响了它怎样被保存和/或被呈现。例如,媒介格式可以指定格式类型(例如各种类型的压缩和非压缩格式)、格式分辨率等等。例如,资源存储器320可以保存一图像文件,它的格式类型为RGB,格式分辨率为640×480。因而,如果呈现设备被配置成处理以RGB格式类型表示的大小为640×480的图像,该呈现设备可以显示该图像文件。此外,媒介服务器302可以包括用于响应于消费者的请求而将一资源从其原始媒介格式转换到另一媒介格式的功能(未示出)。或者资源存储器320可以保存以相应的不同原始媒介格式表示的多个资源版本。在这两种情况的任一个下,与单个资源相关联的不同媒介格式可以被概念化为包括多个个体资源。因此,对于每个个体资源,媒介服务器302可以被概念化为提供与不同媒介格式对应的多个资源供选择性分布。
这里所述的技术提供了一种使消费者能检取符合指定媒介格式的资源内容的机制。媒介服务器302能以不同方式完成这一目标。对于所引用的帧,一种完成这一目标的方式是使媒介服务器302公布分别与资源内容项的不同媒介格式相关联的不同URL。例如,第一示例性URL可以指定格式类型为RGB、格式分辨率为640×480的资源内容项。第二示例性URL可以指定同一资源内容项,但这次格式类型为YUV、格式分辨率为1280×1024。其它示例性媒介格式对应于各种图标和缩略图大小的版本,以及多种标准显示器分辨率格式。然而,这一方法具有多种缺点。例如,它要求媒介服务器302管理和公布与不同媒介格式排列(permutation)相关联的可能大量URL,所述不同的媒介格式排列与单个“父亲”资源内容项相关联。提供了这一点后,许多URL会使UPnP网络314变得复杂,从而可能增加UPnP网络314上的网络话务,并且产生其它可能的问题。
更具体地说,在一种实现中,媒介服务器302可以通过为每个匹配资源提供一个所谓的“资源(res)”元素从而响应于浏览或搜索UPnP请求。“res”元素包括标识在哪里可以找到与匹配资源相关的资源内容项的URL。上述解决方案可以以不同方式指定与一匹配资源项相对应的多个媒介格式。例如,媒介服务器302可以提供多个res元素,每个res元素都与一相应的媒介格式(每个都有自身的URL)相关联。或者,媒介服务器302可以为每个匹配资源产生多个匹配项,每个匹配项与一相应的媒介格式(具有其自身的URL)相关联。这两个解决方案都会向UPnP网络314引入各种复杂度,可能影响其性能。
同样,在上述解决方案中,媒介服务器302仅提供了与一组相关的所支持媒介格式相对应的一组有限的URL。然而,这组有限的所提供的媒介格式可能不满足资源消费者的需求。
在下面表征的技术中,媒介服务器302可以响应于消费者的浏览或搜索请求而为一可用的资源内容项公布单个URL,该单个URL会包括执行了为描述不同媒介格式的范围可以被修改的相应特征属性的可变参数。也就是,媒介服务器302对于其可变参数可以用原始缺省值来公布该URL,所述原始缺省值反映了其中确定资源内容项被最佳显示的媒介格式。“最佳的”缺省媒介格式的确定是基于一个或多个标准。控制点(例如控制点316)可以修改这些缺省参数以便适应媒介呈现设备所使用的本地媒介格式,或者基于某些其它考虑因素来修改。例如,控制点316可以通过由其连接管理器服务模块所提供的GetProtocolInfo UPnP动作,从而确定媒介呈现设备306的呈现能力。然后,控制点316可以选择一媒介格式(或多于一个媒介格式),该媒介格式与呈现设备306的显示能力兼容并且与资源自身所能支持的(从媒介服务器302返回给控制点316的资源元数据中收集)呈现格式兼容。在可以以多于一种媒介格式表示资源内容的情况下,控制点316可以警告消费者这样做,并且允许消费者选择一媒介格式。为了便于这一任务,控制点316可以把所支持的媒介格式信息转换成消费者容易理解的信息。或者,控制点316可以执行自动分析在多种可能的格式中选择(例如,基于消费者过去选择了什么格式的考虑等等)。
在任一情况下,修改参数都创建了一经修改的URL,该URL接着可以被转发到会显示资源内容的呈现设备(例如呈现设备306)。然后,呈现设备306可以通过将该经修改的URL提交给媒介服务器302,从而检取与经修改的URL相对应的资源内容。或者,呈现设备306可以仅仅在不修改其参数的情况下把原始URL发回媒介服务器302(例如,通过把原始URL发送到呈现设备306,呈现设备306然后将其传输到媒介服务器302)。
媒介服务器302通过从媒介呈现设备306提供给它的URL中读取参数、然后以URL内参数所指定的媒介格式格式把资源内容项提供给媒介呈现设备306,从而进行响应。这一操作要求媒介服务器302把所选的资源内容项从原始媒介格式转换成由URL的参数所指定的媒介格式。或者,这一操作会仅仅要求媒介服务器302提供所保存的资源内容项而不对它进行修改(在参数表明没有必要进行修改的情况下)。或者,媒介服务器302可能已经以多种不同的媒介格式保存了资源内容项;该情况下,媒介服务器302可以选取一适当的已保存媒介格式(如果有的话),而无需对它进行修改。
在一种实现中,媒介呈现设备306以它从媒介服务器302接收到的媒介格式表示接收到的资源内容项。在另一实现中,媒介呈现设备306也可以包括用于把在显示(或可能保存等等)接收到的资源内容项之前将其转换成还有一种媒介格式的转换功能(未示出)。
依靠上述技术,媒介服务器302无需公布与可能媒介格式的不同排列相关联的大量URL。这帮助减少了UPnP网络314中的话务,并且简化了媒介服务器302的URL管理要求。这一策略也使控制点316具有动态裁剪媒介格式以便最好地适合它目前正在解决的呈现场景所需的灵活性,而无需在有限数量的优先认购权之间选择。这一策略还提供了一种标准和独特的技术,该技术使控制点能为它们可能与之交互的不同媒介服务器裁剪媒介格式。
在一种实现中,媒介服务器302可以基于一个或多个标准来选择URL中所使用的原始缺省值。例如,媒介服务器302可以通过检验与一URL相关联的资源来选择该URL中所使用的原始缺省值。所述资源可能包括其中包含的标识了优选的原始缺省值的信息。或者,媒介服务器302可以对从一资源提取的信息进行其自身的分析,以便对优选的原始缺省值作出判断。或者,媒介服务器302可以使用不是从资源自身导出的其它因素,比如考虑哪些媒介格式是最流行的,等等。也可以提供其它技术来选择这些优选的初始值。
上述技术的示例性细节在下面提出。考虑以下可用来实现上述资源内容检取策略的示例性参数化URL:
http://ServerName/Tulips.jpg?format=YUV,width=640,height=408
该URL包括标识协议方案的第一字段。协议方案定义了用来访问资源内容项的技术。该情况下,第一字段指定了“http”,表明资源内容项将要用超文本传输协议技术来访问。第二字段标识了一管理当局。管理当局定义了会提供资源内容项的实体,一般使会提供资源内容项的服务器。该情况下,第二字段把“ServerName”指定为管理当局。第三字段指定了用来访问资源内容项的路径。路径(该情况下是“Tulips.jpg”)使管理局(例如ServerName服务器)能在其系统内标识资源内容项的位置。第四字段标识了一询问。询问包括用来检取资源内容项的媒介格式的信息。(媒介服务器302可以用XML“res”元素包把上述参数化的URL提供给控制点316。res元素也可以包括除URL以外与匹配资源相关联的其它元数据。)
更具体地说,在一示例性实现中,上面列出的URL中的第四字段包括总体描述了用来呈现资源的媒介格式的多个参数。在上面的例子中,第一参数把显示的格式类型指定为YUV,第二参数把分辨率宽度指定为640,第三参数把分辨率高度指定为480。这些参数仅仅是示例性的。URL可以指定另外的参数、或较少的参数。例如,URL可以指定三个附加参数,它们描述了用来呈现图像的填充色,例如R(红色)=x,B(蓝色)=y,G(绿色)=z。(也就是,在呈现一图像时,它可能不覆盖呈现设备的整个显示表面;填充色指定了在不包括图像内容的那些显示区域中所显示的背景色彩的红色、蓝色和绿色分量。)
此外,参数化的URL可以用除上述以外的其它句法格式来表示。在上面的格式中,每个参数都被指定为一名字-值的对,句法为“名字=值”。然而,另一句法可以省略名字信息;而不是明确标识名字信息,该信息可以从URL中相关值的位置中推断出来。省略名字信息的明确标识的示例性URL如下:
http://ServerName/Tulips.jpg?YUV,640×480
也可能提供一种混合格式,它既为一些参数使用了名字-值句法、并且为另一些参数使用了位置句法(而不明确标识名字)。
无论使用哪种格式,媒介服务器302还可以公布与可以为每个参数选择的值范围有关的信息。例如,在一说明性实现中,名字参数可以接受YUV或RGB值,宽度参数可以接受0到248的值,而高度参数可以接受0到2048的值。在响应于消费者的浏览请求或消费者的搜索请求时,媒介服务器302可以用资源元数据本身来公布这一范围信息。或者,媒介服务器302可以周期性地散布范围信息,例如每天一次、每周一次等等。还或者,范围信息可以基于已知的可允许范围被预先保存在控制点和/或呈现设备中,因此它对于媒介服务器302传送这一信息不是必须的。
如在上面的概要中所述,当控制点316接收参数化的URL时,它可以把参数改变为在指定的值范围内所许可的任何值(有或没有消费者的帮助)。例如,考虑第一个标识的示例性URL。如果消费者的呈现设备306能显示分辨率为640×480的YUV图像,则控制点316不会需要在呈现设备306将该URL提交给媒介服务器302之前修改该URL。然而,假定媒介呈现设备可以在分辨率为1280×1024的显示器上显示YUV图像。该情况下,控制点可以如下修改上述URL:
http://ServerName/Tulips.jpg?format=YUV,width=1280,height-1024
呈现设备306于是会把这一经修改的URL提交给媒介服务器302(在它从控制点接收到它后)。媒介服务器302会通过检取期望的资源内容项、并在将它发送给呈现设备306之前将其转换成1280×1024的指定分辨率,从而进行响应。
考虑媒介呈现设备306仅显示RGB图像的另一个例子。该情况下,控制点可以如下把URL(原始在YUV格式类型中指定的)修改为RGB格式类型:
http://ServerName/Tulips.jpg?format=RGB,width=1280,height=1024
再次,媒介服务器302会在把资源内容项内的图像发送到媒介呈现设备306之前、将它转换成RGB图像。媒介服务器302也会缩放这一图像以便适应呈现设备306的分辨率期望值(即1280×1024)。
在一种实现中,当媒介服务器302转换图像的分辨率以适应呈现设备306的规定时,它会尝试保留原始图像的长宽比。这防止图像在呈现设备306上不自然地失真。这可能留出呈现设备的显示表面中不包含图像内容的区域。可以在URL内指定的填充色可以用来在这些空的区域内显示背景色。
上面的例子强调使用参数化的URL来呈现图像。然而,这一策略也可应用于其它媒介和信息类型,比如音频信息和视频信息。例如,对于PCM音频,URL可以包括指定采样率、信道数目(单声道、立体声、5.1环绕声等等)以及每采样比特数的参数。对于数字视频,URL可以指定要在呈现设备处使用NTSC还是PAL等等。
此外,上面给出的例子强调使用这样的URL参数:所述URL参数描述了与资源内容的格式有关的相应特征属性(例如一般和怎样保存和/或显示资源内容有关)。然而,其它参数会描述与资源内容的其它特征有关的属性。例如,这些其它参数可以描述与资源内容的回放有关的定时信息,比如从资源内容要回放的资源内容起始点开始的时间间隔、以及回放的持续期等等。
此外,上面的例子描述了这样的情况,其中使用单个URL来定义与一资源内容项相关联的全部媒介格式排列。然而,媒介服务器可以使用两个或多个URL来表示资源内容项的不同方面。例如,可以为不同的MIME类型生成不同的URL,每个URL可以包括在一特定MIME类型环境内的一个或多个参数。例如,表示格式为WMA和MP3的资源内容项的媒介服务器可以提供与这两个格式相对应的两个URL。这两个URL的每一个都可以包括用于改变它们特定MIME类型内的格式特征的一个或多个可变参数。例如,WMA RUL可以包括一比特率参数,该比特率参数可以从比特率128kbps被修改为90kbps等。从一种MIME类型(或其它类别的类型)转换为另一类可以被称作“格式间”代码转换。然而,这仅仅是一种示例性场景。如上所述,上述实现使用单个URL在一资源内容项的所有方面间转换,包括格式类型。
此外,上面的例子描述了一资源内容检取程序,其中控制点接收一原始URL、修改该URL、然后把经修改的URL传输到媒介呈现设备(或如果不作出变化,则把未经修改的URL传输到媒介呈现设备)。然后,媒介呈现设备把经修改的(未经修改的)URL传输到媒介服务器、提示媒介服务器返回在经修改或未经修改的URL内标识的资源内容项。然而,许多其它检取方案是可行的。例如,控制点可以检取原始URL并将其立即发送到媒介呈现设备。媒介呈现设备接着可以修改URL(或者决定不修改它),然后将这一URL传输到媒介服务器。在该实现中,控制点无需调查媒介呈现设备的呈现要求/特征,因为媒介呈现设备现在自身处理了可能需要或期望的URL的任何修改。其它的排列也是可行的。例如,单个受信实体可以执行全部功能,或者可以采用除控制点和媒介呈现设备以外的一个或多个其它实体来检取资源信息。
最后,上述讨论是基于这样的一种实现:其中媒介服务器302用来接收经修改的URL、基于经修改的URL处理资源内容项、并且把资源内容少量地分发到呈现设备(或其它受信实体)。但是,更为一般的是,媒介服务器302可以被实现为(或者在概念上表示为)具有执行每一个这些任务或者不同的任务分配的多个代理或模块,执行这些任务的代理可能是或可能不是与媒介服务器302的其它部分位于一起。例如,在一种实现中,媒介服务器302可以被视作执行上述任务的分散的代理的宽松集合,他们一起组成了媒介服务器302。
B.示例性用户界面显示
在一示例性实现中,(图5的)控制面板模块506提供了一系列UI显示(也称为页面),它们使服务器用户能与媒介服务器302交互。例如,控制面板506可以提供用于启用和禁用与UPnP网络314耦合的设备的第一系列的UI页面。控制面板506模块可以提供使媒介服务器用户能选择哪些资源应被共享、在哪些条件下应共享资源的另一系列的UI页面。章节B.1和B.2分别描述了这两类UI页面。
一般而言,在一种实现中,控制面板模块506可以通过一控制面板界面(比如由位于华盛顿Redmond的微软公司
所提出的熟悉的控制面板界面功能)来提供上述UI页面。这样,UI显示可以被裁剪以便采用控制面板UI显示的外观和手感(例如“分标签的显示页面”)。这一UI类型的选择仅仅是示例性的;其它类型和UI布局可以用来实现UI页面。
B.1.用于授权新设备的示例性UI
图8-10示出了控制面板模块506可以用来把设备引入网络314的不同UI页面。
首先,当在UPnP网络314上检测到一新的媒介呈现设备时,媒介服务器302可以被实现为告警媒介服务器用户有关其存在。按照一种技术,控制面板模块506可以通过提供图8所示的气泡型消息800来执行这一告警功能。这一消息800声明“已经找到一新的数字媒介接收机。您希望启用、禁用还是配置这一设备?”这一消息800可以包括使媒介服务器用户能选择列举的选项之一的超文本链接,即通过点击与一所选选项相关联的超文本链接。可以使用其它消息类型和选择格式;图8所示的消息800仅仅是一个例子。
控制面板对象506在激活了消息800内的超文本链接后激活图9所示的UI页面900。该页面900包括多个部分(902、904、906)。每个部分都提供了与耦合到UPnP网络314的一个不同设备有关的信息。例如,部分902表明已经找到一个新设备。该部分902还标识了新设备的制造商和型号。该部分902还通过激活部分内的超文本链接来给予媒介服务器用户启用新设备的选项。部分904描述了前面已经被启用的一个设备。因而,这一部分904通过激活与该部分904相关联的超文本链接,从而给媒介服务器用户一个机会来禁用该设备。部分906描述了前面已经被禁用的一个设备(但对于UPnP网络314不是新的)。因而,这一部分906给媒介服务器用户一个激活来再次启用这一设备。
如果媒介服务器用户激活了与UI页面900内任一部份相关联的超文本链接,控制面板对象506就激活图10所示的UI页面1000。UI页面1000提供了描述所选设备特征的概述信息。它也包括三个命令按钮(1002、1004、1006)。命令按钮1002使媒介服务器用户能启用该设备。命令按钮1004使媒介服务器用户能禁用该设备。命令按钮1006使媒介服务器用户能改变在UI显示器页面上出现的设备名称。这最后一个按钮1006有助于赋予设备一个容易辨认的“对用户友好的”名字,比如“Kid’s PC(孩子的PC)”。
B.2.用于共享资源的示例性UI
图11示出一UI显示页面1100,该页面1100说明了支配这些资源文件夹内的资源信息(包括资源元数据和资源内容)在UPnP网络314上的散布的各个资源文件夹和不同分布标准之间的关联。页面1100示出三个示例性的条目1102。第一条目标识了资源存储器320上工作资源文件夹的名字(例如资源文件夹“C:\My videos”1104)、与该资源文件夹相关联的许可相关标准(例如“All users”1106)、以及与该资源文件夹相关联的设备标准(例如“All devices”1108)。标准“All users”1106表明无论谁登录到实现媒介服务器302的计算机上都可以检取资源文件夹“C:\Myvideos”1104内的资源。标准“All devices”1108表明可由UPnP网络314上的任一呈现设备来检取资源文件夹内“C:\My videos”1104的资源。
另一方面,第二条目标识了名字“C:\My photos”1110、用户“Donald”1112以及设备“Kids bedroom device”1114。依靠用户标准“Donald”1112,只有当用户Donald登录到实现媒介服务器302是计算机上目前活动的终端服务器会话上时(或者当Donald许可资源信息的传输时,例如通过当UPnP网络314内的消费者尝试访问资源信息时肯定地对弹出式消息进行响应),才能检取资源文件夹“C:\Myphotos”1110内的资源信息。对这一设计主旨的其它变化也是可行的。例如,如上所述,资源信息共享功能322可以被配置成提供支配资源信息分布的多于两个分布标准(或少于两个标准,或没有标准)。
图11仅示出三个资源文件夹1102。媒介服务器用户可以通过开动一添加命令按钮1116选择附加的资源文件夹来共享。修改命令按钮1118许可媒介服务器用户来修改共享资源文件夹的现有列表1102。移除命令按钮1120许可媒介服务器用户从现有的资源文件夹集合1102中移除资源文件夹。
如在前面的章节中所述,第一标准集合可以支配资源元数据的散布,第二标准集合可以支配资源内容的散布。为便于说明,图11是基于同一标准集合支配资源元数据和资源内容的散布的这一假设。然而,如果资源信息共享功能322使媒介服务器用户能区分用于资源元数据的标准和用于资源内容的标准,则用户界面页面就能被适当地修改以显示更精细的标准信息,并且使媒介服务器用户能在更精细的层次上输入标准信息。用于资源元数据的标准和用于资源内容的标准可以在用户界面页面内以不同方式加以区分,比如通过向这些类别分配不同的用户输入字段。
图12示出当媒介服务器用户按下图11中的修改命令按钮时由控制面板模块506所激活的页面1200。例如,假设媒介服务器用户加亮表示了图11中的第一条目1122(例如使用鼠标或其它输入机制),然后按下命令按钮1118。图12所示所产生的页面1200示出第一条目1122的各个现有属性,并且给媒介服务器用户一个激活来改变这些属性。
例如,页面1200把资源的共享名称标识为“My videos”1202,把许可相关标准标识为“All”1204,把设备标准标识为“All devices”1206。媒介服务器用户可以通过编辑字段的相关文本框内的信息(例如使用鼠标和键盘输入设备来编辑该字段),来修改第一字段1202。第二和第三字段(1024、1206)被设为下拉选择菜单,该菜单分别提供了用户和设备的预定义列表。例如,图12中详述了下拉选择字段1206以示出其预定义列表。媒介服务器用户可以从这些下拉列表选择一个或多个条目来为这两个字段提供输入(1204、1206)。可以使用除文本输入框和下拉菜单以外的其它数据输入技术来输入页面1200所要求的信息。再一次,如果媒介服务器功能322使媒介服务器用户能区分资源元数据标准和资源内容标准,于是这一页面1200可以以适当方式被扩展以便为数据输入提供附加的字段。
图11和12并未穷举可用来选择资源文件夹并且定义与资源文件夹相关联的区分标准的UI策略。例如,图13示出一示例性的页面1300,该页面1300提供了全部共享资源文件夹及其相关分布标准的主显示,还使媒介服务器用户能使用这一页面1300本身来改变任一个所显示的信息(例如无需调用另一页面)。例如,这一页面1300中的每个用户字段和设备字段都包括相应的下拉菜单,所述下拉菜单许可媒介服务器用户改变为这些字段显示的选择。例如,考虑示例性用户字段1304的下拉菜单1302,以及示例性设备字段1308的下拉菜单1306。浏览命令按钮1310许可媒介服务器用户在决定要把哪些资源文件夹添加到共享资源(例如通过激活添加命令按钮1312)以前检验各个目录。像以前一样,移除命令按钮1314用于从共享资源中移除前面选择的资源文件夹。
图14示出用于输入标准信息的另一种可选技术。该图中所示的页面1400使媒介服务器用户能指定影响了全部共享资源文件夹的全局标准信息。也就是,选择项1402使媒介服务器用户能指定媒介服务器302是否应该不考虑谁登录到媒介服务器302上而在全部共享资源文件夹内共享资源信息。选择项1404使媒介服务器用户能指定媒介服务器302是否应该不加区分就把全部资源文件夹分发给全部设备。这些选择项(1402、1404)可以使用一复选框UI输入特征或者某些其它类型的UI输入特征从媒介服务器用户接收一个二进制“是/否”选择。
页面1400还使媒介服务器用户能作出支配媒介服务器302所提供的安全性的各种选择。例如,选择项1406使媒介服务器用户能指定媒介服务是否应该在媒介服务器用户起动实现媒介服务器302的计算机时被自动起动。选择项1408使媒介服务器用户能指定网络314上被许可与媒介服务器302交互的最大设备数目。可以使用相似的用户输入字段(未示出)来使媒介服务器用户指定与上面章节A.5中讨论的安全性机制有关的其它安全性选项。例如,如果被许可,适当的UI页面使媒介服务器用户能有选择地激活或禁用章节A.5中描述的任一机制,以及指定这些机制中所使用的任何相关参数。
最后,图15示出一页面1500,它可以被用作自动设立程序的一部分,也称为“向导”。这一页面提供了在包含资源的资源存储器320上提供的资源文件夹1502的分层表示。目录1502包含和层中各个资源文件夹相邻的复选框。媒介服务器用户可以通过有选择地点击相应资源文件夹后面的复选框、来表明这些资源文件夹的每一个是否应被共享。页面1500的最右边部分提供了选择项(1504和1506),所述选择项使媒介服务器用户能作出与在上面图14的环境中讨论的相同的全局标准选择。
在上面的讨论中,分布标准按照各个文件夹被分配给资源。然而,也可能通过按照每个包含符显示信息并允许媒介服务器用户按照每个包含符输入信息,从而按照每个包含符来应用分布标准。
再一次,附图中所示的UI布局是示例性的。其它UI策略也能使媒介服务器用户从以下主题中选择:设备;共享;设置;以及事件。在共享类别中,媒介服务器302会赋予媒介服务器用户在以下资源类别内共享资源的选项:My Music(我的音乐);My Pictures(我的图片);My videos(我的视频)等等。
C.示例性进程
图16和17关于设备授权进程,图18-20关于资源共享进程。这些图中所示的各个框可以用软件、固件或者固件和软件的组合来实现。
C.1.设备授权进程
图16示出媒介服务器302授权被加入UPnP网络314的新设备所使用的程序1600。在步骤1602中,有人把一新媒介设备插入UPnP网络314。在步骤1604中,媒介服务器302生成一消息,该消息警告媒介服务器用户有关新设备的存在。图8示出可用来提供该消息的一种显示格式。在步骤1606中,媒介服务器302打开一UI页面(或多个页面),所述页面使媒介服务器用户能启用新设备。图9和10提供了用于实现这一步骤的两个这样的示例性UI页面。在步骤1608中,媒介服务器用户作出与新设备有关的选择,例如或者启用或者禁用新设备。媒介服务器用户也被许可向新设备提供一用户友好的名称。
图17示出用于确定新设备身份的程序1700。在步骤1702中,媒介服务器标识新设备的IP地址。在步骤1704中,媒介服务器把IP地址转换成媒介访问控制(MAC)地址(或某些其它设备专用的信息)。IP地址可以用例如SendARP函数转换成MAC地址,所述SendARP函数是由微软公司的互联网协议帮助程序所提供的,该帮助程序使用地址解析协议。一旦被授权,设备可用其IP和MAC地址逐次与网络314交互来标识。使用MAC地址来验证设备是有利的,因为单独的IP地址并不可靠(因为IP地址会根据DHCP服务器的可用性而发生变化)。
参照图5所示的架构500可以提供图16和17所示的操作的更深层次说明。当添加一新媒介程序设备时,它发出一UPnP声明。设备监视模块520检测到这一声明。类似地,设备监视模块520还检测到由耦合到UPnP网络314的控制点所作出的请求。响应于此,设备监视模块520查找新设备的IP地址并且用SendARP()取得MAC地址。如果MAC地址是新的,设备监视模块520就通知控制面板COM对象540,该对象540又通知已经存在的任何回叫对象542。设备监视模块520还通知CDDM服务模块504。控制面板回叫对象542会通过控制面板模块506来通知媒介服务器用户。CDDM服务模块504会决定它是否需要为目前活动的终端服务器会话创建一控制面板模块506,如果是,它就这样做。
C.2.资源共享进程
图18示出使媒介服务器用户能选择要被共享的资源文件夹、并且指定用来支配这些资源文件夹内资源信息的散布的进程1800。图19示出使消费者能浏览或搜索共享的资源元数据的进程1900。图20示出使消费者能用参数化的URL方法来检取所选的资源内容项的进程2000。
a.定义共享资源
首先从图18开始,程序1800仅仅说明了用来指定共享文件夹和分布标准的许多方式的一种。如上面章节B中所述,有许多用于收集该信息的不同UI策略,因此有许多用于执行这一任务的相关进程。为便于讨论,假定仅收集了能支配资源元数据和资源内容两者的散布的一个标准集合。在资源信息共享功能322使媒介服务器用户能区分用于资源元数据和资源内容的两个标准集合的情况下,图18所示的操作可以被适当地扩展以收集该信息。
在步骤1802中,媒介服务器用户选择一共享的资源文件夹。图11-13示出媒介服务器用户能用来执行这一任务的仅仅一些技术。
在步骤1804中,媒介服务器用户选择会许可资源信息传输的个体(如果有)。如上所述,这一约束条件可以根据服务的配置情况广义地或狭义地分析。在广义实现中,所标识的个体被假定为在登录到实现媒介服务器302的计算机系统上目前活动的终端服务器会话上时给予许可。在更严格的实现中,媒介服务器302特别在消费者尝试检取资源信息以确定所标识的个体是否许可这一传输时询问所标识的个体。传输仅在所标识的个体许可传输时发生。如果未选择任何所标识的个体,缺省情况下,就没有影响资源分布的许可相关约束条件。
在步骤1806中,媒介服务器用户选择被授权以接收所选资源文件夹内的资源信息的设备。图11-15仅示出可用来要求步骤1804和1806中收集的标准的一些UI技术。同样,如上所述,可以提供附加的步骤来收集影响资源文件夹内资源信息分布的附加标准。
在步骤1808中,控制面板模块506任选地警告媒介服务器用户有关于把指定资源文件夹内的资源信息共享给指定设备的结果,所述共享由特定的许可相关用户标准来支配。这可以通过显示一消息来执行,所述消息说明了由媒介服务器用户的选择所施加的约束条件(或缺乏由其施加的约束条件)。在查看这一消息后,媒介服务器用户会决定修订一个或多个先前的选择。步骤1810表示媒介服务器用户会在不满意指定分支时重复一个或多个选择;否则进程1800会继续。
在步骤1812中,媒介服务器302确定媒介服务器用户是否有共享所选资源文件夹内资源信息的许可。也就是,资源文件夹的创建者可能已指定了具有修改、读取和/或分发资源文件夹内的资源信息的许可的一个或多个个体。如果媒介服务器用户不是这些个体之一,步骤1814就表明资源文件夹不能被共享。如果媒介服务器用户是这些个体之一,步骤1814就表明资源文件夹内的资源信息可以被共享,因此进程1800继续。
步骤1816必须把所选资源文件夹的状态改为“共享”。这一步骤1816包括在共享资源存储器532中注册共享的资源文件夹,并且把相关的分布标准保存在标准信息536中。
在上面的讨论中,分布标准按照各个文件夹被分配给资源。然而,也可能以类似于上述方式的按照每个包含符的方式向资源应用分布标准。
下面提出了与资源文件夹内资源的共享相关的附加一般考虑。在下面的讨论中,“资源”可能对应于资源存储器320中所保存的资源文件夹。资源文件夹被表示为具有一可共享状态或不可共享状态。同样知道每个资源有一个实际被区分的“资源信息”,包括资源元数据和资源内容。
更具体地说,在一示例性实现中,内容目录服务模块526仅许可媒介服务器用户把资源文件夹指定为可共享,而非资源文件夹内的个体资源。也就是,资源通过包括在可共享资源文件夹内而被指定为可共享,而不是逐一资源地指定。而且,内容目录服务模块526会许可媒介服务器用户仅仅把特定类型的音频、视频以及图片资源指定为可共享(比如示例性的文件总体,包括:对于音频文件,包括格式MP3、WMA、PCM和WAV;对于视频文件,包括格式MPEG-1,2、WMV和AVI;对于图片格式,包括格式JPEG、GIF、BMP、PNG和TIFF)。而且,内容目录服务模块526可以限制把指定的隐藏文件、网络共享以及可移动媒介指定为可共享(也就是,从而防止媒介服务器用户把这些资源指定为可共享)。这些规定可能有益于改进UPnP网络314所提供的安全性,因为不落在上述许可类别内的不熟悉的资源信息不会被共享。然而,在可选的实现中,可能把上面标识的一个或多个“被禁止”资源指定为可共享。
在另一示例性实现中,被指定为可共享的资源文件夹可能有附加的子集(例如子文件夹和文件)。当媒介服务器用户选择把任一给定资源指定为可共享时,共享资源文件夹内的全部资源以及全部其子资源文件夹也都可以被自动地指定为可共享。
在另一示例性实现中,媒介服务模块502还许可媒介服务器用户将一资源文件夹指定为“不共享”(例如,从而移除前面被分配给该资源文件夹的资源文件夹的可共享状态)。然而,在一示例性实现中,媒介服务器用户不被许可将可共享父亲资源的任一子资源(例如子文件夹和文件)指定为不共享。也就是,例如,在媒介服务器用户把“c:\doc\”指定为可共享时,媒介服务器用户不会被许可把“c:\doc\music”指定为不共享,因为根文件夹“c:\doc\”已经被指定为共享。然而,在另一种实现中,内容目录服务模块526可以被配置成许可不共享资源的选择性指定。
在另一示例性实现中,媒介服务器用户可以把资源目录的名称改为共享。内容目录服务模块526可以在服务运行的同时跟踪任一名称的变化,并且自动地把与旧名称相关的共享有关属性转移到新名称。每当媒介服务器用户改变了已被指定为共享的任一资源时,内容目录服务模块526可以被配置成通知与UPnP网络314耦合的设备有关于这一变化。这可以通过发出一UPnP事件来执行。
b.基于请求来分发共享资源
图19示出使消费者能与内容目录服务模块526交互的程序1900。在步骤1902中,消费者请求媒介服务器302提供与它的已经被指定为共享的资源有关的资源元数据。消费者可以从与呈现设备集成或相关联的控制点作出这一请求,所述控制点最终接收所选的资源内容。或者,消费者可以从离呈现设备很远的控制点作出这一请求,所述控制点最终接收资源内容。消费者可以特别起动与媒介服务器302的浏览会话,其中媒介服务器302会通过提供示出已被指定为共享的可用资源列表(可能在某一些特定类别内)的资源元数据,从而进行响应。消费者或者可以起动与媒介服务器302的搜索会话,其中媒介服务器302会通过基于消费者所指定的一个或多个搜索参数进行目标搜索、并且把搜索结果的指示返回消费者,从而进行响应。
在步骤1904中,媒介服务器302扫描共享资源存储器532以定位与满足消费者要求的共享资源文件夹相关联的任何资源元数据项。也就是,这必须检验资源元数据534以精选出满足浏览或搜索参数的特定资源元数据项(例如与期望的资源类型、资源名称、资源艺术家等等有关)。扫描也必须检验标准信息536以确定和浏览或搜索项匹配的资源元数据项是否不满足指定的相关分布标准。例如,媒介服务器302可以标识满足消费者要求的十个资源元数据项(对应于十个相关的资源),但设备相关标准仅允许其中的三个被显示在消费者目前正在使用的设备上(例如和消费者从中发送浏览或搜索请求的控制点相关联)。
在步骤1906中,媒介服务器302生成了描述上述处理结果的XML消息。XML消息可由一XML规划支配,XML规划指定了消息应包含的各个信息字段、以及它应该以什么格式呈现这些字段。可以使用除XML以外的其它格式来传送这一信息。在步骤1908中,媒介服务器302把消息从媒介服务器302发送到消费者正在使用的控制点。
在步骤1910中,控制点接收XML消息,并将其转换成一显示格式。然后,允许消费者查看与媒介服务器302所标识的一个或多个共享资源相对应的资源元数据项列表。消费者可以从列表中选择一个或多个资源用于在所选的呈现设备处显示。
c.参数化URL的处理
图20示出一个基于响应于前面的UPnP动作(例如浏览或搜索动作)提供的URL来检取共享资源内容项的进程2000。更具体地说,媒介服务器302响应于浏览或搜索动作而发送的资源元数据包含共享资源的统一资源定位符(URL),所述URL描述了在哪里定位与共享项相关联的资源内容项。URL可以用上面在章节A.6所述的参数化方法来构造。图20所示的进程2000说明了用于处理这些参数URL的技术。
在步骤2002中,消费者在诸如控制点316这样的控制点处从媒介服务器302接收资源元数据。这一步骤一般对应于图19中的步骤1910。对于共享资源,元数据一般包括至少一个参数化的URL。如章节A.6所述,这一URL中的参数指定了URL所标识的资源内容项的媒介格式。例如,一个参数可能描述其中能提供资源内容项的格式类型(比如用于图像资源的RGB或YUV格式类型)。另一个参数可能描述资源内容项的格式分辨率(比如一特定图像分辨率的高度和宽度)。这些参数仅仅是示例性的;可以提供其它或不同的参数。在任一情况下,当作出对浏览或搜索请求的响应时,媒介服务器302可能为这些参数选择这样的缺省值,所述缺省值能反映出资源内容项目前被保存在媒介服务器302中的媒介格式。或者,媒介服务器302可以选择媒介服务器302基于其它考虑因素确定为最佳的缺省值。
在步骤2004中,控制点316任选地改变所返回的参数化URL中的一个或多个参数。例如,URL可以最初指定一特定的图像分辨率。控制点可以改变这一参数的值以适应由会显示该图像的呈现设备所提供的较大的显示分辨率。
在步骤2006中,控制点316把经修改的(或未修改的)URL传送到最终会呈现资源内容项的呈现设备,比如呈现设备306。
在步骤2008中,呈现设备306接着能把经修改的URL提交给媒介服务器302。这一步骤可以通过包括经修改的(或未修改的)URL在内的HTTP GET命令来执行。
在步骤2010中,媒介服务器302接收包括经修改的(或未修改的)URL在内的HTTP GET命令。它接着从资源存储器320中检取资源内容项。如果所检取的资源内容项没有URL内指定的媒介格式,则媒介服务器302可以将其转换成指定的媒介格式。
在步骤2012中,媒介服务器302把经修改的URL所标识的资源内容项转发到呈现设备306用于显示在该设备306处。
在步骤2014中,媒介呈现设备306接收并显示由媒介服务器302发送给它的资源内容项。呈现设备306也在将资源内容项显示在呈现设备306处以前,任选地将资源内容项转换成另一媒介格式。
同样,图20所示的程序仅仅是一个可能的情况。在另一情况中,控制点316可以把原始URL传送到呈现设备306,呈现设备306可对其进行修改(或决定不修改)。此后,呈现设备306以上述方式将这一经修改的(或未修改的)URL发送到媒介服务器302。
图20中,假定URL内的一个或多个参数包含指定相应资源内容项的媒介格式的信息。然而,其它URL可以包括指定处媒介格式信息以外的资源内容项的其它特征的参数(比如定时相关信息)。
最后,图20的基本框架还应用在资源元数据不包括参数化URL的场合(也就是,资源元数据包括没有任何可变参数的URL)。该情况下,不会执行图20所示的URL修改操作。
D.示例性计算机环境
图21提供了与可用来实现前面章节中所述从任一处理功能的计算机环境2100有关的信息,所述功能比如在图3和5中所述的媒介服务器302功能。类似地计算功能可用来实现控制点(例如控制点316、318)以及任一媒介呈现设备(304-312)等等。
计算环境2100包括在图1的环境中讨论的通用计算机2102和显示设备2104。然而,计算环境2100可以包括其它种类的计算机和网络架构。例如,尽管未示出,计算机环境2100可以包括手持或膝上型设备、机顶盒、可编程消费者电子设备、大型计算机、游戏控制台等等。而且,图21示出为便于讨论而耦合在一起的计算机环境2100的元件。然而,计算环境2100可以采用分布式的处理配置。在分布式的计算环境中,计算资源在物理上遍布在环境中。
示例性的计算机2102包括一个或多个处理器或处理单元2106、系统内存2108以及总线2110。总线2110把各个系统组件连接在一起。例如,总线2110把处理器2106连到系统内存2108。总线2110可以用任一类总线结构或总线结构的组合来实现,包括内存总线或内存控制器、外围设备总线、加速图形端口以及使用多种总线结构的任一种的处理器或本地总线。例如,这种结构可以包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准联盟(VESA)本地总线以及也称为Mezzanine总线的外设组件互连(PCI)总线。
计算机2102也可以包括多种计算机可读媒质,包括多类易失性和非易失性的媒质,每一个媒质都是可移动或不可移动的。例如,系统内存2108包括形式为易失性内存和非易失性内存的计算机可读媒质,前者比如随机存取存储器(RAM)2112、后者比如只读存储器(ROM)2114。ROM 2114包括输入/输出系统(BIOS)2116,它包含例如启动期间帮助在计算机2102内的元件间传输信息的基本例程。RAM 2112一般包含数据和/或程序模块,它们的形式可由处理单元2106快速访问。
其它类型的计算机存储媒质包括:用于对不可移动、非易失性磁性媒质进行读写的硬盘驱动器2118;用于对可移动、非易失性磁盘2122(例如“软盘”)进行读写的磁盘驱动器2120;以及用于对可移动、非易失性光盘2126进行读写的光盘驱动器2124,比如CD-ROM、DVD-ROM或其它光学媒质。硬盘驱动器2118、磁盘驱动器2120和光盘驱动器2124分别通过一个或多个数据媒质接口2128连到系统总线2110。或者,硬盘驱动器2118、磁盘驱动器2120和光盘驱动器2124可以通过SCSI接口(未示出)或其它耦合机制连到系统总线2110。尽管未示出,但计算机2102可以包括其它类型的计算机可读媒质,比如磁性盒带或其它磁性存储设备、闪存卡、CD-ROM、数字化视频盘(DVD)或其它光学存储器、电可擦除可编程只读存储器(EEPROM)等等。
一般而言,上述计算机可读媒质为计算机可读指令、数据结构、程序模块及其它数据提供了非易失性存储供计算机2102使用。例如,可读存储器可以存储操作系统2130、一个或多个应用程序2132(比如实现图3所示的媒介服务器302、控制点(316、318)或任一媒介呈现设备(304-312)的逻辑)、其它程序模块2134以及程序数据2136。
计算机环境2100可以包括多种输入设备。例如,计算机环境2100包括用于把命令和信息输入到计算机2102内的键盘2138和指示设备2140(例如“鼠标”)。计算机环境2100可以包括其它设备(未示出),比如麦克风、游戏杆、游戏板、卫星式转盘、串行端口、扫描仪、读卡设备、数字或视频摄像机等等。输入/输出接口2142把输入设备耦合到处理单元2106。更为一般的是,输入设备可以通过任一类接口和总线结构耦合到计算机2102,比如并行端口、串行端口、游戏端口、通用串行总线(USB)端口等等。
计算机环境2100还包括显示设备2104。视频适配器2144把显示设备2104耦合到总线2110。除了显示设备2104以外,计算机环境2100可以包括其它输入外围设备,比如扬声器(未示出)、打印机(未示出)等等。
计算机2102可以工作在联网环境中,该环境使用与诸如远程计算设备2146这样的一个或多个远程计算机之间的逻辑连接。远程计算设备2146可以包括任一类计算机设备,包括通用个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其它公共网络节点等等。远程计算设备2146可以包括上面参照计算机2102所讨论的全部特征,或者其一些子集。
可以使用任何一类网络把计算机2102与远程计算设备2146耦合,比如局域网(LAN)2148或广域网(WAN)2150(比如互联网)。在LAN联网环境中实现时,计算机2102经由一网络接口或适配器2152连到本地网络2148。在WAN联网环境中实现时,计算机2102可以经由调制解调器2154或其它连接策略连到WAN 2150。调制解调器2154可以位于计算机2102内部或外部,它可以通过串行I/O接口2156或其它适当耦合机制与总线2110相连。尽管未示出,计算环境2100可以提供用于把计算机2102连到远程计算设备2146的无线通信功能(例如经由已调无线电信号、已调红外信号等等)。
在网络化环境中,计算机2102可以得到远程内存存储设备2158中所保存的程序模块。一般而言,图21中离散框所示的程序模块的描述仅仅是为了便于讨论;实际上,程序模块可以分布在计算环境2100内,这一分布可以在处理单元2106执行模块时以动态方式发生变化。
无论在物理上被保存在哪里,都可以提供一个或多个内存模块2108、2122、2126、2158等等来保存图3和5所述的媒介服务器302功能。在一示例性实现中,媒介服务器302所提供的功能各方面可以用针对微软公司的.NET框架或其它虚拟机环境的受控代码来实现。
尽管已经以对于结构特征和/或方法动作所特定的语言描述了本发明,然而可以理解,在所附权利要求中定义的发明不必要限于所述的特定特征或动作。而是这些特定特征和动作是作为实现本发明的示例性形式被公开。