Total Pageviews

Tuesday, 1 March 2016

UPnP

通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。
UPnP这个概念是从即插即用(Plug-and-play)派生而来的,即插即用是一种热拔插技术。
概述

UPnP体系允许 PC 间的点对点连接、网际互连和无线设备。它是一种基于TCP/IP、UDP和HTTP的分布式、开放体系。
UPnP使得任意两个设备能在LAN控制设备的管理下相互通信。其特性包括:
传输介质和设备独立。UPnP 技术可以应用在许多媒体上,包括电话线、电线(电力线通信PLC)、以太网、红外通讯技术(IrDA)、无线电(Wi-Fi,蓝牙)和Firewire(1394)。无需任务设备驱动;而是采用共同的协议。
用户界面(UI)控制。UPnP 技术使得设备厂商可以通过网页浏览器来控制设备并进行交互。
操作系统和程序语言独立。任何操作系统和程序语言均可以用于构建 UPnP产品。UPnP 并没有设定或限制运行于控制设备上的应用程序 API;OS厂商可以创建满 足他们客户需求的 API。UPnP使得厂商可以像开发常规应用程序一样来控制设备 UI 和交互。
基于因特网技术。UPnP 构建于 IP, TCP, UDP, HTTP,和 XML 等许多协议之上。
编程控制。UPnP 体系同时支持常规应用程序编程控制。
扩展性。每个 UPnP 设备都可以有构建于基本体系之上、与具体设备相关的服务。
UPnP 支持零配置,”看不见的网络” 和自动检测;任何设备能自动加入一个网络, 获取一个 IP 地址,宣布自己的名字,根据请求检查自身功能以及检测出其它设备 和它们的功能。DHCP 和 DNS 服务是可选的,并只有它们在网络上存在的时候才会 使用。设备可以自动离开网络而不会遗留下任何不需要的状态信息。
UPnP 的基础是 IP 地址解析。每一个设备都应当有一个 DHCP 客户端并在连入网 络的时候自动搜索 DHCP 服务。如果没有找到 DHCP 服务,也就是说网络是缺乏管 理状态,那么设备必须给自己设定一个地址。如果在和 DHCP 服务器交互的过程中, 设备获得了一个域名(比如通过 DNS 服务器或者 DNS 传递),那么它应当在接下 来的网络操作中使用这个域名;否则,设备应当使用它的 IP 地址。
协议

发现
给定一个IP地址,UPnP 网络中的第一步是发现。当一个设备被加入到网络中, UPnP检测协议允许该设备向控制点广播自己的服务。类似地,当一个控制点加入到 网络中的时候,它也能够搜索到网络中存在的、感兴趣的设备相关信息。这两种类 型的基础交互是一种仅包含少量、重要相关设备信息或者它的某个服务。比如,类 型、标识和指向更详细信息的链接。UPnP 检测协议是基于简单服务发现协议(SSDP)的。
描述
UPnP 网络的下一步是描述。当一个控制点检测到一个设备时,它对该设备仍然知之 甚少。为了使控制点了解更多关于该设备的信息或者和设备进行交互,控制点必须 从设备发出的检测信息中包含的 URL 获取更多的信息。某个设备的 UPnP 描述是 XML 的方式,包括品牌、厂商相关信息,如型号名和编号、序列号、厂商名、品牌 相关 URL 等。描述还包括一个嵌入式设备和服务列表,以及控制、事件传递和存 在相关的 URL。对于每种设备,描述还包括一个命令或动作列表,包括响应何种服 务,针对各种动作的参数;这些变量描述出运行时设备的状态信息,并通过它们的 数据类型、范围和事件来进行描述。
控制
UPnP 网络的下一步是控制。当一个控制点获取到设备描述信息之后,它就可以向该 设备发送指令了。为了实现此,控制点发送一个合适的控制消息至服务相关控制 URL(包含在设备描述中)。控制消息也是通过简单对象访问协议(SOAP)用 XML 来描 述的。类似函数调用,服务通过返回动作相关的值来回应控制消息。动作的效果, 如果有的话,会反应在用于刻画运行中服务的相关变量。
事件通知
下一步是事件通知。一个 UPnP 描述包括一组命令列表和刻画运行时状态信息的变 量。服务在这些变量改变的时候进行更新,控制点可以进行订阅以获取相关改变。 服务通过发送事件消息来发布更新。事件消息包括一个或多个状态信息变量以及它 们的当前数值。这些消息也是采用 XML 的格式,用通用事件通知体系(GENA)进行 格式化。一个特殊的初始化消息会在控制点第一次订阅的时候发送,它包括服务相 关的变量名及值。为了支持多个控制点并存的情形,事件通知被设计成对于所有的 控制点都平行通知。因此,所有的订阅者同等地收到所有事件通知。
存在
最后一步是存在。如果设备带有存在 URL,那么控制点可以通过它来获取设备存在 信息,即在浏览器中加载 URL,并允许用户来进行相关控制或查看操作。具体支持 哪些操作则是由存在页面和设备完成的。
NAT穿透
UPnP为NAT(网络地址转换)穿透带来了一个解决方案:Internet Gateway Device(IGD)协议。NAT穿透允许UPnP数据包在没有用户交互的情况下,无障碍的通过路由器或者防火墙,(假如那个路由器或者防火墙支持NAT)。
from https://zh.wikipedia.org/wiki/UPnP
-----------------------------------------------------------------------------------------------------

P2P端口映射UPnP功能和使用详解

在网上看了很多关于如何打开UPnP功能的文章,发现竟然没有一篇文章能把整个UPnP的设置过程介绍全的,都是只讲到一部分。所以决定写篇文章,至少把设置UPnP的整体思路理一下,因为涉及到不同的操作系统以及不同型号的ADSL Modem,所以此文也不可能面面俱到,但至少提供一个较为完整的思路。因水平有限,不到之处还请高手指点。

  一、UPnP的概念:

以下是微软官方网站对UPnP的解释:
问:什么是 UPnP?
答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如 TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。
问:UPnP 对消费者意味着什么?
答:简单、更多选择和更新颖的体验。包含通用即插即用技术的网络产品只需实际连到网络上,即可开始正常工作。实际上,UPnP 可以和任何网络媒体技术(有线或无线)协同使用。举例来说,这包括:Category 5 以太网电缆、Wi-Fi 或 802.11B 无线网络、IEEE 1394(“Firewire”)、电话线网络或电源线网络。当这些设备与 PC 互连时,用户即可充分利用各种具有创新性的服务和应用程序。
以下是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都畅行无阻,只是传输的速率要慢些;
说实话,本人平时也不常上网聊天,所以对这些聊天软件了解也不深.
from http://www.45it.com/www/200612/14195.htm