CN107580082B - 一种对称型nat的穿透方法及装置 - Google Patents
一种对称型nat的穿透方法及装置 Download PDFInfo
- Publication number
- CN107580082B CN107580082B CN201710841905.5A CN201710841905A CN107580082B CN 107580082 B CN107580082 B CN 107580082B CN 201710841905 A CN201710841905 A CN 201710841905A CN 107580082 B CN107580082 B CN 107580082B
- Authority
- CN
- China
- Prior art keywords
- host
- punching
- hole
- nat
- request
- 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.)
- Active
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种对称型NAT的穿透方法,P2P连接中至少一方主机对应的NAT为对称型NAT,应用于对称型NAT网络内部的第一主机,第一主机和第二主机分别与打洞服务器建立连接后,向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使打洞服务器向第二主机发送携带有预测的公网端口号的第一打洞命令,使第二主机向对称型NAT的第一端口范围发送第一打洞请求。在此基础上,本发明针对第一主机为打洞请求的发起方,且第二主机对应的NAT为对称型NAT,第一主机为打洞请求的发起方,且第二主机对应的NAT为端口限制型NAT,以及第二主机为打洞请求的发起方,且第二主机对应的NAT为端口限制型NAT,分别提出三种打洞流程,提高了打洞的成功率。
Description
技术领域
本发明涉及通信技术领域,更具体的,涉及一种对称型NAT的穿透方法及装置。
背景技术
NAT(Network Address Translation,网络地址转换),通过将不同的私网地址映射到同一公网地址的不同端口号,实现了内网中多台主机能够使用同一IP地址进行互联网连接的功能。这解决了IP地址不足的问题,却给P2P(Peer to Peer,对等网络)连接引入了新的挑战。
NAT类型共有四种:
1、全锥形NAT(Full Cone NAT),同一私网地址X(包括IP地址和端口号)的连接请求都会被映射到同一公网地址Y(包括IP地址和端口号),与请求的目的地址无关。NAT会将所有外部地址Z(包括IP地址和端口号)发送给Y的请求转发给X。
2、限制锥型NAT(Restricted NAT),同一私网地址X(包括IP地址和端口号)的连接请求都会被映射到同一公网地址Y(包括IP地址和端口号),与请求的目的地址无关。但是只有私网地址X先通过公网地址Y发送请求到地址Z(只包括IP地址,端口号不限),NAT才会将Z发送给Y的请求转发给X,否则Z发送到X的请求会被NAT认为是未经认证的而进行阻止。
3、端口限制锥形NAT(Port Restricted NAT),所有来自同一私网地址X(包括IP地址和端口号)的连接请求都会被映射到同一公网地址Y(包括IP地址和端口号),与请求的目的地址无关。但是只有私网地址X先通过公网地址Y发送请求到地址Z(包括IP地址和端口号),NAT才会将Z发送给Y的请求转发给X,否则Z发送到X的请求会被NAT认为是未经认证的而进行阻止。
4、对称型NAT(Symmetric NAT),来自同一私网地址X的连接请求根据目的地址(包括IP地址和端口号)的不同,会被映射到不同的公网地址(端口号不同)。只有私网地址X先通过公网地址Y发送请求到地址Z(包括IP地址和端口号),NAT才会将Z发送给Y的请求转发给X,否则Z发送到X的请求会被NAT认为是未经认证的而进行阻止。
对于限制型锥形NAT、端口限制锥形NAT和对称型NAT,只有在NAT内部的地址X向外部地址Z发送过数据请求之后,外部地址Z所发送的数据请求才会被NAT转发给X,否则该请求会被认为是未经认证的而丢弃。
但是对于对称型NAT,由于同一私网地址在向不同地址发送数据请求时,会使用不同的公网端口号,导致在进行P2P打洞时,对方无法得知这个端口号,从而不能进行有效的打洞,导致无法打洞成功或成功率很低。
发明内容
有鉴于此,本发明提供了一种对称型NAT的穿透方法,解决因对称型NAT为同一私网地址建立连接时,每次都使用不同的公网端口号而造成的对称型NAT之间、对称型NAT和端口限制型NAT之间无法进行打洞的问题。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种对称型NAT的穿透方法,P2P连接中至少一方主机对应的NAT为对称型NAT,所述方法应用于所述对称型NAT网络内部的第一主机,包括:
与打洞服务器建立连接;
向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求,所述第一端口范围为所述第二主机根据所述预测的公网端口号进行设置的;
当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述预测的公网端口号为Port时,所述第一端口范围为[Port-N/2,Port+N/2],其中,N为所述第二主机需要向所述第一主机发送的打洞请求数量。
优选的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,
在所述向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述打洞服务器发送的携带有所述第二主机预测的公网端口号的第二打洞命令;
根据所述第二主机预测的公网端口号设置所述第二主机对应的NAT的第二端口范围,并分别向所述第二主机对应的NAT的第二端口范围内的每个公网端口号发送第二打洞请求;
当所述第二主机接收到所述第二打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,
在所述向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求之前,所述方法还包括:
向所述第二主机发送第三打洞请求;
在所述向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,
在所述向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求之前,所述方法还包括:
当所述第二主机向所述打洞服务器发送第二协助打洞请求后,接收所述打洞服务器发送第三打洞命令,并向所述第二主机发送第四打洞请求;
在所述向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
一种对称型NAT的穿透装置,P2P连接中至少一方主机对应的NAT为对称型NAT,所述装置应用于所述对称型NAT网络内部的第一主机,包括:
连接单元,用于与打洞服务器建立连接;
第一发送单元,用于向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求,所述第一端口范围为所述第二主机根据所述预测的公网端口号进行设置的;当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述预测的公网端口号为Port时,所述第一端口范围为[Port-N/2,Port+N/2],其中,N为所述第二主机需要向所述第一主机发送的打洞请求数量。
优选的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,所述装置还包括:
设置单元,用于接收所述打洞服务器发送的携带有所述第二主机预测的公网端口号的第二打洞命令;根据所述第二主机预测的公网端口号设置所述第二主机对应的NAT的第二端口范围,并分别向所述第二主机对应的NAT的所述第二端口范围内的每个公网端口号发送第二打洞请求;当所述第二主机接收到所述第二打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,所述装置还包括:
第二发送单元,用于向所述第二主机发送第三打洞请求;
第一接收单元,用于接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,所述装置还包括:
第三发送单元,用于当所述第二主机向所述打洞服务器发送第二协助打洞请求后,接收所述打洞服务器发送第三打洞命令,并向所述第二主机发送第四打洞请求;
第二接收单元,用于接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
相对于现有技术,本发明的有益效果如下:
本发明提供了一种对称型NAT的穿透方法,P2P连接中至少一方主机对应的NAT为对称型NAT,所述方法应用于所述对称型NAT网络内部的第一主机,第一主机和第二主机分别与打洞服务器建立连接后,向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求。在此基础上,本发明针对所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,以及所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,这三种情况分别提出三种打洞流程,提高了打洞的成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例一公开的一种对称型NAT的穿透方法流程图;
图2为本发明实施例二公开的一种对称型NAT的穿透方法的场景示意图;
图3为本发明实施例三公开的一种对称型NAT的穿透方法的场景示意图;
图4为本发明实施例四公开的一种对称型NAT的穿透方法的场景示意图;
图5为本发明实施例五公开的一种对称型NAT的穿透方装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本实施例公开了一种对称型NAT的穿透方法,P2P连接中至少一方主机对应的NAT为对称型NAT,所述方法应用于对称型NAT网络内部的第一主机,所述方法包括以下步骤:
S101:与打洞服务器建立连接;
在第一主机和第二主机之间建立P2P连接之前,第一主机和第二主机需要分别与打洞服务器建立连接。
S102:向所述打洞服务器发送携带有预测公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求,所述第一端口范围为所述第二主机根据所述预测的公网端口号进行设置的;
当第一主机预测的所述NAT公网端口号为Port时,所述第一端口范围为[Port-N/2,Port+N/2],其中,N为所述第二主机需要向所述第一主机发送的打洞请求数量。例如:当Port为1000,N为50,则第二主机需要向第一主机发送50个打洞请求,这50个打洞请求分别发送到第一主机对应的NAT的公网端口号为975、976、977、…、1025。
S103:当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,即为实现了对称型NAT的穿透,所述第一主机与所述第二主机间的P2P连接建立。
本实施例公开的对称型NAT的穿透方法,通过对称型NAT网络内部的第一主机预测公网端口号,并将预测的公网端口号通过打洞服务器发送给对应的第二主机。解决因对称型NAT为同一私网地址建立连接时,每次都使用不同的公网端口号而造成的对称型NAT之间、对称型NAT和端口限制型NAT之间无法进行打洞的问题。
实施例二
基于上述实施例一公开的对称型NAT的穿透方法,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,
在步骤S102:向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述打洞服务器发送的携带有所述第二主机预测的NAT公网端口号的第二打洞命令;
根据所述第二主机预测的公网端口号设置所述第二主机对应的NAT的第二端口范围,并分别向所述第二主机对应的NAT的第二端口范围内的每个公网端口号发送第二打洞请求;
当所述第二主机接收到所述第二打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
具体的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,请参阅图2,客户端A为上述第一主机,客户端B为上述第二主机,本实施例公开的对称型NAT的穿透方法流程如下:
1.1客户端A客户端B分别与打洞服务器建立连接后,客户端A向打洞服务器发送协助打洞请求一,并将预测公网端口号PortA发送至打洞服务器;所述预测的公网端口号为客户端A预测的本次建立P2P连接时NAT A为客户端A分配的公网端口号;
1.2打洞服务器在收到客户端A发送的协助打洞请求一后,向客户端B发送打洞命令一,并将客户端A预测的公网端口号PortA发送至客户端B;
1.3客户端B在收到打洞命令一和PortA之后,分别向NAT A端口范围为[PortA-N/2,PortA+N/2]内的每个公网端口号发送打洞请求,同时向打洞服务器发送协助打洞请求二,并将预测的NAT B为客户端B分配的公网端口PortB告知打洞服务器;
1.4打洞服务器在收到客户端B发送的协助打洞请求二之后,向客户端A发送打洞命令二,并将客户端B预测的NAT B为客户端B分配的的公网端口号PortB告知客户端A;
1.5客户端A在收到打洞命令二和PortB之后,分别向NAT B端口范围为[PortB-N/2,PortB+N/2]内的每个公网端口号发送打洞请求。若客户端B能收到客户端A的打洞请求,则P2P连接建立。
本实施例公开的一种对称型NAT的穿透方法,通过预测相应NAT分配的公网端口号,并将预测的公网端口号通过打洞服务器发送至对方主机,实现了对称型NAT网络内部的主机与对称型NAT网络内部的主机之间的打洞流程,提高了打洞的成功率。
实施例三
基于上述实施例一公开的对称型NAT的穿透方法,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,
在步骤S102:向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求之前,所述方法还包括:
向所述第二主机发送第三打洞请求;
且,在步骤S102:向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
具体的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,请参阅图3,客户端A为上述第一主机,客户端B为上述第二主机,本实施例公开的对称型NAT的穿透方法流程如下:
2.1客户端A客户端B分别与打洞服务器建立连接后,客户端A向客户端B发送打洞请求,并向打洞服务器发送协助打洞请求,同时将预测的NAT A为客户端A分配的公网端口号PortA告知打洞服务器;
2.2打洞服务器在收到协助打洞请求之后,向NAT B后的客户端B发送打洞命令,并将客户端A预测的NAT A为客户端A分配的公网端口号PortA告知客户端B;
2.3客户端B在收到打洞命令和PortA之后,分别向NAT A端口范围为[PortA-N/2,PortA+N/2]内的每个公网端口号发送打洞请求。若客户端A能收到客户端B的打洞请求,则P2P连接建立。
本实施例公开的一种对称型NAT的穿透方法,通过第一主机预测相应NAT分配的公网端口号,并将预测的公网端口号通过打洞服务器发送至第二主机,实现了对称型NAT网络内部的主机与端口限制型NAT网络内部的主机之间的打洞流程,提高了打洞的成功率。
实施例四
基于上述实施例一公开的对称型NAT的穿透方法,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,
在步骤S102:向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之前,所述方法还包括:
当所述第二主机向所述打洞服务器发送第二协助打洞请求后,接收所述打洞服务器发送第三打洞命令,并向所述第二主机发送第四打洞请求;
且,在步骤S102:向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
具体的,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,请参阅图3,客户端A为上述第二主机,客户端B为上述第一主机,本实施例公开的对称型NAT的穿透方法流程如下:
3.1客户端A与客户端B分别与打洞服务器建立连接后,客户端A向打洞服务器发送协助打洞请求一;
3.2打洞服务器在收到协助打洞请求一之后,向客户端B发送打洞命令一;
3.3客户端B在收到打洞命令一之后,向客户端A发送打洞请求,同时向打洞服务器发送协助打洞请求二,并将预测的NAT B为客户端B分配的公网端口号PortB告知打洞服务器;
3.4打洞服务器在收到协助打洞请求二之后,向客户端A发送打洞命令二,并将客户端B预测的NAT B为客户端B分配的公网端口号PortB告知客户端A;
3.5客户端A在收到打洞命令二和PortB之后,分别向NAT B端口范围为[PortB-N/2,PortB+N/2]内的每个公网端口号发送打洞请求。若客户端B能收到客户端A的打洞请求,则P2P连接建立。
本实施例公开的一种对称型NAT的穿透方法,通过第一主机预测相应NAT分配的公网端口号,并将预测的公网端口号通过打洞服务器发送至第二主机,实现了端口限制型NAT网络内部的主机与对称型NAT网络内部的主机之间的打洞流程,提高了打洞的成功率。
上述实施例提供了一种对称型NAT的穿透方法,P2P连接中至少一方主机对应的NAT为对称型NAT,所述方法应用于所述对称型NAT网络内部的第一主机,第一主机和第二主机分别与打洞服务器建立连接后,向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述公网端口号的第一打洞命令,使所述第二主机向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求。在此基础上,本实施例针对所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,以及所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,这三种情况分别提出三种打洞流程,提高了打洞的成功率。
实施例五
基于上述实施例公开的对称型NAT的穿透方法,请参阅图5,本实施例对应公开了一种对称型NAT的穿透装置,P2P连接中至少一方主机对应的NAT为对称型NAT,所述装置应用于所述对称型NAT网络内部的第一主机,包括:
连接单元101,用于与打洞服务器建立连接;
第一发送单元102,用于向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求,所述第一端口范围为所述第二主机根据所述预测的公网端口号进行设置的;当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
具体的,当所述预测的公网端口号为Port时,所述第一端口范围为[Port-N/2,Port+N/2],其中,N为所述第二主机需要向所述第一主机发送的打洞请求数量。
优选的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,所述装置还包括:
设置单元,用于接收所述打洞服务器发送的携带有所述第二主机预测的公网端口号的第二打洞命令;根据所述第二主机预测的公网端口号设置所述第二主机对应的NAT的第二端口范围,并分别向所述第二主机对应的NAT的所述第二端口范围内的每个公网端口号发送第二打洞请求;当所述第二主机接收到所述第二打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,所述装置还包括:
第二发送单元,用于向所述第二主机发送第三打洞请求;
第一接收单元,用于接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
优选的,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,所述装置还包括:
第三发送单元,用于当所述第二主机向所述打洞服务器发送第二协助打洞请求后,接收所述打洞服务器发送第三打洞命令,并向所述第二主机发送第四打洞请求;
第二接收单元,用于接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
本实施例提供了一种对称型NAT的穿透装置,P2P连接中至少一方主机对应的NAT为对称型NAT,所述装置应用于所述对称型NAT网络内部的第一主机,第一主机和第二主机分别与打洞服务器建立连接后,向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求。在此基础上,本实施例针对所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,以及所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,这三种情况分别提出三种打洞流程,提高了打洞的成功率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种对称型NAT的穿透方法,其特征在于,P2P连接中至少一方主机对应的NAT为对称型NAT,所述方法应用于对称型NAT网络内部的第一主机,所述方法包括:
与打洞服务器建立连接;
向所述打洞服务器发送携带有由所述第一主机预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求,所述第一端口范围为所述第二主机根据所述预测的公网端口号进行设置的;
当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
2.根据权利要求1所述的方法,其特征在于,当所述预测的公网端口号为Port时,所述第一端口范围为[Port-N/2,Port+N/2],其中,N为所述第二主机需要向所述第一主机发送的打洞请求数量。
3.根据权利要求1所述的方法,其特征在于,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,
在所述向打洞服务器发送携带有预测的公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述打洞服务器发送的携带有所述第二主机预测的公网端口号的第二打洞命令;
根据所述第二主机预测的公网端口号设置所述第二主机对应的NAT的第二端口范围,并分别向 所述第二主机对应的NAT的第二端口范围内的每个公网端口号发送第二打洞请求;
当所述第二主机接收到所述第二打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
4.根据权利要求1所述的方法,其特征在于,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,
在所述向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之前,所述方法还包括:
向所述第二主机发送第三打洞请求;
在所述向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
5.根据权利要求1所述的方法,其特征在于,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,
在所述向打洞服务器发送携带有由所述第一主机预测的所述对称型NAT公网端口号的第一协助打洞请求之前,所述方法还包括:
当所述第二主机向所述打洞服务器发送第二协助打洞请求后,接收所述打洞服务器发送第三打洞命令,并向所述第二主机发送第四打洞请求;
在所述向打洞服务器发送携带有预测的所述对称型NAT公网端口号的第一协助打洞请求之后,所述方法还包括:
接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
6.一种对称型NAT的穿透装置,其特征在于,P2P连接中至少一方主机对应的NAT为对称型NAT,所述装置应用于所述对称型NAT网络内部的第一主机,所述装置包括:
连接单元,用于与打洞服务器建立连接;
第一发送单元,用于向所述打洞服务器发送携带有预测的公网端口号的第一协助打洞请求,使所述打洞服务器向第二主机发送携带有所述预测的公网端口号的第一打洞命令,使所述第二主机分别向所述对称型NAT的第一端口范围内的每个公网端口号发送第一打洞请求,所述第一端口范围为所述第二主机根据所述预测的公网端口号进行设置的;当所述第一主机接收到所述第一打洞请求或所述第二主机接收到所述第一主机发送的打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
7.根据权利要求6所述的装置,其特征在于,当所述预测的公网端口号为Port时,所述第一端口范围为[Port-N/2,Port+N/2],其中,N为所述第二主机需要向所述第一主机发送的打洞请求数量。
8.根据权利要求6所述的装置,其特征在于,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为对称型NAT时,所述装置还包括:
设置单元,用于接收所述打洞服务器发送的携带有所述第二主机预测的公网端口号的第二打洞命令;根据所述第二主机预测的公网端口号设置所述第二主机对应的NAT的第二端口范围,并分别向所述第二主机对应的NAT的所述第二端口范围内的每个公网端口号发送第二打洞请求;当所述第二主机接收到所述第二打洞请求时,所述第一主机与所述第二主机间的P2P连接建立。
9.根据权利要求6所述的装置,其特征在于,当所述第一主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,所述装置还包括:
第二发送单元,用于向所述第二主机发送第三打洞请求;
第一接收单元,用于接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
10.根据权利要求6所述的装置,其特征在于,当所述第二主机为打洞请求的发起方,且所述第二主机对应的NAT为端口限制型NAT时,所述装置还包括:
第三发送单元,用于当所述第二主机向所述打洞服务器发送第二协助打洞请求后,接收所述打洞服务器发送第三打洞命令,并向所述第二主机发送第四打洞请求;
第二接收单元,用于接收所述第二主机发送的第一打洞请求,所述第一主机与所述第二主机间的P2P连接建立。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710841905.5A CN107580082B (zh) | 2017-09-18 | 2017-09-18 | 一种对称型nat的穿透方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710841905.5A CN107580082B (zh) | 2017-09-18 | 2017-09-18 | 一种对称型nat的穿透方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107580082A CN107580082A (zh) | 2018-01-12 |
CN107580082B true CN107580082B (zh) | 2021-03-26 |
Family
ID=61036385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710841905.5A Active CN107580082B (zh) | 2017-09-18 | 2017-09-18 | 一种对称型nat的穿透方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107580082B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600449A (zh) * | 2018-12-24 | 2019-04-09 | 深圳市网心科技有限公司 | 一种p2p穿透方法、装置、系统及存储介质 |
CN110062062B (zh) * | 2019-04-29 | 2021-11-05 | 庄奇东 | 一种获取nat上端口映射的方法及系统 |
CN114900496B (zh) * | 2019-06-24 | 2024-03-15 | 华为技术有限公司 | 一种通信方法以及相关设备 |
CN112351115B (zh) * | 2019-08-09 | 2022-03-04 | 华为技术有限公司 | 对称型nat设备的端口预测方法及装置 |
CN111314481B (zh) * | 2020-02-27 | 2021-08-24 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置、设备以及可读存储介质 |
CN111405052A (zh) * | 2020-03-20 | 2020-07-10 | 深圳市网心科技有限公司 | 基于端口预测的p2p穿透方法、电子设备及介质 |
CN112637364B (zh) * | 2021-01-06 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
CN112954061A (zh) * | 2021-02-20 | 2021-06-11 | 杭州卯方科技有限公司 | 一种在端口受限的网络中实现p2p打洞的装置 |
CN113726901A (zh) * | 2021-09-02 | 2021-11-30 | 世纪龙信息网络有限责任公司 | 一种基于ice的p2p通信方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007041417A1 (en) * | 2005-10-04 | 2007-04-12 | Sony Computer Entertainment Inc. | Peer-to-peer communication traversing symmetric network address translators |
CN101557388A (zh) * | 2008-04-11 | 2009-10-14 | 中国科学院声学研究所 | 一种基于UPnP和STUN技术相结合的NAT穿越方法 |
CN103856576A (zh) * | 2012-11-30 | 2014-06-11 | 雅马哈株式会社 | 通信系统和服务器 |
CN105141711A (zh) * | 2015-08-24 | 2015-12-09 | 北京息通网络技术有限公司 | 一种基于大数据分析的对称nat穿越方法及系统 |
CN105743739A (zh) * | 2016-03-28 | 2016-07-06 | Tcl集团股份有限公司 | 对称式nat的端口预测方法、探测服务器及受测端设备 |
-
2017
- 2017-09-18 CN CN201710841905.5A patent/CN107580082B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007041417A1 (en) * | 2005-10-04 | 2007-04-12 | Sony Computer Entertainment Inc. | Peer-to-peer communication traversing symmetric network address translators |
CN101557388A (zh) * | 2008-04-11 | 2009-10-14 | 中国科学院声学研究所 | 一种基于UPnP和STUN技术相结合的NAT穿越方法 |
CN103856576A (zh) * | 2012-11-30 | 2014-06-11 | 雅马哈株式会社 | 通信系统和服务器 |
CN105141711A (zh) * | 2015-08-24 | 2015-12-09 | 北京息通网络技术有限公司 | 一种基于大数据分析的对称nat穿越方法及系统 |
CN105743739A (zh) * | 2016-03-28 | 2016-07-06 | Tcl集团股份有限公司 | 对称式nat的端口预测方法、探测服务器及受测端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107580082A (zh) | 2018-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107580082B (zh) | 一种对称型nat的穿透方法及装置 | |
JP5980165B2 (ja) | ハードウェア支援によりhttpヘッダを処理する方法 | |
US11178101B1 (en) | Method and apparatus of establishing a connection between devices using cached connection information | |
US20150195381A1 (en) | Method and apparatus of identifying proxy ip address | |
CN109120746B (zh) | 网络地址转换方法、装置及地址转换设备 | |
CN107360275B (zh) | 一种对称型nat端口的预测方法及装置 | |
CN106961414B (zh) | 一种基于蜜罐的数据处理方法、装置及系统 | |
CN110830601A (zh) | 分布式系统nat穿透方法、装置、设备及存储介质 | |
US7987255B2 (en) | Distributed denial of service congestion recovery using split horizon DNS | |
US10855651B2 (en) | Method and device for efficiently using IPv4 public address | |
CN114095415B (zh) | 路由确定方法、装置、网关设备和存储介质 | |
CN113038594B (zh) | Mesh扩展设备网络管理注册方法和装置 | |
CN104488240A (zh) | 一种会话管理方法、地址管理方法及相关装置 | |
US9124598B2 (en) | Method and apparatus of establishing a connection between devices using cached connection information | |
Srirama et al. | Tcp hole punching approach to address devices in mobile networks | |
US10375175B2 (en) | Method and apparatus for terminal application accessing NAS | |
US10412122B1 (en) | Dynamic per-session NAT-behavior selection | |
WO2016177185A1 (zh) | 媒体访问控制mac地址的处理方法及装置 | |
WO2016095751A1 (zh) | 一种域名解析方法及装置 | |
CN103516820A (zh) | 基于mac地址的端口映射方法和装置 | |
TWI730090B (zh) | 資料處理方法、裝置及系統 | |
CN107231339B (zh) | 一种DDoS攻击的检测方法以及装置 | |
US10142126B2 (en) | Scalable dynamic overlay tunnel management | |
CN113014682B (zh) | 实现网络动态性的方法、系统、终端设备及存储介质 | |
CN111711654A (zh) | P2p通讯连接方法、电子设备及计算机可读存储介质 |
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 |