注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

分享,态度 ·~~

—— 十年太长,五年;如果可以回到五年前,你最想对那时候的自己说什么?

 
 
 

日志

 
 

UPnP:自动化网路设定  

2010-12-11 14:31:06|  分类: DLNA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

[摘:讲到网路自动化设定首先想到就是DHCP,但是DHCP 只是能提供网路位址自动设定,其他设定还是要自己来。因此为了要达到免一切免设定的理想,微软提出了UPnP 的构想,UPnP 并不是取代DHCP,而是延伸DHCP。]

蔡孟甫 曹世强 林盈达
国立交通大学资讯科学系
新竹市大学路 1001 号
TEL:(03)5712121 EXT. 56667
E-MAIL:mftsai@cis.nctu.edu.twweafon@cis.nctu.edu.twydlin@cis.nctu.edu.tw

摘要

        讲到网路自动化设定首先想到就是DHCP,但是DHCP 只是能提供网路位址自动设定,其他设定还是要自己来。因此为了要达到免一切免设定的理想,微软提出了UPnP 的构想,UPnP 并不是取代DHCP,而是延伸DHCP。 UPnP 能让所有UPnP装置只要一接上网路,马上便能使用,一切都不需要设定,而且这些装置之间彼此能发现彼此的存在,进而互相沟通,最后的终极目标就是能连结、控制各种装置且一切都不用设定。 UPnP 是使用现有的标准通讯协定,因此能轻易相容于目前网路,也跟使用平台无关了。当有了UPnP 后,如果闸道器的产品支援UPnP,那我们似乎可以利用UPnP 解决许多目前NAT 的问题,因此微软提出了一组有趣的API:NAT Traversal,搭配UPnP 闸道器解决了目前NAT大部分的问题。在文章最后,我们会看看目前有哪些UPnP 产品,并归纳出一些结论。
关键字:UPnP,NAT Traversal

1.简介 UPnP

1.1什么是UPnP
        UPnP 全名是Universal Plug and Play,主要是微软在推行的一个标准。简单的来说,UPnP 最大的愿景就是希望任何设备(注意,是"任何设备",像是电视,电脑,音响,冰箱,闹钟,电灯….等)只要一接上网路,所有在网路上的设备马上就能知道有新设备加入,这些设备彼此之间能互相沟通,更能直接使用或控制它,一切都不需要设定,完全的Plug an Play。
举个例子来说:
        以前如果家中买了一台印表机,当你想要让这台印表机家中的电脑都能用的时候,你需要先安装印表机,然后需要设定印表机共享,然后在去其他台电脑安装这台网路共享印表机,是不是很麻烦?如果你有10台电脑,想想看每台都要去设定的话,是不是很恐怖呢。现在,有了UPnP 后,只要你家的电脑跟印表机都支援UPnP,当你一将新买的印表机接上去的时候,所有在网路上的电脑都会发现有一台印表机可用,一切的设定都不需要,马上就能直接用了,完全Plug and Play!听起来是不是很棒,这就是UPnP 希望打造的环境,让一切简化,提升我们的生活品质,因此UPnP 主要的诉求是打造"家庭网路(Home Network)"的设定自动化。

1.2 UPnP基本组件
        UPnP 听起来很神奇,在了解他是怎么运作前,先看看UPnP 基本组件,UPnP 基本组件有装置(Device),服务(Service)与控制点(Control Point)。图1 是这三个基本组件之间的关系,有些彼此之间会是巢状关系。

        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
服务(Service):
        服务是UPnP 中最小的控制单位,服务提供操作动作还有一组状态变数记录目前此服务的情况,例如一图1 个时间服务可能包含一个状态变数:目前时间,然后有两个操作动作:设定时间,取得时间。
装置(Device):
        UPnP 的装置是包含服务的设备,例如一台印表机有提供列印这样服务,一台电视有提供收讯的服务,这些设备都属于装置。
控制点(Control Point):
        控制点可以控制UPnP 网路上的找到的装置,控制点主要做的事情有:
? 取得装置描述与取得相关服务列表
? 取得有兴趣的服务的服务描述
? 传送动作讯息来控制服务
? 向有兴趣的服务坐订阅的动作,每当订阅的服务的状态变数改变时,会送回一个事件讯息
 
1.3 UPnP的协定堆叠
        图2 是UPnP 使用到的协定堆叠,为了相容于目前的网路通讯协定,UPnP 使用许多已经成为标准的通讯协定,因此UPnP 能很轻易的相容于目前的网路世界,而且因为是采用标准通讯协定,所以UPnP 是能轻易跨平台的。除了TCP,UDP,IP,HTTP 这些耳熟能想的外,我们简介一下其他是在做什么用的:
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
HTTPU/HTTPMU:
        HTTPU/HTTPMU只是HTTP的延伸而已,定义使用UDP/IP 来传送讯息而不是用TCP/IP,这个通讯协定会被SSDP 所使用。
SSDP:
        简单服务发现协定(Simple Service Discovery Protocol:SSDP)是内建在HTTPU/HTTPMU 里,定义如何让网路上有的服务被发现的协定。包括控制点如何发现现在网路上有哪些服务,并取得这些服务的资讯,还有装置本身宣告他提供能些服务。
GENA:
        一般事件通知架构(Generic Event Notification Architecture:GENA)是用来处理如何传送订阅讯息并如何接收通知讯息用的。
SOAP:
        简易物件存取协定(Simple Object Access Protocol:SOAP)定义如何使用XML 与HTTP 来执行远端程序呼叫(Remote Procedure Call)
 
1.4 UPnP如何运作
        稍微了解有哪些通讯协定后,我们来看UPnP 是如何运作的。图3 是UPnP的运作流程,我们先简介各部分在做什么,之后在详细介绍:
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
0. 控制点跟装置都先需取得IP 位址才能作之后的沟通
1. 控制点寻找整个网路上的UPnP 装置,而装置要宣告他本身的存在
2. 控制点取得装置的描述,这包括装置提供什么功能
3. 控制点发出动作讯息给装置
4. 控制点监听装置的状态,当状态改变时做出对应处理动作
5. 控制点利用HTML 介面控制装置并监看装置状态
定址(Addressing):
        这是UPnP 最基本的一步,在网路上的装置想彼此沟通都需要有网路位址,UPnP 也不例外。 UPnP 装置会先看是否有DHCP 伺服器存在,如果有,就直利用图3DHCP 取得IP 位址,如果没有,就使用自动IP 设定(Auto IP)*。如果使用自动IP 设定,UPnP 装置还是会持续监看是不是网路上有DHCP 伺服器出现,如果有就会改用DHCP。
发现(Discovery):
        当定址完后,就要进行这一步了,这边可以分为两个角度来看:
?   控制点加入网路:
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        (图4)当控制点加入网路时,可以传送搜寻有兴这类趣的装置类别讯息,当属于这类别的装置收到时,会回传一个讯息。
?   装置加入网路:
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        (图5)当装置加入网路时,会送出一个通知讯息,告知网路上的控制点他的存在。
        以上传送讯息皆是使用SSDP 透过HTTP/HTTPMU 来完成的,传送的讯息内容包括本身的类别,辨识码,还有自己本身的XML 描述文件位址…等。
描述(Description):
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        (图6)当控制点知道有装置在网路上后,控制点对装置的了解非常少,为了了解装置的功能和跟装置互动,控制点利用在发现步骤中得到的装置XML 位址,取得描述装置的XML文件。这份XML文件包含的资讯有装置名称、序号、制造厂商,这个装置提供的动作与状态变数,还有一个控制此装置的URL 网址(许多UPnP 装置都内建HTTP Server)…等。
控制(Control):
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        (图7)当有了装置的详细资料后,控制点就能知道怎么控制装置了,控制点首先先传送一个动作讯息,这个讯息也是使用XML,然后利用SOAP 传送。当装置收到讯息后,会产生动作并改变对应的状态变数,然后将改变的状态变数传回,如果失败就会传回一个错误码
事件(Event):
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        (图8)控制点可以对有兴趣的装置的状态变数做订阅的动作,当装置上的状态变数改变时,会发出一个事件讯息,此事件讯息也是使用XML,然后利用GENA 传送。图八是一个 PDA、PC与电视互动的例子。
呈现(Presentation):
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        (图9)如果装置致有提供呈现资讯的页面网址,则控制点可以直接利用浏览器直接浏览控制网页,从控制网页中可以知道目前状态变数,也能直接从控制网页控制装置。
        以上就是UPnP 整个的运作过程,在了解怎么运作后,我们来看看使用UPnP 有什么好处。
 
1.5 UPnP的好处:
        之前提到的方便都是对使用者而言,那对厂商而言,发展UPnP 产品有什么好处? 好处如下:
1.    整个UPnP 使用到的通讯协定堆叠再加上嵌入式HTTP 伺服器,整个档案很小,再加上现有免费OS 可以全部塞到一颗ROM 里面,而且因为都是标准协定,所以使用UPnP 不需要权利金。
2.    厂商不需要发展软体,因为控制装置都可以透过浏览器,发展、维护客户端应用程式的成本可以省下来,而因为使用标准HTTP 协定,保证跨平台,而且因为使用HTTP 控制,对于远端控制装置更是如鱼得水。
3.    因为一切设定自动化,顾客更愿意购买,没有那个顾客喜欢需要设定繁杂的设备,也因为一切自动化,可以节省许多客户支援的部分
        以上就是对于UPnP 的一个基本介绍,在了解UPnP 后,我们要来看看UPnP 的一组有趣API:NAT Traversal
 
2. NAT Traversal
        由于IP 位址的不足,NAT(Network Address Translation)被广泛的使用,然而NAT 遭遇许多问题,在微软提出UPnP 时,也提出了一套API 搭配UPnP 来解决NAT 的问题,让我们来看看这套有趣的API:NAT Traversal 解决哪些问题

2.1 NAT 目前遭遇的问题
         在了解NAT Traversal 解决哪些问题之前,我们先来看看NAT 遭遇哪些主要问题,在介绍这些问题前,我们假设读者已对NAT 有所认识:
?    在NAT下提供网际网路服务
         当在NAT 下提供网际网路服务时,最大的问题就是NAT 伺服器需设定连接埠对应(port-mapping),否则网际网路上的电脑无法与提供服务的主机连线。然而,设定连接埠对应需要手动设定,这点造成非常大的困扰,如果NAT下有几百台电脑,那设定、修改连接埠对应可不是件容易的事。
?    嵌入式IP位址
         许多应用程式会假设客户端是使用真实IP,在传送资料到伺服器时,会将IP 嵌入到应用程式封包表头,当伺服器收到后直接以表头内的IP 位址回传资讯,如果客户端在NAT 下,由于私有IP(Private IP)无法透过网际网路传送,因此会造成伺服器端无法回传资料到客户端的情形。
?    应用程式使用不同连接埠传送
         有些网路应用程式使用连接埠x传送资料,但是预期用连接埠y 接收资料,NAT 伺服器看到从x 连接埠流出封包,因此替x 作port-mapping,但却不知道是要用连接埠y 接受封包,因此会把流向连接埠y 的封包丢弃。
 
2.2 NAT Traversal 的解决方案
        在有了UPnP 后,如果我们的闸道器有支援UPnP(微软对支援UPnP 的闸道器统称IGD:Internet Gateway Device),那我们想想,既然UPnP 可以让我们知道装置资讯,设定状态变数,那我们不就能利用这些资讯来知道我们是不是在NAT 下,进而自己设定连接埠对应这类动作来解决一些NAT 的问题,因此,微软体出了NAT Traversal 这套API,NAT Traversal 可以:
?    确认 NAT 是否存在
?    从他处(例如闸道器)取得IP 位址
?    取得静态连接埠的对应资讯
?    加入静态连接埠的资讯,除非之前已经设定了外部连接埠
?    在不删除连接埠的情形下,启用或停用该连接埠
?    为静态连接埠设定一个名称
?    删除静态连接埠的对应资料
?    从区域网路上取得静态连接埠的清单
        有了这套API 后,我们可以知道,设定连接埠对应这件事完全可以由应用程式自动化完成了,应用程式可以自己指定他所需的连接埠对应资讯。因此,许多NAT 衍生的问题都能透过NAT Traversal 解决了。
        虽然NAT Traversal 听起来很吸引人,但是有几点我们要注意一下:
1.    管理连接埠对应的责任落到应用程式身上,闸道器只是负责"支援"而已。
因此如果闸道器不支援UPnP,NAT Traversal 也无用武之地。也因为责任在应用程式身上,所以连接埠设定冲突的情况要由应用程式负责。
2.    UPnP 只能让IGD,以不限时的方式,开启连接埠。这表示路由器无法控制连接埠的开启时间,也表示IGD 没有聪明到可以侦测「僵尸」连接埠,也就是应用程式若不正常终止,它所开启的连接埠会一直开启,不会关闭。如果使用UPnP NAT Transversal 功能的应用程式当掉,其连接埠将会保持开启状态,直到下一次执行该应用程式,再正常结束为止。
3.    是否有潜在安全性问题?木马类程式如果再加上NAT Traversal,这样的威?似乎很惊人…但是微软对于NAT Traversal 的安全性并没有提出说明。
        扣除安全性的部分外,NAT Traversal 搭配IGD 似乎太棒了!闸道器厂商再也不需要说它支援哪些软体了,闸道器厂商的产品只要符合IGD 规格,后续责任就在软体身上了,如果软体也使用NAT Traversal,那大部分的NAT 问题都解决了。
        表一列出想要享受NAT Traversal 带来的方便需要改变的部分:
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~
 
 3.UPnP产品一览
        UPnP 协会提出了几种分类,并对每种分类制订规格,表二列出了分类项目与每种分类的产品:
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        接着我们来看看通过每个类别通过UPnP 认证的产品数有多少,表三列出了从 UPnP 协会网站得到的资料数据。
        UPnP:自动化网路设定 - 乂乂 - 一个人,一支烟  ·~~ 
        根据这份产品数量列表,很明显的,目前厂商比较有兴趣的部分还是在闸道器的部分,其他部分似乎没有厂商投入太大的心力,不过根据笔者调查,在"NETWORLD+INTEROP 2002 TOKYO"的展览会上,飞利浦有展示UPnP 的音响试作机,理光也有支援UPnP 的扫描器展示机,相信再过不久应该会出现许多UPnP的产品。

4.结论
        UPnP 看起来的确是很棒,但是似乎没有看到微软对于UPnP 有多大的宣传,从UPnP 协会成?至今(1999-2003),UPnP 的推广似乎不是那么的成功,或许是因为其他家电类厂商认为现家庭网路还没有那么的普及吧,因此才没有投入太多心力。不过笔者个人认为UPnP 的构想很好,如果再将安全性的问题补足,等家庭网路更普便后,应该会大放异彩。

5.参考资料
[1].UPnP Forum, http://www.upnp.org
[2].Implementers Corp. (UIC), http://www.upnp-ic.org/
[3].Universal Plug and Play in Windows XP,http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/winxppro/evaluate/upnpxp.asp
[4].Overview of Network Address Translation (NAT) in Windows XP,http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/winxppro/deploy/nattrnsv.asp
【译:Kenny.z http://zwkufo.blog.163.com
  评论这张
 
阅读(2010)| 评论(3)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017