UPnP协议编程实践Word下载.docx
《UPnP协议编程实践Word下载.docx》由会员分享,可在线阅读,更多相关《UPnP协议编程实践Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
2002年6月01日
级别:
初级
访问情况:
6754次浏览
评论:
0
(查看
|
添加评论-登录)
平均分(16个评分)
为本文评分
UPnP是通用即插即用(UniversalPlugandPlay)的缩写,它主要用于实现设备的智能互联互通。
使用UPnP协议不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的,它可以运行在几乎所有的操作系统平台之上,可以使用C,C++,JAVA和VB等开发语言,使得在办公室、家庭和其他公共场所方便地构建设备相互联通的网络环境。
本专题其后的部分会详细介绍SSDP、GENA的概念,及其在UPnP中的协议实现,最后会使用Intel的Linux开发包实现一个UPnP设备。
UPnP协议概述
随着越来越多的设备联入网络,对于共享设备以及共享设备提供的资源和服务的需求也越来越强烈,透明的访问各种联入网络的资源也成为了一种非常复杂的任务。
因此,在1999年,Microsoft公司开始大张旗鼓地宣传下一代即插即用技术--通用即插即用(UniversalPlugandPlay,简称UPnP)。
UPnP实际上是扩展了传统单机的设备和计算机系统的概念,在"
零配置"
的前提下提供了连网设备之间的发现、接口声明和其他信息的交换等互动操作功能。
Microsoft公司称"
UPnP将延伸到家庭中的每一个设备,它会成为个人电脑、应用程序、智能设备集成工作所必需的框架、协议和接口标准"
。
UPnP是实现智能设备端到端网络连接的结构。
它也是一种架构在TCP/IP和HTTP技术之上的,分布式、开放的网络结构,以使得在联网的设备间传递控制和数据。
UPnP技术实现了控制点、设备和服务之间通讯的支持,并且设备和相关服务的也使用XML定义并且公布出来。
使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。
UPnP不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的。
同时UPnP使用标准的TCP/IP和网络协议,使它能够无缝的融入现有网络。
构造UPnP应用程序时可以使用任何语言,并在任何操作系统平台上编译运行。
对于设备的描述,使用HTML表单表述设备控制界面。
它既允许设备供应商提供基于浏览器的用户界面和编程控制接口,也允许开发人员定制自己的设备界面。
回页首
典型应用场景
随着PC成为网络的中心并提供日益丰富的介质和连接服务,在设备与PC相连之后,越来越多的应用将被开发出来。
下面的例子只是其中很小的一部分:
∙智能家庭网络
许多智能家居环境使用了现存的家庭控制网络,例如X10网络来控制和监控整个家居环境,比如灯光,安防和其他家庭设备。
这些网络可以连接PC上,但是除了PC之外,不能被其他的设备存取。
使用UPnP设备可以桥接这些网络成为一个网络,并提供用户更多设备存取家庭网络中的设备。
在实现时也无须对X10网络中的现有布线和设备进行昂贵的升级,只需要将设备变成UPnP设备并能够与控制点通讯并接受控制点的控制命令。
∙数字音频文件管理
可以在PC和其他设备上播放的数字化音频文件在近几年正在成指数级的增长。
一个家庭中,可能有几台计算机或者其他设备用于保存这些音频文件。
使用UPnP可以使这些分布在不同PC上的音乐库被统一的管理。
这些设备能被发现然后被其他控制点(比如个人电脑、UPnP接收器)控制。
同时这些控制点也可以控制家庭中的任何一个扬声器。
∙数字图片库
许多家庭使用数字相机拍照,或者将已有照片扫描保存,然后将这些照片上载到他们的计算机中保存。
在计算机中对其进行分类,或者以幻灯片的形式进行显示。
随着照片的增加,照片可能保存在多种设备或者多种介质上,比如光盘、硬盘、Flash卡。
使用UPnP技术,图片库可以自己作为一个设备存在,并自动在网络上声明。
这使得一个照片库可能临时为多个应用程序使用,例如可以进行幻灯片显示的同时,在电子像框、机顶盒和电视上进行显示。
UPnP的关键术语
∙Auto-IP
在Ipv4网络中自动选择一个IP地址。
你可以访问IETF文档,http:
//search.ietf.org/internet-drafts/draft-ietf-dhc-ipv4-autoconfig-05.txt。
∙DHCP
动态主机控制协议,可以访问RFC2131获得更详细的信息。
∙HTTPMU
在UDP上实现HTTP协议的多址传送。
∙HTTPU
在UDP上实现普通的HTTP传送协议。
∙SOAP
简单对象存取协议(SimpleObjectAccessProtocol),它是一种应用程序之间进行数据通讯的机制。
它是一种在HTTP上使用XML发送命令并接收值的远程过程调用。
∙UPC
通用产品编码的缩写(UniversalProductCode),它由12个数字构成,由统一编码委员会(UniformCodeCouncil)管理。
这个值可由UPnP制造商指定。
∙单一设备名(UDN)
单一设备名(UniqueDeviceName)基于UUID,每个表示一个设备。
在不同的时间,对于同一个设备此值应该是唯一的。
∙设备
设备是指其他服务或者是设备的容器。
一个设备可以包含其他的逻辑设备。
∙设备描述
设备描述包含一个物理设备上所有设备一系列通用属性,它包括服务,设备结构和设备属性。
∙设备类型
设备类型的一般格式为urn:
schemas-upnp-org:
device:
uuid-device,uuid-device为UPnP工作委员会定义的标准设备类型。
在UPnP设备模版和设备类型之间是一一对应的,设备制造商也可以指定其他的名字,一般格式为urn:
domain-name:
uuid-device,uuid-device为制造商定义的标准设备类型,domain-name字段为设备制造商注册的域名。
∙根设备
根设备是指处于设备树最顶层的设备。
∙控制点
控制点是一个控制器,它可以检索设备和服务描述,发送动作到服务,查询服务的状态变量和从服务接收事件。
允许用户使用或运行一个设备,例如CD播放机,的程序可以认为是控制点。
∙动作
表示客户端发出的完成特定功能的命令。
∙事件
事件是指服务的状态变量的一个或多个改变的通知。
∙事件变量
事件变量是指在改变一个服务的状态变量时触发事件的变量。
任何订阅此变量的事件源的控制点将接收到改变通知。
非事件变量与事件通知没有关系。
∙服务
服务是一个逻辑功能单位,服务代表动作和使用状态变量的物理设备的部分或所有状态。
∙服务描述
服务描述是指设备提供的一系列动作以及和动作相关的状态变量。
∙服务类型
服务类型是表示服务的统一资源名。
服务类型和UPnP服务模版之间是一一对应的。
UPnP任务组定义了几种标准的服务类型。
服务类型的一般格式为:
urn:
service:
serviceType:
version。
例如,扫描仪的服务类型应该为urn:
scanner:
1。
UPnP设备制造商可以指定附加服务,这样的服务一般格式为:
version,domain-name字段为设备制造商注册的域名。
∙状态变量
状态变量是用于描述服务状态的数据片断。
UPnP设备工作过程
UPnP定义了设备之间、设备和控制点、控制点之间通讯的协议。
完整的UPnP由设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述界面几部分构成。
UPnP设备协议栈如下图所示:
在最高层中仅包含UPnP制造商定义的特定设备信息,紧接着UPnP工作组定义的内容补充制造商信息。
从这层往下,定义的消息为UPnP特定的消息。
也就是说,这些消息定义为以下几个协议:
简单设备发现协议(SimpleServiceDiscoveryProtocol),通用事件通知结构(GeneralEventNotificationArchitecture)和简单对象存取协议(SimpleObjectAccessProtocol)。
这些消息使用HTTPU或者HTTPMU发送。
这几个部分在UPnP中的层次关系如下图所示:
4.1设备寻址
UPnP网络的基础就是TCP/IP协议族,UPnP设备能在TCP/IP协议下工作的关键就是正确的设备寻址。
一个UPnP设备寻址的一般过程是:
首先向DHCP服务器发送DHCPDISCOVER消息,如果在指定的时间内,设备没有收到DHCPOFFERS回应消息,设备必须使用Auto-IP完成IP地址的设置。
使用Auto-IP时,设备在地址范围169.254/169.16范围中查找空闲的地址。
在选中一个地址之后,设备测试此地址是否在使用。
如果此地址被占用,则重复查找过程直到找到一个未被占用的地址,此过程的执行需要底层操作系统的支持,地址的选择过程应该是随机的以避免多个设备选择地址时发生多次冲突。
为了测试选择的地址是否未被占用,设备必须使用地址分辨协议(ARP)。
一个ARP查询请求设置发送者的硬件地址为设备的硬件地址,发送者的IP地址为全0。
设备应该侦听ARP查询响应,或者是否存在具有相同IP地址的ARP查询请求。
如果发现,设备必须尝试新的地址。
使用AutoIP的设备必须定时检测DHCP服务器是否存在,这可以通过定时发送DHCPDISCOVER消息实现,如果接收到DHCPOFFERS回应消息,设备必须释放AutoIP分配的地址,此时设备必须取消所有的广告消息并重新发出新的。
一个设备可以使用UPnP之外的更高层的协议,这些协议将为设备使用友好的名称。
在这种情况下,将这些友好的主机名解析为IP地址就很必要了,DNS通常是用来实现此功能的。
使用此功能的设备可能要包含一个DNS客户端,而且支持动态的DNS注册,通过注册将它自己的名字加入到地址分布图中。
4.2设备发现
一旦设备连接到网上并且分配了地址,就要进行发现的操作了。
设备发现是UPnP网络实现的第一步。
设备发现是由简单发现协议SSDP(SimpleServiceDiscoveryProtocol)