一种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另一端是端口受限型NAT的穿透。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种P2P穿透方法的流程示意图;
图2为本发明实施例公开的另一种P2P穿透方法的流程示意图;
图3为本发明实施例公开的另一种P2P穿透方法的流程示意图;
图4为本发明实施例公开的另一种P2P穿透方法的流程示意图;
图5为本发明实施例公开的另一种P2P穿透方法的时序图;
图6为本发明揭露的P2P穿透装置的内部结构示意图;
图7为本发明一实施例揭露的P2P穿透系统的功能模块示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种P2P穿透方法,应用于位于端口受限型NAT下的第一终端。参照图1所示,该方法包括:
S101:向位于对称型NAT下的第二终端发送穿透请求;
本实施例中,位于端口受限型NAT下的第一终端通过第一STUN服务器向位于对称型NAT下的第二终端发送穿透请求。
S102:接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;
具体地,在第二终端接收到穿透请求后,获取对称型NAT的端口映射规律和第二终端的初始IP地址和初始端口号,并将所述端口映射规律和所述初始IP地址、初始端口号作为请求响应包发送至第一终端。其中,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号。
需要说明的是,在对称型NAT下,任何来自一个内部IP地址和端口发到某个IP地址和端口的请求都将被映射为一个唯一的外部IP地址和端口。如果同一个主机用同一个源IP和端口发包到不同的目标地址,就会有不同映射。获取端口映射规律是端口预测的基础。例如,端口映射规律可以为端口号递增规律、递减规律或跳跃规律。
需要说明的是,第二终端发送请求响应包之前,还通过第一STUN服务器向所述第一终端发送第一数据包,由于消息是不请自来的,第一数据包将会被端口受限型NAT拦截,但是能够使对称型NAT记录第一终端的IP地址和端口号,对于下次从第一终端的IP地址和端口号发送过来的数据包将能够被对称型NAT接收。
本实施例中,所述初始IP地址和所述初始端口号均对应第二终端向第一终端发送第一数据包之前的最后一次发送行为映射的地址和端口号,其中,发送行为可以包含发送请求、发送数据包等。
S103:根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;
本实施例中,基于端口映射规律、初始IP地址和初始端口号,确定出端口号预测区间。
S104:通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。
本实施例中,第一终端通过端口号预测区间内所有端口号向第二终端发送第二数据包,直至所述第二终端收到第二数据包后向第一终端回复响应信息,此时连接成功,实现P2P穿透。
可见,本发明通过位于端口受限型NAT下的第一终端向位于对称型NAT下的第二终端发送穿透请求;接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。也即,本发明基于端口号预测区间内的所有端口号向位于对称型NAT下的第二终端发送数据包,所述端口号预测区间由端口映射规律、初始IP地址和初始端口号确定,区间内必然存在匹配对称型NAT映射的公网地址中的端口号,当接收到第二终端收到第二数据包后回复的响应消息,表示连接成功,实现一端是对称型NAT另一端是端口受限型NAT的穿透。
参照图2所示,本发明提供了P2P穿透方法的一种具体实施方式,应用于位于端口受限型NAT下的第一终端,包括:
S201:向第一STUN服务器发送信息获取请求,以获取所述第二终端的ID号;
本实施例中,在第一终端向第二终端发送穿透请求之前,第一终端和第二终端均通过第一STUN服务器进行注册,并由第一STUN服务器记录下各个终端的ID号和NAT类型。由此,第一终端向第一STUN服务器发送信息获取请求,获取关于第二终端的信息,如ID号。
S202:利用所述ID号,通过所述第一STUN服务器向所述第二终端发送所述穿透请求;
具体地,第一终端通过第二终端的ID号向第一STUN服务器发送穿透请求,并由第一STUN服务器将穿透请求转发至第二终端。
S203:通过第一STUN服务器接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;
S204:根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;
S205:通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。
关于上述步骤S203至S205的具体实施过程可参考前述实施例的内容,在此不再进行赘述。
在本发明所提供的P2P穿透方法的一种具体实施方式中,针对端口映射规律的获取过程进行进一步阐述,过程包括:通过第二终端向预设数量的不同的目的地址发送第三数据包,根据第二STUN服务器返回的信息获取所述目的地址映射的外网地址和端口,并进一步根据所有端口确定出端口映射规律。
进一步地,初始IP地址和初始端口号的获取过程为:通过第二终端和第二STUN服务器建立连接,并向第二STUN服务器发送信息获取请求,进一步接收第二STUN服务器返回的第二终端向第一终端发送第一数据包之前最后一次发送行为映射的地址和端口,得到初始IP地址和初始端口号。
参见图3所示,本发明提供了P2P穿透方法的一种具体实施方式,应用于位于端口受限型NAT下的第一终端,包括:
S301:向位于对称型NAT下的第二终端发送穿透请求;
S302:接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;
本实施例中,所述第一数据包采用UDP数据包进行消息传输,可以理解的是,UDP协议是无连接的数据传输协议,传输速率较快。
S303:根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;
S304:通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,并监听发送所述第二数据包之后接收响应消息之前的等待时间;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息;
S305:若所述等待时间大于预设时间阈值,则判定所述第二数据包丢失,并重新发送所述第二数据包,直至收到所述响应消息。
本实施例中,由于采用UDP传输容易出现丢包问题,本实施例进一步设置了丢包重发。具体地,在第一终端发送第二数据包之后,监听接收响应消息之前的等待时间;若等待时间大于预设阈值,则判定第二数据包丢失,此时不再被动等待响应,将重新发送第二数据包。
参见图4所示,本发明提供了P2P穿透方法的一种具体实施方式,应用于位于端口受限型NAT下的第一终端,包括:
S401:向位于对称型NAT下的第二终端发送穿透请求;
S402:接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;
S403:当所述端口映射规律为按照端口号递增的方式进行映射时,确定所有相邻端口号之间的端口增量;
S404:从所有所述端口增量中确定最小增量和最大增量,并基于区间公式,利用所述最小增量、所述最大增量、所述初始IP地址和所述初始端口号,确定所述端口号预测区间;其中,所述区间公式为:
D∈[ip:(port+M1),ip:(port+M2)];
其中,ip为所述初始IP地址;port为所述初始端口号;M1为所述最小增量;M2为所述最大增量;D为所述端口号预测区间。
本实施例中,当端口映射规律为递增时,确定所有相邻端口号之间的端口增量。进一步从所有端口增量中确定最小增量和最大增量,根据区间公式得到端口号预测区间。
S405:通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。
进一步地,本发明提供了另一种P2P穿透方法,应用于第一STUN服务器,包括:
接收位于端口受限型NAT下的第一终端发送的穿透请求,并将所述穿透请求发送至位于对称型NAT下的第二终端;
接收所述第二终端对所述穿透请求进行响应的请求响应包,并将所述请求响应包转发至所述第一终端,以使所述第一终端利用所述请求响应包中的所述对称型NAT的端口映射规律、所述第二终端的初始IP地址和初始端口号,确定端口号预测区间,并通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;
其中,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。
可以理解的是,本实施例通过第一STUN服务器实现穿透前第一终端和第二终端的交互,由第一STUN服务器接收第一终端发送的穿透请求,并将穿透请求发送至服务器。相应的,接收到第二终端对穿透请求进行响应的请求响应包后,将请求响应包转发至第一终端。
图5为本发明所提供的一种P2P穿透方法的一种具体实施方式的时序图,参见图5所示,方法包括:节点peer a与节点peer b均向服务器STUN server1发送bindingrequest,从而获取对应的公网ip_a:port_a、ip_b:port_b,其中,ip_a:port_a为peer a经过nat a(受限型NAT)映射之后的外网地址和端口,ip_b:port_b为peer b经过nat b(对称型NAT)映射之后的外网地址和端口。另外,通过服务器探测本端NAT的类型,若为对称型,则进一步探测本端NAT的端口增量。具体地,peer b获取到nat b为对称型NAT,通过对预设数量个不同的目的地址发送UDP包,并通过STUN server返回的信息获取最小的端口增量M1和最大的端口增量M2,对应图5中1-3.1。
进一步地,peer a通过STUN server1发送穿透请求消息给peer b,对应图5中4-4.1.1.1。在peer b接收到peer a的穿透请求之后,与STUN server2建立一个临时UDP连接,并向STUN server2发送一个UDP消息,其中,STUN server2主要用于获取peer b对应的连接经过NAT映射后的外网地址和端口。
进一步地,peer b发送UDP消息至peer a端,目的是为了使peer b端的nat b进行记录(记录peer a的ip地址和端口ip_a:port_a,下次从ip_a:port_a发送过来的数据包才能够被peer b端的nat b接收)。
如图5中7-7.1,peer b端收到STUN服务器2的响应后获取映射的公网ip_b:port_P1,并且通过STUN服务器1发送穿透请求的应答消息给peer a端,其中应答消息里面主要包括peer b端nat b的最小端口增量M1、最大端口增量M2、ip_b:port_P1。其中,ip_b:port_P1为peer b向peer a发送UDP消息前最近一次映射的地址和端口。
进一步地,peer a端收到peer b的打洞应答消息后,发送UDP(hello Msg)消息给区间ip_b:(port_P1+M1)-ip_b:(port_P1+M2),图5中9.1.1-9.1.3表示peer a给peer b发送的N个UDP包,其中,N=M2-M1。如果peer b可以收到peer a的hello Msg,回复响应消息OK给peer a端,说明P2P连接成功,实现一端是对称型NAT另一端是端口受限型NAT的穿透。
进一步地,本发明还公开了一种P2P穿透装置1,参见图6所示,所述装置包括存储器11和处理器12,所述存储器11上存储有可在所述处理器12上运行的计算机程序,所述计算机程序被所述处理器12执行时实现前述公开的P2P穿透方法。进一步的,还可以包括总线13。
在本实施例中,P2P穿透装置1可以是PC(PersonalComputer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备。
该P2P穿透装置1可以是组成CDN网络或者区块链网络的节点。
本实施例中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是P2P穿透装置1的内部存储单元,例如该P2P穿透装置1的硬盘。存储器11在另一些实施例中也可以是P2P穿透装置1的外部存储设备,例如P2P穿透装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括P2P穿透装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于P2P穿透装置1的应用软件及各类数据,例如P2P穿透程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,P2P穿透装置1还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在P2P穿透装置1中处理的信息以及用于显示可视化的用户界面。
图6仅示出了具有组件11-13以及P2P穿透程序的P2P穿透装置1,本领域技术人员可以理解的是,图6示出的结构并不构成对P2P穿透装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
进一步地,本发明公开了一种P2P穿透系统,应用于位于端口受限型NAT下的第一终端,参见图7所示,所述P2P穿透系统包括:
请求发送单元100,用于向位于对称型NAT下的第二终端发送穿透请求;
响应接收单元200,用于接收所述第二终端对所述穿透请求进行响应的请求响应包;其中,所述请求响应包中包含所述对称型NAT的端口映射规律和所述第二终端的初始IP地址和初始端口号,所述初始IP地址为所述第二终端向所述第一终端发送第一数据包之前最后一次发送行为映射的公网地址,所述初始端口号为所述最后一次发送行为映射的端口号;
区间确定单元300,用于根据所述端口映射规律、所述初始IP地址和所述初始端口号,确定端口号预测区间;
数据包发送单元400,用于通过所述端口号预测区间内所有端口号向所述第二终端发送第二数据包,直至收到响应消息;其中,所述响应消息为所述第二终端收到所述第二数据包后向所述第一终端发送的用于表示穿透成功的消息。
本实施例中的P2P穿透系统用于实现前述的P2P穿透方法,因此P2P穿透系统中的具体实施方式可见前文中P2P穿透方法的实施例部分,在此不再进行赘述。
进一步地,本发明公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现前述公开的P2P穿透方法。
进一步地,本发明公开了一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行前述公开的P2P穿透方法。
本发明基于端口号预测区间内的所有端口号向位于对称型NAT下的第二终端发送数据包,所述端口号预测区间由端口映射规律、初始IP地址和初始端口号确定,区间内必然存在匹配对称型NAT映射的公网地址中的端口号,当接收到第二终端收到第二数据包后回复的响应消息,表示连接成功,实现一端是对称型NAT另一端是端口受限型NAT的穿透。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。