博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

UPNP

Posted on 2016-04-01 12:43  bw_0927  阅读(604)  评论(0)    收藏  举报

http://www.wangqi.com/html/2006-12/8998.htm

 

 一、UPnP的概念:

    以下是微软官方网站对UPnP的解释:

    问:什么是 UPnP?

    答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如 TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。

 

 以下是BC官方网站对UPnP的解释:

    UPnP(Universal Plug and Play),通用即插即用,是一组协议的统称,不能简单理解为UPnP=“自动端口映射”。在BitComet下载中,UPnP包含了2层意思:

    1、对于一台内网电脑,BitComet的UPnP功能可以使网关或路由器的NAT模块做自动端口映射,将BitComet监听的端口从网关或路由器映射到内网电脑上。

    2、网关或路由器的网络防火墙模块开始对Internet上其他电脑开放这个端口。

    我倒是觉得微软的解释过于理论化,适合写入牛津大词典;而BC官方网站的解释过于含蓄晦涩。其实对于一般的使用者来讲,简单的把UPnP理解为自动端口映射就可以了。它就是一种基于TCP/IP协议的,针对设备彼此间的通讯而制订的新的Internet协议,目的就是希望未来所有联入Internet中的设备能够不受网关阻碍的相互通信。

 

二、哪些用户需要用UPnP功能?

    1、只有在需要使用一些支持UPnP功能的P2P软件的时候,如BT、电骡eMule、MSN等,我们才需要考虑UPnP这个东东。如果你根本就不用这些软件,仅仅是上网浏览的话,下文就没必要看了;

    2、如果你需要使用这些P2P软件,但你是外网用户,那么下文也可以不看了,因为你不需要做什么UPnP就可以正常使用这些P2P软件了;

    3、如果你是内网用户,但你已经手动为这些P2P软件进行了端口映射,如在使用BC下载时,在“用户列表”中已经看到“远程”,或者是使用电骡eMule连接服务器成功后,已经显示为高ID,那么下文也可以不看了。

    但需要注意的是,手动做的端口映射只是针对某个P2P软件起作用,如果再使用新的P2P软件的话,仍然需要针对新的P2P软件做相应的端口映射才可以;

    4、如果你是内网用户,需要使用这些P2P软件,而且并未进行手动端口映射,比如在使用BC进行下载时,“用户列表”中只有“本地”而没有“远程”,在使用电骡eMule的时候,显示的也是低ID,那么此时我们才需要考虑端口映射的问题!

    这时我们可以有两种选择:

    1、进行手动端口映射。

    2、打开UPnP功能,进行自动端口映射,也就是我们下面所讲的内容;

 

小结:UPnP自动端口映射的目的:

    以BC为例,手动端口映射和自动UPnP端口映射都是为了获得远程连接,因此凡是在“用户列表”里看见了“远程”的用户,都不需要进行端口映射或是UPnP!UPnP和端口映射只需要取其一,他们相当于达到目的的2种不同的方法而已

    因此如果你的系统或者硬件不支持UPnP功能,大可不必伤心,按照第3点的链接文章中的方法手动做端口映射就可以了,效果是一样的

三、实现UPnP必须满足哪些条件:

    必须同时满足3个条件:

    1、Modem必须支持UPnP功能:是否具备此功能可查阅说明书或者直接咨询厂家。一般来讲,Modem还必须同时支持路由功能,除非你配备了单独的路由器;

    2、操作系统的支持:文章开头提到的那篇介绍UPnP的文章中,提到只有windows xp系统才支持UPnP功能,但微软的官方网站声称从Windows Me开始就已经支持UPnP功能了。但Windows Me这个操作系统我也没有用过,大家可以自行测试;

    3、软件必须支持UPnP功能:如BC、电骡eMule、MSN等软件都支持UPnP功能;

    顺便提一下,目前的几款视讯聊天软件各有其特殊性,象Netmeeting、QQ等就不支持UPnP功能,文章的最后会详细阐述一下这几款视频聊天软件的特殊性,此处不深入探讨,一笔带过;

    注意:以上3个条件必须同时满足,缺一不可,否则你只能考虑进行手动端口映射了

    四、如何打开UPnP功能

    如果已经满足了上述的3个条件,那么我们就一步一步的讲解一下到底如何才能打开UPnP功能;

    1、在Modem中打开UPnP功能。

    不同型号的Modem设置界面和方法略有不同,如有些是在下拉菜单中选择Enable,但基本的原理都是一样的;

    有些文章提到,此时要把所有桥接的eoa连接都删除掉,我倒是认为大可不必如此。因为目前只有你的PPPOE连接是有效的,其它的几个eoa所对应的 VPI和VCI根本就是无效的,所以没有必要删除。但是否有些型号的Modem会比较特殊也很难讲,因此建议此时暂不删除,把全部设置进行完后,如果还是没有打开UPnP,再尝试把eoa删除掉;

    当然,设置完后,一定要保存并重启Modem;

    2、在操作系统中打开UPnP功能:

    如果你使用的是XP SP2系统,则首先进入:控制面板->添加或删除程序->添加/删除windows组件中,在“网络服务”中勾选“UPnP用户界面”。

    确定后,系统会自动安装相应的组件,可能会提示你插入安装光盘,总之按照提示操作完成即可;

    接着打开Windows自带的防火墙,在“例外”选项卡中勾选“UPnP框架”。

    其实有个更加简单的方法可以同时完成以上两步:双击桌面上的网上邻居(注意是鼠标左键双击,不是右键查看属性),然后点击“显示联网的UPnP设备的图标”,系统会自动安装UPnP组件以及在防火墙中打开UPnP框架,实际上就是一次性完成上面两步的工作;

    如果你使用的是XP SP1系统,那么在“windows组件”中显示的是“通用即插即用”,而不是“UPnP用户界面”,选择此项即可。

    而且XP SP1系统的防火墙并没有UPnP框架的选项,需要手动进行端口添加,另一教程对此做了阐述,现引用过来:

    「请在防火墙设置中,点“高级”,然后自行添加如下两个端口:TCP端口类型,端口号为:2869,UDP端口类型,端口号为:1900 .由于你使用了NAT网关,所以你应该设置的是您连接到该网关的网卡的防火墙。而且网关内部均为内网,所以开启这两个端口,不会对系统造成安全隐患(除非你的NAT网关被绕过,否则外部连接无法检测到该端口)。」

 

 以上的防火墙设置只是针对windows自带的防火墙,如果你安装了其它的防火墙,必须在该防火墙中打开UPnP框架;

    3、在windows中打开相应的UPnP服务:

    进入“控制面板->管理工具->服务”,找到SSDP Discovery Service和Universal Plug and Play Device Host两项服务。

    右击相应的服务项,选择属性,启动这两项服务。

    做完以上工作后,如果操作正确,我们就可以在“网络连接”中看到多了一项网关,这表明添加UPnP已经成功;

    4、打开P2P软件中的UPnP功能:

    以BC和电骡eMule为例,相应的设置选项。

    到此为止,我们打开UPnP的工作才真正结束。

    以BC为例,成功添加UPnP功能后,在“全局日志”中我们会看到类似下面的几行:

    Windows XP UPnP Status: Found WAN Connection Device[Linksys Inc.] [http://www.linksys.com/] Windows XP UPnP Status: WAN IP: 218.30.*.* Windows XP UPnP Status: Port Mapping Existed!

    此时我们用BC进行下载,如果用户列表中有“远程”,或者用电骡eMule连接服务器后显示为高ID,那么就大功告成了!

    五、对几款视频聊天软件的简单对比说明:

    目前常用的视频聊天软件主要有MSN、Netmeeting和QQ等,这3款软件中只有MSN支持UPnP功能,而且发现在MSN的选项中并没有设置 UPnP功能的选项,也就是说MSN始终是默认打开UPnP功能的。

    另外,MSN似乎也没有象BC或者电骡eMule那样提供可以手动进行端口映射的端口号,因此只要没有打开UPnP功能,MSN的功能就会受限,比如不能进行语音通信等;

    而Netmeeting虽然不支持UPnP功能,但是却提供了可以进行手动进行端口映射的端口号,如果你是内网用户,只要手动进行1503和1720两个端口的映射即可正常使用所有音视频功能;

    QQ是用UDP的方式,通过UDP服务器来实现音视频以及文件的传输,跟UPnP没有什么关系,所以无论内网还是外网,使用QQ都畅行无阻,只是传输的速率要慢些;

    说实话,本人平时也不常上网聊天,所以对这些聊天软件了解也不深,如果有说得不对的地方,欢迎高手指点。

 

==============

http://itbbs.pconline.com.cn/network/12473184.html

UPNP解释成:对于一台内网电脑,BitComet的UPnP功能可以使网关或路由器的NAT模块做自动端口映射,将BitComet监听的端口从网关或路由器映射到内网电脑上。

然后网关或路由器的网络防火墙模块开始对Internet上其他电脑开放这个端口

 

NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。

然后,这些程序将获得共享的全球可路由IP地址,并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。

NAT穿越技术允许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信。


换句话说,概括成:因为简单NAT转换效率是不高的,若启动UPNP技术,可以提高NAT数据转换效率。

 

听起来好像是一件很好的事情。但是呢???


UPNP存在严重缺点:以下是截过来的。


第一个缺陷是对缓冲区(Buffer)的使用没有进行检查和限制。外部的攻击者,可以通过这里取得整个系统的控制特权!由于UPnp功能必须使用计算机的端口来进行工作,取得控制权的攻击者,还有可能利用这些端口,达到攻击者的目的。这个缺陷导致的后果很严重,不论那个版本的windows 系统,只要运行UPnP,就都存在这个危险!但严格地说,这并不完全是UPnP技术本身的问题,更多的是程序设计的疏忽。


  第二个缺陷就与UPnP的工作机理有关系了。该缺陷存在于UPnP工作时的“设备发现”阶段。发现设备可以分为两种情况:如果某个具备UPnP功能的计算机引导成功并连接到网络上,就会立刻向网络发出“广播”,向网络上的UPnP设备通知自己已经准备就绪,在程序设计这一级别上看,该广播内容就是一个M-SEARCH(消息)指示。该广播将被“声音所及”范围之内的所有设备所“听到”。并向该计算机反馈自己的有关信息,以备随后进行控制之用。


  相类似,如果某个设备刚刚连接到网络上,也会向网络发出“通知”,表示自己准备就绪,可以接受来自网络的控制,在程序设计这一级别上看,该通知就是一个NOTIFY(消息)指示。也将被“声音所及”范围之内的所有计算机接受。计算机将 “感知”该设备已经向自己“报到”。

实际上,NOTIFY(消息)指示也不是单单发送给计算机听的,别的网络设备也可以听到。就是在上述的一播一听之间,出现了问题!


  如果某个黑客向某个用户系统发送一个NOTIFY(消息)指示,该用户系统就会收到这个NOTIFY(消息)指示并在其指示下,连接到一个特定服务器上,接着向相应的服务器请求下载服务―――下载将要执行的服务内容。

服务器当然会响应这个请求。UPnP服务系统将解释这个设备的描述部分,请求发送更多的文件,服务器又需要响应这些请求。这样,就构成一个“请求――响应”的循环,大量占用系统资源,造成UPnP系统服务速度变慢甚至停止。

所以,这个缺陷将导致“拒绝服务”攻击成为可能!


其实换句话说:UPNP功能在使用阶段是不断耗费自身的网络资源,当设备网络资源耗尽的时候就会出现假死现象。看上面那段资料就知道了。

 

UPNU可以理解成端口映射,将内网的电脑暴露在公网上,对于BT和其它软件有很好的加速作用!