Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452555
  • 博文数量: 403
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -70
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-05 12:45
文章分类

全部博文(403)

文章存档

2014年(3)

2013年(1)

2012年(3)

2011年(21)

2010年(13)

2009年(64)

2008年(9)

2007年(36)

2006年(253)

分类: 系统运维

2006-08-01 19:20:45

随着Internet的发展,网络应用功能越来越多,但是想过让冰箱不仅可以冷冻食物,而且可以连接到Internet吗?或者,在用微波炉加热食物的时候阅读电子邮件?甚至DVD播放机和音响也可以访问Internet,下载MP3音乐,获取天气预报及股票信息,然后将这些信息转换为语音?虽然这些新奇的设备现在还不存在,但是由于UPnP的出现,开发人员们正在致力于使这些网络构想成为现实,在不久将会给我们的生活带来很大的方便和很多新的体验。   

一、UPnP的概念

实现电脑、家电和其它电子产品的互联互通是人们长久以来的一个梦想,早在1999年,Microsoft就提出了通用即插即用UPnP技术的概念,UPnP就是实现这个梦想的核心架构。

通用即插即用UPnPUniversal Plug and Play)是用于计算机和智能设备对等网络连接而设计的体系结构。UPnP的目标是实现电脑、家电、移动设备等各类电子设备之间无缝连接,使这些设备彼此自动连接和协同工作,并实现与Internet的连接。UPnP得到超过600家主要公司的支持,这些公司分布于消费型电子产品、汽车电器、家庭自动化、计算机网络和外设等领域。

UPnP进一步提升了PnP的简化性,它将整个网络包括在内,实现了网络设备和服务的发现和控制,包含UPnP技术的网络产品只需连到网络上,即可开始正常工作。例如,支持UPnP功能的打印机,只需将打印机插入任何可用的网络端口中,都可以立即让网络中的所有设备使用该打印机,而不象目前一样在计算机上装载设备驱动程序、在网络中共享该打印机,然后前往网络中的其它计算机将它们连接到共享打印机。

二、UPnP技术特点

UPnP是一种分布式的、开放的网络架构,它充分发挥了包括IPTCPUDPHTTP XML在内的Internet组件和网络技术的功能。UPnP实际上是扩展了传统单机设备和计算机系统的概念,在零配置的前提下提供了连网设备之间的发现、接口声明和其他信息的交换等互动操作功能。使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。最后,此设备能自动顺利地切断网络连接,并且不会引起意想不到的问题。

UPnP架构中,没有设备驱动程序,取而代之的是通用协议。UPnP可以跨越各种操作系统平台,开发应用程序也没有开发语言的局限,可工作于各种形式的网络结构,并且以现有的网络设施为基础,仅仅加上这个UPnP协议,既不用添加新的设备,也不用重新架设网络介质就可以投入使用,可以实现许多现成的及新的令人兴奋的方案,包括家庭自动化、网络打印、图片处理、音视频娱乐、厨房设备、汽车网络和公共场所的类似网络,这正是Windows XP系统加入UPnP的原因。 

三、UPnP网络组件

UPnP网络组件的基本构成是控制点、设备和服务(图一)。

 

图一 UPnP网络组件

控制点是检索UPnP服务和发现控制其它设备的控制器。控制点软件通常运行在具备用户界面的设备上,比如PC、手机、PDA等。控制点除了有能力控制别的设备,还要具有在网络中发现控制目标的能力。控制点将操作发送到设备,并从服务中接收事件。

设备是一种容器对象,它可以是物理设备,也可以是逻辑设备,不同种类的UPnP设备将关联不同的设置、服务和嵌入设备,如打印机和DVD属于不同用途的设备,服务就不可能定义成一样的。非UPnP兼容的设备可通过专用的UPnP桥设备表现为UPnP兼容设备,因此也称为桥后设备。

设备执行请求的控制过程,可划分成一个个很小的单元,每个单元就称为一个服务。服务对外都表现为具体的行为和模式,而行为和模式又可以用状态和变量值进行描述。UPnP 设备中的服务由状态表、控制服务器和事件服务器组成。状态表可通过状态变量模拟服务状态并在状态变化后对它们进行更新;控制服务器负责接收操作请求、执行、更新状态表并返回响应信息;事件服务器负责每当服务状态改变时即将事件发布到感兴趣的预定者。 

四、UPnP协议集合

UPnP协议集合的定义者是UPnP论坛(Universal Plug and Play Forum)UPnP 论坛致力于在不同厂商的独立设备和计算机之间轻松建立强健的连接,开发描述设备协议和基于可扩展标记语言XMLeXtensible Markup Language)的设备模式的标准,以便在一个可伸缩的网络环境中实现设备间的互操作性。

UPnP协议集合定义了控制点以及设备之间的通信协议,UPnP 在标准的 Internet协议基础上定义了一组服务器来完成UPnP组网过程,TCP/IP协议及HTTP协议提供了基本的网络连接条件和所需的地址。UPnP协议集合是一个多层协议构成的框架体系,每一层都以相邻的下层为基础,同时又是相邻上层的基础。UPnP协议集合如图二所示。

 

图二 UPnP协议集合

和现有IP网络不同的是,UPnP网络拥有一系列独有的高层协议。HTTPU协议(基于UDPHTTP单播)HTTPMU协议(基于UDPHTTP多播)HTTP协议的变体,它们的基本格式沿袭了HTTP协议,定义它们是为了通过UDP/IP而不是TCP/IP发送信息。简单服务发现协议SSDPSimple Service Discovery Protocol)定义了控制点如何在网络上自动发现UPnP网络服务,以及UPnP设备如何自动向网络发布其所提供的服务信息。通用事件通知架构GENAGeneric Event Notification Architecture)定义了UPnP设备如何利用HTTPHTTPMU接收和发送事件通知。简单对象访问协议SOAPSimple Object Access Protocol)定义了如何使用XML语言和HTTP来执行远程过程调用。

UPnP协议集合中,UPnP厂商在逻辑上仅仅包含关于厂商设备的特定数据,如设备名称、型号、厂商信息以及有关对设备控制和操作的底层代码。UPnP 论坛设立了具体专业方面的工作委员会,这些工作委员会制定设备标准、构建范例实施和测试套件等。UPnP设备架构由UPnP论坛的各个工作委员会对不同的设备和服务类型进行了后续的标准化,并创建了各个设备或服务类型的模板。以上消息数据会被封装在UPnP特定协议中,通过SSDPGENASOAP来进行格式化,通过运行于UDP上的HTTPMUHTTPU,或是运行于TCP上的标准HTTP进行传输,最终,以上所有消息均通过IP协议进行传输。

UPnP基于现有IP标准和协议,而不是基于应用程序接口APIApplication Programming Interface),使得UPnP网络具有了自动化和智能化的特点,能够轻松地实现互操作性。尽管基于标准,但UPnP同时具有灵活性,并且可以满足当前和未来的网络设备需要。

五、UPnP组网过程

UPnP设备的组网过程包括六个步骤:寻址、发现、描述、控制、事件触发和展示。UPnP设备首先通过寻址来获得一个网络地址,寻址使控制点搜索到可用的设备(发现),然后控制点对设备功能进行了解(描述),随后控制点将命令发至设备(控制)和监听设备状态的变化(事件触发)、最后控制点显示设备的用户界面(展示)。

UPnP设备组网的六大步骤中,寻址、发现、描述这三个步骤是基础,解决了UPnP设备如何自动接入UPnP网络,如何自动发布UPnP服务的问题。控制、事件触发、展示这三个步骤则用来实现UPnP设备、服务和控制点之间的互操作。图三是简化的UPnP设备组网过程工作流程。

 

图三 UPnP组网工作流程 

UPnP组网的基础是TCP/IP 协议集,而该协议集的关键就是寻址。设备寻址的目的是获取标识其身份的地址,它是UPnP组网的基础。设备在接入网络时,如果网络中存在DHCP服务器,则使用动态分配的IP地址,否则通过自动IP寻址来获取地址。UPnP设备通过SSDP协议将其所提供的服务在网络中进行声明,这个声明可以被控制点监听到。同时,当控制点加入到网络中时,也通过SSDP协议寻找它所感兴趣的设备及服务。在控制点发现了设备后,需要更多的了解此设备及其能力,控制点必须从设备发现消息中提供的URL获取设备的具体描述。对于设备包含的每一种服务,设备描述都要列出其服务类型、名称、服务描述的URL以及用于控制和用于事件通知的URL。在获得了设备及其服务的描述信息后,控制点就能通过远程调用的方式使用设备中的服务所提供的功能,并通过查询报文得到状态变量值。设备和服务还具备事件通知能力,即设备和服务在状态变量改变时向控制点发布更新通知,而控制点也可以通过预订的方式接收此信息。如果设备有可用于展示的页面,那么控制点就将该页面载入浏览器中,根据页面的功能,允许用户控制该设备和查看设备状态,为实现展示页面,UPnP厂商可能希望使用UPnP机制来控制或触发事件,以充分利用设备现有的功能。

六、UPnP技术应用

1Internet网关

随着越来越多的家庭和中小型企业构建了内部局域网络,常常需要共享Internet连接而安装Internet网关,如宽带路由器、Windows Internet连接共享等。Internet网关通常使用网络地址转换NATNetwork Address Translation)作为连接到Internet的有效途径,NAT用于允许私有网络上的多台计算机共享单个、可全局路由的IPv4地址。但该方案会破坏多种网络应用程序,如当试图玩多方游戏、MSN视频聊天、IP电话、远程协助等实时通讯对等应用程序或其它某些应用程序时,却无法使用和连接,可能会在PC机看到无法连接的错误消息,或者在试图使用网络应用程序时,却出现故障。

NAT实际上是一台内部网络IP和公共IP的转换器,如果让客户机利用NAT来独享单个可全局路由的IP地址不会有什么问题,但当多个客户机共享IP地址时,由于某些应用程序必须使用公共IP地址,且每个会话都必须使用唯一的端口号,当内部网络边缘上有NAT设备时,NAT将通讯转发到内部网络的客户机上进行了端口转换,从而引起某些应用程序出现错误。

解决该问题最常见的办法是手动配置端口映射和应用层网关,使NAT设备定向将外部IP地址和端口的通讯转发给内部客户机所用的特定IP地址和端口。手动配置端口映射的过程通常比较复杂,要求较有经验的用户才能进行正确的配置,一般用户或小型企业用户却不具备这样的条件。手动配置该端口映射还会造成安全隐患,许多外部客户机都可以使用该映射来连接服务器。

为了解决此类问题,UPnP论坛有一个专门为Internet网关设备而设立的工作委员会。该委员会主要负责为NAT设备和防火墙设备制订UPnP支持规范,支持该规范的NAT和防火墙设备可以使用UPnP技术进行检测和控制,客户端程序可以使用UPnP协议读取和配置端口映射。

这时就看到UPnP的好处了,如果提供服务的应用程序、NAT都支持UPnP,那么只要启用NATUPnP功能(图四),依靠UPnP协议,那么端口映射的问题就是支持UPnPNAT设备和应用程序主动去协商完成了,而不需要人工干预,因为支持UPnP的设备和应用程序可以互相发现、协调,自动配置端口映射,并且在使用完服务以后,支持UPnPNAT设备会自动释放用过的端口,大大减少了配置的复杂程度。

阅读(3291) | 评论(0) | 转发(0) |
0

上一篇:UPnP协议编程实践(二)

下一篇:Schema心得

给主人留下些什么吧!~~