分类:
2008-05-09 14:59:50
图 3:桥接的 UPnP 网络
图 4:UPnP 协议组合
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 的核心部分,被用在设备和服务描述、控制消息和事件处理中。
为了进一步了解在 UPnP 组网中所执行的各个步骤的时间和方式,本节帮助定义了一个仅含有少量 UPnP 设备的小型网络。这样一来,我们就可以有的放矢地介绍这些设备的交互情况。
在下面的图 6 所显示的网络中,含有下述启用了 UPnP 的设备:
尽管还可以在该网络中添加多个组件,但为了更好地说明 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,包括文件浏览器也是如此。但他打开该浏览器时,浏览器会自动搜索网络中提供文件存储服务的设备,因此会显示出网关设备中的存储区。
父亲现在可以单击该时钟设置应用程序,而该程序可以完成下述操作:
真是轻松。通过进一步的研究,父亲发现可以配置该时钟应用程序,让它从自身作为控制点运行的网关定期运行。他将该应用程序设置为在每天早上 4 点启动运行,这样,就不必担心要重新设置时钟了。
快到晚饭时间了。父亲完成了他的演示报告,他想制作一份硬拷贝以便在晚饭过程中能够检查它。由于 UPnP 打印机连接在厨房的电话线网络中,他的便携式计算机已经可以通过打印浏览器使用该打印机。
父亲选择打印到该打印机并提交了打印作业。他放下便携式计算机正准备开始欣赏电影时,便携式计算机上显示出一个弹出消息,通知他打印机的墨水用完了。因为打印机直连在 PC 上,所以这种情况是可能的。借助 UPnP,打印机和打印浏览器都使用了 UPnP 事件处理。
父亲正准备叫他的儿子更换墨盒,儿子走过来告诉它墨盒已经换好了。就是这么凑巧,他的儿子一直在自己房间里的 PC 上做功课,他的 PC 也收到了相同的通知。网络中所有进行了事件获得登记的控制点都可以接收这样的通知。
在服务描述中说明的状态变量也可以事件化。当这些变量更改时,服务会发布更新。控制点(如本例中的打印浏览器)可发送预定消息来预定接收这样的信息。事件的发布者可以接受预定请求并在响应中包含了该预定的有效期。预定者可以续定,当不再感兴趣时也可以取消预定。
以下是用于事件处理的协议集合:
图 12:用于事件处理的协议集合
预定的 URL、预定有效期、具体的变量值以及变量名称都是用 GENA 进行格式化的,并使用 TCP/IP 发送。
现在,计算支持比以往任何时候都多地被添加到更小、更普通的设备中。便宜并且普遍存在的网络媒体技术已经摆在您的面前,或者说已快要实现。近年来,网络和计算支持方面的价格已大幅下降。
由于在网络化的日常设备中组合了易于使用和配置的计算支持和连接功能,从而带来了新的附加优点:日常任务更容易完成,人们有更多的时间享受 更高质量的生活。人们可以比以往任何时候都多地与世界联系。当然,这同时也可能是一个让人们不知所措的发展。因此,为了让人们有效地使用,必须使任务变得 简单。
通用即插即用是一种开放式的倡导,借此可在现有的标准、技术和知识基础上,对它们重新加以利用,从而为网络世界提供新的前景和机会。它 基于标准、功能强大,即使是最小型的设备也能简单地实现它,甚至能扩展到全球的Internet。通用即插即用基于已经时间证明的 Internet 协议方法,它虽然只是一种附加手段,但确实行之有效。