欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

UPnP协议学习笔记-简介

程序员文章站 2022-03-31 10:28:01
UPnP协议学习笔记-简介   【什么是UPnP技术?】   UPnP(Universal Plug and Play)技术是针对智能家电、无线设备和各种类型的...


UPnP协议学习笔记-简介

 

【什么是UPnP技术?】

 

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

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

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

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

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

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

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

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

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

 

【UPnP协议栈】


UPnP协议学习笔记-简介

 

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

   www.2cto.com  

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)。  www.2cto.com  

 

2)发现(discovery)

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

 

3)描述(description)

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

 

4)控制(control)  www.2cto.com  

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

 

5)事件触发(eventing)

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

 

6)展示(representation)  www.2cto.com  

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

 

【缩略语】

 

UPnP协议学习笔记-简介

 

【专业术语】

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设备模板中;  www.2cto.com  

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协议发送命令并接收返回值;  www.2cto.com  

 

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论坛工作委员会定义。与标准服务类型是一对一的关系;  www.2cto.com  

 

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

 

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