SSDP 简单服务发现协议 .

article/2025/10/1 1:09:31

http://blog.csdn.net/lilypp/article/details/6631951

 

cache network 网络 algorithm ext service

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

SSDP多播地址:239.255.255.250:1900(IPv4),FF0x::C(IPv6)

两种类型的SSDP请求消息会通过SSDP多播地址发送:

1. 发现请求(Discovery request 或查询请求)。SSDP客户端向此地址发送HTTP UDP 发现请求,查询某种类型的服务。SSDP服务在此地址上监听服务发现请求。当服务监听到的HTTP UDP 发现请求和它自己提供的服务匹配时,它以单播方式发送HTTP UDP 响应。

2. 存在通知(notification)。SSDP服务向此多播地址发送HTTP UDP 通知消息来宣布自己的存在。

 

发现结果(discovery results)和存在通知消息(presence announcements)提供的信息包括:

服务的类型URI

服务名称USN:唯一标识一种服务实例。

位置信息:发现结果和存在通知可包含一个或多个位置URI,客户端利用位置信息可以找到它需要的服务。

期限信息:客户端在自己的cache中保存此服务多长时间。如果期限过了,关于此服务的信息会被从cache中拿掉。当客户端接收到的发现结果或存在通知包含的USN和cache中的某条匹配,则更新。

客户端的服务缓存像下面这样:

【SSDP发现请求】ssdp:discover

ssdp:discover 必须包含一个ST头,客户端使用ST头来表明他们想发现的服务类型。ssdp:discover 必须包含一个带 *  的请求URI。

M-SEARCH * HTTP/1.1

S: uuid:ijklmnop-7dec-11d0-a765-00a0c91e6bf6

Host: 239.255.255.250:1900

Man: "ssdp:discover"

ST: ge:fridge

MX: 3

各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组织定义。

 

SSDP服务发现自己的服务类型和ST中指明的服务类型匹配时,可以向ssdp:discover来自的IP地址/端口响应。响应消息应该包含服务的位置信息(Location 或AL头),ST和USN头。响应消息应该包含cache控制信息(max-age 或者 Expires头),如果两者都包含了,Expires 头优先,如果两者都缺失,那么这条服务消息不能被cache。

HTTP/1.1 200 OK

S: uuid:ijklmnop-7dec-11d0-a765-00a0c91e6bf6

Ext:

Cache-Control: no-cache="Ext", max-age = 5000

ST: ge:fridge

USN: uuid:abcdefgh-7dec-11d0-a765-00a0c91e6bf6

AL: <blender:ixl><http://foo/bar>

各HTTP协议头的含义简介:

CACHE-CONTROL:max-age指定通知消息存活时间,如果超过此时间间隔,控制点可以认为设备不存在

DATE:指定响应生成的时间

EXT:向控制点确认MAN头域已经被设备理解

LOCATION:包含根设备描述得URL地址

SERVER:饱含操作系统名,版本,产品名和产品版本信息

ST:内容和意义与查询请求的相应字段相同

USN:表示不同服务的统一服务名,它提供了一种标识出相同类型服务的能力。

 

【SSDP存在通知消息】

SSDP服务通过存在通知消息来向客户端宣布自己的存在,更新期限信息,更新位置信息。

ssdp:alive 消息必须将 NT 设置成自己的服务类型,USN头设置成自己的USN。ssdp:alive 应该包括Location或者AL头,如果没有DNS支持的话,使用SSDP服务的IP地址来代表位置。ssdp:alive还应该包括cache控制信息,max-age或者Expires头。

NOTIFY * HTTP/1.1

Host: 239.255.255.250:reservedSSDPport

NT: blenderassociation:blender

NTS: ssdp:alive

USN: someunique:idscheme3

AL: <blender:ixl><http://foo/bar>

Cache-Control: max-age = 7393

ssdp:alive 没有响应消息。

 

SSDP服务可以发送ssdp:byebye 来宣布自己下线。ssdp:byebye 必须将NT设置成自己的服务类型,将USN头设置成自己的USN。ssdp:byebye 也没有响应消息。当客户端接收到ssdp:byebye 消息,删掉cache里面的相关条目。

NOTIFY * HTTP/1.1

Host: 239.255.255.250:reservedSSDPport

NT: someunique:idscheme3

NTS: ssdp:byebye

USN: someunique:idscheme3

 

【SSDP Auto-Shut-Off Algorithm】

A mechanism is needed to ensure that SSDP does not cause such a high level of traffic that it overwhelms the network it is running on.

【ssdp:all】

A mechanism is needed to enable a client to enumerate all the services available on a particular SSDP multicast channel/port.

 

【参考】

SSDP 协议原文:http://tools.ietf.org/html/draft-cai-ssdp-v1-03

http://www.cnblogs.com/debin/archive/2009/12/01/1614543.html

 


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

相关文章

SSDP Protocol

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

SDP协议详细介绍

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

SSDP 简单服务发现协议

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

设备发现协议SSDP实现

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

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

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

ssdp协议搜索GB28181设备

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

二叉树、红黑树

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

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

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

算法 红黑树

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

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

【数据结构】--二叉树&#xff0c;红黑树 &#x1f3c6;概念&#x1f34d;定义&#x1f34b; 术语&#x1f4dd;可视化网站 ☀️二叉树✨ 二叉搜索树&#x1f34d;定义&#x1f351;查找节点&#x1f34b;插入节点&#x1f345;遍历节点&#x1f355; 前序排序&#x1f9c0; 后…

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

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

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

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

Java——红黑树

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

二叉树--红黑树

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

二叉树之红黑树

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

红黑二叉树

红黑树 红黑树是每个节点都带有颜色属性的二叉查找树&#xff0c;颜色或红色或黑色。在二叉查找树强制一般要求以外&#xff0c;对于任何有效的红黑树我们增加了如下的额外要求: 节点是红色或黑色。 根节点是黑色。 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有…

红黑树-Java实现

目录 一、定义 二、插入 三、删除 四、全部代码 五、颜色效果 一、定义 红黑树是特殊的平衡二叉树&#xff0c;具有以下特性&#xff1a; 1、根节点的颜色是黑色 2、节点颜色要么是黑色、要么是红色 3、如果一个节点的颜色是红色&#xff0c;则它的子节点必须是黑色&…

红黑二叉树原理分析

1.引言 HashMap的基本结构是数组&#xff0c;链表和红黑树。以数组为基本形态&#xff0c;数组中的元素先以链表形式储存&#xff0c;当链表的长 度超过8时&#xff08;包含数组上的那个链表头&#xff09;就会将链表转换为红黑树&#xff0c;以加快修改和查询效率。当然除了H…

理解红黑树及代码实现

1.红黑树定义 红黑树是一颗 红-黑的平衡二叉树,它具有二叉树的所有特性,是一颗自平衡的排序二叉树.(树中任何节点值都大于左子节点的值&#xff0c;而且都小于右子节点的值),其检索效率高&#xff0c;它是一颗空树或它的左右两个子树高度差的绝对值不超过1&#xff0c;并且左右…

红黑二叉树的漫画讲解(轻松理解红黑二叉树原理)

———————————— 二叉查找树&#xff08;BST&#xff09;具备什么特性呢&#xff1f; 1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。 下图中这棵树&#xff0c;就是…