0引言集中式NAT穿透具有单点失效的弱点,主要是由于中央服务器的负载和处理能力,遭受DDOS攻击(天网Maze就遇到过,网络状况,局域网属性(节点对外不可见等因素导致的。在P2P系统中,一些节点完全可以取代中央服务器完成局部节点的穿透,但是PunchingHole服务的节点随时可能下线,需要及时地动态再选举。ScaleFree网络的度分布呈现负幂次,故也被称为幂律网络,Scalefree网络具有良好的随机节点失效的容错性能,节点随机失效对整体连通度影响不大。本文结合上述思想构建了PowerTraverse(PT系统,一种在完全P2P环境下实现NAT穿透的构架。1PT系统整体框架PT中每个Peer都被赋予了主动者、被动者和帮助者3个角色。(1主动者,它是发起建立一个穿透通道的对象,主要功能是接受本地用户的穿透请求,然后申请PT构建一个到具有上层客户所指定用户ID的Peer的穿透通道。主要动作有到帮助者上查找相应ID的传输地址,初始化通道的标识,运行主动端穿透状态机。(2被动者,它是响应并执行一个穿透通道请求的对象,主要功能是接受网络上对本Peer的穿透请求,然后根据解析数据包中的具体信息,构建一个相应的穿透通道的终端。主要动作是解析主动端和帮助者的数据包,分析,然后建立穿透通道终端,运行被动端穿透状态机。(3帮助者,它主要有两个职能,一个是接受任何其它Peer注册在其上的注册服务,它又包括一个心跳服务器模块,主要判断注册在本Peer的其它Peer是否已经掉线;另一个是完成每一对需要互相间穿透的Peer间的punchinghole协议的通信转发[4]。针对每一对Peer的穿透,帮助者都建立一个relay对象,负责那对Peer的中转服务,这主要是因为在UDP通信下,任何两个Peer间的通信都很容易丢失,重传需要在主动者和帮助者以及帮助者和被动者间频繁出现,维护一个relay对象主要是为了重传的状态考虑,而不仅仅涉及到协议消息的转发,此relay对象运行穿透帮助状态机。另外,PT还有两个重要的通用模块,它们主要是起协助穿透的作用[5]:在每一个Peer,都有一个注册者模块,它定期向某一个Peer发起注册请求,向该Peer报告自己的在线状态;一收稿日期:2007-09-22E-mail:leik@szpku.edu.cn基金项目:深圳市科技计划基金项目(QK200605;深圳市南山区科技计划基金项目(K2006084。作者简介:雷凯(1976-,男,湖南长沙人,硕士,讲师,研究方向为网络通讯、互联网搜索引擎、P2P技术;梁冰(1981-,男,硕士研究生,研究方向为计算机网络。基于UDP打洞的纯P2P模式的网穿透构架与算法雷凯,梁冰(北京大学深圳研究生院,广东深圳518055摘要:基于UDP打洞的NAT穿越技术一般需要架设专用中央服务器[1],该方法在扩展性、可靠性、灵活性和性能上都存在局限性。通过对天网Maze[2]P2P节点的网络属性分析,动态选举合适节点替代专用服务器来完成节点在不同内网之间的穿透,形成一种可扩展网络[3]。从而提出了在纯P2P模式解决NAT穿越的构架,增强了系统的健壮性和失效调节能力。关键词:内网穿透;UDP打洞;纯对等网络;可扩展网络;幂数分布中图法分类号:TP393.02文献标识码:A文章编号:1000-7024(200818-4644-04NATtraversearchitecturebasedonUDPpunchingholeinpureP2PenvironmentanditsalgorithmsLEIKai,LIANGBing(ShenzhenGraduateSchool,PekingUniversity,Shenzhen518055,ChinaAbstract:NATtraversetechnologybasedonthemethodofUDPpunchingholegenerallyreliesoncentralserverstohelp[1].AfteranalysisofP2Ppeers'networkattributesinMazesystem[2],dynamicallyelectingappropriatepeerstohelpnetworktraverseforpeersindifferentNATsjustasthosecentralservers,thatformsascale-freenetwork[3].Asaresult,thearchitectureofpureP2PmodelbasedNATtraverseispresented,whichimproveditsrobustnessandfail-overability.Keywords:NATtraverse;UDPpunchingholes;pureP2Pnetwork;scale-freenetwork;powerlaw2008年9月计算机工程与设计Sept.2008第29卷第18期Vol.29No.18ComputerEngineeringandDesign个查询模块,主要是为本地穿透请求服务,它向自己所注册的Peer查询需要通信的具有某个PeerID的Peer的传输地址,以便发起穿透。如图1所示,实线表示注册心跳的交互信息;虚线表示查询定位所希望通信对方...