UPnP 协议概述用于 UPnP 的网络媒体UPnP 使用标准的 IP 协议集,从而保持了网络媒体的不可知性。UPnP 网络设备可以使用任何通讯媒体连接,包括无线频率(RF,无线)、电话线、IrDA、以太网以及 IEEE 1394。换言之,任何可以和网络设备一同使用的媒体都可以启用 UPnP。唯一要关心的可能是使用的媒体是否支持目标用途所要求的带宽。 UPnP 使用开放的标准协议,如 TCP/IP、HTTP 和 XML。但是,由于多种原因(包括成本、技术要求或兼容支持),其它的技术也可能与网络设备一起被使用。这些包括网络技术,如 HAVi、CeBus、LonWorks、EIB 或 X10。通过 UPnP 网桥或代理,这些技术也可以加入到 UPnP 网络中。包含桥接设备的 UPnP 网络看起来可能如下图所示。
UPnP 使用的协议UPnP 利用了多种现有的标准协议。使用这些标准化的协议有助于确保供应商实现之间的互操作性。对于用以实现 UPnP 的协议,您经常可以发现它们用在 Internet 和局域网的各个位置。这种普遍性确保了有大量的人员知道该如何实现和部署基于这些协议的解决方案。由于相同的协议已在使用之中,因此几乎不需要执行任何操作就可以让 UPnP 设备在现有的网络化环境中工作。在本节的其余部分概述了一些用于实现 UPnP 的协议。
UPnP 特有的协议UPnP 供应商、UPnP 协会工作委员会以及 UPnP 设备架构文档定义了可用于实现 UPnP 的最高级协议。基于设备架构,该工作委员会定义了特定于设备类型的规范,这些类型比如 VCR、HVAC 系统、洗碗机以及其它设备。此后,UPnP 设备供应商可以添加特定于各自设备的数据,如型号名称、URL 等等。 TCP/IP UPnP 设备可以使用 TCP/IP 集合中的多种协议(包括 TCP、UDP、IGMP、ARP、IP)和 TCP/IP 服务(比如 DHCP 和 DNS)。当我们在本节介绍了其它协议和在下一节介绍了 UPnP 的工作方式之后,如何使用这些协议和服务来提供 UPnP 工作所需的内容也就会变得一目了然。 由于 TCP/IP 是使用最为普遍的网络协议之一,因此定位或创建一个对覆盖面和/或性能进行优化的 UPnP 设备实现将相当容易。 本文档假定您对 TCP/IP 协议集和服务有基本的了解。有关 TCP/IP 的详细信息,可以在本文档结束位置所列出的参考中找到。 HTTP、HTTPU、HTTPMU HTTPU(和 HTTPMU)是 HTTP 的变体,定义它们是为了通过 UDP/IP(而不是 TCP/IP)发送消息。下面介绍的 SSDP 将使用这些消息。这些协议的基本消息格式沿袭了 HTTP,并且是多播通讯和当消息传输不要求与可靠性有关的开销时所需要的。 一些关于较为高级的协议和 UPnP 工作的说明需要您基本了解 HTTP 协议。有关 HTTP 的详细信息,可以通过在本文档结束位置所列出的参考中找到。 SSDP 访问点和设备都可以使用 SSDP。UPnP 访问点启动后可以发送 SSDP 搜索请求(通过 HTTPMU)来发现网络上可用的设备和服务。访问点可以细化该搜索,从而仅查找特定类型的设备(如 VCR)、特定服务(如具有时钟服务的设备)乃至特定设备。 UPnP 设备会侦听多播端口。一旦收到搜索请求,该设备就检查该搜索条件以确定它们是否匹配。如果匹配,一个单播 SSDP(通过 HTTPU)响应将被发送到该控制点。 同样,当将设备插入网络时,它会发出多播 SSDP 展示通知消息,通知它所支持的服务。 在展示通知和单播设备响应消息中都包含该设备描述文档(含有该设备支持的属性和服务组合的信息)所在位置的指示符。 除了提供发现功能外,SSDP 还提供了设备及其关联的服务适当地从网络离开的方式(再见通知),并包含清除陈旧信息的缓存超时设置来进行自我维护。 GENA 在 UPnP 中,GENA 格式可用于创建将要使用简单服务发现协议 (SSDP) 发送的展示通知,并为 UPnP 事件提供表示服务状态已更改的能力。希望接收事件通知的控制点会向事件源进行预定,方法是发送一个含有它感兴趣的服务、将事件发往的位置以及事件通知的预定时间的请求。 要连续接收通知,所作的预定必须定期予以更新。也可以使用 GENA 取消预定。 SOAP 与远程过程调用非常相似,UPnP 使用 SOAP 向设备发送控制消息并将结果或错误返回到控制点。 每个 UPnP 控制请求都是一个 SOAP 消息,都包含调用操作和一组参数。其响应也是 soap 消息,其中包括状态、返回值以及任何返回参数。 XML XML 使用标记和属性,这使它看起来与 HTML 非常相似。实际上,它们在以下方面存在显著的差别:XML 标记和属性的含义不是全局定义的,而是在使用它们的上下文中进行解释。XML 的这些功能使得它成为开发各种文档类型架构的最佳选择。W3C 定义了将 XML 作为架构语言的使用。 XML 是 UPnP 的核心部分,被用在设备和服务描述、控制消息和事件处理中。 为了进一步了解在 UPnP 组网中所执行的各个步骤的时间和方式,本节帮助定义了一个仅含有少量 UPnP 设备的小型网络。这样一来,我们就可以有的放矢地介绍这些设备的交互情况。 在下面的图 6 所显示的网络中,含有下述启用了 UPnP 的设备:
尽管还可以在该网络中添加多个组件,但为了更好地说明 UPnP 的操作,本示例中的网络保持了相当的简洁程度。
故事的开始
在几个星期前的晚饭后,一家人讨论起 DVD 在视频市场中取得的成功,以及他们是如何还没有能体验到高质量视频的--因为他们还在使用录像机。 母亲在邮件中收到了一封邀请加入 DVD 俱乐部的信。一家人坐了下来,每个人都挑了几张 DVD 开始了自己的收藏。今天,母亲给正在上班的父亲打了电话,告诉他购买的 DVD 已经到了。不幸的是,他们忘记了购买欣赏这些 DVD 而所需的关键设备,DVD 播放机。 在父亲下班回家的路上,他在电子超市(他是购买这些东西的行家)买了最新式的 DVD 唱片播放机,并保证它带有 UPnP 功能。 父亲到家后,他们打开该设备的包装,然后使用 IEEE 1394 将它插进家庭娱乐系统中。只要借助 UPnP 功能,家庭网络中的其余设备都将能知道该新设备的存在。
设备寻址
如果 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 的能力范围。
发现-通知
当将设备添加到网络中时,它会多路传播发现消息来通知它所包含的设备和服务。任何感兴趣的控制点都能监听标准的多播地址,来看是否有新服务可用的通知。 我们的 DVD 播放机发送的发现消息将含有用来指示该通知的有限期的时间戳。在该时间期满之前,DVD 播放机必须重新发送它的通知,否则,控制点会假定该设备不再可用。在脱机之前,DVD 播放机也应该发送消息明确告诉网络它将离开。 此处显示的协议集合用于发送和接收通知。 我们的 DVD 播放机在一插入网络,便会向每个设备和服务发送 GENA 通知,宣布它的存在。由于这些消息是通过 UDP 发送的(一种不可靠的传输方式),因此它们可能被发送多次,以确保所有感兴趣的控制点都能收到它们。
发现-搜索
父亲的便携式计算机也带 UPnP 功能,因此与新装的 DVD 播放机一样,它也会进行寻址和发送发现通知。父亲开始了他在家庭网络中的工作。由于是星期五,离晚饭还有一个小时,而且在星期一之前他都不必完成他的演示报告,所以他想休息一会儿。 父亲想播放他喜欢的 DVD 电影,并查看一下新设备的工作方式。当然,他可能会感受一下该播放机附带的新遥控器。他坐在沙发上,膝盖上放着正在运行便携式计算机,而 DVD 却在 UPnP 网络中,是否能不用站起来呢? 父亲在它的便携式计算机中启动了视频控制应用程序。启动该应用程序会在网络中添加一个新的控制点。网络中的所有视频设备都显示出来,父亲选择了 DVD 播放机。随后他选择了要播放的光盘并启动它使其旋转起来。他还可用于使用该视频控制程序打开电视。 刚才在 UPnP 网络中发生了几个另外的步骤。首次在网络中添加了新控制点。当在网络中添加新控制点时,该控制点会多播 SSDP 发现消息,搜索感兴趣的设备和服务。所有设备都要在该标准地址监听上述消息,并且在它们所含的设备或服务符合发现消息中的搜索条件时都必须作出响应。父亲启动的视频控制应用程序正在专门搜索视频源设备。此处显示了用于这些搜索消息的协议集合: 这些搜索消息包含特定于供应商的信息,如设备或服务类型以及标识符等。此外,还将添加由 UPnP 工作委员会为这些类型的设备定义的设备或服务类型,此时即指视频源设备。这些设备都封装在使用 HTTPMU 发送的 SSDP 请求中。对这些搜索请求的响应将使用带有 SSDP 头的单播 UDP 发送。 对这些搜索请求的响应将包含与发现通知相同的信息。这些响应被发送到启动该搜索的控制点所在的 IP 地址,此时即指父亲的便携式计算机。
描述
所收到的对于搜索发现请求的响应含有 URL,从该地址可以获得设备描述。 为检索 UPnP 设备的描述,该控制点向来自于搜索消息的 URL 发出 HTTP GET 请求,从而使该设备返回设备描述。服务描述的 URL 包含在设备描述中,因此可以用相同的方式检索服务描述。用于描述步骤的协议集合如下所示: UPnP 的设备描述是一种 XML 文档,其中包括几段特定于供应商的信息、所有内含设备的定义、设备演示的 URL 以及所有服务的枚举(包括其控制和事件的 URL)。UPnP 供应商可以扩展该标准的设备和服务描述,在其中添加其它的状态变量、操作甚至整个服务。这样,UPnP 既允许了灵活性,又遵守了基本标准。设备和服务描述的示例可以在 UPnP 设备架构文档中找到。
演示
演示页的 URL 包含在设备描述中。要检索这种页面,将需要控制点向演示 URL 发出 HTTP GET 请求。随后设备会返回一个演示页。所使用的协议组合如下所示: UPnP 设备架构文档指定这种页面应该用 HTML 编写。这类似于 Web 浏览,只不过父亲在此处对设备的浏览是为了控制它。 演示页的功能是完全由 UPnP 供应商指定的。要实现演示页,UPnP 供应商可能会使用 UPnP 控制和/或事件机制,从而利用设备的现有功能。注意,在演示中没有任何元素是 UPnP 协会定义的,它完全取决于供应商!
控制
一旦控制点得知某个设备及其服务,它就可以对这些服务调用操作并获得返回值。同时,控制点还可以轮询这些服务的状态变量值。 调用操作是一种远程过程调用:控制点向设备的服务发送操作,当操作完成时(或失败时),服务会返回任何结果或错误。控制点还可以轮询状态变量的值。 为控制 DVD 播放机,父亲的便携式计算机向 DVD 服务控制 URL(包含在设备描述中)发送了一条控制消息。DVD 播放机服务将返回该操作的任何结果或错误。该操作的影响也可以通过该服务的状态变量所发生的变化得到监视。这些状态变量的变化会按照在事件的描述发布给所有感兴趣的控制点,但可以查询这些状态变量的值,这是控制请求的一种变体。 以下是用于控制的协议组合。 包含在控制消息中的供应商特定信息含有参数值。UPnP 协会工作委员会定义了包含在这些消息中的操作名称、参数名以及变量。这些信息是用 UPnP 特有的格式封装的,并使用 SOAP 进行格式化,然后使用 HTTP over TCP/IP 传送。 设备必须在 30 秒内响应控制请求。这些请求可以指示操作仍在待决当中,操作完成后,会用一个事件予以表示。 控制应用程序可能还想查询特定服务变量的状态,例如,DVD 播放机可能有这样的一个服务:其状态变量含有特定 DVD 的运行时间。父亲可能希望了解这一点,因为这样他可以知道在晚饭准备好时他能看到电影的什么地方。控制点也可以查询服务的状态变量,但每个发送的查询只能带一个状态变量。
再看一遍发现、描述和控制
父亲想起了随 Internet 网关提供的时钟设置应用程序。没有比现在更好的机会试一试它了。他没有将该应用程序装载到便携式计算机中,因为有两点使得查找和运行该应用程序更为容易。 首先,网关为家庭网络提供了存储服务。这使得网络有可用的磁盘空间。该时间设置应用程序在网关共享的磁盘上可用。第二个使该应用程序易于运行的因素是,父亲便携式计算机中的操作系统启用了 UpnP,包括文件浏览器也是如此。但他打开该浏览器时,浏览器会自动搜索网络中提供文件存储服务的设备,因此会显示出网关设备中的存储区。 父亲现在可以单击该时钟设置应用程序,而该程序可以完成下述操作:
真是轻松。通过进一步的研究,父亲发现可以配置该时钟应用程序,让它从自身作为控制点运行的网关定期运行。他将该应用程序设置为在每天早上 4 点启动运行,这样,就不必担心要重新设置时钟了。
事件处理
父亲选择打印到该打印机并提交了打印作业。他放下便携式计算机正准备开始欣赏电影时,便携式计算机上显示出一个弹出消息,通知他打印机的墨水用完了。因为打印机直连在 PC 上,所以这种情况是可能的。借助 UPnP,打印机和打印浏览器都使用了 UPnP 事件处理。 父亲正准备叫他的儿子更换墨盒,儿子走过来告诉它墨盒已经换好了。就是这么凑巧,他的儿子一直在自己房间里的 PC 上做功课,他的 PC 也收到了相同的通知。网络中所有进行了事件获得登记的控制点都可以接收这样的通知。 在服务描述中说明的状态变量也可以事件化。当这些变量更改时,服务会发布更新。控制点(如本例中的打印浏览器)可发送预定消息来预定接收这样的信息。事件的发布者可以接受预定请求并在响应中包含了该预定的有效期。预定者可以续定,当不再感兴趣时也可以取消预定。 以下是用于事件处理的协议集合: 预定的 URL、预定有效期、具体的变量值以及变量名称都是用 GENA 进行格式化的,并使用 TCP/IP 发送。
总结
由于在网络化的日常设备中组合了易于使用和配置的计算支持和连接功能,从而带来了新的附加优点:日常任务更容易完成,人们有更多的时间享受更高质量的生活。人们可以比以往任何时候都多地与世界联系。当然,这同时也可能是一个让人们不知所措的发展。因此,为了让人们有效地使用,必须使任务变得简单。 通用即插即用是一种开放式的倡导,借此可在现有的标准、技术和知识基础上,对它们重新加以利用,从而为网络世界提供新的前景和机会。它基于标准、功能强大,即使是最小型的设备也能简单地实现它,甚至能扩展到全球的Internet。通用即插即用基于已经时间证明的 Internet 协议方法,它虽然只是一种附加手段,但确实行之有效。
|
|