简单服务发现协议SSDP【转】

article/2025/10/1 1:07:15

来自:https://blog.csdn.net/wuruixn/article/details/23843877

SSDP:Simple Sever Discovery Protocol,简单服务发现协议是一种应用层协议(常用于寻找upnp设备),此协议为网络客户提供一种无需任何配置、管理和维护网络设备服务的机制。此协议采用基于通知和发现路由的多播发现方式实现。协议客户端在保留的多播地址:239.255.255.250:1900(IPV4)发现服务,(IPv6 是:FF0x::C)同时每个设备服务也在此地址上上监听服务发现请求。如果服务监听到的发现请求与此服务相匹配,此服务会使用单播方式响应。

常见的协议请求消息有两种类型,第一种是服务通知,设备和服务使用此类通知消息声明自己存在;第二种是查询请求,协议客户端用此请求查询某种类型的设备和服务。请求消息中包含设备的特定信息或者某项服务的信息,例如设备类型、标识符和指向设备描述文档的URL地址。下图显示这两类通知消息和HTTP协议的关系:

 

设备发现过程允许控制点使用一个设备类型或标识,或者是服务类型进行查询。这要求标准设备或服务类型,或者设备特定实例的发现和广告消息基于一个独一无二的标识,UPnP设备和服务类型的定义是UPnP论坛工作委员会的责任。从设备获得响应的内容基本上与多址传送的设备广播相同,只是采用单址传送方式。

SSDP 协议消息

1、设备查询消息

  当一个控制点加入到网络中时,设备发现过程允许控制点寻找网络上感兴趣的设备。发现消息包括设备的一些特定信息或者某项服务的信息,例如它的类型、标识符、和指向XML设备描述文档的指针。从设备获得响应从本质上说,内容与多址传送的设备广播相同,只是采用单址传送方式。设备查询通过HTTP协议扩展M-SEARCH方法实现的。典型的设备查询请求消息格式:

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: seconds to delay response
ST: search target

各HTTP协议头的含义简介:

HOST:设置为协议保留多播地址和端口,必须是:239.255.255.250:1900(IPv4)或FF0x::C(IPv6)

MAN:设置协议查询的类型,必须是:ssdp:discover

MX:设置设备响应最长等待时间,设备响应在0和这个值之间随机选择响应延迟的值。这样可以为控制点响应平衡网络负载。

ST:设置服务查询的目标,它必须是下面的类型:

ssdp:all 搜索所有设备和服务 
upnp:rootdevice 仅搜索网络中的根设备 
uuid:device-UUID 查询UUID标识的设备 
urn:schemas-upnp-org:device:device-Type:version 查询device-Type字段指定的设备类型,设备类型和版本由UPNP组织定义。 
urn:schemas-upnp-org:service:service-Type:version 查询service-Type字段指定的服务类型,服务类型和版本由UPNP组织定义。

在设备接收到查询请求并且查询类型(ST字段值)与此设备匹配时,设备必须向多播地址239.255.255.250:1900回应响应消息。典型:

HTTP/1.1 200 OK
CACHE-CONTROL: max-age = seconds until advertisement expires
DATE: when reponse was generated
EXT:
LOCATION: URL for UPnP description for root device
SERVER: OS/Version UPNP/1.0 product/version
ST: search target
USN: advertisement UUID

各HTTP协议头的含义简介:

CACHE-CONTROLmax-age指定通知消息存活时间,如果超过此时间间隔,控制点可以认为设备不存在
DATE指定响应生成的时间
EXT向控制点确认MAN头域已经被设备理解
LOCATION包含根设备描述得URL地址
SERVER饱含操作系统名,版本,产品名和产品版本信息
ST内容和意义与查询请求的相应字段相同
USN表示不同服务的统一服务名,它提供了一种标识出相同类型服务的能力。

 

2、设备通知消息

在设备加入网络,UPnP发现协议允许设备向控制点广告它的服务。它使用向一个标准地址和端口多址传送发现消息来实现。控制点在此端口上侦听是否有新服务加入系统。为了通知所有设备,一个设备为每个其上的嵌入设备和服务发送一系列相应的发现消息。每个消息也包含它表征设备或服务的特定信息。

3.1.1 ssdp:alive消息

在设备加入系统时,它采用多播传送方式发送发现消息,包括告知设备包含的根设备信息,所有嵌入设备以及它包含的服务。每个发现消息包含四个主要对象:

  1. 在NT头中包含的潜在搜索目标。
  2. 在USN头中包含的复合发现标识
  3. 在LOCATION头中关于设备信息的URL地址
  4. 在CACHE-CONTROL头中表示的广告消息的合法存在时间。

对于根设备,存在三种发现消息:

NTUSN
根设备的UUID根设备的UUID
设备类型:设备版本根设备的UUID,设备类型:设备版本
upnp:rootdevice根设备的UUID,设备类型和upnp:rootdevice

对于嵌入式设备,存在两种发现消息:

NTUSN
嵌入设备的UUID嵌入设备的UUID
设备类型:设备版本嵌入设备的UUID,设备类型和设备版本

对于每个服务:

NTUSN
服务类型:服务版本相关设备的UUID,服务类型和服务版本

 

由于UDP协议是不可信的,设备应该发送多次设备发现消息。而且为了降低控制点无法收到设备或服务广告消息的可能性,设备应该定期发送它的广告消息。在设备加入网络时,它必须用NOTIFY方法发送一个多播传送请求。NOTIFY方法发送的请求没有回应消息,典型的设备通知消息格式如下:

NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900CACHE-CONTROL: max-age = seconds until advertisement expires
LOCATION: URL for UPnP description for root device
NT: search target
NTS: ssdp:alive
USN: advertisement UUID

各HTTP协议头的含义简介:

HOST设置为协议保留多播地址和端口,必须是239.255.255.250:1900。
CACHE-CONTROLmax-age指定通知消息存活时间,如果超过此时间间隔,控制点可以认为设备不存在
LOCATION包含根设备描述得URL地址
NT在此消息中,NT头必须为服务的服务类型。
NTS表示通知消息的子类型,必须为ssdp:alive
USN表示不同服务的统一服务名,它提供了一种标识出相同类型服务的能力。

一个发现响应可以包含0个、1个或者多个服务类型实例。为了做出分辨,每个服务发现响应包括一个USN:根设备的标识。在同样的设备里,一个服务类型的多个实例必须用包含USN:ID的服务标识符标识出来。例如,一个灯和电源共用一个开关设备,对于开关服务的查询可能无法分辨出这是用于灯的。UPNP论坛工作组通过定义适当的设备层次以及设备和服务的类型标识分辨出服务的应用程序场景。这么做的缺点是需要依赖设备的描述URL。

3.1.2 ssdp:byebye消息

在设备和它的服务将要从网络中卸载时,设备应该对于每个未超期的ssdp:alive消息多播方式传送ssdp:byebye消息。但如果设备突然从网络卸载,它可能来不及发出这个通知消息。因此,发现消息必须在CACHE-CONTROL包含超时值,如果不重新发出广告消息,发现消息最后超时并从控制点的缓存中除去。典型的设备卸载消息格式如下:

NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900NT: search target
NTS: ssdp:byebye
USN: advertisement UUID各HTTP协议头的含义简介:
HOST	设置为协议保留多播地址和端口,必须是239.255.255.250:1900
NT	在此消息中,NT头必须为服务的服务类型。
NTS	表示通知消息的子类型,必须为ssdp:alive
USN	表示不同服务的统一服务名,它提供了一种标识出相同类型服务的能力

专有设备或服务可以不遵循标准的UPNP模版。但如果设备或服务提供UPNP发现、描述、控制和事件过程的所有对象,它的行为就像一个标准的UPNP设备或服务。为了避免命名冲突,使用专有设备命名时除了UPNP域之外必须包含一个前缀"urn:schemas-upnp-org"。在与标准模版相同时,应该使用整数版本号。但如果与标准模版不同,不可以使用设备复用和徽标。

简单设备发现协议不提供高级的查询功能,也就是说,不能完成某个具有某种服务的设备这样的复合查询。在完成设备或者服务发现之后,控制点可以通过设备或服务描述的URL地址完成更为精确的信息查询。


http://chatgpt.dhexx.cn/article/Y5qZO3LM.shtml

相关文章

SIP协议-05 SDP协议

文章目录 1 SDP简介2 SDP协议格式2.1 字段描述2.1.1 Version(必选)2.1.2 origion(必选)2.1.3 Session Name(必选)2.1.4 Connection Data(可选)2.1.5 Bandwidth(可选&…

SDP协议总结

一、基本要求 1、SDP的表示 SDP(Session Description Portocol)会话描述协议,通常通过内容类型为"application/sdp"的MIME来表示。 2、媒体和传送信息 SDP可包括以下媒体信息: 媒体类型(音频、视频等);…

简单服务发现协议SSDP

SSDP:Simple Sever Discovery Protocol,简单服务发现协议是一种应用层协议(常用于寻找upnp设备),此协议为网络客户提供一种无需任何配置、管理和维护网络设备服务的机制。此协议采用基于通知和发现路由的多播发现方式实现。协议客户端在保留的…

协议--SIP/SDP

参考资料 会话初始协议SIP与SDP简介完整SIP/SDP媒体协商概论-SIP/WebRTC概要 1. 什么是SIP 1.1 关于SIP通话的一个形象比喻 生活中,我们想要找一个人互相聊天,首先你到找到这个人、你的声音得传递到对方,对方能听到你的声音, …

SSDP 简单服务发现协议 .

http://blog.csdn.net/lilypp/article/details/6631951 cache network 网络 algorithm ext service SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client…

SSDP Protocol

SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采…

SDP协议详细介绍

SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html 一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP…

SSDP 简单服务发现协议

SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。 SSDP多播地址:239.255.255.250:1900(IPv4),FF0x::C(…

设备发现协议SSDP实现

原理: 1.将socket加入239.255.255.250,端口 1900 2.客户端:通过设置setsockopt IPPROTO_IP,IP_ADD_MEMBERSHIP属性,可向ssdp组进行组播。 3.服务端:通过设置绑定239.255.255.250:1900进行数据接收,通过s…

wireshark-协议分析【初见】(NBNS协议,SSDP协议、IGMPv2)

写在前面 win7:192.168.2.150(00-0c-29-CF-D3-0F) kali:192.168.2.120(00:0c:29:e7:1c:e5) (均使用的vmware虚拟机平台) 该系列并不会太关注wireshark的用法,重点关注协议交换时数据包的情况。…

ssdp协议搜索GB28181设备

1、http协议和ssdp协议 ssdp协议近似于http协议,事实上,和http协议相似得地方就是他得协议内容,当然,我们要去除他得端口和d类地址。 为什么我在给其他员工或者面试得时候要他人深入一些,理解一下http协议&#xff0…

二叉树、红黑树

二叉树 遍历概念  所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。  遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。 遍历方案 1&#x…

图解红黑树及Java进行红黑二叉树遍历的方法

红黑树 红黑树是一种数据结构与算法课堂上常常提到但又不会细讲的树,也是技术面试中经常被问到的树,然而无论是书上还是网上的资料,通常都比较刻板难以理解,能不能一种比较直观的方式来理解红黑树呢?本文将以图形的方式…

算法 红黑树

红黑树 红黑树概述红黑树性质 红黑树的插入代码实现 红黑树概述 红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学的中用到的一种数据结构,典型的用途是实现关联数组,红黑树和AVL树类似,都是…

【数据结构】--二叉树,红黑树

【数据结构】--二叉树,红黑树 🏆概念🍍定义🍋 术语📝可视化网站 ☀️二叉树✨ 二叉搜索树🍍定义🍑查找节点🍋插入节点🍅遍历节点🍕 前序排序🧀 后…

红黑树的详细实现(C++)

红黑树概念(concept) 树型结构主要用于搜索,一直是科学领域的重要演算法,当中探讨了树可能遇到的问题:树的成长可能偏向于一边,也就是不平衡现象。 二叉树是常见且广泛使用的一种树,面临其可能退化成链表的潜藏缺点&…

二叉树——二叉查找树和红黑树

二叉树 二叉树,是一个非常重要的数据结构,在日常的开发中起着很重要的作用,它也衍生出来的各种高效的复杂的数据结构,为我们解决问题提供了高效的解决方案。 二叉树,它是由各个数据节点和左右链接构成的一种类似树的数…

Java——红黑树

概念 红黑树也是一种二叉搜索树,但是和avl树不同,它并不是依靠平衡因子来保证树的平衡的,而是通过颜色 红黑树每个节点中会存储颜色,分为红色和黑色,通过红黑树的限制条件,可以保证从根节点出发到叶子节点…

二叉树--红黑树

红黑树 定义 红黑树,顾名思义,就是树的节点只有红色和黑色两种状态,通过这两种状态的标识和规定颜色的使用,来使树达到相对平衡。为什么说相对平衡?因为在红黑树中,所有的条件限制只能保证,所…

二叉树之红黑树

红黑树 概述 为什么要有红黑树??? 特点 红黑规则 如何在红黑树上添加节点? (1)我们不妨假设加入的节点都是黑色 (2)如果我们加入的节点都是红色 红黑树添加节点后如何保持红…