UPnP协议学习

2023-10-31

UPnP架构定义了两种类型的设备:控制设备(controlled devices)和控制点(control points)。控制设备扮演服务器的角色,响应控制点的请求。控制点和控制设备都能在各种平台包括个人电脑和嵌入式设备中实现。多个控制设备、控制点能够同时在同一个网络终端操作。

1)IP寻址(IP Addressing)

UPnP网络互联的基础是IP寻址,在IPv4环境中,每个控制设备或控制点必须有一个DHCP(Dynamic Host Configuration Protocol)客户端,并在首次连接到网络时寻找DHCP服务器。如果网络中存在DHCP服务器,例如托管网络,则控制设备或控制点必须使用DHCP服务器分配的IP地址;如果DHCP服务器不可用,例如非托管网络,则控制设备或者控制点必须使用Auto IP来获得IP地址。简单来说,Auto IP定义控制设备或控制点如果从保留的IP地址集合中智能选取一个IP地址,并顺利的在托管和非托管网络中移动。如果在DHCP事务中,控制设备或控制点能够通过DNS服务器或DNS转发来获得域名,那么控制设备或控制点在后续网络操作中应当使用这个域名;否则,控制设备或控制点应当直接使用IP地址。

某些UPnP网络为了适应多种非重叠寻址方案,因而需要更复杂的配置,例如多种物理网络、多种逻辑网络。控制设备或控制点可能存在两个或多个网络接口,每个网络接口可能存在两个或多个IP地址。在这种配置中,同样的UPnP网络中,由于存在不同的逻辑网络,因此单个控制设备或控制点可能分配到多个IP地址,这导致控制点重复搜寻到同一个控制设备。同一UPnP网络中,存在多个IP地址的控制设备或控制点,被称为多宿主(multi-homed)。

2)发现(discovery)

UPnP网络中,获得一个IP地址之后,下一步就是发现了。但控制设备加入到网络中,UPnP发现协议允许控制设备向网络中的控制点通告它提供的服务。同样的,当控制点加入网络中,UPnP发现协议允许控制点在网络中搜寻感兴趣的控制设备。上面两种情况中设备和控制点之间交换的基本信息是一个“发现消息”,该消息包含关于设备或设备提供的一个服务的一些基本信息,例如类型、标识符和指向详细信息的指针。

3)描述(description)

在控制点发现控制设备后,控制点对控制设备仍然知之甚少。控制点为了更多地了解控制设备及其能力,以及和控制设备交互,它需要获取控制设备在“发现消息”中提供的URL指向的描述信息。控制设备可能包含其他的逻辑控制设备,或者功能单元、服务。UPnP设备描述基于XML语言,并包含厂商相关的制造信息,例如模型名称和号码、序列号、制造商名称以及厂商相关网址的URL链接等。“描述”还包括了以下信息的列表:任何的嵌入式设备或服务、用于控制、事件触发和展示的URL。对于每项服务,”描述“均包含命令、服务响应动作的列表,以及每个动作的参数。服务描述也包含一列变量,这些变量模型化服务在运行时的状态,并通过数据类型、范围和事件特征进行描述。

------zjtyjy123------ ------0-1-2-4-6-10-12-16-18-22-28-6-4-2-1-0------

4)控制(control)

在控制点获得控制设备的描述后,控制点可以给设备的服务发送动作。这是通过发送格式正确的”控制消息“给服务的控制URL(在设备描述中提供)来实现的。控制消息同样基于XML协议表述,并使用SOAP协议(Simple Object Access Protocol)进行传输。类似函数调用,服务返回给某个动作对应的响应消息。动作的效果可以通过描述服务运行时状态的变量来描述。

5)事件触发(eventing)

UPnP服务描述包含服务响应的动作列表,以及服务运行时状态进行展示的变量列表。在这些变量变化时,服务会发布更新;控制点可以订阅接收这些消息。服务通过发送事件消息来发布更新。事件消息包含一个或多个状态变量的名称,以及这些变量的当前值。事件消息同样以XML语言表示。控制点首次订阅时,会发送一个特殊的初始化事件消息,这个消息包含所有事件变量的名称和值,并允许订阅者对服务状态模式进行初始化。为了支持多个控制点的场景,事件触发设计用于将任何动作的效果通知所有控制点。因此,所有订阅者均会收到全部的事件消息。订阅者收到所有发生改变的事件变量的事件消息,此事件消息无论状态变量如果改变都被发送(由于响应一个动作,或由于服务模型状态变化)。

6)展示(representation)

如果控制设备提供用于展示的URL,那么控制点能够通过URL在浏览器中显示页面内容,并根据页面的能力,支持用户对设备进行控制并查看设备状态。每一项完成的程度取决于展示页面和设备的具体能力。

 
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UPnP协议学习 的相关文章

随机推荐

  • tf2.2和tf2.4默认的cuda版本

    tf2 2和tf2 4默认的cuda版本 tf2 4默认适配cuda11 tf2 2默认适配cuda10 1 实测清华源可以直接 conda install cudatoolkit 11 0 cudnn 8
  • Scrum认证Scrum Master(CSM)认证课

    课程简介 Scrum是目前运用最为广泛的敏捷开发方法 是一个轻量级的项目管理和产品研发管理框架 旨在最短时间内交付最大价值 根据2021年全球敏捷状态报告 Scrum及Scrum衍生方法的应用占比达到81 在企业的敏捷转型历程中 Scrum
  • Mock.js 前端数据模拟工具

    什么是Mock js Mock js是一个功能强大的模拟数据生成器 它可以帮助开发者在前端开发过程中模拟后端数据 使得前端开发者可以在后端接口尚未完成的情况下进行开发 这极大地提高了开发效率 为什么要使用Mock js 在传统的前后端协同开
  • 【Linux】高级IO和多路转接

    多路转接和高级IO 咳咳 写的时候出了点问题 标点符号全乱了 批量替换了几次 干脆就把全文的逗号和句号都改成英文的了 不然代码块里面的代码都是中文标点就跑不动了 1 高级IO 1 1 五种IO模型 用钓鱼佬的栗子 来看看五种不同的IO模型吧
  • 新一代烧写工具—STM32CubeProgrammer!

    STM32CubeProgrammer STM32CubeProg 是STM32微控制器的专用编程工具 STM32用户都知道 当完成程序调试 需要对芯片进行程序代码烧录编程 一般会有三个选择 通过调试接口 JTAG SWD 来烧写程序 一般
  • 漏洞扫描服务内容、方式以及流程一篇了解

    漏洞扫描是指基于漏洞数据库 通过扫描工具 人工的方式对客户信息系统的资产 包含网络设备 安全设备 主机系统 web应用 数据库系统等 进行全面 深入的安全脆弱性检测 检测完成后为客户输出可参考的分析报告及修复方案 具体服务内容 方式以及流程
  • C语言,实现字符串移动,例如char str[]=“AGAB%Sr67gs5ffwt+%“ 得到结果是“AABGS567grstw%%+“

    实现字符串移动 例如char str AGAB Sr67gs5ffwt 得到结果是 AABGS567grstw 1 1 先对字符串实现升序排序 voidSort char p int n 1 2 从字符串中挑出大写 char DaXie c
  • boot-admin整合Quartz实现动态管理定时任务

    淄博烧烤爆红出了圈 当你坐在八大局的烧烤摊 面前是火炉 烤串 小饼和蘸料 音乐响起 啤酒倒满 烧烤灵魂的party即将开场的时候 你系统中的Scheduler 调试器 也自动根据设定的Trigger 触发器 从容优雅的启动了一系列的Job
  • Taro转支付宝小程序问题总结

    1 ios系统出现跳转两次的问题 解决 新建project alipay json 中设置 enableAppxNg true enableNodeModuleBabelTransform true 2 二级页面 页面凹陷进顶部 导航栏透明
  • [机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123778715 目录 第1章 支持向
  • 一个项目的基本要素都有哪些?

    在规划项目时 必须要慎重考虑项目的五要素 那么项目的五要素是什么 一个成功的项目经理必须对这五个要素有相当程度的了解 才能更好更高效的完成项目 在五个要素中 项目的范围和组织结构为最基本要素 质量 时间 成本是约束要素 1 项目的范围 项目
  • JDBC纯驱动方式连接MySQL

    1 新建一个名为MysqlDemo的Java Project 2 从http dev mysql com downloads connector j 中下载最新的驱动包 这里有 tar gz和 zip两种格式的包 因为在windows下都可
  • 递归删除符合条件的目录,文件, kotlin,java

    package a import java io IOException import java nio file import java nio file attribute BasicFileAttributes fun main ar
  • Linux和华为欧拉系统下安装mysql-5.7.30详细步骤

    大家好 又见面了 我是你们的朋友全栈君 Hello everyone see you again I m your friend Quan Zhanjun Detailed steps to install mysql 5 7 30 und
  • java.sql.array 初始化_Java数组学习

    Java数组学习 数组的定义 数组是相同类型数据的有序集合 数组描述的是相同类型的若干个数据 按照一定的先后次序排列组合而成 其中 每一个数据称作一个数组元素 每个数组元素可以通过一个下标来访问它们 数组的下标从0开始 数组声明创建 首先必
  • 应用程序无法正常启动(0x000007b)

    应用程序无法正常启动 0x000007b 请单击 确定 关闭应用程序 错误代码 0x000007b 是 Windows 操作系统中的一个常见错误代码 它通常与应用程序或操作系统文件的错误 损坏或不匹配相关联 这个错误代码可能会导致应用程序无
  • 正则表达式清理日志

    字段提取中正则表达式的使用 提取日志中的信息格式 lt 字段名称 gt 匹配具体信息的正则表达式 日志样例 lt 78 gt 2019 08 21T17 10 01 461970 08 00 localhost CROND root CMD
  • en结尾的单词_【第24集】en结尾的不规则动词变化

    这一集我们来看一下另一种不规则动词的变化 en 结尾 当然 这里en结尾 并不是说这个单词是en结尾 只是发音是en这样的不规则动词 那么这写不规则动词有哪些呢 我们来总结一下 tear 原形 tore 过去式 torn 过去分词 撕开 什
  • 如何在sublime Text3实时运行js代码?

    安装Node js https nodejs org en 为sublime text3添加编译系统 Tools gt Build System gt New Build System 在打开的界面中添加 cmd node file sel
  • UPnP协议学习

    UPnP架构定义了两种类型的设备 控制设备 controlled devices 和控制点 control points 控制设备扮演服务器的角色 响应控制点的请求 控制点和控制设备都能在各种平台包括个人电脑和嵌入式设备中实现 多个控制设备