【什么是UPnP技术?】

UPnP(Universal Plug and Play)技术是针对智能家电、无线设备和各种类型的个人电脑进行普遍点对点(P2P)网络连接而设计的一种架构。它被设计为连接到ad-hoc或者非托管网络的家庭、小型企业、公共场所,提供易用、灵活、基于标准的连接。UPnP技术是一个利用TCP/IP和网络技术实现的分布式的开放网络架构,它除了提供网络设备间的控制和数据传输外,还提供无缝衔接的网络连接。

UPnP设备架构(UDA)不仅仅是即插即用外围设备模型的简单扩展,它被设计为众多供应商的不同设备类型提供零配置、“隐形”网络连接和自动发现的功能。这意味着设备能够自动加入网络、获取IP地址、广播它的能力并获知其他设备的存在和能力。最后,设备可以顺利的自动的离开网络,而不会留下任何不期望的影响。

UPnP架构充分利用包括IP、TCP、UDP、HTTP、XML等在内的网络协议,类似因特网,UPnP协议基于表述性的在线协议,以XML形式表示,并通过HTTP协议传输。IP协议凭借其已证明的能力而成为UPnP设备架构的强有力选择,这些能力包括:跨越不同的物理媒介、支持多厂商交互、支持因特网、众多家庭和企业内部网的协同。UPnP架构被明确设计适应这些不同的环境,进一步,通过桥接,UDA也适用于运行非IP协议的媒介,这些媒介往往是由于成本、技术或系统遗留等问题而不允许运行IP协议。

UPnP中的“Universal”(通用性)主要体现在:

1) 不使用设备驱动,其而代之以通用协议;

2) UPnP网络是媒介无关的;

3) UPnP设备可以在任何操作系统上使用任何编程语言实现;

4) UPnP架构没有指定或者限制被应用程序使用的API的设计;

5) 操作系统厂商可以创建满足其客户需求的API

【UPnP协议栈】

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。对于每项服务,”描述“均包含命令、服务响应动作的列表,以及每个动作的参数。服务描述也包含一列变量,这些变量模型化服务在运行时的状态,并通过数据类型、范围和事件特征进行描述。

4)控制(control)

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

5)事件触发(eventing)

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

6)展示(representation)

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

【缩略语】


【专业术语】

1) action:service暴露的命令接口,action具有一个或多个输入输出参数,还可以有返回值;

2) argument:action的参数,可以为输入参数或输出参数;

3) control point:用于获取device和service的描述,向services发送actions,从service拉取状态变量,以及从services接收events;

4) device:逻辑设备,作为一个容器,可以嵌套其他逻辑设备;并向网络上通告其自身的存在;

5) device description:逻辑设备的正式定义,基于XML语法,以UPnP模板语言描述。描述由UPnP厂商提供,将诸如厂商名称、模型名称、模型号码、序列号、控制、事件和展示的URL等信息填入UPnP设备模板中;

6) device type:标准的设备类型表示如下:urn:schemas-upnp-org:device:由UPnP论坛工作委员会分配的唯一标识符。设备类型和UPnP设备模板是一对一的关系,UPnP厂商可以指定附加的设备类型,定义如下:urn:domain-name:device:由厂商分配的唯一标识符,其中domain-name是厂商的域名;

7) event:service暴露的状态变量发生变化时,发送的通知;

8) GENA:General EventNotification Architecture;

9) publisher:event消息的源头,典型的是一个设备service;

10)root device:没有嵌套在任何其他逻辑设备中的逻辑设备,即顶层逻辑设备;

11)service:逻辑功能单元,最小的控制单位。service暴露了actions,并使用状态变量模型化物理设备的状态;

12)service description:逻辑服务的正式定义,基于XML语法,使用UPnP模板语言描述。由UPnP厂商将指定信息填入UPnP服务模板中;

13)service  type:标准的服务类型表示如下:urn:schemas-upnp-org:service:由UPnP论坛工作委员会分配的唯一标识符:整数类型的版本号。服务类型和UPnP服务模板是一对一的关系,UPnP厂商可以指定附加的服务,定义如下:urn:domain-name:service:由厂商分配的唯一标识符:版本号,其中domain-name是厂商域名;

14)SOAP:Simple Object Access Protocol,基于XML的远程调用机制,它通过HTTP协议发送命令并接收返回值;

15)SSDP:Simple Device Discovery Protocol,使用基于UDP的HTTP多播变种,实现多播发现和搜寻机制;

16)state variable:物理服务模型的一个切面,由service对外暴露,state variable具有名称、数据类型、可选的默认值、可选的常量值,并且当它的取值改变时可触发事件;

17)subscriber:事件消息的接收者,典型的是一个控制点;

18)UPnP Device Template:设备模板,包含了设备类型、所需的嵌入式设备、所需的服务等。基于XML语法,并继承自UPnP设备模式,由UPnP论坛工作委员会定义,与标准设备类型是一对一的关系;

19)UPnP Service Template:服务模板,包含了action名称、action所需参数、statevariables以及这些state variable的属性。基于XML语法,并继承自UPnP设备模式,由UPnP论坛工作委员会定义。与标准服务类型是一对一的关系;

20)UPnP Device Schema:定义在UPnP Device和Service Template中使用的元素和属性,基于XML语法,并继承XML Schema,由UPnP设备架构定义;

21)Vendor Domain Name:厂商提供的域名,由厂商所拥有,且必须在ICANN认证的注册商处注册,保证唯一性。厂商必须保证注册域名的即时更新,厂商域名的长度应当与UDA中使用的域名兼容。


UPnP协议学习笔记-简介相关推荐

  1. BGP协议学习笔记——BGP基础

    BGP协议学习笔记--BGP基础(BGP概念.BGP报文.BGP状态机.BGP关系建立.BGP路由通告) 说明:本文学习笔记整理自网络.华为公开产品文档.华为公开PPT及部分的自我理解 一.BGP简介 ...

  2. Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  3. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  4. POP3协议学习笔记

    今日得闲,于是将POP3的学习笔记也整理出来! 互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀.. ...

  5. CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

    1 前言 CoAP的调试,目前没找到好用的工具,网上说的火狐插件现在也不能用了,多希望手头的TCP/UDP网络调试工具就可以支持. 既然CoAP是基于UDP来组包的,那肯定是可以实现. 所以这篇文章给 ...

  6. 网络协议学习笔记 · 22

    IPv6 · 流媒体 · 即时通讯 · 缓存 · 网络爬虫 VPN 作用 VPN与代理的区别 实现原理(隧道协议) 网络爬虫 简易实例 robots.txt 无线网络 缓存(Cache) 响应头 请求 ...

  7. CoAP协议学习笔记 1.2 一张表了解 CoAP 协议

    1 前言 对于CoAP协议的学习,这份100多页的文档肯定没法背下来.我们只需把协议当作工具书,大体知道主体的内容,在遇到细节问题时再去具体章节找问题. 本篇笔记中先对 CoAP 协议内容做个基础了解 ...

  8. CoAP协议学习笔记 3.1 CoAP协议翻译 加密基础介绍

    CoAP协议学习笔记可点此查看. 1 前言 在之前的学习中,没有过多关注加密.但实际部分厂家的IoT平台(阿里云.OneNET)已经启用了相关安全处理,有必要深入学习下. 在 CoAP 协议 RFC7 ...

  9. 极客HTTP协议学习笔记破冰篇(1-7)

    极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...

最新文章

  1. R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战
  2. [转]Linux 微擎系统搭建
  3. GStreamer(二)
  4. javadoc文档的生成方法_[springboot 开发单体web shop] 4. Swagger生成Javadoc
  5. android动画影子效果,Android TV常用动画的效果,View选中变大且有阴影(手机也能用)...
  6. 调试opengl程序出错
  7. oracle的undo
  8. Django 模板层
  9. Nginx学习笔记(二) Nginx--connectionrequest
  10. .net core 允许跨域
  11. 每次编译要改名_华为突然在欧洲注册鸿蒙:正式改名方舟!与安卓竞争海外市场...
  12. 为archlinux选择国内镜像
  13. 解决 Error:No suitable device found: no device found for connection System eth0
  14. php 往sftp发送文件夹,通过PHP将文件上传到SFTP服务器(phpseclib)
  15. SAP WBS预算可通过二种方式配置和使用
  16. java 页眉页脚_Java 添加Word页眉、页脚
  17. ALexa网站排名查询
  18. 协同过滤和基于内容推荐有什么区别?
  19. Mybatis游标Cursor查询
  20. mysql 三元_三元联系简介

热门文章

  1. 电商上货软件必备api接口:搜索接口、商品采集接口
  2. 弱势求职者如何打造超强简历
  3. isNotEmpty和isNotBlank区别
  4. 算法提高 分分钟的碎碎念
  5. 国际学院 计算机考试科目,计算机科学与技术考研考哪些科目 备考技巧有哪些...
  6. 重装系统后,右击发现没有出现office,Excel等
  7. 蓝桥杯官方板子问题(深夜学习——单片机)
  8. Java工程师成神之路~
  9. 从零开始学python大数据与量化交易下载_GitHub - Lid23/Python-100-Days: Python - 100天从新手到大师...
  10. 2021年本溪高考成绩查询,2021本溪市地区高考成绩排名查询,本溪市高考各高中成绩喜报榜单...