UPnP协议和SSDP协议

news/2025/2/22 18:29:25/

1、两种协议

UPnP协议:Universal Plug and Play,广义的即插即用。UPnP协议的目的:当有新设备连接上网络,网络上的其他设备能够马上知道有新设备加入,然后这些设备能互相宣传和发现彼此,以便能使用和控制彼此。UPnP避免了人工配置。
SSDP协议:Simple Service Discovery Protocol,简单服务发现协议,用于宣传和发现设备提供的服务和设备的一些信息。此协议采用基于通知和发现路由的多播发现方式实现,协议客户端在保留的多播地址:239.255.255.250:1900 (IPv4) 发现服务,(IPv6 为FF0x::C)。同时每个设备服务也在此地址上监听服务发现请求。如果服务监听到的发现请求与此服务相匹配,此服务会使用单播方式响应。

2、请求报文和响应报文

2.1 请求报文:

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 5
ST: ssdp:all

这个报文是一个用于发现UPnP设备的SSDP(Simple Service Discovery Protocol)请求。

  1. M-SEARCH * HTTP/1.1
    ○ 这是HTTP请求的起始行(Request Line)。它指示这是一个HTTP/1.1版本的请求,而不是更早的HTTP/1.0版本。
    ○ 'M-SEARCH’表示这是一个搜索请求。
    ○ '*'是HTTP的URI路径,通常用于标识要访问的资源。在SSDP中,* 表示要搜索所有设备。
    ○ 'HTTP/1.1’表示所使用的HTTP协议版本。
  2. HOST: 239.255.255.250:1900
    ○ 'HOST’头部字段指定了请求的目标主机和端口。在这里,它指定了目标主机的IP地址为 239.255.255.250,端口为 1900。这是SSDP默认的多播地址和端口,用于设备发现。
  3. MAN: “ssdp:discover”
    ○ MAN(Mandatory)头部字段表示强制性的选项。这里,它指定了使用 “ssdp:discover” 作为搜索请求的标识符。这告诉接收者这是一个发现请求。
  4. MX: 5
    ○ MX(Maximum Wait Time)头部字段表示最大等待时间,即设备应该等待多长时间来响应搜索请求。这里设置为 5 秒,表示设备需要在5秒内响应该请求。
  5. ST: ssdp:all
    ○ ST(Search Target)头部字段表示搜索的目标。在这里,它设置为 “ssdp:all”,表示要搜索所有类型的设备。这是一种广泛搜索,用于查找所有可用的UPnP设备。

总结:这个报文是一个使用SSDP协议的设备搜索请求。它通过多播方式发送到 239.255.255.250 地址和 1900 端口,请求所有设备在最多5秒内响应,并要求返回所有可用的设备信息。这种类型的请求通常用于局域网中的设备发现和服务发现,以帮助设备发现并与其他设备进行通信。

2.2 响应报文:

HTTP/1.1 200 OK
ST: upnp:rootdevice
LOCATION: http://192.168.6.2:5000/Public_UPNP_gatedesc.xml
SERVER: Linux/2.6.12, UPnP/1.0, NETGEAR-UPNP/1.0
EXT:
CACHE-CONTROL: max-age=3600
USN: uuid:6cbbc296-de22-bde2-3d68-5576da5933d1::upnp:rootdevice

逐行分析这个响应报文:

  1. HTTP/1.1 200 OK:这是HTTP响应的起始行,指示请求成功。状态码200表示成功。
  2. ST: upnp:rootdevice:这是一个UPnP标识符,指示设备类型为根设备(root device)。
  3. LOCATION: http://192.168.6.2:5000/Public_UPNP_gatedesc.xml:这是设备描述文件的位置。它告诉你在哪里可以找到关于这个UPnP设备的详细信息。
  4. SERVER: Linux/2.6.12, UPnP/1.0, NETGEAR-UPNP/1.0:这是服务器的信息,包括操作系统版本和UPnP协议版本。这个设备似乎是运行Linux 2.6.12操作系统,支持UPnP协议1.0,并且标识为NETGEAR-UPNP/1.0。
  5. EXT::这是一个空的EXT头字段,表示没有额外的扩展信息。
  6. CACHE-CONTROL: max-age=3600:这个字段指示客户端可以缓存这个响应信息,最长时间为3600秒(1小时)。
  7. USN: uuid:6cbbc296-de22-bde2-3d68-5576da5933d1::upnp:rootdevice:这是UPnP设备的唯一标识符(UUID),指示这是一个根设备。

总结:这个响应消息告诉你有一个UPnP设备可用,其描述文件位于指定的URL上,同时提供了一些关于设备的基本信息,如服务器类型和缓存控制。这个信息通常用于自动发现和配置网络设备。


http://www.ppmy.cn/news/1127989.html

相关文章

nodejs+vue中国非物质文化遗产网站设计与实现elementui

前端页面: 导航栏借鉴下面的 1首页:带有一个全屏轮播图和其他的内容 2咨询页:有关中国非物质文化遗产的一些新闻咨询网站对于记录非遗这种无形的、动态的文化资源有着其他技术无可替代的优势。用户可以在该网站浏览、了解和学习非遗文化&…

C# 集合

C# 集合 集合集合接口和类型列表队列栈链表有序表字典LoopupHashSet位数组 集合 数组的大小是固定的。如果元素个数是动态的,就应使用集合类。List 和 ArrayList 是与数组相当的集合类。还有其他类型的集合:队列、栈、链表和字典。 集合接口和类型 集…

人工智能AI 全栈体系(七)

第一章 神经网络是如何实现的 神经网络不仅仅可以处理图像,同样也可以处理文本。由于处理图像讲起来比较形象,更容易理解,所以基本是以图像处理为例讲解的。 七、词向量 图像处理之所以讲起来比较形象,是因为图像的基本元素是像…

双文对比,在线纯文本文档差异比较 API 接口

双文对比,在线纯文本文档差异比较 API 接口 文本对比 API 接口说明: 调用地址:http://api.cuobiezi.net/article/diff/json_result 请求方式:POST 请求格式:json 请求参数: username: 用户名 content: 原文…

el-collapse 嵌套中 el-checkbox作为标题,选中复选框与el-tree联动

<el-drawertitle"应用授权":visible.sync"menuDrawer"><el-collapse accordion style"padding: 15px"><el-collapse-item v-for"item in platList"><template slot"title"><el-checkbox v-model…

vue3硅谷甄选02 | 封装svg组件 - axios二次封装

文章目录 vue3硅谷甄选02功能1&#xff1a;封装svg组件SVG图标配置svg封装成组件svg组件注册为全局组件自定义统一注册全局组件的插件自定义插件的原理插件的使用 app.use(plugin, [options]) 功能2&#xff1a;axios二次封装使用mock插件构造数据axios二次封装api接口统一管理…

vue之vuex

Vuex 是 Vue.js 的一个状态管理模式和库&#xff0c;为应用中的所有组件提供了一个集中式的存储管理&#xff0c;并提供了一种强大的方式来管理应用的状态。Vuex 包含以下核心概念&#xff1a; State&#xff1a;定义了应用的状态&#xff0c;类似于组件中的 data。 Getters&a…

已实现:关于富文本组件库vue2-editor的使用方法以及一些必要的注意事项,特别是设置完富文本以后的回显问题。以及在光标位置插入字符串等

前言 目前常见的基于vue的富文本编辑器有两个&#xff1a;“vue2-editor” 和 “vue-quill-editor” 都是用于Vue.js的富文本编辑器组件&#xff0c;它们具有一些共同的特点&#xff0c;但也有一些区别。 共同点&#xff1a; 1、富文本编辑功能&#xff1a; 两者都提供了富文…