欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2023-11-09 20:16:40
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都畅行无阻,只是传输的速率要慢些;

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