CN111600968A - P2p网络中nat打洞方法、装置、设备及可读存储介质 - Google Patents
P2p网络中nat打洞方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111600968A CN111600968A CN202010243438.8A CN202010243438A CN111600968A CN 111600968 A CN111600968 A CN 111600968A CN 202010243438 A CN202010243438 A CN 202010243438A CN 111600968 A CN111600968 A CN 111600968A
- Authority
- CN
- China
- Prior art keywords
- network
- port
- network equipment
- party
- punching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种P2P网络中NAT打洞方法、装置、设备及可读存储介质,所述方法包括:在两方网络设备获取各自的已知外网端口后,通过服务器与对方的网络设备交换各自的内网端口与外网端口;通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备预设的端口映射规律;若网络设备对应的网关具有端口映射规律,则通过新申请的内网端口来与对方的网络设备进行打洞连接;若对方的网络设备对应的网关具有端口映射规律,则对方的网络设备通过预测的外网端口与本网络设备进行打洞连接;从而确保P2P打洞能够成功。本发明可以在兼容现有的P2P打洞方式的情况下确保各种NAT型的P2P打洞都能够成功。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种P2P网络中NAT打洞方法、装置、设备及可读存储介质。
背景技术
在P2P网络中的两个网络设备建立连接的过程中,需要该网络中的两个网络设备通过网关来进行打洞。在网关上,首先需要有来自内部网络的网络设备的包发往外部,此时在网关上留下对应的映射,映射是指,该网络设备在网关中的内网端口为X:x,外网端口为X’:x’,映射为X:x<-X’:x’,在形成映射之后,一定条件下,外网发往X’:x’的包将会被转发给X:x。该条件和NAT类型有关。该映射一般被称为“洞”,此时来自外部网络设备的数据包才能通过这个“洞”,经过网关保存的映射,转发给对应的内部网络设备。在“洞”出现之前,所有外部网络发往该洞的包都会被丢弃。
参见图1,可以简略代表两个网络设备在P2P网络中的情况:
X是位于内网里面的网络设备,其内网的IP和Port分别为X:x。经过网关之后,映射到外网的IP和Port分别是X1’:x1’和X2’:x2’。Y1和Y2是外网设备,对应的外网IP和Port为Y1:y1和Y2:y2。而这两个设备之间具有如下各种NAT类型:
1.外网端口:设备直接暴露在外网环境内,X=X1’=X2’,x=x1’=x2’。
2.全锥形:当X:x向外部设备Y1:y1发过包过后,形成了外部IP:Port=X1’:x1’,任意的外部设备(Y1和Y2)发往X1’:x1’的包都能直接被转发给X:x;X:x向Y2:y2发包时,将会复用端口X1’:x1’,X1’=X2’,x1’=x2’。
3.地址限制锥型:当X:x向外部设备Y1:y1发过包过后,形成了外部IP:Port=X1’:x1’,只有来自Y1的包(Y1:y1,Y1:y2…)才能通过X1’:x1’,其他包都会被丢弃;只有当X:x向Y2发过包后,此时NAT的外网端口复用了X1’:x1’,来自Y2的包才能通过X1’:x1’,X1’=X2’,x1’=x2’。
4.地址和端口限制锥形:当X:x向外部设备Y1:y1发过包过后,形成了外部IP:Port=X1’:x1’,只有来自Y1:y1的包才能通过X1’:x1’,其他的包(包括Y1:y2,Y2:y2)都会被丢弃;只有当X:x向Y2:y2发过包后(复用X1’:x1’),来自Y2:y2的包才能通过X1’:x1’到达X:x,X1’=X2’,x1’=x2’。
5.对称型:在上面第4点的大部分基础上,X:x发往不同的IP:Port(Y1:y1,Y2:y2)将在NAT外网上映射为不同的端口(X1’=X2’,x1’≠x2’)。
现有的P2P打洞流程如图2所示:
在两个NAT网关网络下分别各有1台设备X,Y希望进行P2P打洞。其内网端口分别为X:x和Y:y。X和打洞服务器通信之后,映射到外网的端口为X1’:x1’,并被打洞服务器告知该IP:Port。Y和打洞服务器通信之后,映射到外网的端口为Y1’:y1’,并被打洞服务器告知该IP:Port。X和Y通过外部的云服务器交换信息之后知道了各自的外网端口,此时X向Y1’:y1’发包,Y向X1’:x1’发包。然后有以下几种情况:
(1)两边都是锥形拓扑(包含外网端口,即上述的1、2、3、4这些NAT类型)。此时,X通过X1’:x1’向Y1’:y1’发包,Y通过Y1’:y1’向X1’:x1’发包。仅在开始时,发包较慢的一方会在网关丢弃对方的包,之后X和Y即可收到对方的包,然后可以成功建立连接。
(2)一边是对称型拓扑(假设为设备Y),一边是外网端口、全锥形或者地址限制锥形(上述的1、2、3这些NAT类型,假设为设备X)。此时由于Y是对称型拓扑,当Y向X1’:x1’发包时,将会在NAT上映射一个和打洞服务器通信时的映射Y1’:y1’的不同的端口,即Y1’:y2’。此时由于Y1’:y1’未向X1’:x1’发过包,此时来自X1’:x1’的包将会全部被丢弃。但是由于此时X已经向Y发过包了,此时X1’:x1’将可以通过所有来自Y1’的包,因此Y1’:y2’可以通过X1’:x1’到达X,X此时则可以通过解析包获知Y1’:y2’,然后向Y1’:y2’发包,此时双方都收到了来自对方的包,打洞成功,可以建立连接。
(3)一边是对称型拓扑(假设为设备Y),一边为地址和端口限制锥形(假设为设备X)。此时由于Y是对称型拓扑,当Y向X1’:x1’发包时,将会在NAT上映射一个和打洞服务器通信时的映射Y1’:y1’的不同的端口,即Y1’:y2’。此时由于Y1’:y1’未向X1’:x1’发过包,此时来自X1’:x1’的包将会全部被丢弃。而X1’:x1’未向Y1’:y2’发过包,因此来自Y1’:y2’的包也会被全部丢弃,所以打洞无法成功。
(4)两边都为对称型拓扑。设备X和打洞服务器通信的映射外网端口为X1’:x1’,当向Y1’:y1发包时,会映射出新端口,为X1’:x2’,但是由于Y1’:y1’未向X1’:x2’发过包,这些包都会被网关丢弃;设备Y和打洞服务器通信的映射外网端口为Y1’:y1’,当向X1’:x1发包时,会映射出新端口,为Y1’:y2’,但是由于X1’:x1未向Y1’:y2’发过包,因此这些包都会被网关丢弃,所以打洞无法成功。
综上所述,P2P网络中两个设备打洞成功与否的情况可归结为以下的表格所示的情形:
由此可见,当要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,而另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT时,现有的P2P打洞方法是无法打洞成功的。
发明内容
本发明实施例的目的是提供一种P2P网络中NAT打洞方法、装置、设备及可读存储介质,可以在兼容现有的P2P打洞方式的情况下确保各种NAT型的P2P打洞都能够成功。
为实现上述目的,本发明一实施例提供了一种P2P网络中NAT打洞方法,其中,要建立P2P连接的两方网络设备中至少有一方对应的网关具有所述端口映射规律,所述端口映射规律包括:外网端口号呈规律地变化或保持和对应的网络设备的内网端口号相同;所述方法应用于第一方网络设备中,所述方法包括:
在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口;
通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备所述端口映射规律;
若本网络设备对应的网关不具备所述端口映射规律,本网络设备通过其内网端口向第二方网络设备的预测外网端口发送打洞请求;
若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求;
若所述两方网络设备对应的网关均具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求;
当本网络设备接收到第二方网络设备发送的打洞请求或者第二方网络设备接收到本网络设备的打洞请求时,本网络设备与第二方网络设备的P2P连接建立。
作为上述方案的改进,要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT;且为对称型NAT的一方网络设备对应的网关具有预设的端口映射规律。
作为上述方案的改进,在所述两方网络设备获取各自的已知外网端口后,通过所述服务器与第二方网络设备交换各自的内网端口与外网端口之前,所述方法还包括:
基于本网络设备已知的内网端口通过网关向打洞服务器发送打洞探测数据包,以使所述打洞服务器对接收到的所述打洞探测数据包进行解析得到本网络设备的外网端口并通过所述网关将外网端口信息返回给本网络设备;其中,所述网关保存本网络设备的内网端口与外网端口的映射关系。
作为上述方案的改进,所述本网络设备通过其内网端口向第二方网络设备的预测外网端口发送打洞请求,包括:
基于本网络设备的已知外网端口通过网关向第二方网络设备的预测外网端口发送打洞请求,并接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为上述方案的改进,所述本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求,包括:
本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求,接收第二方网络设备基于其已知外网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为上述方案的改进,所述本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求,包括:
本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求,接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为上述方案的改进,网络设备的预测外网端口的预测值c为:c=a+b*(x-1),其中,a为初次映射的外网端口的值,x为映射次数(x≥1),b为规律变化的值;网络设备的新申请的内网端口=该网络设备的已知的内网端口+N;N为预设的数值或者两方网络设备自动协商的数值。
本发明另一实施例对应提供了一种P2P网络中NAT打洞装置,其中,要建立P2P连接的两方网络设备中至少有一方对应的网关具有所述端口映射规律,所述端口映射规律包括:外网端口号呈规律地变化或保持和对应的网络设备的内网端口号相同;所述装置包括:
端口交换模块,用于在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口;
端口比对模块,用于通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备所述端口映射规律;
第一打洞模块,用于若本网络设备对应的网关不具备所述端口映射规律,本网络设备通过其内网端口向第二方网络设备的预测外网端口发送打洞请求;
第二打洞模块,用于若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求;
第三打洞模块,用于若所述两方网络设备对应的网关均具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求;
P2P连接建立模块,用于当本网络设备接收到第二方网络设备发送的打洞请求或者第二方网络设备接收到本网络设备的打洞请求时,本网络设备与第二方网络设备的P2P连接建立。
本发明另一实施例提供了一种网络设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的P2P网络中NAT打洞方法。
本发明另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述发明实施例所述的P2P网络中NAT打洞方法。
相比于现有技术,本发明实施例提供的所述P2P网络中NAT打洞方法、装置、设备及可读存储介质,当要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,而另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT时,在所述两方网络设备获取各自的已知外网端口后,通过所述服务器与第二方网络设备交换各自的内网端口与外网端口;通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备预设的端口映射规律;若相关的网络设备对应的网关具有所述端口映射规律,则通过相关的网络设备的预测的外网端口和新申请的内网端口来进行打洞,确保P2P打洞能够成功。此外,本发明实施例的打洞方法不和现有的打洞方式冲突,可以用于作为对现有的打洞方式的补充。由上分析可知,本发明实施例在兼容现有的P2P打洞方式的情况下,能够确保各种NAT型的P2P打洞都能够成功。
附图说明
图1是现有的两个网络设备进行P2P打洞的简化示意图;
图2是现有的两个网络设备进行P2P打洞的具体示意图;
图3是本发明一实施例提供的一种P2P网络中NAT打洞方法的流程示意图;
图4是本发明实施例的两个网络设备进行P2P打洞的示意图;
图5是本发明一实施例提供的一种P2P网络中NAT打洞装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图3,是本发明一实施例提供的一种P2P网络中NAT打洞方法的流程示意图。其中,要建立P2P连接的两方网络设备中至少有一方对应的网关具有预设的端口映射规律,所述端口映射规律包括:外网端口号呈规律地变化或保持和对应的网络设备的内网端口号相同;所述方法应用于第一方网络设备中,所述方法包括:
S10,在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口。
在本实施例中,示例性地,所述两方网络设备X与Y中,第一方网络设备X通过一个网关来与服务器建立网络连接,第二方网络设备Y通过另一个网关来与服务器建立网络连接。且这两个网关中至少有一者具有所述端口映射规律。作为举例地,要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT;且为对称型NAT的一方网络设备对应的网关具有预设的端口映射规律。
可以理解的是,所述网络设备可以是计算机、智能手机等,在此不做具体限定。所述服务器为云服务器或者是专门用于打洞的打洞服务器等,在此不做具体限定。
其中,示例性地,所述外网端口呈规律地变化可以指的是:外网端口呈规律地递增、递减或不变。具体地,通过该外网端口呈规律地变化的所述端口映射规律来得到网络设备的预测外网端口的预测值c为:c=a+b*(x-1),其中,a为初次映射的外网端口的值,x为映射次数(x≥1),b为规律变化的值。
此外,示例性地,下文所提及到的网络设备的新申请的内网端口=该网络设备的已知的内网端口+N;N为预设的数值或者两方网络设备自动协商的数值。
S11,通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备所述端口映射规律。
其中,若网络设备对应的网关具有端口保留特性,即外网端口号保持和对应的网络设备的内网端口号相同,则初次映射到外网端口的值a=内网端口值d。那么以网络设备对应的网关是否具有端口保留特性为例,判断是否具备所述端口映射规律可以如下所示:若a≠d,则不具备所述端口映射规律。而对于锥形NAT来说,内网端口映射到外网端口的值不会变化,因此体现在b=0。对于对称型NAT来说,内网端口映射到外网端口的值随着目标IP:Port的变化会一直变化,即b≠0。
作为举例地,参见图4,第一方网络设备X的内部IP(地址):port(端口)=X:x。而因端口保留为初次映射生效的规律,第一方网络设备初次探测后获取的外部IP:port=X1’:x1’。第二方网络设备Y的内部IP:port=Y:y,外部IP:port=Y1’:y1’。这两者通过比对两个网络设备的内网端口与外网端口,来判断本设备对应的网关与对方设备对应的网关是否具备所述端口映射规律。其中,若第一方网络设备X的x=x1’,可以知道X对应的网关具备所述端口映射规律,网络设备X在所述端口映射规律拓扑内;若不相等,则X对应的网关不具备所述端口映射规律。同理,若第二方网络设备Y的y=y1’,可以知道Y对应的网关具备所述端口映射规律;若不相等,则Y对应的网关在不具备所述端口映射规律。
此外,所述服务器具有多个外网地址和外网端口,可视作多个外网地址和外网端口的探测目标,两方网络设备在和所述服务器进行端口交互阶段,两方网络设备可多次获取各自的外网IP和端口,用于猜测是否具备所述端口映射规律,其中,第一次的探测结果用于判定是否具有端口保留特性;后续探测结果用于判断是否具有端口规律变化的特性。
S12,若本网络设备对应的网关不具备所述端口映射规律,本网络设备通过其内网端口向第二方网络设备的预测外网端口发送打洞请求。
示例性地,若本网络设备对应的网关不具备所述端口映射规律,则基于本网络设备的内网端口通过网关向第二方网络设备的预测外网端口发送打洞请求,并接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为举例地,所述端口映射规律为端口保留特性,即外网端口号保持和对应的网络设备的内网端口号相同。参见图4,当网络设备X对应的网关不具备所述端口映射规律而网络设备Y对应的网关具备所述端口映射规律,此时Y会申请1个内网端口y=y+N作为新的内网端口。此时,网络设备X通过其内部的IP:port=X:x向网络设备Y的预测外部IP:port=Y1’:(y+N)发包。在X的NAT型是锥形拓扑的情况下,在通过NAT网关时,X:x的包依旧会通过外部IP:port=X1’:x1’来发往Y1’:(y+N)。而此时网络设备Y通过内部IP:port=Y:y+N发包,目标的通讯外部IP:port为X1’:x1’。此时由于网络设备Y对应的NAT网关具有所述端口映射规律,可知Y:y+N的数据包将通过Y的外部IP:port=Y1’:y2’(y2’=y1’+N)发往X1’:x1’。此时由于X1’:x1’收到Y1’:(y+N)的数据包,将会转发给网络设备X的内部IP:port=X1:x1,至此,Y->X的通路打通。而又由于Y1’:(y+N)会收到X1’:x1’的包,并会转发给网络设备Y的内部IP:port=Y:y+N,至此,X->Y通路打通。同理地,当第二方网络设备Y对应的网关不具备所述端口映射规律而第一方网络设备X对应的网关具备所述端口映射规律,两者具体的打洞过程可以参考上述打洞过程,下文不再赘述。
S13,若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求。
示例性地,若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求,接收第二方网络设备基于其已知外网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
S14,若所述两方网络设备对应的网关均具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求。
示例性地,若所述两方网络设备对应的网关均具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求,接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为举例地,参见图4,若所述两方网络设备对应的网关均具备所述端口映射规律,此时网络设备X会申请1个内网端口x1=x+N作为其新的内网端口,网络设备Y会申请1个内网端口y=y+N作为其新的内网端口。此时,网络设备X通过其新的内部的IP:port=X:x+N向网络设备Y的预测外部IP:port=Y1’:(y+N)发包。X发送的数据包在通过对应的NAT网关时,X的外部IP:port会被映射为X1’:x2’(x2’=x+N),然后X的数据包会通过该端口发往Y1’:(y+N)。而此时网络设备Y通过内部IP:port=Y:y+N发包,通过对应的网关时,网络设备Y的外部IP:port会被映射为Y1’:y2’(y2’=y+N),然后Y的数据包通过该端口发往X1’:x2’。此时可知X1’:x2’收到Y1’:y2’的包,将会转发给X:x+N,至此,Y->X的通路打通。而此时可知Y1’:y2’收到X1’:x2’的包,将会转发给Y:y+N,至此,X->Y通路打通。
S15,当本网络设备接收到第二方网络设备发送的打洞请求或者第二方网络设备接收到本网络设备的打洞请求时,本网络设备与第二方网络设备的P2P连接建立。
综上所述,在本实施例中,当要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,而另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT时,在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口;通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备预设的端口映射规律;若相关的网络设备对应的网关具有所述端口映射规律,则通过相关的网络设备的预测的外网端口和新申请的内网端口来进行打洞,确保P2P打洞能够成功。此外,本发明实施例的打洞方法不和现有的打洞方式冲突,可以用于作为对现有的打洞方式的补充。由上分析可知,本发明实施例在兼容现有的P2P打洞方式的情况下,能够确保各种NAT型的P2P打洞都能够成功。
在上述实施例中,进一步的,在所述步骤S10之前,所述方法还包括:
S9,基于本网络设备已知的内网端口通过网关向打洞服务器发送打洞探测数据包,以使所述打洞服务器对接收到的所述打洞探测数据包进行解析得到本网络设备的外网端口并通过所述网关将外网端口信息返回给本网络设备;其中,所述网关保存本网络设备的内网端口与外网端口的映射关系。
具体地,以第一方网络设备X为例:
X通过网关向打洞服务器发起打洞探测,具体为:X通过其内部IP:port=X1:x1发classicstun包给打洞服务器;calssicstun包经过NAT网关时,从网关映射好的外部IP:port=X1’:x1’发送到了打洞服务器;打洞服务器将X1’:x1’从该数据包内解析出来,作为回复的内容发回给X1’:x1’;因之前有“X:x->X1’:x1’->打洞服务器”的发送记录,网关将该映射记录在自己的映射表内,并会将该回复自X1’:x1’发送向X1:x1,X收到回复之后即知晓了自己的外部IP:Port=X1’:x1’。
同理,第二方网络设备Y通过网关向打洞服务器发起打洞探测而获取其外网端口的过程,可以参考上述的第一方网络设备X的相关实现过程,在此不再赘述。
参见图5,是本发明一实施例提供的一种P2P网络中NAT打洞装置的结构示意图。其中,要建立P2P连接的两方网络设备中至少有一方对应的网关具有所述端口映射规律,所述端口映射规律包括:外网端口号呈现规律地变化或者保持和内网端口号相同;所述装置包括:
端口交换模块10,用于在所述两方网络设备获取各自的已知外网端口后,通过所述服务器与第二方网络设备交换各自的内网端口与外网端口;
端口比对模块11,用于通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备所述端口映射规律;
第一打洞模块12,用于若本网络设备对应的网关不具备所述端口映射规律,通过其内网端口向第二方网络设备的预测外网端口发送打洞请求;
第二打洞模块13,用于若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求;
第三打洞模块14,用于若所述两方网络设备对应的网关均具备所述端口映射规律,新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求;
P2P连接建立模块15,用于当本网络设备接收到第二方网络设备发送的打洞请求或者第二方网络设备接收到本网络设备的打洞请求时,使本网络设备与第二方网络设备的P2P连接建立。
在本实施例中,当要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,而另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT时,在所述两方网络设备获取各自的已知外网端口后,通过所述服务器与第二方网络设备交换各自的内网端口与外网端口;通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备预设的端口映射规律;若相关的网络设备对应的网关具有所述端口映射规律,则通过相关的网络设备的预测的外网端口和新申请的内网端口来进行打洞,确保P2P打洞能够成功。此外,本发明实施例的打洞方法不和现有的打洞方式冲突,可以用于作为对现有的打洞方式的补充。由上分析可知,本发明实施例在兼容现有的P2P打洞方式的情况下,能够确保各种NAT型的P2P打洞都能够成功。
作为上述方案的改进,要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT;且为对称型NAT的一方网络设备对应的网关具有预设的端口映射规律。
作为上述方案的改进,所述装置还包括:
所述打洞探测模块,用于基于本网络设备已知的内网端口通过网关向打洞服务器发送打洞探测数据包,以使所述打洞服务器对接收到的所述打洞探测数据包进行解析得到本网络设备的外网端口并通过所述网关将外网端口信息返回给本网络设备;其中,所述网关保存本网络设备的内网端口与外网端口的映射关系。
作为上述方案的改进,所述第一打洞模块具体用于:
基于本网络设备的已知外网端口通过网关向第二方网络设备的预测外网端口发送打洞请求,并接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为上述方案的改进,所述第二打洞模块具体用于:
新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求,接收第二方网络设备基于其已知外网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为上述方案的改进,所述第三打洞模块具体用于:
新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求,接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
作为上述方案的改进,网络设备的预测外网端口的预测值c为:c=a+b*(x-1),其中,a为初次映射的外网端口的值,x为映射次数(x≥1),b为规律变化的值;
网络设备的新申请的内网端口=该网络设备的已知的内网端口+N;N为预设的数值或者两方网络设备自动协商的数值。
本发明另一实施例提供了一种网络设备。该实施例的网络设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个P2P网络中NAT打洞方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述网络设备中的执行过程。
所述网络设备可以是计算机、智能手机等通信设备。所述网络设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是网络设备的示例,并不构成对网络设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述网络设备还可以包括输入输出设备、总线等。
所称处理器可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述网络设备的控制中心,利用各种接口和线路连接整个网络设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述网络设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMediaCard,SMC),安全数字(SecureDigital,SD)卡,闪存卡(FlashCard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述网络设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种P2P网络中NAT打洞方法,其特征在于,要建立P2P连接的两方网络设备中至少有一方对应的网关具有预设的端口映射规律,所述端口映射规律包括:外网端口号呈规律地变化或保持和对应的网络设备的内网端口号相同;所述方法应用于第一方网络设备中,所述方法包括:
在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口;
通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备所述端口映射规律;
若本网络设备对应的网关不具备所述端口映射规律,本网络设备通过其内网端口向第二方网络设备的预测外网端口发送打洞请求;
若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求;
若所述两方网络设备对应的网关均具备所述端口映射规律,本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求;
当本网络设备接收到第二方网络设备发送的打洞请求或者第二方网络设备接收到本网络设备的打洞请求时,本网络设备与第二方网络设备的P2P连接建立。
2.如权利要求1所述的P2P网络中NAT打洞方法,其特征在于,要建立P2P连接的两方的网络设备中一方对应的NAT为对称型NAT,另一方对应的NAT为以下中的一种:对称型NAT、地址和端口限制锥形NAT;且为对称型NAT的一方网络设备对应的网关具有预设的端口映射规律。
3.如权利要求1所述的P2P网络中NAT打洞方法,其特征在于,在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口之前,所述方法还包括:
基于本网络设备已知的内网端口通过网关向打洞服务器发送打洞探测数据包,以使所述打洞服务器对接收到的所述打洞探测数据包进行解析得到本网络设备的外网端口并通过所述网关将外网端口信息返回给本网络设备;所述网关保存本网络设备的内网端口与外网端口的映射关系。
4.如权利要求1所述的P2P网络中NAT打洞方法,其特征在于,所述本网络设备通过其内网端口向第二方网络设备的预测外网端口发送打洞请求,包括:
基于本网络设备的内网端口通过网关向第二方网络设备的预测外网端口发送打洞请求,并接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
5.如权利要求1所述的P2P网络中NAT打洞方法,其特征在于,所述本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求,包括:
本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求,接收第二方网络设备基于其已知外网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
6.如权利要求1所述的P2P网络中NAT打洞方法,其特征在于,所述本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求,包括:
本网络设备新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求,接收第二方网络设备基于其新申请的内网端口发送的打洞请求,第二方网络设备到本网络设备的P2P连接建立。
7.如权利要求1所述的P2P网络中NAT打洞方法,其特征在于,
网络设备的预测外网端口的预测值c为:c=a+b*(x-1),其中,a为初次映射的外网端口的值,x为映射次数(x≥1),b为规律变化的值;
网络设备的新申请的内网端口=该网络设备的已知的内网端口+N;N为预设的数值或者两方网络设备自动协商的数值。
8.一种P2P网络中NAT打洞装置,其特征在于,要建立P2P连接的两方网络设备中至少有一方对应的网关具有所述端口映射规律,所述端口映射规律包括:外网端口号呈规律地变化或保持和对应的网络设备的内网端口号相同;所述装置包括:
端口交换模块,用于在所述两方网络设备获取各自的已知外网端口后,通过服务器与第二方网络设备交换各自的内网端口与外网端口;
端口比对模块,用于通过比对网络设备的内网端口与外网端口判断该网络设备对应的网关是否具备所述端口映射规律;
第一打洞模块,用于若本网络设备对应的网关不具备所述端口映射规律,通过其内网端口向第二方网络设备的预测外网端口发送打洞请求;
第二打洞模块,用于若本网络设备对应的网关具备所述端口映射规律且第二方网络设备对应的网关不具备所述端口映射规律,新申请一个内网端口,通过新申请的内网端口向第二方网络设备的已知外网端口发送打洞请求;
第三打洞模块,用于若所述两方网络设备对应的网关均具备所述端口映射规律,新申请一个内网端口,通过新申请的内网端口向第二方网络设备的预测外网端口发送打洞请求;
P2P连接建立模块,用于当本网络设备接收到第二方网络设备发送的打洞请求或者第二方网络设备接收到本网络设备的打洞请求时,使本网络设备与第二方网络设备的P2P连接建立。
9.一种网络设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的P2P网络中NAT打洞方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至7中任意一项所述的P2P网络中NAT打洞方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010243438.8A CN111600968B (zh) | 2020-03-31 | 2020-03-31 | P2p网络中nat打洞方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010243438.8A CN111600968B (zh) | 2020-03-31 | 2020-03-31 | P2p网络中nat打洞方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111600968A true CN111600968A (zh) | 2020-08-28 |
CN111600968B CN111600968B (zh) | 2022-07-05 |
Family
ID=72190414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010243438.8A Active CN111600968B (zh) | 2020-03-31 | 2020-03-31 | P2p网络中nat打洞方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111600968B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112954061A (zh) * | 2021-02-20 | 2021-06-11 | 杭州卯方科技有限公司 | 一种在端口受限的网络中实现p2p打洞的装置 |
CN113765936A (zh) * | 2021-09-22 | 2021-12-07 | 杭州安恒信息技术股份有限公司 | 一种数据传输方法、装置、设备及计算机可读存储介质 |
CN114285785A (zh) * | 2021-12-24 | 2022-04-05 | 广州炒米信息科技有限公司 | 存储系统搭建方法、装置、计算机设备及存储介质 |
CN116436929A (zh) * | 2023-06-14 | 2023-07-14 | 深圳市玩物科技有限公司 | 利用服务器组装udp报文的辅助p2p打洞方法和服务器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101965712A (zh) * | 2008-03-05 | 2011-02-02 | 索尼电脑娱乐公司 | 用于多重同时连接的对称网络地址转换器的穿越 |
US20130124735A1 (en) * | 2011-11-11 | 2013-05-16 | Samsung Electronics Co., Ltd | Method and apparatus for provisioning network address translator traversal methods |
CN105610999A (zh) * | 2016-03-30 | 2016-05-25 | 上海斐讯数据通信技术有限公司 | 一种通过穿透nat实现p2p通信的方法、设备、服务器及系统 |
CN106331198A (zh) * | 2015-06-29 | 2017-01-11 | 中兴通讯股份有限公司 | Nat穿透方法及装置 |
CN107360275A (zh) * | 2017-09-18 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种对称型nat端口的预测方法及装置 |
CN109218316A (zh) * | 2018-09-20 | 2019-01-15 | 杭州智块网络科技有限公司 | 一种nat穿透方法、装置、设备及存储介质 |
CN109600449A (zh) * | 2018-12-24 | 2019-04-09 | 深圳市网心科技有限公司 | 一种p2p穿透方法、装置、系统及存储介质 |
CN109660637A (zh) * | 2018-11-16 | 2019-04-19 | 深圳市网心科技有限公司 | P2p打洞传输方法和系统、电子装置及计算机可读存储介质 |
-
2020
- 2020-03-31 CN CN202010243438.8A patent/CN111600968B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101965712A (zh) * | 2008-03-05 | 2011-02-02 | 索尼电脑娱乐公司 | 用于多重同时连接的对称网络地址转换器的穿越 |
US20150120918A1 (en) * | 2008-03-05 | 2015-04-30 | Sony Computer Entertainment Inc. | Traversal of symmetric network address translator for multiple simultaneous connections |
US20130124735A1 (en) * | 2011-11-11 | 2013-05-16 | Samsung Electronics Co., Ltd | Method and apparatus for provisioning network address translator traversal methods |
CN106331198A (zh) * | 2015-06-29 | 2017-01-11 | 中兴通讯股份有限公司 | Nat穿透方法及装置 |
CN105610999A (zh) * | 2016-03-30 | 2016-05-25 | 上海斐讯数据通信技术有限公司 | 一种通过穿透nat实现p2p通信的方法、设备、服务器及系统 |
CN107360275A (zh) * | 2017-09-18 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种对称型nat端口的预测方法及装置 |
CN109218316A (zh) * | 2018-09-20 | 2019-01-15 | 杭州智块网络科技有限公司 | 一种nat穿透方法、装置、设备及存储介质 |
CN109660637A (zh) * | 2018-11-16 | 2019-04-19 | 深圳市网心科技有限公司 | P2p打洞传输方法和系统、电子装置及计算机可读存储介质 |
CN109600449A (zh) * | 2018-12-24 | 2019-04-09 | 深圳市网心科技有限公司 | 一种p2p穿透方法、装置、系统及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112954061A (zh) * | 2021-02-20 | 2021-06-11 | 杭州卯方科技有限公司 | 一种在端口受限的网络中实现p2p打洞的装置 |
CN113765936A (zh) * | 2021-09-22 | 2021-12-07 | 杭州安恒信息技术股份有限公司 | 一种数据传输方法、装置、设备及计算机可读存储介质 |
CN114285785A (zh) * | 2021-12-24 | 2022-04-05 | 广州炒米信息科技有限公司 | 存储系统搭建方法、装置、计算机设备及存储介质 |
CN116436929A (zh) * | 2023-06-14 | 2023-07-14 | 深圳市玩物科技有限公司 | 利用服务器组装udp报文的辅助p2p打洞方法和服务器 |
CN116436929B (zh) * | 2023-06-14 | 2023-09-08 | 深圳市玩物科技有限公司 | 利用服务器组装udp报文的辅助p2p打洞方法和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111600968B (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111600968B (zh) | P2p网络中nat打洞方法、装置、设备及可读存储介质 | |
CN109831547B (zh) | Nat穿透方法、装置、设备及存储介质 | |
EP2339808B1 (en) | Method, media gateway and system for managing filtering rules | |
TWI245192B (en) | Method, system and storage medium for passing through network address translation device | |
JP2004166301A (ja) | ローカルipネットワークを通した多重通話システム及び方法 | |
CN109842559B (zh) | 一种网络通信方法及系统 | |
US11240373B2 (en) | Caller number identification | |
CN110290044B (zh) | 一种vpn网络和主干网络的分流方法、装置及存储介质 | |
CN112351115B (zh) | 对称型nat设备的端口预测方法及装置 | |
CN110086798B (zh) | 一种基于公共虚拟接口进行通信的方法及装置 | |
CN106850568A (zh) | 多通道协议的会话老化方法及装置 | |
CN104994022B (zh) | 一种报文传输的方法和业务板 | |
CN114124929A (zh) | 跨网络的数据处理方法和装置 | |
CN108173928A (zh) | Udp数据传输的方法、装置、存储介质及终端设备 | |
US10868841B1 (en) | Voice over internet protocol (VoIP) call quality | |
CN105991442B (zh) | 报文转发方法及装置 | |
CN110392066A (zh) | 一种访问服务的方法和装置 | |
CN105592137A (zh) | 一种应用类型的识别方法和装置 | |
CN113542244B (zh) | 微服务调用方法、装置、服务器和系统 | |
CN114629744B (zh) | 基于macvlan主机网络的数据访问方法、系统及相关装置 | |
CN110351394B (zh) | 网络数据的处理方法及装置、计算机装置及可读存储介质 | |
CN114598532B (zh) | 连接建立方法、装置、电子设备和存储介质 | |
CN112637382B (zh) | 数据发送方法及装置、建立p2p连接的方法及系统 | |
CN113918326B (zh) | 一种处理请求的方法及装置 | |
CN114422160B (zh) | 一种虚拟防火墙的设置方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |