UPnP 体系架构和基本原理 —— UPnP 工作流程
UPnP 体系架构和基本原理 —— UPnP 工作流程
UPnP 工作流程
UPnP需要在设备与设备之间,设备和控制点之间,还有控制点与控制点之间进行通信和信息交互,显然需要进行一系列工作过程。主要是:寻址(Addressing)、发现(Discovery)、描述(Description)、控制(Control)、事件(Events)和表达(Presentation,又称为“表征”或“表示”)六个工作阶段。
寻址
独立的地址是整个UPnP系统工作的基础条件,每个UPnP设备必须获取局域网内的唯一地址,才能加入网络实现局域网内的设备通信。寻址不需要用户进行手动配置,可以通过DHCP和Auto-IP两种方式实现设备自动获取IP地址并加入到网络中。
-
DHCP方式:在局域网内,每个UPnP设备都作为DHCP服务器的客户端,当设备与网络建立联系后,通过向DHCP服务器发送请求,从其响应信息中得到一个唯一IP地址。
-
Auto-IP方式:使用DHCP方式获取IP地址失败时,UPnP设备将使用Auto-IP方式,从子网掩码为169.254/169.16的地址范围中重复获取IP地址,直到获取到一个未被占用的IP地址。同时,还需要定时使用DHCP进行寻址,一但成功,必须释放Auto-IP获取到的地址。
发现
连接到网络上的设备确定了IP地址之后,就会进入发现阶段,由SSDP协议来完成的。
发现过程主要分两种情况:
-
当控制点加入网络时,控制点向239.255.255.250:1900广播SSDP的M-SERACH信息搜索网络内感兴趣的设备和服务。符合控制点搜索条件的设备将使用UDP单播进行应答,应答中包含描述文档的URL地址,控制点收到应答将转入描述阶段。
-
当设备加入网络时,设备可以直接向239.255.255.250:1900广播SSDP的NOTIFY信息以宣告该设备可用。控制点收到SSDP的NOTIFY广播,可以使用HTTP GET向NOTIFY信息中记录的描述文档URL地址发出获取请求,控制点收到该请求的应答后将转入描述阶段。
设备对控制点发出的M-SEARCH的应答或设备自身发出的NOTIFY信息都包含该设备的一些特定信息。除了描述文档的URL外,还有设备类型、标识符等。
描述
在控制点经由发现阶段搜索到一台设备后,控制点仅仅只能知道设备的一些简单信息,如:设备UUID、设备类型、服务类型、描述文件的URL地址等。当控制点需要知道设备更详细的信息时,控制点可以使用HTTP GET通过描述文档的URL地址发出获取请求,相应设备收到请求后会将描述信息返回。
设备的UPnP描述分为设备描述(device description)和服务描述(service description)两部分,这两部分描述都需要设备制造商在遵循UPnP框架协议的前提下提供XML描述文件。
- 设备描述:用于描述设备相关信息以及设备提供的服务。包含根设备的信息如制造商名称(manufacturer)、模块名称(modelName)、模块描述(modelDescription)等。还可能包含其它嵌入式设备的描述信息。
- 服务描述:包含一系列该设备的服务,每个服务可能包含若干动作、动作的参数、状态变量、还有参数的数据类型和数值范围等。
控制
在接收到设备的设备描述和服务描述后,控制点可以向描述记录的服务发出动作请求。
在设备描述里,每个服务都会提供一个控制URL(Control URL),控制点可以向这个控制URL发送合适的控制信息就可以通过服务对设备进行控制。设备接收到控制信息,会执行相应的动作,然后对控制点返回成功或失败的信息。设备执行动作时可能会改变相应状态变量,因此触发事件通知把相应状态变量信息发送到相关的控制点。同时,控制点也可以主动发出获取状态变量值的动作去查询设备的状态变量。
控制点与设备之间的信息采用SOAP格式,控制/反馈信息分成三种:UPnP控制请求(UPnP Control Request),UPnP控制响应(UPnP Control Response)和UPnP控制错误响应(UPnP Control Error Response)。
事件
一个UPnP设备的服务描述中包含该服务相关的动作列表,以及描述服务动作的状态变量表。设备接收并执行动作事件时,若引起相关状态变量的变化,服务将会发布状态变量的更新信息通知相关的控制点,控制点可以订阅此信息持续获得状态变量的更新通知。在UPnP事件机制中,事件发布者(publisher)通常为设备服务,事件订阅者(subscriber)通常为控制点。
订阅者需要对发布者进行事件订阅时,订阅者可发送一条请求订阅消息(subscribe),发布者将会在订阅失效前持续提供事件通知。订阅者订阅事件后,如果需要继续保持订阅状态,订阅者必须在订阅过期之前进行续订(renewal)。当订阅者不再需要发布者提供事件通知时,订阅者应当发送相应的退订请求取消(cancel)订阅。
发布者通过时间通知发送事件提醒订阅者状态发生改变。在订阅者第一次订阅时,需要发送一个包含所有事件的名称和值的初始化事件(event)消息,并且允许订阅者初始化其服务状态。事件订阅支持多个控制点,任何事件消息都将向所有相关的订阅者发送。事件消息使用HTTP协议传送,事件详细定义在通用事件通知结构(GENA)协议中。
表达
当某些UPnP设备需要或者支持用户交互,则该设备的描述上会包括表达的URL。控制点可以通过该表达URL下载一个为设备描述用户界面的HTML文档。该HTML文档能够提供一种控制或状态显示,可以在浏览器中显示出来。
不是所有设备都拥有表示文档,也不是所有控制点都能够显示包含复杂HTML对象等的表达文档。