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对象主