UPnP 体系架构和基本原理 —— UPnP 协议栈

UPnP 体系架构和基本原理 —— UPnP 协议栈

UPnP 协议栈

UPnP 协议栈基于标准IP协议,脱离底层的网络介质。主要由包含:TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网协议)、HTTP(HyperText Transfer Protocol,超文本传输协议)、SSDP(Simple Service Discovery Protocol,简单服务发现协议)、GENA(General Event Notification Architecture,通用事件通知架构)、SOAP(Simple Object Access Protocol,简单对象访问协议)和XML(Extensible Markup Language,可扩展标记语言)等协议规范。

UPnP 体系架构和基本原理 —— UPnP 协议栈

TCP/IP

TCP/IP是构成互联网的基础协议之一,是互联网中应用最广泛的协议之一,是UPnP协议体系建立的基础。IP层进行数据的发送与接收,对于需要可靠传送的信息,使用TCP进行传送,而不要求可靠传输的信息可以选择使用UDP进行传送。由于TCP/IP协议与下层的数据链路层和物理层无关,因此被UPnP体系架构采纳,利用其跨越不同物理介质的能力,实现不同设备之间的跨平台通信和操作,保证各设备的兼容性。

TCP/IP是一个应用广泛的成熟协议,因此建立在TCP/IP基础上的UPnP设备的开发也变得相对简单。

HTTP

HTTP是UPnP协议栈的核心协议之一,工作在TCP/IP之上,其中HTTPU和HTTPMU是HTTP协议的拓展,而SSDP、GENA、SOAP等协议则建立在HTTP的拓展协议之上。

HTTPU和HTTPMU中的“U”是UDP,指它们不使用TCP/IP作为传送信息的方式,而是采用非可靠的UDP/IP方式传送信息,协议格式基本与HTTP相同。HTTPMU的“M”是Multicast(广播),表示HTTPMU使用UDP的IP广播发送,不需要接收方响应信息。而HTTPU发送的信息则需要接收方发送回执。

SSDP

SSDP是UPnP协议栈的核心协议之一。其建立在HTTPU和HTTPMU基础之上,通过向一个广播地址或广播端口发送信息以实现在局域网内发现设备或感兴趣的资源的一种应用层协议。

控制点和设备都必须使用SSDP协议。当控制点加入网络时,会通过HTTPMU向特定的SSDP广播地址及端口发送搜索信息(M-SEARCH)。设备收到该广播的搜索信息时,将检查自身与搜索信息是否匹配,如果匹配将使用HTTPU进行响应,使控制点实现设备和服务的发现。而设备加入网络时,也会向特定的SSDP广播地址及端口发送通知信息(NOTIFY)以表明其存在。设备离开网络时,同样也会往特定的SSDP广播地址及端口发送离线信息(BYEBYE)表示离开。

同时,考虑设备异常终止而来不及发送离线信息,必须在协议中附加超时值。设备必须在协议规定的超时时间到达前发送通知信息以保持连接,否则将任务设备已离线。

GENA

GENA以HTTP协议为基础,为实现在HTTP资源之间发送和接受事件通知而建立的一个基于HTTP的通知架构。GENA定义了事件通知过程中的操作对象:提供事件,并在事件发生时发送事件通知的事件发布者(publisher);订阅事件,接收事件通知的事件订阅者(subscriber)。

事件通知有两种形式:

  1. 单播事件。事件发生变化后,事件发布者向订阅了该事件的事件订阅者单独发送通知,采用可靠的TCP/IP发送机制。在UPnP协议栈中,采用HTTP协议。

  2. 广播事件。事件发生变化后,事件发布者向所有订阅了该事件的事件订阅者广播发送通知,采用非可靠的UDP广播发送。在UPnP协议栈中,采用HTTPMU协议。

为了事件订阅者可以持续获取通知,必须周期性向需要监控的事件进行续订。不需要监控时,可以进行事件退订。

SOAP

SOAP基于HTTP和XML协议,用于实现UPnP网络内的控制点和设备之间控制信息的传递。控制点向设备发送的所有控制请求都使用SOAP封装,而设备收到SOAP请求在执行完毕后将返回执行结果或者出错信息的过程采用SOAP响应。

SOAP具备简单、可拓展、与编程语言无关、与平台无关、与开发者无关五大优点。因此被UPnP协议栈选择,用于控制点和设备之间控制信息的传递。

XML

XML是W3C(World Wide Web Consortium,万维网联盟)定义的一个语言标准,用于描述XML文件的数据对可以对文档和数据进行结构化处理,使标记的文件具有结构性,也可以用来标记数据和定义数据类型。

XML设计时有十个主要设计目标:

  1. XML应该可以在互联网中直接地使用。
  2. XML应该支持各种各样的应用。
  3. XML应该与SGML兼容。
  4. XML文档应该是程序容易处理的。
  5. XML的可选特性应该尽可能地少。
  6. XML应该是清晰易于人理解的。
  7. XML的设计应该是可以快速准备的。
  8. XML的设计应该是简洁而正式的。
  9. XML文档应该是方便创建的。
  10. XML的标记不需要重视简洁。

XML是UPnP协议体系中很重要的组成,被用于描述(设备描述和服务描述),控制消息和事件通知中。