一种P2P穿透方法、装置、系统及存储介质制造方法及图纸

技术编号:20825215 阅读:25 留言:0更新日期:2019-04-10 07:20
本发明专利技术公开了一种P2P穿透方法,应用于位于端口受限型NAT下的第一终端,包括:向位于对称型NAT下的第二终端发送穿透请求;根据接收到的端口映射规律、初始IP地址和初始端口号,确定端口号预测区间;通过端口号预测区间内所有端口号向第二终端发送第二数据包,直至收到响应消息。本发明专利技术还公开了一种P2P穿透装置、P2P穿透系统及介质。本发明专利技术基于端口号预测区间内的所有端口号向第二终端发送数据包,端口号预测区间由端口映射规律、初始IP地址和初始端口号确定,区间内必然存在匹配对称型NAT映射的公网地址中的端口号,当接收到第二终端回复的响应消息,表示连接成功,实现一端是对称型NAT另一端是端口受限型NAT的穿透。

【技术实现步骤摘要】
一种P2P穿透方法、装置、系统及存储介质
本申请涉及网络通信
,更具体地说,涉及一种P2P穿透方法、装置、系统及一种计算机可读存储介质。
技术介绍
现有技术中,对于对称性NAT,路由器会根据目的地址的不同而映射到不同的地址和端口,只有当主机曾经给IP地址为X、端口号为P的外部主机发送过数据包时,来自IP地址为X、端口号为P的外部主机的数据包才能被对称性NAT路由器接收。对于端口受限型NAT,路由器会把所有来自相同内部IP地址和端口号的请求映射到相同的外部IP地址和端口(目的地址不同也会映射成相同的外部IP和地址),但是只有当内部主机曾经给IP地址为X、端口号为P的外部主机发送过数据包时,,来自IP地址为X、端口号为P的外部主机的数据包才能被端口受限型NAT路由器接收。由于上述特点,使得对称性NAT和端口受限型NAT较难实现P2P穿透。鉴于此,如何解决上述问题是本领域技术人员需要重点关注的。
技术实现思路
本专利技术的主要目的在于提供P2P穿透方法,旨在解决端口受限型NAT和对称型NAT的穿透较难实现的技术问题。为实现上述目的,本专利技术提供的P2P穿透方法,应用于位于端口受限型NAT下的第一终端,包括:向位于对称型NAT下的第二终端发送穿透请求;接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。可选的,所述向位于对称型NAT下的第二终端发送穿透请求,包括:向第一STUN服务器发送信息获取请求,以获取所述第二终端的ID号;利用所述ID号,通过所述第一STUN服务器向所述第二终端发送所述穿透请求。可选的,所述接收所述第二终端对所述穿透请求进行响应的请求响应包,包括:通过所述第一STUN服务器接收所述第二终端发送的对所述穿透请求进行响应的请求响应包。可选的,所述端口映射规律为所述第二终端向预设数量的不同目的地址发送第三数据包后根据第二STUN服务器返回的信息确定的端口映射规律。可选的,所述初始IP地址和所述初始端口号为所述第二终端向第二STUN服务器发送信息获取请求后接收到的所述第二STUN服务器返回的地址和端口号。可选的,所述第一数据包和所述第二数据包均为UDP数据包。可选的,还包括:监听发送所述第二数据包之后接收所述响应消息之前的等待时间;若所述等待时间大于预设时间阈值,则判定所述第二数据包丢失,并重新发送所述第二数据包。可选的,所述根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间,包括:当所述端口映射规律为按照端口号递增的方式进行映射时,确定所有相邻端口号之间的端口增量;从所有所述端口增量中确定最小增量和最大增量,并基于区间公式,利用所述最小增量、所述最大增量、所述初始IP地址和所述初始端口号,确定所述端口号预测区间;其中,所述区间公式为:D∈[ip:(port+M1),ip:(port+M2)];其中,ip为所述初始IP地址;port为所述初始端口号;M1为所述最小增量;M2为所述最大增量;D为所述端口号预测区间。为实现上述目的,本专利技术提供一种P2P穿透方法,应用于第一STUN服务器,方法包括:接收位于端口受限型NAT下的第一终端发送的穿透请求,并将所述穿透请求发送至位于对称型NAT下的第二终端;接收所述第二终端对所述穿透请求进行响应的请求响应包,并将所述请求响应包转发至所述第一终端,以使所述第一终端利用所述请求响应包中的所述对称型NAT的端口映射规律、所述第二终端的初始IP地址和初始端口号,确定端口号预测区间,并通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。为实现上述目的,本专利技术进一步提供一种P2P穿透装置,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现前述公开的P2P穿透方法。可选的,所述P2P穿透装置为组成CDN网络或者区块链网络的节点。为实现上述目的,本专利技术进一步提供一种P2P穿透系统,应用于位于端口受限型NAT下的第一终端,所述P2P穿透系统包括:请求发送单元,用于向位于对称型NAT下的第二终端发送穿透请求;响应接收单元,用于接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;区间确定单元,用于根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;数据包发送单元,用于通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。为实现上述目的,本专利技术进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现前述公开的P2P穿透方法。为实现上述目的,本专利技术进一步提供一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行前述公开的P2P穿透方法。可见,本专利技术通过位于端口受限型NAT下的第一终端向位于对称型NAT下的第二终端发送穿透请求;接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。也即,本专利技术基于端口号预测区间内的所有端口号向位于对称型NAT下的第二终端发送数据包,所述端口号预测区间由端口映射规律、初始IP地址和初始端口号确定,区间内必然存在匹配对称型NAT映射的公网地址中的端口号,当接收到第二终端收到第二数据包后回复的响应消息,表示连接成功,实现一端是对称型NAT另一端是端口受限本文档来自技高网...

【技术保护点】
1.一种P2P穿透方法,其特征在于,应用于位于端口受限型NAT下的第一终端,所述方法包括:向位于对称型NAT下的第二终端发送穿透请求;接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。

【技术特征摘要】
1.一种P2P穿透方法,其特征在于,应用于位于端口受限型NAT下的第一终端,所述方法包括:向位于对称型NAT下的第二终端发送穿透请求;接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。2.如权利要求1所述的P2P穿透方法,其特征在于,所述向位于对称型NAT下的第二终端发送穿透请求,包括:向第一STUN服务器发送信息获取请求,以获取所述第二终端的ID号;利用所述ID号,通过所述第一STUN服务器向所述第二终端发送所述穿透请求。3.如权利要求2所述的P2P穿透方法,其特征在于,所述接收所述第二终端对所述穿透请求进行响应的请求响应包,包括:通过所述第一STUN服务器接收所述第二终端发送的对所述穿透请求进行响应的请求响应包。4.如权利要求1所述的P2P穿透方法,其特征在于,所述端口映射规律为所述第二终端向预设数量的不同目的地址发送第三数据包后根据第二STUN服务器返回的信息确定的端口映射规律。5.如权利要求1所述的P2P穿透方法,其特征在于,所述初始IP地址和所述初始端口号为所述第二终端向第二STUN服务器发送信息获取请求后接收到的所述第二STUN服务器返回的地址和端口号。6.如权利要求1所述的P2P穿透方法,其特征在于,所述第一数据包和所述第二数据包均为UDP数据包。7.如权利要求6所述的P2P穿透方法,其特征在于,还包括:监听发送所述第二数据包之后接收所述响应消息之前的等待时间;若所述等待时间大于预设时间阈值,则判定所述第二数据包丢失,并重新发送所述第二数据包。8.如权利要求1至7任一项所述的P2P穿透方法,其特征在于,所述根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间,包括:当所述端口映射规律为按照端口号递增的方式进行映射时,确定所有相邻端口号之间的端口增量;从所有所述端口增量中确定最小增量和最大增量,并基于区间公式,利用所述最小增量、所述最大增量、所述初始IP地址和所述初始端口号,确定所述端口号预测区间;其中,所...

【专利技术属性】
技术研发人员:鲁塔
申请(专利权)人:深圳市网心科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1