一种融合UPNP及STUN的P2P穿越方法及其系统与流程

文档序号:11960447阅读:来源:国知局

技术特征:

1.一种融合UPNP及STUN的P2P穿越方法,其特征在于,包括以下具体步骤:

步骤一、NAT映射步骤,IPC对本地路由器进行UPNP的NAT映射;

步骤二、UPNP注册步骤,IPC向业务控制服务器进行UPNP注册;

步骤三、P2P服务器注册步骤,IPC向P2P服务器上报设备信息并保持心跳,完成P2P服务器注册;

步骤四、UPNP方式访问启动步骤,APP向业务控制服务器获取指定IPC的UPNP信息后,使用UPNP反馈的IP地址信息来访问IPC,如果访问成功,则进行步骤七,如果访问失败则进行步骤五;

步骤五、P2P服务器注册步骤,APP与P2P服务器进行注册与交互;

步骤六、打洞步骤,APP与IPC同P2P服务器完成STUN的打洞流程,建立P2P通道,APP根据打通的通道访问IPC;

步骤七、结束步骤,重复步骤一,直至接收关机信号。

2.根据权利要求1所述的一种融合UPNP及STUN的P2P穿越方法,其特征在于,在所述步骤六中,进行打洞流程时,APP与IPC分别需要进行NAT类型探测,得到各自相对于公网的NAT类型,接着APP与IPC会通过服务器互相通告自己的NAT类型,客户端并以此来协同并确定打洞策略。

3.根据权利要求2所述的一种融合UPNP及STUN的P2P穿越方法,其特征在于,所述NAT类型探测的步骤如下:

步骤1、第一判断步骤,客户端发送不带任何标志和应答地址属性的STUN绑定请求报文给服务器,若服务器没有应答,则客户端为UDP完全阻塞,若服务器有应答,则进行下一步骤;

步骤2、第二判断步骤,判断服务器收到的外网IP和本地IP是否一致,并且客户端发送带“更改IP”和“更改端口”标志的STUN绑定请求报文给服务器,若外网IP和本地IP一致,同时IP不同且端口不同的服务器无应答,则客户端是对称防火墙,若外网IP和本地IP一致,同时IP不同且端口不同的服务器有应答,则客户端是无NAT公网,若外网IP和本地IP不一致,同时IP不同且端口不同的服务器有应答时,则NAT的类型为完全型NAT,若外网IP和本地IP不一致,同时IP不同且端口不同的服务器无应答时,进行下一步骤;

步骤3、第三判断步骤,客户端继续发送不带任何标志和应答地址属性的STUN绑定请求报文给IP不同的服务器,并且判断收到的外网[IP:Port]和第一判断步骤返回是否相同,如果返回的结果相同,则进行下一步骤,如果返回的结果不同,则NAT的类型为对称型NAT;

步骤4、第四判断步骤,客户端发送只带“更改端口”标志的STUN绑定请求报文给服务器,若端口不同的服务器有应答,则NAT的类型为限制型NAT,若端口不同的服务器无应答,则NAT的类型为端口限制型NAT。

4.根据权利要求1所述的一种融合UPNP及STUN的P2P穿越方法,其特征在于,所述步骤六中的打洞策略是客户端基于己方NAT与对方NAT类型做出的,并不区分己方是APP还是IPC。

5.根据权利要求4所述的一种融合UPNP及STUN的P2P穿越方法,其特征在于,所述步骤六中的打洞策略的具体策略如下:

步骤1、第一打洞策略,当己方的RemotePort和对方的RemotePort相同时,客户端向对方localIP的localPort发送消息;

步骤2、第二打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是非对称型NAT&&己方是非对称型NAT)||(对方是完全型NAT&&己方是对称型NAT)||(对方是地址限制型NAT&&己方是对称型NAT)时,客户端向对方RemoteIP的RemotePort发送消息;

步骤3、第三打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是端口限制型NAT&&己方是固定步长对称型NAT)时,客户端向对方RemoteIP的RemotePort-a至RemotePort+a端口和RemotePort加1个步长到加b个步长的共b个端口发送消息,a取值在50-200之间,b取值在1-64之间;

步骤4、第四打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是端口限制型NAT&&己方是随机步长对称型NAT),客户端通过localPort-c至localPort+c端口向对方的RemoteIP的RemotePort发送消息,c取值在50-200之间;

步骤5、第五打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是对称型NAT&&己方是完全型NAT)||(对方是对称型NAT&&己方是地址限制型NAT),客户端向对方RemoteIP的RemotePort发送消息;

步骤6、第六打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是固定步长对称型NAT&&己方是端口限制型NAT),客户端通过本地localPort-d至localPort+d端口向对方RemoteIP的RemotePort发送消息,d取值在50-200之间;

步骤7、第七打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是随机步长对称型NAT&&己方是端口限制型NAT)时,客户端通过本地localPort随机e个端口,e取值在500-2000之间,向对方RemoteIP的RemotePort发送消息;

步骤8、第八打洞策略,客户端的NAT类型与对方的NAT类型满足(对方是对称型NAT&&己方是对称型NAT)时,客户端向对方RemoteIP的RemotePort加1个步长到加f个步长的共f个端口发送消息,f取值在1-64之间。

6.根据权利要求5所述的一种融合UPNP及STUN的P2P穿越方法,其特征在于,所述消息为UDP通路探测包,所述步长为对称型NAT连续两个映射时的端口变化值。

7.一种融合UPNP及STUN的P2P穿越系统,其特征在于,包括NAT映射模块、UPNP注册模块、P2P服务器注册模块、UPNP方式访问模块、NAT类型探测模块以及打洞模块;

所述NAT映射模块,用于IPC对本地路由器建立UPNP的NAT映射;

所述UPNP注册模块,用于所述NAT映射模块映射完成后,实现IPC向业务控制服务器进行的UPNP注册,接收来自所述NAT映射模块的映射信息;

所述P2P服务器注册模块,用于IPC在所述UPNP注册模块注册完成后,实现IPC向P2P服务器上报设备信息并驱动IPC与P2P服务器保持心跳,用于APP根据所述UPNP方式访问模块失败时,由APP与P2P服务器进行注册与交互,IPC在所述UPNP注册模块完成之后执行,APP在所述UPNP方式访问模块失败之后执行;

所述UPNP方式访问模块,用于在所述P2P服务器注册模块驱动IPC与P2P服务器保持心跳后,由APP向业务控制服务器获取指定IPC的UPNP信息后,使用UPNP反馈的IP地址信息来访问IPC,在所述UPNP注册模块完成之后可执行;

所述NAT类型探测模块,用于所述UPNP方式访问模块启动访问后,打洞模块进行打洞流程时,APP与IPC分别需要进行NAT类型探测,得到各自相对于公网的NAT类型,接着APP与IPC会通过服务器互相通告自己的NAT类型,客户端并以此来协同并确定打洞策略,以供打洞模块选择打洞策略,完成打洞流程,在所述打洞模块执行之前完成;

所述打洞模块,用于根据所述NAT类型探测模块探测NAT类型后,APP与IPC同P2P服务器完成打洞流程,建立P2P通道,APP根据打通的P2P通道访问IPC。

8.根据权利要求7所述的一种融合UPNP及STUN的P2P穿越系统,其特征在于,所述NAT类型探测模块包括第一判断子模块、第二判断子模块、第三判断子模块以及第四判断子模块;

所述第一判断子模块,用于在所述打洞模块执行之前完成,根据客户端发送不带任何标志和应答地址属性的STUN绑定请求报文给服务器,判断服务器有无应答,服务器无应答时客户端为UDP完全阻塞,在所述打洞模块执行之前完成;

所述第二判断子模块,用于根据所述第一判断子模块得出的服务器有应答的判断结果,进一步判断服务器收到的外网IP和本地IP是否一致,并且客户端发送带“更改IP”和“更改端口”标志的STUN绑定请求报文给服务器,判断IP不同且端口不同的服务器有无应答,以确定客户端是否为对称防火墙、无NAT公网以及完全型NAT,在所述第一判断子模块完成后以及所述打洞模块之前执行;

所述第三判断子模块,用于根据所述第二判断子模块判断的结果,客户端继续发送不带任何标志和应答地址属性的STUN绑定请求报文给IP不同服务器,判断收到的外网[IP:Port]和所述第一判断子模块返回是否相同,以确定客户端是否为对称型NAT,在所述第二判断子模块完成后以及所述打洞模块之前执行;

所述第四判断子模块,用于根据所述第三判断子模块的判断结果,客户端发送只带“更改端口”标志的STUN绑定请求报文给服务器,判断端口不同的服务器有无应答,以确定客户端是否为限制型NAT以及端口限制型NAT,在所述第三判断子模块完成以及所述打洞模块之前执行。

9.根据权利要求7所述的一种融合UPNP及STUN的P2P穿越系统,其特征在于,所述打洞模块包括在所述第四判断子模块完成之后的打洞主控子模块、第一打洞子模块、第二打洞子模块、第三打洞子模块、第四打洞子模块、第五打洞子模块、第六打洞子模块、第七打洞子模块以及第八打洞子模块;

所述第一打洞子模块,用于当己方的RemotePort和对方的RemotePort相同时,所述打洞主控子模块驱动客户端向对方的localIP的localPort发送消息,受控于所述打洞主控子模块;

所述第二打洞子模块,用于当客户端的NAT类型与对方的NAT类型满足(对方是非对称型NAT&&己方是非对称型NAT)||(对方是完全型NAT&&己方是对称型NAT)||(对方是地址限制型NAT&&己方是对称型NAT)时,所述打洞主控子模块驱动客户端向对方RemoteIP的RemotePort发送消息,受控于所述打洞主控子模块;

所述第三打洞子模块,用于客户端的NAT类型与对方的NAT类型满足(对方是端口限制型NAT&&己方是固定步长对称型NAT)时,所述打洞主控子模块驱动客户端向对方RemoteIP的RemotePort-a至RemotePort+a端口和RemotePort加1个步长到加b个步长的共b个端口发送消息,a取值在50-200之间,b取值在1-64之间,受控于所述打洞主控子模块;

所述第四打洞子模块,用于客户端的NAT类型与对方的NAT类型满足(对方是端口限制型NAT&&己方是随机步长对称型NAT)时,所述打洞主控子模块驱动客户端通过localPort-c至localPort+c端口向对方的RemoteIP的RemotePort发送消息,c取值在50-200之间,受控于所述打洞主控子模块;

所述第五打洞子模块,用于客户端的NAT类型与对方的NAT类型满足(对方是对称型NAT&&己方是完全型NAT)||(对方是对称型NAT&&己方是地址限制型NAT),所述打洞主控子模块驱动客户端向对方RemoteIP的RemotePort发送消息,受控于所述打洞主控子模块;

所述第六打洞子模块,用于当客户端的NAT类型与对方的NAT类型满足(对方是固定步长对称型NAT&&己方是端口限制型NAT)时,所述打洞主控子模块驱动客户端通过本地localPort-d至localPort+d端口向对方RemoteIP的RemotePort发送消息,d取值在50-200之间,受控于所述打洞主控子模块;

所述第七打洞子模块,用于当客户端的NAT类型与对方的NAT类型满足(对方是随机步长对称型NAT&&己方是端口限制型NAT)时,所述打洞主控子模块驱动客户端通过本地localPort随机e个端口,e取值在500-2000之间,向对方RemoteIP的RemotePort发送消息,受控于所述打洞主控子模块;

所述第八打洞子模块,用于当客户端的NAT类型与对方的NAT类型满足(对方是对称型NAT&&己方是对称型NAT)时,所述打洞主控子模块驱动客户端向对方RemoteIP的RemotePort加1个步长到加f个步长的共f个端口发送消息,f取值在1-64之间,受控于所述打洞主控子模块。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1