简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用层协议,是构成通用即插即用(UPnP)技术的核心协议之一。





1简介编辑



简单服务发现协议提供了在局部网络里面发现设备的机制。控制点(也就是接受服务的 客户端)可以通过使用简单服务发现协议,根据自己的需要查询在自己所在的局部网络里面提供特定服务的设备。设备(也就是提供服务的 服务器端)也可以通过使用简单服务发现协议,向自己所在的局部网络里面的控制点声明它的存在。 [2]  



实现编辑



[2]  



按照协议的规定,当一个控制点(客户端)接入网络的时候,它可以向一个特定的 多播地址的SSDP端口使用M-SEARCH方法发送“ssdp:discover”消息。当设备监听到这个保留的多播地址上由控制点发送的消息的时候,设备会分析控制点请求的服务,如果自身提供了控制点请求的服务,设备将通过 单播的方式直接响应控制点的请求。 [3]  



类似的,当一个设备接入网络的时候,它应当向一个特定的 多播地址的SSDP端口使用NOTIFY方法发送“ssdp:alive”消息。控制点根据自己的策略,处理监听到的消息。考虑到设备可能在没有通知的情况下停止服务或者从网络上卸载,“ssdp:alive”消息必须在HTTP协议头CACHE-CONTROL里面指定超时值,设备必须在约定的超时值到达以前重发“ssdp:alive”消息。如果控制点在指定的超时值内没有再次收到设备发送的“ssdp:alive”消息,控制点将认为设备已经失效。 [3]  



当一个设备计划从网络上卸载的时候,它也应当向一个特定的 多播地址的SSDP端口使用NOTIFY方法发送“ssdp:byebye”消息。但是,即使没有发送“ssdp:byebye”消息,控制点也会根据“ssdp:alive”消息指定的超时值,将超时并且没有再次收到的“ssdp:alive”消息对应的设备认为是失效的设备。 [3]  



IPv4环境,当需要使用多播方式传送相关消息的时候,SSDP一般使用多播地址239.255.255.250和UDP端口号1900。



[4]