用于 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 的核心部分,被用在设备和服务描述、控制消息和事件处理中。