SDP简易服务发现协议是一种APP应用层协议,是构成通用即插即用(UPnP )技术的核心协议之一。 为网络客户端提供一种采用基于通知和发现路由的组播方式的发现网络服务(network services )机制。
SDP多播地址: 239.255.255.25033601900(ipv4 )、ff0x 33603360 c (IPv6 )
通过SSDP多播地址发送以下两种类型的SSDP请求消息:
1 .发现请求(发现请求或查询请求)。 SDP客户端向该地址发送HTTP UDP发现请求,以查询某种服务。 SDP服务将在此地址接收服务发现请求。 如果接收到的HTTP UDP发现请求与自身提供的服务匹配,则服务将以单播形式发送HTTP UDP响应。
2 .有通知。 SDP服务向该多播地址发送HTTP UDP通知消息,以声明自己的存在。
“发现结果”(discovery results )和“存在性通知消息”(presence announcements )提供的信息如下:
服务类型URI
服务名称USN :唯一标识服务实例。
位置信息—发现结果和存在通知可以包含一个或多个位置URI,客户端可以使用位置信息找到所需的服务。
期限信息:客户端将此服务保存到其cache的时间。 过期后,有关此服务的信息将从cache中删除。 如果客户端接收到的检测结果或存在通知中包含的USN和cache之一匹配,则更新。
客户端的服务缓存如下所示:
【SSDP发现请求】ssdp :发现器
ssdp :发现器必须包含用于指示客户端要发现的服务类型的ST标头。 ssdp :发现器必须包含带*的请求URI。
M-SEARCH * HTTP/1.1
s : uuid : ijklmnop-7 dec-11d0- a765-00 a0c 91 e6BF 6
host :239.255.255.25033601900
Man: 'ssdp:discover '
ST: ge:fridge
MX: 3
每个HTTP协议标头的含义:
主机:将协议设置为保留多播地址和端口。 必须为239.255.255.25033601900(ipv4 )或ff0x 33603360 c (IPv6 )
MAN设置协议查询的类型。 必须是ssdp :发现器
MX :设定设备响应的最大等待时间。 设备响应可以随机选择0和该值之间的响应延迟值,以平衡控制点响应的网络负载。
ST :设置服务查询的目标。 必须是以下类型:
- ssdp : all搜索所有设备和服务
-UPnP:根设备只搜索网络上的根设备
- uuid :设备-由uuid查询uuid标识的设备
- urn :方案- UPnP-org :设备3360设备类型:版本查询设备类型字段中指定的设备类型。 设备类型和版本由UPnP组织定义。
- urn :方案- UPnP-org :服务3360服务类型:版本查询服务-类型字段中指定的服务类型。 服务类型和版本由UPnP组织定义。
如果SDP服务发现其服务类型与ST中指定的服务类型匹配,它可以响应ssdp :发现器的IP地址/端口。 响应消息必须包含服务的位置信息(位置或AL标头)、ST和USN标头。 响应消息必须包含cache控制信息(max-age或Expires标头)。 如果两者都包含,则Expires标头优先;如果两者都缺少,则不缓存此服务消息。
HTTP/1.1 200 OK
s : uuid : ijklmnop-7 dec-11d0- a765-00 a0c 91 e6BF 6
Ext:
cache-control : no-cache=' ext ',max-age=5000
ST: ge:fridge
usn : uuid : abcdefgh-7 dec-11d0- a765-00 a0c 91 e6BF 6
al : blender : ixl http://foo/bar
每个HTTP协议头的含义概述:
缓存控制: max-age指定通知消息的生存时间。 如果超过此时间间隔,则控制点被认为设备不存在
DATE指定生成响应的时间
(EXT )在控制点确认MAN头域被设备理解
位置:包含根设备描述的URL地址
服务器:包括操作系统名称、版本、产品名称和产品版本信息
ST :内容和含义与查询请求的对应字段相同
USN )表示不同服务的统一服务名称,并提供识别相同类型服务的功能。
【SSDP存在通知消息】
SDP服务通过存在通知消息向客户端声明自己的存在,更新期限信息,更新位置信息。
ssdp :活动消息必须将NT设置为其自己的服务类型,并将USN标头设置为其自己的USN。 SSDP:ALive必须包含位置或al标头。 如果没有DNS支持,则使用ssdp服务的IP地址表示位置。 ssdp:alive还必须包括cache控制信息、max-age或Expires标头。
通告* http/1.1
host :239.255.255.2503360 reservedssdpport
nt : blender关联: blender
nts : ssdp :活动
usn : some unique : idscheme 3
al : blender : ixl http://foo/bar
Cache-Control: max-age=7393
ssdp:alive没有响应消息。
SDP服务可以发送ssdp :字节字节以宣布脱机。 ssdp:byebye必须将NT设置为自己的服务类型,并将USN标头设置为自己的USN。 ssdp :字节字节也没有响应消息。 当客户端收到ssdp:byebye消息时,删除cache中的另一项。
通告* http/1.1
host :239.255.255.2503360 reservedssdpport
nt : some unique : idscheme 3
NTS: ssdp:byebye
usn : some unique : idscheme 3
【ssdp自动关机Algorithm】
amechanismisneededtoensurethatssdpdoesnotcausesuchahighleveloftrafficthatitoverwhelmsthenetworkitisrunningon。
【ssdp:桨】
amechanismisneededtoenableaclienttoenumeratealltheservicesavailableonaparticularssdpmulticastchannel/port。
【参考】
SDP协议原文: http://tools.IETF.org/html/draft-Cai-ssdp-v1-03
33558 www.cn blogs.com/debin/archive/2009/12/01/1614543.html