UPnP协议编程实践
- 格式:doc
- 大小:98.00 KB
- 文档页数:11
平均分∙智能家庭网络许多智能家居环境使用了现存的家庭控制网络,例如X10网络来控制和监控整个家居环境,比如灯光,安防和其他家庭设备。
这些网络可以连接PC上,但是除了PC之外,不能被其他的设备存取。
使用UPnP设备可以桥接这些网络成为一个网络,并提供用户更多设备存取家庭网络中的设备。
在实现时也无须对X10网络中的现有布线和设备进行昂贵的升级,只需要将设备变成UPnP设备并能够与控制点通讯并接受控制点的控制命令。
∙数字音频文件管理可以在PC和其他设备上播放的数字化音频文件在近几年正在成指数级的增长。
一个家庭中,可能有几台计算机或者其他设备用于保存这些音频文件。
使用UPnP可以使这些分布在不同PC上的音乐库被统一的管理。
这些设备能被发现然后被其他控制点(比如个人电脑、UPnP接收器)控制。
同时这些控制点也可以控制家庭中的任何一个扬声器。
∙数字图片库许多家庭使用数字相机拍照,或者将已有照片扫描保存,然后将这些照片上载到他们的计算机中保存。
在计算机中对其进行分类,或者以幻灯片的形式进行显示。
随着照片的增加,照片可能保存在多种设备或者多种介质上,比如光盘、硬盘、Flash卡。
使用UPnP技术,图片库可以自己作为一个设备存在,并自动在网络上声明。
这使得一个照片库可能临时为多个应用程序使用,例如可以进行幻灯片显示的同时,在电子像框、机顶盒和电视上进行显示。
∙Auto-IP在Ipv4网络中自动选择一个IP地址。
你可以访问IETF文档,/internet-drafts/draft-ietf-dhc-ipv4-auto config-05.txt。
∙DHCP动态主机控制协议,可以访问RFC 2131获得更详细的信息。
∙HTTPMU在UDP上实现HTTP协议的多址传送。
∙HTTPU在UDP上实现普通的HTTP传送协议。
∙SOAP简单对象存取协议(Simple Object Access Protocol ),它是一种应用程序之间进行数据通讯的机制。
它是一种在HTTP上使用XML发送命令并接收值的远程过程调用。
∙UPC通用产品编码的缩写(Universal Product Code),它由12个数字构成,由统一编码委员会(Uniform Code Council)管理。
这个值可由UPnP制造商指定。
∙单一设备名(UDN)单一设备名(Unique Device Name)基于UUID,每个表示一个设备。
在不同的时间,对于同一个设备此值应该是唯一的。
∙设备设备是指其他服务或者是设备的容器。
一个设备可以包含其他的逻辑设备。
∙设备描述设备描述包含一个物理设备上所有设备一系列通用属性,它包括服务,设备结构和设备属性。
∙设备类型设备类型的一般格式为urn:schemas-upnp-org:device:uuid-device,uuid-device为UPnP工作委员会定义的标准设备类型。
在UPnP设备模版和设备类型之间是一一对应的,设备制造商也可以指定其他的名字,一般格式为urn:domain-name:device:uuid-device, uuid-device为制造商定义的标准设备类型,domain-name字段为设备制造商注册的域名。
∙根设备根设备是指处于设备树最顶层的设备。
∙控制点控制点是一个控制器,它可以检索设备和服务描述,发送动作到服务,查询服务的状态变量和从服务接收事件。
允许用户使用或运行一个设备,例如CD播放机,的程序可以认为是控制点。
∙动作表示客户端发出的完成特定功能的命令。
∙事件事件是指服务的状态变量的一个或多个改变的通知。
∙事件变量事件变量是指在改变一个服务的状态变量时触发事件的变量。
任何订阅此变量的事件源的控制点将接收到改变通知。
非事件变量与事件通知没有关系。
∙服务服务是一个逻辑功能单位,服务代表动作和使用状态变量的物理设备的部分或所有状态。
∙服务描述服务描述是指设备提供的一系列动作以及和动作相关的状态变量。
∙服务类型服务类型是表示服务的统一资源名。
服务类型和UPnP服务模版之间是一一对应的。
UPnP任务组定义了几种标准的服务类型。
服务类型的一般格式为:urn:schemas-upnp-org:service:serviceType:version。
例如,扫描仪的服务类型应该为urn:schemas-upnp-org:service:scanner:1。
UPnP设备制造商可以指定附加服务,这样的服务一般格式为:urn:domain-name:service:serviceType:version , domain-name字段为设备制造商注册的域名。
∙状态变量状态变量是用于描述服务状态的数据片断。
在最高层中仅包含UPnP制造商定义的特定设备信息,紧接着UPnP工作组定义的内容补充制造商信息。
从这层往下,定义的消息为UPnP特定的消息。
也就是说,这些消息定义为以下几个协议:简单设备发现协议(Simple Service Discovery Protocol ),通用事件通知结构(General Event Notification Architecture)和简单对象存取协议(Simple Object Access Protocol)。
这些消息使用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查询请求。
如果发现,设备必须尝试新的地址。
使用Auto IP的设备必须定时检测DHCP服务器是否存在,这可以通过定时发送DHCPDISCOVER消息实现,如果接收到DHCPOFFERS回应消息,设备必须释放Auto IP分配的地址,此时设备必须取消所有的广告消息并重新发出新的。
一个设备可以使用UPnP之外的更高层的协议,这些协议将为设备使用友好的名称。
在这种情况下,将这些友好的主机名解析为IP地址就很必要了,DNS通常是用来实现此功能的。
使用此功能的设备可能要包含一个DNS客户端,而且支持动态的DNS注册,通过注册将它自己的名字加入到地址分布图中。
4.2 设备发现一旦设备连接到网上并且分配了地址,就要进行发现的操作了。
设备发现是UPnP 网络实现的第一步。
设备发现是由简单发现协议SSDP(Simple Service Discovery Protocol)来定义的。
在设备发现操作之后,控制点可以发现感兴趣的设备,并使得控制点获得设备能力的描述,同时控制点也可以向设备发送命令,侦听设备状态的改变,并将设备展示给用户。
当一个设备加入到网络中,设备发现过程允许设备向网络上的控制点告知它提供的服务。
当一个控制点加入到网络中时,设备发现过程允许控制点寻找网络上感兴趣的设备。
在这两种情况下,基本的交换信息就是发现消息。
发现消息包括设备的一些特定信息或者某项服务的信息,例如它的类型、标识符、和指向XML设备描述文档的指针。
在一个新设备加入网络时,如果它存在多个嵌入设备,那么它将多目传送一系列发现消息公开它的设备和服务。
任何感兴趣的控制点可以在此标准的多目地址上监听新服务可用通知消息。
同样,在一个控制点加入网络时,它多目传送发现消息寻找相关设备或服务。
所有的设备必须在标准多目传送地址上监听这些消息并且存在匹配的设备或服务时自动响应发现消息。
在设备从网络中除去时,它也应该发出一系列声明,表示此设备包含的设备和服务已经失效。
下图表示设备和控制点交互的一般过程:简单发现协议(SSDP)定义了在网络中发现网络服务,控制点定位网络上相关资源和设备在网络上声明其可用性的方法。
它是建立在HTTPU和HTTPMU的基础上的,用于控制设备发送声明和离开消息,以及控制点发送的查询消息实现设备发现操作的。
简单发现协议使用租用模型减少了本来是必需的系统开销,网络上的每一个控制点拥有网络状态的全部信息并保持着网络较低的通讯量。
为了增加租用模型的健壮性,简单发现协议通过定期发送声明消息的办法保证在设备超时决定设备是否可以使用。
缺省的声明消息租用时间是30分钟。
4.3 设备描述UPnP网络结构的第二步是设备描述。
在控制点发现了一个设备之后,控制点仍然对设备知之甚少,控制点可能仅仅知道设备或服务的UPnP类型,设备的UUID 和设备描述的URL地址。
为了让控制点更多的了解设备和它的功能或者与设备交互,控制点必须从发现消息中得到设备描述的URL,通过URL取回设备描述。
设备描述的一般过程:对于一个设备的UPnP描述一般分成两个部分:描述设备和描述设备提供的服务。
UPnP对某一设备的描述以XML形式表示出来,设备描述包括制造商信息,包括模块名称和编号,序列号,制造商名称,制造商网站的URL等等。
设备描述也包括所有嵌入设备描述和URL地址集。
对于一个物理设备可以包含多个逻辑设备,多个逻辑设备既可以是一个根设备其中嵌入多个设备,也可以是多个根设备的方式实现。
设备描述是由设备制造商提供的,采用XML表述,并且遵循UPnP设备模版。
此模版是由UPnP工作委员会生成的。
UPnP服务描述包括一系列命令或者动作,服务响应,动作的参数。
服务的描述也包含一系列变量,这些变量描述了服务运行时刻的状态,这包括数据类型、取值范围和事件特性的描述。
服务描述也是由设备制造商提供的,采用XML方式表述,遵循UPnP服务模版。
4.4 设备控制设备控制是UPnP网络的第三步。
在接收设备和服务描述之后,控制点可以向这些服务发出动作,同时控制点也可以轮询服务的状态变量值。
发出动作实质上是一种远程过程调用,控制点将动作送到设备服务,在动作完成之后,服务返回相应的结果。
设备控制的一般过程如下图:为了控制一个设备,控制点向设备服务发出一个动作。
这一般通过向服务的控制URL地址发送一个适当的控制消息,而服务则做出相应的响应。