使用一个IP地址,UPnP网络的第一步是发现。当一个设备加入网络,发现协议允许设备对网络中的CP发布其服务。同样地,当一个CP加入网络时,会被允许搜索这个网络中其感兴趣的设备。这种情形的底层是一个发现消息的交互,这个消息包含一些必要的信息,像是设备的类型和它含有的服务类型,标识,或者更详细的信息。发现章节会具体描述设备如何发布上线,CP如何搜索,以及发现消息的格式细节。
UPnP网络的第二步是描述。当一个CP发现一个设备,这个CP仅仅只知道该设备的很小一部分信息。要想知道设备的更多信息,甚至要与设备交互,控制点要从发现消息中取出设备的描述URL。设备可能会包括其他的逻辑设备,也会有功能单元或服务。设备的描述由一个XML文件实现,包含设备提供商的名字,设备模型名,模型号,序列号,提供商URL等,也会包含设备的子设备列表,服务列表,控制URL,事件URL,表达URL等,对于每一个服务,设备描述还会含有命令列表,动作列表和参数等等。描述章节会阐述控制点如何取出这些描述信息。
UPnP网络的第三步是控制。当一个控制点取出设备的描述,就可以向设备的服务发送动作请求。控制点会向设备的服务的控制URL发送合适的控制消息。控制消息也是由XML表达,通过SOAP(Simple Object Access Protocol)协议发送。服务会对控制请求作出响应,并返回一定的状态值。控制章节会介绍动作,状态变量,以及控制消息的格式。
UPnP联网的第四步是事件。服务的描述包含了一些服务动作和一个表述服务状态的变量。当变量值变化时,服务会发布更新信息,订阅了该服务的控制点可能会接收到此消息。服务通过事件消息来发布更新信息。这些消息也是XML格式的。当控制点第一次订阅服务时,服务就会发送一个具体初始化的事件消息,包含了订阅服务的所有事件变量的名字和值,允许订阅者初始化服务的状态模型。为了支持多控制点的情形,事件机制设计成使所有的控制点同时被通知,因此,所有的控制点都会接收到状态变量更新的事件消息。多播事件机制是一个例外。通过多播机制,一个控制点可以监听到其未注册订阅的服务的状态变化。首先,这允许与特定的交互不相关的事件可以被发送给控制点以告知用户相关的事件出现。其次,当多个被控的设备想要通知多个其他的控制点时,也会使用多播机制。由于底层基于UDP,所以多播事件机制并不可靠。为增加传送的成功率,可以重复传送多播消息。事件机制一章里将会具体介绍单播事件订阅和单播和多播事件消息的格式。
UPnP网络的第五步称之为表达。如果一个UPnP设备有一个表达URL,那么控制点可以通过这个URL取出一个HTML文件,将其加载到浏览器。根据该网页的功能实现,用户可以控制设备或监视状态变量。具体由设备功能和该表达文件的实现来决定。表达一章将会介绍提取表达页面的协议。
读者群:
本文件的读者包括UPnP设备和控制点提供商,UPnP论坛工作委员会成员,UPnP协议细节的使用者。本文件假定读者熟悉HTTP,TCP,UDP,IP协议族,熟悉XML。
缩写:
ARP: Address Resolution Protocol,地址解析协议
CP: Control Point,控制点
DCP: Device Control Protocol,设备控制协议
DDD: Device Description Document,设备描述文件
DHCP: Dynamic Host Configuration Protocol,动态主机配置协议
DNS: Domain Name System,域名系统
GENA: General Event Notification Architecture,通用事件通知体系
HTML: Hypertext Markup Language,超文本标记语言
HTTP: Hypertext Transfer Protocol,超文本传输协议
SCPD: Service Control Protocol Description,服务控制协议描述
SOAP: Simple Object Access Protocol,简单对象访问协议
SSDP: Simple Service Discovery Protocol,简单服务发现协议
UDA: UPnP Device Architecture,UPnP设备体系结构
UDN: Unique Device Name,唯一设备名
UPC: Universal Product Code,统一产品编号
URI: Uniform Resource Identifier,统一资源标识
URL: Uniform Resource Locator,统一资源定位符
URN: Uniform Resource Name,统一资源名
UUID: Universal Unique Identifier,通用唯一标识
XML: Extensible Markup Language,拓展标记语言
术语表:
action:动作,指服务的一个命令。接受一个或多个参数,可能会有返回值。
argument:参数,执行动作时,传入动作函数的变量。
Control Point:控制点,提取设备和服务描述,向服务发送动作,获取服务状态变量,获取服务事件
Device:设备,一个容器,可能包含其他设备,包含许多服务,能够向网络发布其状态
device description:对一个设备的描述,通过UPnP提供的模版语言,以XML语法编写。
device type: 标准的设备类型以: urn:schemas-upnp-org:device: 接一个唯一的名字
也可以由提供商以: urn:domain-name:device: 接一个唯一的名字
event: 事件,指示服务的状态变量的变化
GENA: 通用事件通知体系
publisher: 事件消息的源,具体是一个设备服务。
root device: 根设备,一个不包含其他设备的逻辑设备。
service: 逻辑功能单元,控制的最小单元。提供设备的动作和状态变量的管理模型
service description: 服务描述,逻辑服务的格式定义。SCPD文件,服务控制协议描述文件
service type: 标准服务类型以 urn:schemas-upnp-org:service: 接一个唯一服务名
也可由提供商以 urn:domain-name:service: 接一个唯一服务名
SOAP: 简单对象访问协议。以一个基于XML的远程程序调用(RPC)机制,通过HTTP发送命令和接收值
SSDP: 简单服务发现协议。一个多播的发现和搜索机制,使用多播HTTP和UDP
state variable: 状态变量,物理服务模型的一个独立面,通过服务提出,
有一个名字,类型,默认值,范围值,当其变化时会引发事件
subscriber: 事件消息的接收者,具体是一个控制点。
UPnP Device Template: UPNP设备模版,描述了一个如何编写设备描述文件的模版
UPnP Service Template: UPNP服务模版,描述了一个如何编写服务描述文件的模版
UPnP Device Schema: UPNP设备体系,描述了设备描述文件的模版和服务描述模版应该包含的元素和属性
Vendor Domain Name: 提供商域名
参考和资源:
RFC 2710 IPv6 多播监听发现: http://www.ietf.org/rfc/rfc2710.txt
RFC 2616 HTTP: http://www.ietf.org/rfc/rfc2616.txt
RFC 2279 UTF-8: http://www.ietf.org/rfc/rfc2279.txt
XML: http://www.w3.org/XML/
UPnP Device Protection specification: http://upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service.pdf