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:

各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:

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.

【参考】

4、UPnP协议框架:

ssdp协议 upnp_SSDP,简单服务发现协议相关推荐

  1. ssdp协议 upnp_SSDP 简单服务发现协议

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

  2. SSDP 简单服务发现协议

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

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

    来自:https://blog.csdn.net/wuruixn/article/details/23843877 SSDP:Simple Sever Discovery Protocol,简单服务发 ...

  4. SSDP(简单服务发现协议)

    简介 简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用程序协议,是构成即插即用(UPnP)技术的核心协议之一. 简单服务发现协议提供了在局部网 ...

  5. BLE-SDP服务发现协议

    SDP的全称是Service Discovery Protocol,中文是服务发现协议.SDP(服务发现协议)是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础.在蓝牙系统中.客 ...

  6. php etcd 服务发现,confd+etcd+nginx 实现简单服务发现

    一. 项目背景 随着微服务的兴起,大量接口服务化.当新的微服务加入或微服务的信息发生变更时,服务方如何通知周边系统.使用方如何知道这些变更呢? 这时就需要服务的注册配置和发现功能. 服务注册配置--存 ...

  7. SSDP 服务发现协议

    https://blog.csdn.net/braddoris/article/details/41479171 SSDP在Android上的实现 https://blog.csdn.net/ibla ...

  8. 【车载以太网】【SOME/IP】(九)解读SOME/IP-SD服务发现协议

    目录 一.简介: 二.SOME/IP-SD报文格式: 三.EntriesArray: 四.Option类型 五.报文传输过程:

  9. 【HTTP协议】简单的HTTP协议

    文章目录 1. HTTP协议用于客户端和服务器端之间的通信 2. 通过请求和响应的交换达成通信 3. HTTP是不保存状态(stateless)的协议 4. 请求URL定位资源 5. 告知服务器意图的 ...

最新文章

  1. 清华通信本硕巨佬秋招经验总结,收割互联网大厂后端 SP/SSP offer,太强了!
  2. 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题
  3. c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置
  4. JMS学习五(ActiveMQ的本地事务)
  5. 第二讲 数学模型方法
  6. 还是原来的配方和味道!《英雄联盟》手游界面再曝光...
  7. Iar工程调试使用教程
  8. 12306分流抢票软件 v1.13.21官方版 -抢票神器
  9. linux rs 485应用程序,Linux 的 RS485 通信协议.pdf
  10. 在一个窗体的panel控件中显示其他窗体
  11. 《七哥说道》第十二章:稍息,窗外的都是兄弟
  12. Flink CheckpointCoordinator 步骤 流程 源码
  13. freenom 加 cloudflare免费域名申请
  14. Fips模式下应用连接Oracle SSL
  15. 如何实现VMware下Ubuntu和Windows之间的复制粘贴?
  16. FL studio 20简易入门教程 -- 第四篇 -- 钢琴卷帘窗口与单轨乐器编辑界面
  17. 实时网速监测app_实时网速安卓下载_实时网速监测安卓app下载-XP软件园
  18. 基于主从博弈的智能小区电动汽车充电管理及代理商定价策略
  19. abp集成abp.Dapper
  20. 【微信小程序】微信小程序开发(一)

热门文章

  1. java字符串转数组(JAVA把字符串转化为数组)
  2. 土地利用覆盖数据免费下载
  3. 2020年甘肃省土地利用数据(矢量)
  4. 【分享】轻量级Linux + docker
  5. Lombok插件如此不好?但我选择继续使用…
  6. windows7最大支持多少内存
  7. ProSci 抗CD22抗体Epratuzum28流式细胞术展示
  8. vps实时流量监控linux,Linux流量监控工具/vps流量监控工具 – iftop
  9. 关于火狐浏览器开发者工具使用
  10. 通往WinDbg的捷径(一