2024年3月15日发(作者:)

UPNP实现的基本原理

UPNP实现的基本原理

第一部分

首先我们需要解决一个问题UPnP到底是用来干什么的我只从技术实现的角度来讲。

一个设备比如一台计算机或者是一个PDE设备如果想要在网络上和其他的计算机通讯最

简单的方法就是两台计算机都有一个互联网的IP地址互联网的IP地址和局域网的IP地址

是不同的局域网IP地址有两种第一种是以开头的第二种是以开头的

这样就可以进行直接通讯了。如果双方中有一个有互联网的IP地址的另一方可以通过连接

这个地址也可以通讯。但是现在我们遇的大部分情况是两台计算机都处于一个内网局域网

中都是通过路由器连接到Internet上的这样想实现P2P通讯将是非常困难的事情。为了

解决这个问题就出来了UPnP这个东西。

那么我们现在需要解决的问题是UPnP到底是个什么东西UPnP其实不是什么技术它

只不过是一个标准这个标准规定了一些具体的通讯规则但是具体怎么实现没有任何限制。

主要来说它包括IP、TCP、UDP、HTTP和XML在内的互联网组件UPnP其实就是把这些

已有的东西组合起来去实现网络打孔。那么为什么会用到这些组件呢据我的推测是IP、TCP、

UDP这些都是很成熟的通讯技术就不用废话了。那么为什么要用HTTP和XML呢我估计

是HTTP比较通用基本上每台机子都有这个协议不需要在进行推广了而XML是一个格式

标准其实我们看到的网页的html源文件就是XML的一个具体实现XML文件的最大特点

就是所有的东西都是有头有尾的比如HEAD/HEAD。这些定义的最大好处就是我们可以很

容易的通过编程实现解析把头部压进栈遇到尾部就是出栈通过对栈的操作就可以实现解析

了。这样传输有了通讯解析规则有了就很容易实现网络打孔技术了。另外为了便于各种设

备之间方便的通讯UPnP充分利用了HTTP的多播和单播通常状态下想在网络上实现多播

和单播是非常繁琐的但是HTTP又非常成熟的实现技术所以种种条件加起来就形成了

UPnp。

下边就是要说一下UPnP的实现模型了UPnP的典型模型就是有一台在内网的计算机

这台计算机只有内网的IP地址它通过一个路由器连接到Internet网中如果你的路由器支

持UPnP你可以建立路由器的端口到你的计算机IP和端口的映射。因为的外网的计算机通

过访问路由器在外网中是有IP和端口号就可以访问到你的计算机了。简而言之就是建立了

一个专发机制。

第二部分

UPnP参考文档中有关基本原理的概述

UPnP网络的第1步是发现。在将一个设备添加到网络上之后UPnP发现协议允许该

设备向网络中的控制点宣告其服务。同样当一个控制点被添加到网络后UPnP发现协议允

许该控制点在网上搜索感兴趣的设备。两种情况下的根本信息交换均为一个发现消息包含

有关该设备或其服务之一的一些基础信息例如其类型、标识符和指向更详细信息的一个指

针。UPnP发现协议基于简单服务发现协议SSDP。

UPnP网络中的第2步是描述。控制点在发现一个设备之后仍然对其知之甚少。为了

使控制点了解到更多关于设备及其能力的信息或与设备进行交互则控制点必须取得来自该

设备在发现消息中所提供之URL的设备描述。设备可能包含其它逻辑设备以及功能单元或

服务。对于设备的UPnP描述通过XML来表达并包括诸如模型名称和号码、序列号、制造

商名称和厂商专门网站URL等专门针对厂商的制造商信息。该描述还包括一列任意的嵌入

式设备或服务以及用于控制、事件触发和展示的URL。对于每项服务此描述均包括一列命

令或动作而服务参数或变量对于每个动作做出响应针对服务的描述还包括一列变量这些变

量模型化服务在运行时的状态并通过数据类型、范围和事件特征进行描述。

UPnP网络中的第3步是控制。当一个控制点取得设备描述后该控制点可将动作发至

一个设备的服务。为此控制点将一条适当的控制消息发至服务的控制URL在设备描述中提

供。控制消息同样利用简单对象访问协议SOAP通过XML来表达。类似于功能调用该服

务针对控制消息返回了所有的专门动作取值。动作的效果可以通过描述服务运行时状态的

变量进行描述。

UPnP网络的第4步是事件触发。针对服务的UPnP描述包括一个服务响应的动作列

表以及一个对服务器运行时状态进行展示的变量列表。在这些变量变更时服务会发布更新

一个控制点可以预订接收此信息。服务通过发送事件消息来发布更新。事件消息包含一个

或多个状态变量名和这些变量的当前值。这些消息同样通过XML来表达并采用通用事件

通知架构GENA格式。当控制点首次预定时会发送一个特殊的初始事件消息此事件消息包

含所有事件变量的名称和值并允许订阅者对服务状态模式进行初始化。为了支持拥有多个

控制点的环境事件触发设计用于将任何动作的效果通知所有控制点。因此所有订阅者均会

收到全部的事件消息。订阅者收到关于所有已变更事件变量的事件消息此事件消息无论状

态变量为何改变都被发送由于响应一个要求动作或由于服务建模状态的变更。

UPnP网络中的第5步是展示。如果设备有用于展示的URL那么控制点就可以通过此

URL取得一个页面在浏览器中加载该页面并且根据页面的功能支持用户控制设备和/或浏

览设备状态。每一项完成的程度取决于展示页面和设备的具体功能。