专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »p2p技术 » p2p网络终结者:NAT和P2P网络 »正文

p2p网络终结者:NAT和P2P网络

来源: 发布时间:星期三, 2008年12月17日 浏览:2次 评论:0
DAN KEGEL 原著 sunkinglang译
Peer-to-peer是种网络形式基于它网络中计算机可以直接沟通而不需要台中央服务器这种技术通常被应用在多玩家在线游戏例如Activision战网以避免处理服务器数据流所引起延迟和消耗但这种联网形式常常会碰到网络地址解析问题(NAT)本文中我将描述解决这些问题思路方法使用这种技术产品现在已经能在些商业性NAT中正确运行了

背景


互联网是基于32位IP地址这意味着互联网理论上最大电脑数目约为 4万亿由于IP地址使用方式无效性实际数量会少得多实际上互联网过不了多久就会将IP地址用完

可用IP地址越来越少种被称为网络地址解析或箭称NAT技术被开发出来它允许以个IP地址来代表整个网络电脑

个NAT处在公用互联网和它所服务网络的间重写数据中IP头部IP地址和端口号以使所有包看上去都象从个NAT设备公用IP地址发来(或到它去)而不是发自(往)实际源或者目标

NAT如今已经在小型家庭-办公室路由被普遍租用,也在很多软件Software中被用户使用以连接几台PC到个唯电缆MODEM它甚至被些ISP使用

(NAT不是唯可能解决办法代理服务器也被普遍使用但需要更多配置有时还需要要定制客户端软件Software而最终我们都将转换到IPv6它将使用128位地址可以解决已有及所有问题但那将在很久后才会普及

某些协议是非NAT友好


些应用将IP和端口号隐藏在它们数据包中发送NAT不能正确重写它们所以当你想在NAT网络内使用那些它们将不会正确运行

些NAT由于安全原因只允许从已经发送过数据去外部地址接收数据这意味着处于区别NAT后两个人不能以通常方式建立连接

解决办法


希望NAT友好Peer-to-peer(点对点)协议必须明确:其所嵌入数据包任何地址在通过NAT时都可能变得无效因此需要补救个可行思路方法如下:

两点的间所有数据流都通过个单UDP端口存在着个不处于任何NAT的后地址服务器用户首先和地址服务器连接并发送他们认为拥有IP地址;服务器标记该地址和它在UDP头部所看到地址然后服务器将两个地址都送往其它点这样所有人都知道其它人地址

为打开点对点连接所有旧(结)点发送个UDP包到新(结)点且新(结)点发送个UDP包到每个老(结)点无人知道开始它们是否处于同个NAT的后个包往往被同时送往公有和私有地址

这导致每个人NAT为UDP数据流通过打开个双向旦第个响应从每个(结)点返回发送者就知道使用哪个返回地址并能停止向两个地址发送数据

兼容性需求


基于和超越基本NAT RFC个想支持这个技术NAT设备必须有以下要求属性:

>>NAT不允许改变被数据流使用UDP端口号
如果个处于NAT的后主机从个单UDP口发送了系列被NAT接棒后包也必须表现为来自同主机和UDP口

RFC蓝图


我正在拟订这项技术RFC蓝图更为详细细节如果你感兴趣请和我联系

兼容性测试结果


我正在测试实现几个NAT通讯兼容性这里是部分结果:

已知NAT实现兼容性


>>NAT1000:完全兼容感谢Nevod技术人员早期所帮助做兼容性测试无任何东西需要改变;这项技术和他们NAT起运行很稳定Nevod已经不再存在了它已被微软兼并
>>Win98 SE包含网络联接共享软件Software起源于NAT1000所以定运行良好
>>SYGATE:完全兼容
>>NAT32:1999年1月5号公布BETA测试版完全兼容现在公布版本也应该完全兼容
>>LINUX IP Masquerading(LINUX IP伪装):2.2.1版本内核和后续版本可以正常运行请到http://juanjox.linuxhq.com/?寻找早期2.1版本补丁2.0版本补丁见Glenn Lamb页面:http://home.indyramp.com/lists/masq/msg03024.html:
ftp://ftp.netcom.com/pub/mu/mumford/loose-udp-2.0.36.patch.gz;
Glenn端口使的拥有个配置时选项CONFIG_IP_MASQ_LOOSE_UDP这是个很好举措
>>WinNAT:当前版本工作正常

NAT实现即将可兼容


>>Arescom Apex 1100 ISDN路由:Arescom在1999年1月针对此问题发布了个固件补丁;也许现在已经并入其标准固件里了,但我还没有证实
>>Vicomsoft Softrouter Plus:Vicom曾公布过个版本以解决这个问题但我还没有机会来测试注意:为使这个实现正常运行你必须把网关设备上除指向内部以太适配器外所有本地TCP绑定禁止在使用Vicom安装助手的前请阅读其文档

未知是否兼容


>>Cisco IOS有内置NAT兼容特性也许有用也许不然
>>我们已经测试了我们手上所有能得到WIN32软件Software但还没有测试嵌入到许多小型家庭办公路由中NAT也没有测试外置NAT如SonicWall等

不兼容


>>所有纯代理服务器解决办法如WINGATE2或者PPPShar都不能正常运行

使用这项技术软件Software


以下软件Software包是已知支持在NAT后操作:
>>Civilization: Call To Power
>>Heavy Gear 2

讨论区


我想听到其它开发者对于这项技术想法以及Masq如何被重写以正确复用UDP端口加入NAT-peer-games(http://onelist.com/viewarchive.cgi?listname=nat-peer-games)邮件列表让我们起讨论

实施问题


在测试SYGATE和近期NAT1000版本时我遇到些实施方面问题当运行网关机器是通过MODEM和INTERNET联接话所有切均正常但如果网关机器是通过以太网和INTERNET联接客户端不能访问那个外部以太网上其它主机看上去就象那台网关送出来包完全被外部以太网上其它主机丢弃了然而路由器不会丢弃数据所以和远程主机联接没有问题想了解更多信息请到my Usenet post(http://www.dejas.com/getdoc.xp?AN=427631763)获取

我倾向于相信这是硬件原因但谁知道呢...

链接

>>IETF Working Group _disibledevent="#000080">http://www.kegel.com/



相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: