说道DLNA, UPnP协议就一定要提到,这点从DLNA分层就能看出来。
UPnP是Universal Plug and Play的缩写,亦即通用即插即用。这个协议是由intel和microsoft主导的,主要针对家庭网络和企业网络。
UPnP组织论坛地址是: http://www.upnp.org.
UPnP架构以IP技术为基础,使家庭网络和企业网络设备自动连接和协同工作。
UPnP基础协议是UPnP Device Architecture,最新的版本是1.1。这个UDA架构给出了局域网内设备如何发现对方,了解对方以及与对方交流的流程。
UPnP使用的技术包括IP, TCP, UDP, HTTP, XML。
UPnP设备加入网络首先要获得IP(即使DHCP服务不提供的情况下)。
接下来的步骤称之为发现或者寻找。 如果一个控制点(Control Point)加入到网络中,会发送一个广播协议,所有局域网的UPnP设备会做出响应。 如果一个设备加入网络,会定时发送广播自己的设备信息和服务信息,以便感兴趣的控制点能找到。 这个发现对方的过程是基于SSDP协议的。
请注意,这里的设备指的是具备存储内容的设备,例如媒体服务器,或者播放媒体的设备,例如播放器,或者网关设备。而控制点(CP)扮演的是客户端,不具备存储内容,播放媒体或者网关等设备的功能,只能浏览设备内容。
控制点和设备发现了对方,下一步就是描述,意思是控制点了解设备有哪些功能。在这一个阶段,设备会告诉控制点设备的信息,设备可以提供的服务以及服务包含哪些命令,还包括命令所需要的参数。
控制点了解了设备的能力后,下一步就是控制。 根据设备提供的服务和命令列表,控制点可以发送指令来控制设备做出回应。 例如浏览设备内容, 控制点可以发送Browse指令得到设备内容,并呈现给用户。控制点发送的控制指令是通过SOAP协议使用XML描述的。
控制的下一步是事件。一个UPnP描述包括一组命令列表和描述运行时状态信息的变量。服务在这些变量改变的时候进行更新,控制点可以进行订阅以获取相关改变。 服务通过发送事件消息来发布更新。事件消息包括一个或多个状态信息变量以及它们的当前数值。这些消息也是采用 XML 的格式,用GENA协议进行格式化。一个特殊的初始化消息会在控制点第一次订阅的时候发送,它包括服务相关的变量名及值。为了支持多个控制点并存的情形,事件被设计成对于所有的控制点都并行通知。因此,所有的订阅者同等地收到所有事件通知。
最后一步是表现。如果设备带有表现URL,那么控制点可以通过它来获取设备表现信息,即在浏览器中加载URL,并允许用户来进行相关控制或查看操作。具体支持哪些操作则是由表现页面和设备完成的。