Step0:地址分配,也就是设备通过DHCP等协议获取IP地址的过程。UPnP通信的前提条件。
Step1:设备发现(Discovery),controlpoint通过这一步骤找到感兴趣的UPnP设备。
Step2:设备描述(Description),control point获取设备描述信息,从而了解设备所能提供的服务类型等具体信息。
Step3:设备控制(Control)。
Step4:Eventing。
Step5:Presentation。
本系列实例中所使用的环境:
DMS:VMware + Ubuntu14 + MiniDLNA1.13。IP地址是192.168.159.129。
DMP: Win7 + Foobar + foo_upnp插件(0.99.48)。 IP地址是192.168.159.1。
设备发现是UPnP的第一个步骤。对应协议栈如图所示:
SSDP的Notification一共有三种类型——ssdp:alive,ssdp:byebye和ssdp:update。当一个新设备加入到网络中后,按照协议应向网络中的控制点广播ssdp:alive通告,即advertisement。
在我们的环境中,在关闭Foobar的情况下首先启动miniDLNA。这时DMS立即连续发送了24条SSDP报文,即广播的advertisement。目的IP为协议中定好的广播地址239.255.255.250,断口号则固定为1900([1]文档1.2节),如下图所示:
这24条报文可以分为4组,每组6条。第1-6条报文与第7-12条报文的内容完全一致。第13-18条报文与19-24条报文的内容一致。其中第三组报文构成一套完整的ssdp:alive通告,向网络中的其它设备宣告自己存在。第一组报文是与第三组报文内容相对应的ssdp:byebye通告。这是为了确保在发布alive通告之前,清除control point上可能存有的关于本设备及服务的旧的状态信息。第二组与第四组报文分别是第一组与第四组报文的重复,这是因为SSDP是基于非可靠的UDP传输,UPnP协议允许设备