Windows XP中的通用即插即用

来源:互联网 发布:js获取当前浏览器地址 编辑:程序博客网 时间:2024/05/06 12:24

Windows XP中的通用即插即用 
1/6:介绍  
 
借助于操作系统的即插即用(PnP)能力,用户可以非常轻松地在PC上安装、配置和添加外围设备。通用即插即用(Universal Plug and Play,UPnP)进一步提升了这种简化性,它将整个网络包括在内,实现了网络设备和服务的发现和控制,例如网络打印机、Internet网关和消费类电子设备。

UPnP不仅仅是对即插即用外设模型的简单扩展。它旨在实现一种“零”配置和“隐性”的联网过程,自动发现和控制来自各家厂商的各种网络设备。

本文简单介绍了UPnP的概念,以及Windows XP对UPnP的支持方式,并且提供了几个应用情境,对UPnP的工作原理和可能的应用方式进行了描述。 
 

2/6:UPnP 的工作原理

借助 UpnP(通用即插即用)技术,设备可以动态加入到网络中并获得 IP 地址、传达功能以及了解其它设备的存在和性能--所有这一切都是自动进行的,从而使得零配置的网络真正成为可能。此后,设备之间可以直接通讯,这又进一步地实现了对等网络功能。

可以从启用了 UPnP 技术的网络获益的设备种类包括智能设备、无线设备和具有各种组成元素的 PC。

UPnP 的作用范围非常广,足以容纳多种现有的应用和激动人心的新应用(包括家庭自动化、打印和图像处理、音频/视频娱乐、厨房设备、汽车网络以及公共场所的临近性网络)。

UPnP 使用标准的 TCP/IP 和 Internet 协议,这使它可以无缝地融合到现有的网络中。通过使用这些标准化的协议,UPnP 从现有的经验和知识财富中受益无穷,并且使得互操作性成为其与生俱来的功能。

由于 UPnP 属于分布式开放网络的架构(这是由它使用的协议定义的),因此它不依赖于任何特定的操作系统、编程语言或物理媒体(正如同 Internet)。UPnP 并未指定应用程序应该使用哪种 API,因此操作系统供应商可以创建满足其用户需求的 API。

 

UPnP 的定义者


通用即插即用协会 (Universal Plug and Play Forum) 根据 Microsoft 起草的通用设备架构定义了 UPnP 设备和服务规范(UPnP Device and Service Descriptions,最开始叫“设备控制协议(Device Control Protocols,DCP))。通用即插即用协会是由遍布全行业的公司和个人组成的团体,旨在率先创建 UPnP 设备和服务的规范。该协会成立于 1999 年 10 月 18 日,包括 340 多家在家电、计算、家庭自动化和安全、家用设备、计算机网络以及汽车设备行业中的领军者。

该协会的目标是推出易于连接的设备和简化家庭和公司环境中的网络实现。为实现这一目标,该协会基于开放的 Internet 通讯标准定义并公布了 UPnP 设备和服务规范。

由该协会制定并予以标准化的纲要集中存放在该协会的网站中。此外,该站点还包括设备架构文档、设备和服务规范模板以及设备和服务规范设计原则。UPnP.org 还发送有关该协会的活动和进度的信息。

 

UPnP 的职责


UPnP 提供了控制点和设备之间的通讯支持。网络媒体、TCP/IP 协议集以及 HTTP 提供了基本的网络连接条件和所需的地址。UPnP 在这些开放的、标准的 Internet 协议基础上定义了一组 HTTP 服务器来处理发现、描述、控制、事件和演示。本节介绍了如何使用在本文开头部分定义的协议来提供上述需求。

 

UPnP 协议集合


我们已经介绍了用于实现 UPnP 的协议,但为了更好地理解这些协议,不妨看一看以下的示意图。


图 1:UPnP 协议集合

UPnP 设备架构定义了任何设备或服务类型创建设备和服务规范的纲要或模板。

各个工作委员会对不同的设备和服务类型进行了后续的标准化,并创建了各个设备或服务类型的模板。

最后,供应商在该模板中填充特定于设备或服务的信息,如设备名称、型号、厂商名称以及有关服务介绍的 URL。

此后,这些数据会被封装在特定于 UPnP 的协议(这些协议是在 XML 设备规范模板之类的 UPnP 设备架构文档中定义的)中。

将所要求的 UPnP 特定信息插入所有消息中,然后用 SSDP、GENA 和SOAP 将这些消息格式化并通过 HTTP、HTTPU 或 HTTPMU 分发。

 

UPnP 组网步骤

寻址
UPnP 组网的基础是 TCP/IP 协议集,而该协议集的关键就是寻址。当任何设备首次连入网络时,它都必须有一个动态主机配置协议 (DHCP) 客户端,而且必须查找 DHCP 服务器。如果 DHCP 服务器可用,则该设备必须使用分配给它的 IP 地址。如果没有可用的 DHCP 服务器,该设备必须使用 Auto IP 获得地址。

简而言之,Auto IP 定义了设备如何从一组预留的专用地址中智能化地选择 IP 地址,以及如何才能实现在托管和未托管的网络间轻松转移。

设备可能实现在 UPnP 之外使用设备友好名称的更高层协议。这种情况下,必须要将友好主机(设备)名称解析为 IP 地址。域名服务 (DNS) 通常即用于该目的。要求或使用该功能的设备可能包含 DNS 客户端,也可能支持动态 DNS 注册将其名称映射为地址。

发现
一旦将设备连入网络并进行适当寻址后,就会发生发现操作。正如此前所介绍的,发现是由 SSDP 处理的。当设备连入网络后,SSDP 允许该设备将其服务通知给网络中的控制点。如果在网络中添加了控制点,SSDP 也将允许该控制点查找网络中的有关设备。

在这两种情况下所进行的基本交换都是发现消息。该消息包含少量有关设备或其某种服务的基本描述,例如它的类型、标识符以及其 XML 设备描述文档的指示符。

描述
UPnP 组网的下一步是描述。控制点发现设备后,它对设备仍然是知之甚少。为了让控制点了解设备的详细信息和功能,或者与设备交互,控制点必须从该设备在发现消息中提供的 URL 检索该设备的描述。

设备可能包含其它的逻辑设备和服务。设备的 UPnP 描述是用 XML 表示的,它包含特定于供应商和制造商的信息(包括型号名称和编号、序列号、厂商名称、供应商网站的 URL,如此等等)。该描述还包括所有内含设备或服务的列表以及用于控制、事件处理和演示的 URL。

控制
控制点检索到设备的描述后,它就具有了对设备进行控制的基本条件。为了详细了解有关服务的信息,控制点必须检索每个服务的详细 UPnP 描述。服务的描述也是用 XML 表示的,并且包括该服务会响应的命令或操作的列表以及每个操作的参数。服务描述还包括变量列表,这些变量模拟了服务的运行时状态,对它们的描述包括数据类型、范围和事件特征几个方面。

为控制设备,控制点会向设备的服务发送操作请求。为此,控制点将向该服务的控制 URL(在设备的描述中提供)发送适当的控制消息。该控制消息也是借助 SOAP 用 XML 格式表示的。

为响应上述控制消息,该服务会返回与操作有关的值或错误码。

事件处理
设备的 UPnP 描述包含了服务响应的操作列表和模拟该服务的运行时状态的变量列表。当这些变量改变时,该服务会发布更新,控制点可以通过预定来接收该信息。

服务通过发送事件消息来发布更新。事件消息含有一个或多个状态变量的名称以及这些变量的当前值。这些消息也是用 XML 表示的,并使用 GENA 进行格式化。

当控制点首次进行预定时,会发送一种专门的初始化事件消息。这种事件消息包括所有事件化变量的名称和值,并允许预定者对其关于该服务状态的模型进行初始化。

为支持多个控制点,可将所有事件消息都发往各个预定者。预定者可以接收所有事件化变量的事件消息,而且不论状态变量的改变原因为何(响应操作请求或由于状态更改),所有事件消息都将被发送。

演示
如果设备有要演示的 URL,控制点可以检索来自该 URL 的页面并将该页面载入浏览器中。同时根据该页面的功能,允许用户控制该设备和/或查看设备状态。所能进行的操作要取决于演示页和设备的特定功能。

总结:

  • UPnP 基于有线协议(正如 Internet),而不是基于 API,这使得它所面对的确实是未知的媒体和平台。
  • UPnP 基于现有标准,能够轻松地实现互操作性。
  • UPnP 如果成功,将拥有巨大的行业推动力。
  • 尽管基于标准,但 UPnP 同时具有灵活性,并且可以满足当前和未来的网络设备需要。

3/6:UPNP的应用情境

您可以借助多种自动发现和控制设备的方法使您的生活更轻松和更美好。UPnP 的到来开创了新的可能性和新的日常使用。本节列出了一些可能的应用场景,在这些场景中,UPnP 将十分有用。

 

一些 UPnP 应用场景:

Internet 连接共享
John 的 Web 冲浪大都是在他的家庭办公 PC 上进行的。他的办公室装有永远在线的 DSL 连接,并有防火墙的保护。他想在起居室里添加 WebTV 设备并在厨房里添加MSN 伴侣设备,这样,他的父母和妻子就可以在他们喜欢的地方上 web 冲浪了。WebTV 和 MSN 设备都能通过 HomePNA 网络从他的 Windows XP PC 发现和使用 UPnP Internet 连接共享。

儿童督促和监视照相机
Susan在她孩子的房间里放了两个小型的监视照相机,这样她可以一边在家庭办公 PC 上工作,一边监督她的孩子是否在做作业。她还在门口放置了一个监视照相机,这样当门铃响的时候,她可以先看一眼来访者。Susan 还可以通过家里任何启用了 UPnP 的电视查看任何一个照相机。

同步时钟
下述情况随时可能发生。突然停电几个小时,Mike 家里的时钟都显示为 12:00。要在整幢房子里走来走去校正这些时钟,既麻烦,又浪费时间。

输入 UPnP。这是一个运行在 Mike 基于 Windows XP 的 PC 中的脚本,它会定期根据科罗拉多的原子钟时间同步他屋子里的所有时钟。该脚本会查找网络中的所有时钟服务,而不管是什么设备。然后它简单地重复每一个服务,并将时间设为它通过 Internet 所获得的原子钟的值。

该脚本可以作为在每晚午夜重复执行的任务运行。一旦恢复供电,即可以手动运行该脚本来重置每个时钟。或者,在发生夏时制更改后,也可以这样做。

新打印机
如果 Jennifer 今天带了一台新打印机回家,并想在我的家庭网络中使用,她将必须采取几个步骤来确保网络中的所有 PC 都能使用该打印机,就先别说任何其它可能有打印要求的设备是否能使用了。

例如,她需要将打印机连接在现有的 PC 上、装载设备驱动程序、在网络中共享该打印机,然后前往网络中的其它每一台打印机将它们连接到共享打印机。

而借助 UPnP,Jennifer 只需将打印机插入任何可用的网络端口中,不管是电话线网络、电源线网络,还是以太网网络,她都可以立即让网络中的所有设备能使用该打印机。

存储空间又满了
Kevin 经常会用完他 PC 的存储空间,而且这种现象越来越频繁。究其原因,可能与他拍摄的大量数字照片和电影有关,也可能是因为他大胆地将他所有的 CD 收藏作为 Windows Media? 文件进行了编录。

尽管辅助存储器的价格已大幅度下降,但设备的即插即用并没有使添加硬盘的麻烦得到多大改观。更糟的是,当 Kevin 在假期访问家人时,他如何才能将这些家庭电影、照片和声音带到乡下去?

假设 Kevin 有一个高速、高容量的移动数据源,并且该数据源启用了 UpnP。该设备也许直接连在以太网网络或电话线网络,或者为了允许流式传输他的家庭电影而将该设备与其娱乐系统的其余部分一起连在高速 IEEE 1394 总线上。无论在什么位置插入该设备,网络中的所有其它设备(包括那些创作或显示媒体的设备)都将能立即得知它的可用性。

当 Kevin 带着看上去足够丰富的家庭电影去访问他的家庭时,他们将会何等高兴!

新式的便携式设备并不限于存储器或打印机,而是可以包含多种其它设备,如照相机、MP3 播放机、扫描仪、MIDI 设备、远程控制、电视和视频设备。这些设备似乎不可能一一列举。

“醒来的时候总是感到冷!”
Mary 躺在床上准备睡觉,明天是星期天。她的闹钟通常在早上 7 点叫醒她。但明天她想多睡一会儿。她需要闹钟叫醒她,但上午 9 点看上去似乎是更好的时间,因此她将闹钟设置为上午 9 点而不是上午 7 点。

自从 Mary 有了 UPnP 闹钟后,生活变得好多了。她在她基于 Windows XP 的 PC 上运行着一个脚本,该脚本始终在等待闹钟的报警通知。一旦发生了报警通知,它就会指示 HVAC 设备上的计时器将叫醒时间设为与闹钟的时间相同。

现在,加热器会在 Mary 起床之前提前打开,这样她就不会感觉到冷了。除了当前介绍的可编程自动调温装置外,还可以在智能化的 HVAC 系统中添加多种其它功能。这可能包括当感测器检测到人员或通过 Internet 对该系统的远程控制时启用该系统。

如果她的闹钟可以访问她的日程表信息,它将可以提醒她是否要选择在事先安排的会议之后起来。换言之,如果她在上午 9 点有会议,并试图将她的闹钟设为上午 9 点,则在使闹钟可以在 9 点钟工作之前,闹钟会提醒她实际上应该在上午 8 点起床。

主控开关
经过一天辛苦的工作,Bill 走进了他的家门。他按了一下墙上的开关,这对我们大多数人而言,就像打开休息室的灯。但使用 UPnP 后,这个开关就远不止这么简单了。该开关正是一种 UPnP 服务,它的状态是由被称为“位置”的变量定义的。当 Bill 按下开关时,“位置”变为“开”,同时运行在他基于 Windows XP 的 PC 上的脚本也会投入工作。

该脚本可以获得主控开关的位置已变为“开”的通知。此后它会执行下列操作:

  • 加热器打开到预设的温度。
  • 应答机开始播放新留言。
  • Bill 的立体声系统打开,并被设置在他最喜欢的古典音乐台,声音是根据环境水平设置的。
  • 窗户的百叶升起来,但这只会在日落之后发生(日出/日落数据可以非常容易地从 Internet 获取)。
  • 可选的操作,打开电视并将其设在新闻台,同时保持静音并打开关闭的字幕功能。
  • 喔,对了,休息室的灯也打开了。

通样,当您将开关按到“关闭”位置时,会进行反向操作:

  • 加热器关闭(或被设为较低的温度)。
  • 关闭立体声。
  • 关闭电视。
  • 为了安全,将窗户的百叶降下来。
  • 关闭房屋里的所有灯。

最后的工作
Billy 正在做家庭作业并且可以进行打印了,因此他想如果能将打印机搬到自己的房间来,工作会更轻松一些。没想到父亲注意到了这一点,原因是该打印机是启用了 UPnP 功能的,当儿子关闭打印机时,在父亲的计算机上会弹出一个对话。

尽管这在过去可以通过事件处理来实现,但在此时,它只是发现协议的一部分。当 UPnP 设备以适当的方式离开网络时,它会发送通知表明它将离开。因此,所有控制点都可以准确地了解到网络状态。

晚饭结束了,电影放完了,父亲和母亲坐在沙发上。在父亲将注意力转向母亲时,母亲发现父亲的便携式计算机还在运行着。她走到计算机跟前,按了一下控制气氛的按钮。灯光变暗,阴影下垂,轻音乐响起,便携式计算机也关闭了。

4/6:UPnP 网络组件

UPnP 网络的基本构成部分是设备、服务和控制点。本节将对这些组件进行较为完整的介绍。


UPnP 控制点、设备和服务

 

设备


UPnP 设备是服务或嵌套设备的容器。例如,VCR 设备可能包括磁带传输服务、调谐服务和时钟服务。电视/VCR 组合设备可能不仅含有服务,而且还包含嵌套的设备。

不同类别的 UPnP 设备会与不同的服务和嵌套设备组合相关联。例如,VCR 中的服务会不同于打印机中的服务。因此,不同的工作小组会对特定设备提供的服务组合进行标准化。在设备必须拥有的 XML 设备描述文档中会捕获所有这些信息。除了服务组合外,设备描述还将列出与设备关联的属性(如设备名称和图标)。

 

服务


UPnP 网络中的最小控制单元是服务。服务会公开它的操作并通过状态变量来模拟它的状态。例如,时钟服务可能被模拟为有一个状态变量,current_time,它定义了时钟的状态,和两个操作,set_time 及 get_time,它们允许您控制该服务。类似于设备描述,这些信息都是 UPnP 协会进行了标准化的 XML 服务描述的一部分。在设备描述文档中包含指向这些服务描述的指示符 (URL)。设备可能包含多个服务。

UPnP 设备中的服务由状态表、控制服务器和事件服务器组成。状态表可通过状态变量模拟服务状态并在状态变化后对它们进行更新。控制服务器负责接收操作请求(比如 set_time)、执行它们、更新状态表并返回响应信息。事件服务器负责每当服务状态改变时即将事件发布到感兴趣的预定者。例如,火警服务在其状态变为“振铃”时,将会响有关的预定者发送事件。

 

控制点


UPnP 网络中的控制点是可以发现并控制其它设备的控制器。在发现设备后,控制点会执行下述操作:

  • 检索该设备的描述并获取有关服务的列表。
  • 检索服务描述查找感兴趣的服务。
  • 调用操作控制服务。
  • 向服务的事件源进行预定。每当该服务的状态发生变化,事件服务器都会向该控制点发送事件。

为实现真正的对等网络,在设备中也有望包含控制点功能(反之亦然)。

5/6:UPnP 协议概述

用于 UPnP 的网络媒体


UPnP 使用标准的 IP 协议集,从而保持了网络媒体的不可知性。UPnP 网络设备可以使用任何通讯媒体连接,包括无线频率(RF,无线)、电话线、IrDA、以太网以及 IEEE 1394。换言之,任何可以和网络设备一同使用的媒体都可以启用 UPnP。唯一要关心的可能是使用的媒体是否支持目标用途所要求的带宽。 UPnP 使用开放的标准协议,如 TCP/IP、HTTP 和 XML。但是,由于多种原因(包括成本、技术要求或兼容支持),其它的技术也可能与网络设备一起被使用。这些包括网络技术,如 HAVi、CeBus、LonWorks、EIB 或 X10。通过 UPnP 网桥或代理,这些技术也可以加入到 UPnP 网络中。包含桥接设备的 UPnP 网络看起来可能如下图所示。


图 3:桥接的 UPnP 网络

 

UPnP 使用的协议


UPnP 利用了多种现有的标准协议。使用这些标准化的协议有助于确保供应商实现之间的互操作性。对于用以实现 UPnP 的协议,您经常可以发现它们用在 Internet 和局域网的各个位置。这种普遍性确保了有大量的人员知道该如何实现和部署基于这些协议的解决方案。由于相同的协议已在使用之中,因此几乎不需要执行任何操作就可以让 UPnP 设备在现有的网络化环境中工作。在本节的其余部分概述了一些用于实现 UPnP 的协议。


图 4:UPnP 协议组合

 

UPnP 特有的协议


UPnP 供应商、UPnP 协会工作委员会以及 UPnP 设备架构文档定义了可用于实现 UPnP 的最高级协议。基于设备架构,该工作委员会定义了特定于设备类型的规范,这些类型比如 VCR、HVAC 系统、洗碗机以及其它设备。此后,UPnP 设备供应商可以添加特定于各自设备的数据,如型号名称、URL 等等。

TCP/IP
TCP/IP 网络协议集充当了建立其余 UPnP 协议的基础。通过使用该标准(普遍使用的 TCP/IP 集),UPnP 可以利用其跨越不同物理媒体的能力并确保多个供应商之间的互操作性。

UPnP 设备可以使用 TCP/IP 集合中的多种协议(包括 TCP、UDP、IGMP、ARP、IP)和 TCP/IP 服务(比如 DHCP 和 DNS)。当我们在本节介绍了其它协议和在下一节介绍了 UPnP 的工作方式之后,如何使用这些协议和服务来提供 UPnP 工作所需的内容也就会变得一目了然。

由于 TCP/IP 是使用最为普遍的网络协议之一,因此定位或创建一个对覆盖面和/或性能进行优化的 UPnP 设备实现将相当容易。

本文档假定您对 TCP/IP 协议集和服务有基本的了解。有关 TCP/IP 的详细信息,可以在本文档结束位置所列出的参考中找到。

HTTP、HTTPU、HTTPMU
TCP/IP 提供了用来实现 UPnP 设备间网络连接的基本协议集。对 Internet 的成功作出了巨大贡献的 HTTP 也是 UPnP 的核心部分。UPnP 的所有组件都建立在 HTTP 或其变体之上。

HTTPU(和 HTTPMU)是 HTTP 的变体,定义它们是为了通过 UDP/IP(而不是 TCP/IP)发送消息。下面介绍的 SSDP 将使用这些消息。这些协议的基本消息格式沿袭了 HTTP,并且是多播通讯和当消息传输不要求与可靠性有关的开销时所需要的。

一些关于较为高级的协议和 UPnP 工作的说明需要您基本了解 HTTP 协议。有关 HTTP 的详细信息,可以通过在本文档结束位置所列出的参考中找到。

SSDP
顾名思义,简单服务发现协议 (SSDP) 定义了网络服务是如何在网络上被发现的。SSDP 基于 HTTPU 和 HTTPMU 创建,定义了控制点定位网络上感兴趣的资源和设备通知它们在网络上的可用性的方法。通过定义同时使用搜索请求和展示通知,SSDP 避免了在仅使用这两种机制中的任一种时所必需的开销。这样,网络中的每个控制点都可以获得关于网络状态的完整信息,同时保持了低水平的网络流量。

访问点和设备都可以使用 SSDP。UPnP 访问点启动后可以发送 SSDP 搜索请求(通过 HTTPMU)来发现网络上可用的设备和服务。访问点可以细化该搜索,从而仅查找特定类型的设备(如 VCR)、特定服务(如具有时钟服务的设备)乃至特定设备。

UPnP 设备会侦听多播端口。一旦收到搜索请求,该设备就检查该搜索条件以确定它们是否匹配。如果匹配,一个单播 SSDP(通过 HTTPU)响应将被发送到该控制点。

同样,当将设备插入网络时,它会发出多播 SSDP 展示通知消息,通知它所支持的服务。

在展示通知和单播设备响应消息中都包含该设备描述文档(含有该设备支持的属性和服务组合的信息)所在位置的指示符。

除了提供发现功能外,SSDP 还提供了设备及其关联的服务适当地从网络离开的方式(再见通知),并包含清除陈旧信息的缓存超时设置来进行自我维护。

GENA
定义普通事件通知架构 (GENA) 是为了提供收、发使用了 HTTP over TCP/IP 和多播 UDP 的通知的能力。GENA 还定义了通知预定者和发布者的概念以启用事件。

在 UPnP 中,GENA 格式可用于创建将要使用简单服务发现协议 (SSDP) 发送的展示通知,并为 UPnP 事件提供表示服务状态已更改的能力。希望接收事件通知的控制点会向事件源进行预定,方法是发送一个含有它感兴趣的服务、将事件发往的位置以及事件通知的预定时间的请求。

要连续接收通知,所作的预定必须定期予以更新。也可以使用 GENA 取消预定。

SOAP
简单对象访问协议 (SOAP) 定义了可扩展标识语言 (XML) 和 HTTP 的使用来执行远程过程调用。它正在变成 Internet 上基于 RPC 的通讯标准。通过使用 Internet 的现有基础设施,它可以有效地配合防火墙和代理工作。SOAP 还使用安全套接字层(SSL) 提供安全性,并使用了 HTTP 的连接管理功能,从而使得 Internet 上的分布式通讯就像访问网页一样简单。

与远程过程调用非常相似,UPnP 使用 SOAP 向设备发送控制消息并将结果或错误返回到控制点。

每个 UPnP 控制请求都是一个 SOAP 消息,都包含调用操作和一组参数。其响应也是 soap 消息,其中包括状态、返回值以及任何返回参数。

XML
为使用 W3C 定义,可扩展标识语言 (XML) 是 Web 上的结构化数据的通用格式。另外,借助 XML,几乎可以将任何类型的结构化数据放到文本文件中。

XML 使用标记和属性,这使它看起来与 HTML 非常相似。实际上,它们在以下方面存在显著的差别:XML 标记和属性的含义不是全局定义的,而是在使用它们的上下文中进行解释。XML 的这些功能使得它成为开发各种文档类型架构的最佳选择。W3C 定义了将 XML 作为架构语言的使用。

XML 是 UPnP 的核心部分,被用在设备和服务描述、控制消息和事件处理中。

6/6:一个UPnP网络的例子

为了进一步了解在 UPnP 组网中所执行的各个步骤的时间和方式,本节帮助定义了一个仅含有少量 UPnP 设备的小型网络。这样一来,我们就可以有的放矢地介绍这些设备的交互情况。

在下面的图 6 所显示的网络中,含有下述启用了 UPnP 的设备:

  • Internet 网关:该设备可以是独立的网关设备或充当网关的 PC。该设备可以是或者不是控制点。该设备提供的服务可能包括 Internet 访问、动态主机配置协议 (DHCP) 服务器、DNS 代理和存储服务。该网关还将与几个家庭 LAN 媒体相连并充当这些媒体的网桥。所使用的媒体包括 IEEE 802.11 无线、电力线网络、电话线网络以及 IEEE 1394。
  • 几个智能设备:考虑到本示例的目的,该网络包括了几个启用了 UPnP 的设备,其中包括时钟收音机、咖啡壶和微波炉,所有设备都插在电力线网络中。该网络还含有一个连接在电话线网络的 UPnP 打印机。
  • 家庭娱乐系统:家庭娱乐系统包括几个通过 IEEE 1394 或 Firewire 相连的设备,并都连接在网关设备上。组件包括带调谐器、收音机、CD 唱片播放机的立体声系统、TV 和 VCR,以及用于其它 A/V 设备(如视频或数字静态照相机)的连接。在该网络中还将添加新的 DVD 唱片播放机。
  • 启用了无线功能的便携式计算机:家庭的主人在工作时使用带有无线网络适配器的便携式计算机,他偶尔会将该便携式计算机带回家来以完成上班时留下的任务。

尽管还可以在该网络中添加多个组件,但为了更好地说明 UPnP 的操作,本示例中的网络保持了相当的简洁程度。


图 6:示例网络

 

故事的开始


要开始这个场景,上述网络中的所有组件都应该加电运行,并已经使用 UPnP 协议发现了彼此的存在(除便携式计算机和 DVD 播放机外)。

在几个星期前的晚饭后,一家人讨论起 DVD 在视频市场中取得的成功,以及他们是如何还没有能体验到高质量视频的--因为他们还在使用录像机。

母亲在邮件中收到了一封邀请加入 DVD 俱乐部的信。一家人坐了下来,每个人都挑了几张 DVD 开始了自己的收藏。今天,母亲给正在上班的父亲打了电话,告诉他购买的 DVD 已经到了。不幸的是,他们忘记了购买欣赏这些 DVD 而所需的关键设备,DVD 播放机。

在父亲下班回家的路上,他在电子超市(他是购买这些东西的行家)买了最新式的 DVD 唱片播放机,并保证它带有 UPnP 功能。

父亲到家后,他们打开该设备的包装,然后使用 IEEE 1394 将它插进家庭娱乐系统中。只要借助 UPnP 功能,家庭网络中的其余设备都将能知道该新设备的存在。

 

设备寻址


新 DVD 播放机要做的第一件事就是获得一个地址,这样才可以加入到网络中。当新设备首次连入网络时,每个设备都必须有一个 DHCP 客户端并要搜索 DHCP 服务器。

如果 DVD 播放机中的 DHCP 客户端在等待片刻后没有获得服务器的响应,它将通过重试来确保服务器有响应的机会。如果网络未包含运行着的 DHCP 服务器,DVD 播放机将使用自动 IP 寻址 (Auto-IP) 功能选择合适的地址。

借助 Auto-IP,设备可以智能化地选择 169.254/16 范围中的 IP 地址。该范围内的第一个和最后一个 256 地址是预留的,不能使用。接下来是测试所选的地址看它是否正在使用。如果该地址正被其它设备使用,则必须选择另一个地址并进行测试,直到一个由实现所决定的重试次数。如果该网络有可用的 DHCP 服务器,则上述的整个过程可以在不到一秒的时间内完成。如果网络没有 DHCP 服务器,从而要求设备使用 Auto-IP 时,则该过程将需要较长时间。如果地址是使用 Auto-IP 分配的,DVD 播放机将定期进行检查,看网络上是否有变得可用的 DHCP 服务器,以此可确保设备之间的连接性能得到维护。

此时,DVD 播放机或者是已具有了由 DHCP 服务器分配的地址,并且网络中的其它设备在同一子网中都有自己的地址;或者 DVD 播放机已具有一个 Auto-IP 地址。两种情况下,DVD player 都能使用 TCP/IP 和网络中的其它设备通讯。

一旦 DVD 播放机拥有了对该网络有效的 IP 地址,就可以在该网络中通过该地址找到和引用它。可能存在最终用户需要查找和标识设备的情况。在这些情况下,使用设备的友好名称将比使用其 IP 地址更为容易。但是,使用 DNS 将名称映射为地址已超出了 UPnP 的能力范围。

 

发现-通知


由于我们的新设备已经有了地址并能在网络中进行通讯,它就需要让那些已经在网络中加电运行的控制点知道自己的存在。这就是 UPnP 中的一种发现形式。当将设备添加到网络中时,UPnP 发现协议允许设备向网络中的控制点通知它的服务。

当将设备添加到网络中时,它会多路传播发现消息来通知它所包含的设备和服务。任何感兴趣的控制点都能监听标准的多播地址,来看是否有新服务可用的通知。

我们的 DVD 播放机发送的发现消息将含有用来指示该通知的有限期的时间戳。在该时间期满之前,DVD 播放机必须重新发送它的通知,否则,控制点会假定该设备不再可用。在脱机之前,DVD 播放机也应该发送消息明确告诉网络它将离开。

此处显示的协议集合用于发送和接收通知。


图 7:用于发现消息的协议集合

我们的 DVD 播放机在一插入网络,便会向每个设备和服务发送 GENA 通知,宣布它的存在。由于这些消息是通过 UDP 发送的(一种不可靠的传输方式),因此它们可能被发送多次,以确保所有感兴趣的控制点都能收到它们。

 

发现-搜索


在完成了连接 DVD 播放机的辛苦工作(父亲也将他们在邮件中收到的 DVD 插入到播放机中)后,父亲坐在沙发上用他的便携式计算机润色按规定要在星期一提交的演示报告。

父亲的便携式计算机也带 UPnP 功能,因此与新装的 DVD 播放机一样,它也会进行寻址和发送发现通知。父亲开始了他在家庭网络中的工作。由于是星期五,离晚饭还有一个小时,而且在星期一之前他都不必完成他的演示报告,所以他想休息一会儿。

父亲想播放他喜欢的 DVD 电影,并查看一下新设备的工作方式。当然,他可能会感受一下该播放机附带的新遥控器。他坐在沙发上,膝盖上放着正在运行便携式计算机,而 DVD 却在 UPnP 网络中,是否能不用站起来呢?

父亲在它的便携式计算机中启动了视频控制应用程序。启动该应用程序会在网络中添加一个新的控制点。网络中的所有视频设备都显示出来,父亲选择了 DVD 播放机。随后他选择了要播放的光盘并启动它使其旋转起来。他还可用于使用该视频控制程序打开电视。

刚才在 UPnP 网络中发生了几个另外的步骤。首次在网络中添加了新控制点。当在网络中添加新控制点时,该控制点会多播 SSDP 发现消息,搜索感兴趣的设备和服务。所有设备都要在该标准地址监听上述消息,并且在它们所含的设备或服务符合发现消息中的搜索条件时都必须作出响应。父亲启动的视频控制应用程序正在专门搜索视频源设备。此处显示了用于这些搜索消息的协议集合:


图 8:用于发现搜索的协议集合

这些搜索消息包含特定于供应商的信息,如设备或服务类型以及标识符等。此外,还将添加由 UPnP 工作委员会为这些类型的设备定义的设备或服务类型,此时即指视频源设备。这些设备都封装在使用 HTTPMU 发送的 SSDP 请求中。对这些搜索请求的响应将使用带有 SSDP 头的单播 UDP 发送。

对这些搜索请求的响应将包含与发现通知相同的信息。这些响应被发送到启动该搜索的控制点所在的 IP 地址,此时即指父亲的便携式计算机。

 

描述


正在父亲的便携式计算机中运行的新控制点现在已拥有了关于网络中所有视频源设备的信息。在这个故事中,我们首次遇着了控制点需要设备的详细信息的情形,因此,我们需要进入描述阶段。

所收到的对于搜索发现请求的响应含有 URL,从该地址可以获得设备描述。

为检索 UPnP 设备的描述,该控制点向来自于搜索消息的 URL 发出 HTTP GET 请求,从而使该设备返回设备描述。服务描述的 URL 包含在设备描述中,因此可以用相同的方式检索服务描述。用于描述步骤的协议集合如下所示:


图 9:用于描述的协议集合

UPnP 的设备描述是一种 XML 文档,其中包括几段特定于供应商的信息、所有内含设备的定义、设备演示的 URL 以及所有服务的枚举(包括其控制和事件的 URL)。UPnP 供应商可以扩展该标准的设备和服务描述,在其中添加其它的状态变量、操作甚至整个服务。这样,UPnP 既允许了灵活性,又遵守了基本标准。设备和服务描述的示例可以在 UPnP 设备架构文档中找到。

 

演示


在父亲的便携式计算机中运行的应用程序可以确定演示哪些设备和服务以及如何演示它们。另外,如果 DVD 播放机寄存有演示网页,则可以下载该 HTML 页面,并用它来控制设备。

演示页的 URL 包含在设备描述中。要检索这种页面,将需要控制点向演示 URL 发出 HTTP GET 请求。随后设备会返回一个演示页。所使用的协议组合如下所示:


图 10:用于演示的协议组合

UPnP 设备架构文档指定这种页面应该用 HTML 编写。这类似于 Web 浏览,只不过父亲在此处对设备的浏览是为了控制它。

演示页的功能是完全由 UPnP 供应商指定的。要实现演示页,UPnP 供应商可能会使用 UPnP 控制和/或事件机制,从而利用设备的现有功能。注意,在演示中没有任何元素是 UPnP 协会定义的,它完全取决于供应商!

 

控制


父亲需要控制 DVD 播放机、选择 DVD 电影并启动播放器的运行。为此,他可以使用演示页或普通的视频控制应用程序。

一旦控制点得知某个设备及其服务,它就可以对这些服务调用操作并获得返回值。同时,控制点还可以轮询这些服务的状态变量值。

调用操作是一种远程过程调用:控制点向设备的服务发送操作,当操作完成时(或失败时),服务会返回任何结果或错误。控制点还可以轮询状态变量的值。

为控制 DVD 播放机,父亲的便携式计算机向 DVD 服务控制 URL(包含在设备描述中)发送了一条控制消息。DVD 播放机服务将返回该操作的任何结果或错误。该操作的影响也可以通过该服务的状态变量所发生的变化得到监视。这些状态变量的变化会按照在事件的描述发布给所有感兴趣的控制点,但可以查询这些状态变量的值,这是控制请求的一种变体。

以下是用于控制的协议组合。


图 11:用于控制的协议组合

包含在控制消息中的供应商特定信息含有参数值。UPnP 协会工作委员会定义了包含在这些消息中的操作名称、参数名以及变量。这些信息是用 UPnP 特有的格式封装的,并使用 SOAP 进行格式化,然后使用 HTTP over TCP/IP 传送。

设备必须在 30 秒内响应控制请求。这些请求可以指示操作仍在待决当中,操作完成后,会用一个事件予以表示。

控制应用程序可能还想查询特定服务变量的状态,例如,DVD 播放机可能有这样的一个服务:其状态变量含有特定 DVD 的运行时间。父亲可能希望了解这一点,因为这样他可以知道在晚饭准备好时他能看到电影的什么地方。控制点也可以查询服务的状态变量,但每个发送的查询只能带一个状态变量。

 

再看一遍发现、描述和控制


现在,DVD 开始播放了,父亲准备坐下来开始处理他的演示报告。看着他新买的东西,他注意到时钟在闪烁。不仅如此,VCR 上的时钟也在闪烁。他刚想到新设备前关闭这种显示方式,但母亲说微波炉、咖啡壶和闹钟上的时钟也是错误的,因为在下午早些时候曾停了一会儿电。

父亲想起了随 Internet 网关提供的时钟设置应用程序。没有比现在更好的机会试一试它了。他没有将该应用程序装载到便携式计算机中,因为有两点使得查找和运行该应用程序更为容易。

首先,网关为家庭网络提供了存储服务。这使得网络有可用的磁盘空间。该时间设置应用程序在网关共享的磁盘上可用。第二个使该应用程序易于运行的因素是,父亲便携式计算机中的操作系统启用了 UpnP,包括文件浏览器也是如此。但他打开该浏览器时,浏览器会自动搜索网络中提供文件存储服务的设备,因此会显示出网关设备中的存储区。

父亲现在可以单击该时钟设置应用程序,而该程序可以完成下述操作:

  • 查找 Internet 连接,并连接到 Internet 上的时间源获取标准时间。
  • 使用 UPnP 发现功能搜索网络中所有提供时钟服务的设备。
  • 遍历找到的每个设备,并向它们的所有时钟服务提交“set”操作。

真是轻松。通过进一步的研究,父亲发现可以配置该时钟应用程序,让它从自身作为控制点运行的网关定期运行。他将该应用程序设置为在每天早上 4 点启动运行,这样,就不必担心要重新设置时钟了。

 

事件处理


快到晚饭时间了。父亲完成了他的演示报告,他想制作一份硬拷贝以便在晚饭过程中能够检查它。由于 UPnP 打印机连接在厨房的电话线网络中,他的便携式计算机已经可以通过打印浏览器使用该打印机。

父亲选择打印到该打印机并提交了打印作业。他放下便携式计算机正准备开始欣赏电影时,便携式计算机上显示出一个弹出消息,通知他打印机的墨水用完了。因为打印机直连在 PC 上,所以这种情况是可能的。借助 UPnP,打印机和打印浏览器都使用了 UPnP 事件处理。

父亲正准备叫他的儿子更换墨盒,儿子走过来告诉它墨盒已经换好了。就是这么凑巧,他的儿子一直在自己房间里的 PC 上做功课,他的 PC 也收到了相同的通知。网络中所有进行了事件获得登记的控制点都可以接收这样的通知。

在服务描述中说明的状态变量也可以事件化。当这些变量更改时,服务会发布更新。控制点(如本例中的打印浏览器)可发送预定消息来预定接收这样的信息。事件的发布者可以接受预定请求并在响应中包含了该预定的有效期。预定者可以续定,当不再感兴趣时也可以取消预定。

以下是用于事件处理的协议集合:


图 12:用于事件处理的协议集合

预定的 URL、预定有效期、具体的变量值以及变量名称都是用 GENA 进行格式化的,并使用 TCP/IP 发送。

 

总结


现在,计算支持比以往任何时候都多地被添加到更小、更普通的设备中。便宜并且普遍存在的网络媒体技术已经摆在您的面前,或者说已快要实现。近年来,网络和计算支持方面的价格已大幅下降。

由于在网络化的日常设备中组合了易于使用和配置的计算支持和连接功能,从而带来了新的附加优点:日常任务更容易完成,人们有更多的时间享受更高质量的生活。人们可以比以往任何时候都多地与世界联系。当然,这同时也可能是一个让人们不知所措的发展。因此,为了让人们有效地使用,必须使任务变得简单。

通用即插即用是一种开放式的倡导,借此可在现有的标准、技术和知识基础上,对它们重新加以利用,从而为网络世界提供新的前景和机会。它基于标准、功能强大,即使是最小型的设备也能简单地实现它,甚至能扩展到全球的Internet。通用即插即用基于已经时间证明的 Internet 协议方法,它虽然只是一种附加手段,但确实行之有效。

原创粉丝点击