DLNA与UPNP关系 下载本文

1 引言

UPnP 全名是Universal Plug and Play,主要是微软在推行的一个标准。简单的来说,UPnP 最大的愿景就是希望任何设备只要一接上网络,所有在网络上的设备马上就能知道有新设备加入,这些设备彼此之间能互相沟通,更能直接使用或控制它,一切都不需要设定,完全的Plug and Play。

举个例子来说:

Mary在她的计算机中存储了大量数码相机拍摄的照片。当朋友Karen 来拜访时, Mary在起居室拿起与等离子电视机配套的红外线(IR)遥控器,从电视所显示的列表中挑选她感兴趣的照片,向Karen在电视屏幕上展示一下这些照片。这过程中就使用了UPnP协议。

2 UPnP的结构规范

2.1 UPnP的基本组件

服务、设备和控制点是UPnP网络的基本组件。其组件图如图1所示:

图1 UPnP组件图

● 服务(Service)

在UPnP网络中,最小的控制单元就是服务。服务描述的是设备在不同的情况下的活动和设备的状态。例如,时钟服务可以表述为时间变化(状态变化)、当前的时间(时钟的状态)以及设置时间和读取时间两个活动,通过这两个活动.你就可以控制服务。

● 设备(Device)

UPnP网络中定义的设备具有很广泛的含义,各种各样的家电、电脑外设、智能设备、无线设备、个人电脑等等都可以成为其中一员。一个UPnP设备可以是多个服务的载体和多个子设备的嵌套集。例如一台印表机有提供列印这样的服务;一台电视有提供收讯的服务,这些都属于设备。

● 控制点(ControlPoint)

在UPnP网络中,控制点指的是可以发现并控制其它设备的控制设备。在UPnP网络中,设备可以和控制点合并。也就是说,同一个设备,可以同时具有设备的功能和控制点的功能,即可以作为设备提供服务,也可以作为控制点发现和控制其它设备。

2.2 UPnP部分术语

● UUID

UUID含义是通用唯一识别码(Universally Unique Identifier),其目的是让分布式系统中的所有元素,都有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。其格式为

xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),分别为当前日期和时间,时钟序列,全局唯一的IEEE机器识别号,如果有网卡,从网卡mac地址获得,没有网卡以其他方式获得。

● UDN

单一设备名(Unique Device Name),基于UUID,表示一个设备。在不同的时间,对于同一个设备此值应该是唯一的。

● URI

Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Universal Resource Identifier, 简称\)进行定位。 URI一般由三部分组成:访问资源的命名机制;存放资源的主机名;资源自身的名称,由路径表示。考虑下面的URI,它表示了当前的HTML 4.0规范:

http://www.webmonkey.com.cn/html/html40/它表示一个可通过HTTP协议访问的资源,位于主机www.webmonkey.com.cn上,通过路径“/html/html40”访问。

● URL

URL是URI命名机制的一个子集,URL是Uniform Resource Location的缩写,译为“统一资源定位符”。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种www客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

● URN

URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)。唯一标识一个实体的标识符,但是不能给出实体的位置。标识持久性 Internet 资源。URN可以提供一种机制,用于查找和检索定义特定命名空间的架构文件。

尽管普通的URL可以提供类似的功能,但是在这方面,URN 更加强大并且更容易管理,因为 URN 可以引用多个 URL。

2.3 UPnP设备协议栈

UPnP定义了设备之间、设备和控制点、控制点之间通讯的协议。完整的UPnP由设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述界面几部分构成。UPnP设备协议栈如下图所示:

图2 UPnP协议栈

[1]

UPnP协议结构最底层的TCP/IP协议是UPnP协议结构的基础。IP层用于数据的发送与接收。对于需要可靠传送的信息,使用TCP进行传送, 反之则使用UDP。UPnP对网络物理设备没有要求,可以使用以太网、无线网、IEEE1394、红外进行连接, 只要支持IP协议即可。同时UPnP还可以使用TCP/IP协议族中的其他协议, 如ARP、IGMP、DHCP、DNS等。

构建在TCP/IP协议之上的是HTTP协议及其变种,这一部分是UPnP协议的核心部分, 所有UPnP消息都被封装在HTTP协议及其变种之中。HTTP协议的变种是HTTPU和HTTPMU, 这些协议的格式沿袭了HTTP协议,只不过与HTTP协议不同的是它们通过UDP而不是TCP来发送消息,并且可以用于多播通信。

2.3.1 SSDP协议

简单服务发现协议(Simple Service Discovery Protocol:SSDP),内建在HTTPU/HTTPMU 里,定义如何让网络上有的服务被发现的协议。包括控制点如何发现网络上有哪些服务,并取得这些服务的资讯,还有装置本身宣告他提供哪些服务。该协议运用在UPnP工作流程的设备发现部分。

2.3.2 SOAP协议

简易物件存取协议(Simple Object Access Protocol:SOAP)定义如何使用XML与HTTP来执行远端程序呼叫(Remote Procedure Call)。包括控制点如何发送命令消息给设备,及设备接收到命令消息后如何发送响应消息给控制点。该协议运用在UPnP工作流程的设备控制部分。

2.3.3 GENA协议

一般事件通知架构(Generic Event Notification Architecture:GENA)定义在控制点想要监听设备的某个服务状态变量的状况时,控制点如何传送订阅讯息并如何接收通知讯息用的。该协议运用在UPnP工作流程的事件订阅部分。

2.4 基于XML的UPnP描述

2.4.1 XML简介

XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

与HTML类似,XML描述的内容封装在开始标签<标签名>和结束标签之间,一对标签及其封装的内容,如Gone with the Wind</movie>,被称为一个元素。元素可以嵌套,一个XML文档正是由许多这样的元素嵌套而成的。元素可以有属性,可赋予属性值。

在实际应用中,人们常常根据需要自定义元素名和属性名,这些名字具有明确易懂的含义。但是由于应用的繁多,所定义的名字很有可能发生冲突,为此XML引入了命名空间(namespace)的概念,它给出元素名和属性名定义的来源处,允许不同应用使用相同的名字,不致引起混淆。

XML命名空间采用“两段式命名法”定义所谓的“合法名称”,例如“学生:姓名”。其中第一段是指代特定命名空间的“命名空间前缀”,第二段是元素或属性的名字,两段之间用西文冒号“:”分隔。需要注意的是,“学生:姓名”和“班主任:姓名”虽然名称都是“姓名”,但却是两个不同的元素名,因为它们分别由“学生”和“班主任”命名空间定义。

命名空间用URI标识,具有唯一性和持久性,所谓命名空间前缀就是命名空间的缩写表示,XML采用下述“命名空间声明\来绑定命名空间前缀和命名空间:

xmlns:【命名空间前缀】=【命名空间名】 其中,xmlns就是XML命名空间的缩写。例如: xmlns:学生=http://www.xml.net.cn/学生 xmlns:班主任=http://www.xml.net.cn/班主任 分别定义了命名空间前缀“学生”和“班主任”。

其后,XML就可以用命名空间和名的组合,即合法名称来无岐义地表示不同应用中的元素名和/或属性名,给出元素的描述和属性值的描述。例如:

[2]

<学生:学生xmlns:学生=http://www.xml.net.cn/学生> <学生:姓名>李明

<学生:班级学生:数字类型=”中文”>三年级二班 <学生:住址学生:数字类型=”阿拉伯”>135楼210室

上述XML文档描述了关于学生的相关信息,所采用的元素名和属性名均源自“学生”命名空间。上面的描述使用了“学生”命名空间定义的4个元素名:学生、姓名、班级和住址,1个属性名:数字类型,并对于“学生:班级”元素的“数字类型”属性赋予属性值“中文”,对于“学生:住址\元素的“数字类型\属性赋予属性值”阿拉伯”。

类似地,可以用XML文档描述关于班主任的相关信息,只是需采用“班主任“命名空间定义的名字。只要不被其他命名空间声明所覆盖,命名空间声明对于它所说明的所有元素以及这些元素包含的所有内容都有效,这就是所谓命名空间的作用域范围。

2.4.2 TV设备的设备描述编写

在UPnP协议中,要实现控制点和设备之间的互相通信,设备的描述文件起着很重要的作用。对于设备的描述文件,是以XML文件形式存在的。在论文的第五节,我们会讨论TV设备的代码实现,在这我们就对TV设备的设备描述文件编写进行介绍。

一般来说,设备描述都是基于UPnP论坛上己定义的模板,这些标准化的模板提供一系列基本的服务和预定义的设备类型,厂商可以在其中作出自己的扩充。对于后面开发的TV设备,因为只是为了阐述UPnP协议的实现,所以自行开发其设备模板及其XML文档,以使其最简化。

根据UPnP规范,包括两个主要部分。第一部分包括根设备类型、特定厂商、制造商信息,如模块名称和编号、序列号、制造商名称、特定厂商网站URL等。第二部分包括设备所支持服务的信息。对于第一部分,为了使设备描述文件更简单,为简单计,省略了厂商名、厂商网址等可选元素,这些省略并不会对系统运行产生任何影响。下面就是TV设备的设备描述文件: