CN106331198B - Nat穿透方法及装置 - Google Patents
Nat穿透方法及装置 Download PDFInfo
- Publication number
- CN106331198B CN106331198B CN201510369615.6A CN201510369615A CN106331198B CN 106331198 B CN106331198 B CN 106331198B CN 201510369615 A CN201510369615 A CN 201510369615A CN 106331198 B CN106331198 B CN 106331198B
- Authority
- CN
- China
- Prior art keywords
- host
- address
- public network
- port
- notification message
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013519 translation Methods 0.000 title claims abstract description 15
- 230000035515 penetration Effects 0.000 title claims description 6
- 238000012544 monitoring process Methods 0.000 claims abstract description 41
- 238000004080 punching Methods 0.000 abstract description 28
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000011378 penetrating method Methods 0.000 abstract description 2
- 230000000149 penetrating effect Effects 0.000 abstract 1
- 238000006243 chemical reaction Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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
- H04L61/00—Network arrangements, protocols or services for addressing or naming
-
- 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/10—Mapping addresses of different types
- H04L61/106—Mapping addresses of different types across networks, e.g. mapping telephone numbers to data network addresses
-
- 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/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种NAT穿透方法及装置,其中,该方法包括:公网服务器向第一主机发送第一通知消息,其中,第一通知消息用于通知该第一主机监听与第一主机对应的第一端口;在第一主机完成对第一端口的监听之后,公网服务器向第二主机发送第二通知消息,其中,第二通知消息用于通知第二主机建立与该第一主机的连接;公网服务器向第一主机发送第三通知消息,其中,第三通知消息用于通知第一主机停止监听该第一端口,并通知第一主机建立与第二主机的连接。通过本发明解决了相关技术中协议栈不支持地址重用,无法实现相同端口上发送打洞连接的同时启动监听的问题,进而提高了打洞成功率。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种NAT穿透方法及装置。
背景技术
由于互联网的快速发展,互联网协议(Internet Protocol,IP)的第四版(简称为IPV4)地址不够用,不能每个主机分到一个公网IP,所以产生网络地址转换(NetworkAddress Translation,简称为NAT)地址转换技术。
私网内主机主动发起连接,数据包经过NAT地址转换后送给公网服务器,连接建立以后可双向传送数据。但是NAT禁止私网外的主机(即公网,或者接入公网的另一私网的主机)主动发起连接访问私网内主机。在一些特殊的场合,需要不同私网内的主机进行P2P互联,这就涉及到NAT穿透的问题。见图1,如果主机A先主动发起连接公网服务器,公网服务器是可以访问主机A的;如果公网服务器主动发起连接主机B,将会失败;如果主机C主动发起连接主机B,将会失败;
打洞是NAT穿透的常见技术。支持打洞实现NAT穿透的系统,至少包括两个主机和一个公网服务器。公网服务器S在公网上有一个IP,两个私网分别由NAT-A和NAT-B连接到公网,NAT-A后有主机A,NAT-B面有主机B,需要借助公网服务器S将主机A和主机B建立P2P的TCP连接。
首先主机A、主机B都将自己的经过NAT转换后的公网IP地址和端口等信息通过公网服务器S告知对方。当主机A需要和主机B建立P2P的TCP连接时,主机A、主机B相互尝试连接对方,同时启动监听。本端NAT会纪录此次连接的目标地址和端口号,下次对端主机连接本端时,经过对端NAT转换后的公网IP地址和端口等信息已经记录在本端NAT,本端NAT认为是合法的数据,并允许通过,从而P2P的TCP连接建立起来了。见图2,主机A、主机B先通过公网服务器交换经过NAT转换后的公网IP地址和端口信息,相互尝试连接对方。如果主机A先连接主机B,将会失败;之后主机B连接主机A,NAT-A认为是合法的数据,并允许通过,主机A的监听端口接收数据,从而P2P的TCP连接建立起来了。
但在实际情况中,上述流程主机A和主机B的操作系统协议栈有可能不支持地址重用,无法实现相同端口上发送打洞连接的同时启动监听。仍然是图2流程,主机A、主机B相互尝试连接对方,如果主机A先连接主机B,将会失败;之后主机B连接主机A,NAT-A认为是合法的数据,并允许通过。虽然数据可以发送到主机A,但是由于主机A不支持地址重用,并没有监听数据,协议栈将会操作主动断开连接,P2P的TCP连接建立失败,导致在NAT穿透时无法做到双向打洞。
针对相关技术中,协议栈不支持地址重用,无法实现相同端口上发送打洞连接的同时启动监听的问题,还未提出有效的解决方案。
发明内容
本发明提供了一种NAT穿透方法及装置,以至少解决相关技术中无法实现相同端口上发送打洞连接的同时启动监听的问题。
根据本发明的一个方面,提供了一种网络地址转换NAT穿透方法,包括:公网服务器向第一主机发送第一通知消息,其中,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;在所述第一主机完成对所述第一端口的监听之后,所述公网服务器向第二主机发送第二通知消息,其中,所述第二通知消息用于通知所述第二主机建立与所述第一主机的连接;所述公网服务器向所述第一主机发送第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接。
可选地,所述公网服务器向所述第一主机发送所述第一通知消息之前包括:所述公网服务器将第一公网网络互连协议IP地址和所述第一端口的信息发送至所述第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址;所述公网服务器将第二IP地址和所述第二主机对应的第二端口的信息发送至所述第一主机;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
可选地,所述第一主机建立与所述第二主机的连接包括:所述第一主机的所述第一端口与所述第二公网IP地址和所述第二端口建立连接。
根据本发明的另一个方面,还提供了另一种网络地址转换NAT穿透方法,包括:第一主机接收公网服务器发送的第一通知消息,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;所述第一主机根据所述第一通知消息监听所述第一端口;第二主机尝试与所述第一主机建立连接之后,所述第一主机从所述公网服务器接收第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接。
可选地,第一主机接收公网服务器发送的第一通知消息之前包括:所述第一主机通过所述公网服务器将第一公网网络互连协议IP地址和所述第一端口的信息发送至第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址。
可选地,所述第一主机建立与所述第二主机的连接包括:所述第一主机的所述第一端口与所述第二公网IP地址和所述第二主机对应的第二端口建立连接;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
根据本发明的一个方面,提供了一种网络地址转换NAT穿透装置,应用于公网服务器,所述装置包括:第一发送模块,用于向第一主机发送第一通知消息,其中,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;第二发送模块,用于在所述第一主机完成对所述第一端口的监听之后,向第二主机发送第二通知消息,其中,所述第二通知消息用于通知所述第二主机建立与所述第一主机的连接;第三发送模块,用于向所述第一主机发送第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接。
可选地,所述装置还包括:第四发送模块,用于将第一公网网络互连协议IP地址和所述第一端口的信息发送至所述第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址;第五发送模块,用于将第二IP地址和所述第二主机对应的第二端口的信息发送至所述第一主机;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
可选地,所述第一主机建立与所述第二主机的连接包括:所述第一主机的所述第一端口与所述第二公网IP地址和所述第二端口建立连接。
根据本发明的另一个方面,还提供了另一种网络地址转换NAT穿透装置,应用于第一主机,所述装置包括:第一接收模块,用于接收公网服务器发送的第一通知消息,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;监听模块,用于根据所述第一通知消息监听所述第一端口;第二接收模块,用于在第二主机尝试与所述第一主机建立连接之后,从所述公网服务器接收第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接。
可选地,所述装置还包括:发送模块,用于通过所述公网服务器将第一公网网络互连协议IP地址和所述第一端口的信息发送至第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址。
可选地,述第一主机建立与所述第二主机的连接包括:所述第一主机的所述第一端口与所述第二公网IP地址和所述第二主机对应的第二端口建立连接;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
通过本发明,采用公网服务器向第一主机发送第一通知消息,其中,第一通知消息用于通知该第一主机监听与第一主机对应的第一端口;在第一主机完成对第一端口的监听之后,公网服务器向第二主机发送第二通知消息,其中,第二通知消息用于通知第二主机建立与该第一主机的连接;公网服务器向第一主机发送第三通知消息,其中,第三通知消息用于通知第一主机停止监听该第一端口,并通知第一主机建立与第二主机的连接。解决了相关技术中协议栈不支持地址重用,无法实现相同端口上发送打洞连接的同时启动监听的问题,进而提高了打洞成功率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是相关技术中外网访问私网示意图;
图2是相关技术中主机之间打洞流程示意图;
图3是根据本发明实施例的NAT穿透方法的流程图;
图4是根据本发明实施例的NAT穿透装置的结构框图;
图5是根据本发明实施例的NAT穿透装置的结构框图(一);
图6是根据本发明实施例的NAT穿透方法的流程图(一);
图7是根据本发明实施例的NAT穿透装置的结构框图(二);
图8是根据本发明实施例的NAT穿透装置的结构框图(三);
图9是根据本发明实施例的NAT穿透方法的流程图(三)。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本实施例中提供了一种网络NAT穿透方法,图3是根据本发明实施例的NAT穿透方法的流程图,如图3所示,该流程包括如下步骤:
步骤S302,公网服务器向第一主机发送第一通知消息,其中,第一通知消息用于通知第一主机监听与该第一主机对应的第一端口;
步骤S304,在第一主机完成对第一端口的监听之后,公网服务器向第二主机发送第二通知消息,其中,第二通知消息用于通知第二主机建立与第一主机的连接;
步骤S306,公网服务器向第一主机发送第三通知消息,其中,第三通知消息用于通知第一主机停止监听第一端口,并通知第一主机建立与第二主机的连接。
通过上述步骤,由公网服务器控制第一主机和第二主机打洞的流程,相比于相关技术中,流程第一主机和第二主机的操作系统协议栈在不支持地址重用的情况下,导致在网络穿透时无法做到双向打洞,解决了相关技术中协议栈不支持地址重用,无法实现相同端口上发送打洞连接的同时启动监听的问题,进而提高了打洞成功率。
第一主机和第二主机进行业务通信的前提在于获取彼此的通信地址,在一个可选实施例中,公网服务器向该第一主机发送该第一通知消息之前,公网服务器将第一公网网络互连协议IP地址和第一端口的信息发送至第二主机;其中,第一公网IP地址为第一主机的IP地址经过第一网络转换后的IP地址;公网服务器将第二IP地址和该第二主机对应的第二端口的信息发送至第一主机;其中,第二公网IP地址为第二主机的IP地址经过第二网络转换后的IP地址。
在一个可选实施例中,第一主机的第一端口与第二公网IP地址和第二端口建立连接,从而完成了第一主机建立与第二主机的连接。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种网络NAT穿透装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本发明实施例的NAT穿透装置的结构框图,应用于公网服务器,如图4所示,该装置包括:第一发送模块42,用于向第一主机发送第一通知消息,其中,第一通知消息用于通知第一主机监听与该第一主机对应的第一端口;第二发送模块44,用于在第一主机完成对第一端口的监听之后,向第二主机发送第二通知消息,其中,第二通知消息用于通知第二主机建立与第一主机的连接;第三发送模块46,用于向第一主机发送第三通知消息,其中,第三通知消息用于通知该第一主机停止监听该第一端口,并通知该第一主机建立与该第二主机的连接。
图5是根据本发明实施例的NAT穿透装置的结构框图(一),如图5所示,该装置还包括:第四发送模块52,用于将第一公网网络互连协议IP地址和该第一端口的信息发送至第二主机;其中,第一公网IP地址为该第一主机的IP地址经过第一网络转换后的IP地址;第五发送模块54,用于将第二IP地址和该第二主机对应的第二端口的信息发送至第一主机;其中,第二公网IP地址为第二主机的IP地址经过第二网络转换后的IP地址。
可选地,第一主机建立与第二主机的连接包括:第一主机的第一端口与第二公网IP地址和第二端口建立连接。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。
在另一个实施例中提供了另一种网络NAT穿透方法,图6是根据本发明实施例的NAT穿透方法的流程图(一),如图6所示,该流程包括如下步骤:
步骤S602,第一主机接收公网服务器发送的第一通知消息,第一通知消息用于通知该第一主机监听与第一主机对应的第一端口;
步骤S604,第一主机根据第一通知消息监听第一端口;
步骤S606,在第二主机尝试与所述第一主机建立连接之后,所述第一主机从所述公网服务器接收第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接。
通过上述步骤,由公网服务器控制第一主机和第二主机打洞的流程,相比于相关技术中,流程第一主机和第二主机的操作系统协议栈在不支持地址重用的情况下,导致在网络穿透时无法做到双向打洞,解决了相关技术中协议栈不支持地址重用,无法实现相同端口上发送打洞连接的同时启动监听的问题,进而提高了打洞成功率。
第一主机和第二主机进行业务通信的前提在于获取彼此的通信地址,在一个可选实施例中,第一主机接收公网服务器发送的第一通知消息之前,第一主机通过该公网服务器将第一公网网络互连协议IP地址和第一端口的信息发送至第二主机;其中,第一公网IP地址为第一主机的IP地址经过第一网络转换后的IP地址。
在一个可选实施例中,第一主机的第一端口与第二公网IP地址和该第二主机对应的第二端口建立连接;其中,第二公网IP地址为第二主机的IP地址经过第二网络转换后的IP地址。从而第一主机建立了与第二主机的连接。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种网络NAT穿透装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本发明实施例的NAT穿透装置的结构框图(二),应用于第一主机,如图7所示,该装置包括:第一接收模块72,用于接收公网服务器发送的第一通知消息,该第一通知消息用于通知该第一主机监听与该第一主机对应的第一端口;监听模块74,用于根据该第一通知消息监听该第一端口;第二接收模块76,用于在第二主机尝试与第一主机建立连接之后,从该公网服务器接收第三通知消息,其中,第三通知消息用于通知第一主机停止监听该第一端口,并通知第一主机建立与该第二主机的连接。
图8是根据本发明实施例的NAT穿透装置的结构框图(三),如图8所示,该装置还包括:发送模块82,用于通过公网服务器将第一公网网络互连协议IP地址和第一端口的信息发送至第二主机;其中,第一公网IP地址为第一主机的IP地址经过第一网络转换后的IP地址。
可选地,第一主机建立与第二主机的连接包括:第一主机的该第一端口与第二公网IP地址和该第二主机对应的第二端口建立连接;其中,第二公网IP地址为第二主机的IP地址经过第二网络转换后的IP地址。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,公网服务器向第一主机发送第一通知消息,其中,第一通知消息用于通知第一主机监听与该第一主机对应的第一端口;
S2,在第一主机完成对第一端口的监听之后,公网服务器向第二主机发送第二通知消息,其中,第二通知消息用于通知第二主机建立与第一主机的连接;
S3,公网服务器向第一主机发送第三通知消息,其中,第三通知消息用于通知第一主机停止监听第一端口,并通知第一主机建立与第二主机的连接。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S4,第一主机接收公网服务器发送的第一通知消息,第一通知消息用于通知该第一主机监听与第一主机对应的第一端口;
S5,第一主机根据第一通知消息监听第一端口。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述S1、S2和S3。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述S4和S5。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
本可选实施例的目的在于,提供当协议栈不支持地址重用的条件下,通过公网服务器协助,私网内通信双方单向打洞建立P2P连接的方式实现NAT穿透的方法。
本可选实施例采用以下技术方案:
1、当主机A需要和主机B建立P2P的TCP连接时,由公网服务器S将经过NAT转换后的公网IP地址和端口等信息告知对方主机。
2、公网服务器S控制打洞流程,通知主机A监听,主机A完成启动业务端口监听后,公网服务器S通知主机B尝试与主机A建立连接。主机B不管连接主机A成功与否,都断开连接,并通知公网服务器S尝试连接完成。此时NAT-B的会纪录此次连接的目标地址和端口号。
3、公网服务器S通知主机A关闭监听。主机A绑定业务端口与主机B的经过NAT-B转换后的公网IP地址和端口进行连接,NAT-A转换后的公网IP地址和端口等信息已经记录在NAT-B,NAT-B认为是合法的数据,并允许通过,转给主机A,TCP连接建立成功。
因为有公网服务器控制打洞双方主机流程,避免协议栈不支持地址重用,发送打洞连接的同并没有启动监听数据的情况下,收到数据后没有正常处理,断开连接,导致打洞失败。此方案不受场景限制,提高打洞成功率。
图9是根据本发明实施例的NAT穿透方法的流程图(三),如图9所示,该流程包括如下步骤:
步骤1:公网服务器S启动控制连接侦听C和打洞连接侦听N。其中,控制连接用于保持公网服务器S分别与主机A、主机B之间的通信。打洞连接用于获取主机A、主机B经过NAT-A、NAT-B转换后的公网IP地址和端口信息。
步骤2:主机A和主机B分别与公网服务器S的控制连接C保持联系。公网服务器S处于公网内,私网内主机A、主机B主动发起控制连接C,数据包经过NAT到达公网服务器,连接建立以后可双向传送数据。公网服务器S可以通过控制连接C通知到私网内的主机A、主机B。
步骤3:当主机A需要和主机B建立P2P的TCP连接时,首先主机A绑定业务端口PA去连接公网服务器S的打洞连接端口N,发送协助连接申请。
步骤4:公网服务器S的打洞连接收到主机A的申请后,获取到主机A经过NAT-A转换后的公网IP地址NAA和端口NPA信息,并关闭主机A的连接。
步骤5:公网服务器S通过控制连接C通知主机B,将主机A经过NAT-A转换后的公网IP地址NAA和端口NPA信息告诉主机B,同时要求主机B上报经过NAT-B转换后的公网IP地址NAB和端口NPB信息。
步骤6:主机B收到公网服务器S的连接通知后,保存主机A经过NAT-A转换后的公网IP地址NAA和端口NAP信息,并同样绑定业务端口PB去连接公网服务器S的打洞连接端口N。
步骤7:公网服务器S的打洞连接收到主机B的请求后,记录主机B经过NAT-A转换后的公网IP地址NAB和端口NPB信息,关闭主机B连接。
步骤8:公网服务器S通过控制连接C通知主机A,将主机B经过NAT-A转换后的公网IP地址和端口信息告诉主机A。
至此,完成主机A、主机B获取对端NAT转换后的地址。后续是处理协议栈不支持地址重用的条件下的打洞流程。
步骤9:公网服务器S通过控制连接通知主机A监听业务端口PA。此时只主机A监听业务端口,不需要主机A在监听的同时去尝试连接主机B,不存在协议栈不支持地址重用的问题。
步骤10:主机A启动业务端口PA侦听。
步骤11:主机A通过控制连接C通知公网服务器S侦听完成。
步骤12:公网服务器S通过控制连接C通知主机B尝试与主机A的NAT-A的地址NAA和端口NPA建立连接。此时只需要主机B尝试连接主机A,主机B监不用听业务端口PB,不存在协议栈不支持地址重用的问题。
步骤13:主机B接收到请求后,绑定业务端口PB与主机A的经过NAT-A转换后的公网IP地址NAA和端口NPA进行连接。此时主机B本地的NAT-B会记录目的地址NAA端口NPA与主机B的内网地址和端口PB之间的映射消息,后续从地址NAA且端口NPA发送过来的数据,将被认为是合法数据,转交给主机B的业务端口PB。
步骤14:此时如果NAT-A已经存在NAT-B的公网IP地址NAB和端口NPB的映射关系,则连接请求将会转发到主机A,跳转到步骤18。
更多的情况下,NAT-A不会存在NAT-B的公网IP地址NAB和端口NPB的映射关系,将会阻止主机B的连接,主机B连接失败断开连接,并监听业务端口PB,之后通知公网服务器S尝试连接完成,且已经监听业务端口PB。此时主机B断开连接,只需要主机B监听业务端口PB,不存在协议栈不支持地址重用的问题。跳转到步骤15。
步骤15:公网服务器S接收到主机B尝试连接完成消息后,通知主机A关闭侦听,并使用业务端口PA与主机B的经过NAT-B转换后的公网地址NAB和端口NPB进行连接。
步骤16:主机A收到通知后,关闭监听业务端口PA,之后使用业务端口PA连接NAT-B的公网IP地址NAB和端口NPB,不存在协议栈不支持地址重用的问题。
步骤17:NAT-B接收到经过NAT-A转换后的公网IP地址NAA和端口NPA数据,因为在步骤13中记录了目的地址NAA和目的端口NPA,所以认为接收到的消息合法,会转给主机B的业务端口PB。
步骤18:此时主机A的业务端口PA和主机B的业务端口PB之间建立P2P的连接,直接进行业务通信。
综上所述,通过本发明通过公网服务器协助,实现了私网内通信双方单向打洞建立P2P连接。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种网络地址转换NAT穿透方法,其特征在于,包括:
公网服务器向第一主机发送第一通知消息,其中,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;
在所述第一主机完成对所述第一端口的监听之后,所述公网服务器向第二主机发送第二通知消息,其中,所述第二通知消息用于通知所述第二主机建立与所述第一主机的连接;
在所述第二主机尝试与所述第一主机建立连接,所述第二主机与所述第一主机连接失败的情况下,所述第二主机断开连接并监听所述第二主机的端口,所述第二主机通知所述公网服务器尝试连接完成,所述公网服务器向所述第一主机发送第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接;
所述公网服务器向所述第一主机发送所述第一通知消息之前包括:
所述公网服务器将第一公网网络互连协议IP地址和所述第一端口的信息发送至所述第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址;
所述公网服务器将第二公网IP地址和所述第二主机对应的第二端口的信息发送至所述第一主机;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
2.根据权利要求1所述的方法,其特征在于,所述第一主机建立与所述第二主机的连接包括:
所述第一主机的所述第一端口与所述第二公网IP地址和所述第二端口建立连接。
3.一种网络地址转换NAT穿透方法,其特征在于,包括:
第一主机接收公网服务器发送的第一通知消息,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;
所述第一主机根据所述第一通知消息监听所述第一端口;
在第二主机尝试与所述第一主机建立连接,所述第二主机与所述第一主机连接失败的情况下,所述第二主机断开连接并监听所述第二主机的端口,所述第二主机通知所述公网服务器尝试连接完成,所述第一主机从所述公网服务器接收第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接;
第一主机接收公网服务器发送的第一通知消息之前包括:
所述第一主机通过所述公网服务器将第一公网网络互连协议IP地址和所述第一端口的信息发送至第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址;
所述第二主机通过所述公网服务器将第二公网IP地址和所述第二主机对应的第二端口的信息发送至所述第一主机;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
4.根据权利要求3所述的方法,其特征在于,所述第一主机建立与所述第二主机的连接包括:
所述第一主机的所述第一端口与所述第二公网IP地址和所述第二主机对应的第二端口建立连接;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
5.一种网络地址转换NAT穿透装置,应用于公网服务器,其特征在于,所述装置包括:
第一发送模块,用于向第一主机发送第一通知消息,其中,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;
第二发送模块,用于在所述第一主机完成对所述第一端口的监听之后,向第二主机发送第二通知消息,其中,所述第二通知消息用于通知所述第二主机建立与所述第一主机的连接;
第三发送模块,用于在所述第二主机尝试与所述第一主机建立连接,所述第二主机与所述第一主机连接失败的情况下,所述第二主机断开连接并监听所述第二主机的端口,所述第二主机通知所述公网服务器尝试连接完成,向所述第一主机发送第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接;
所述装置还包括:
第四发送模块,用于将第一公网网络互连协议IP地址和所述第一端口的信息发送至所述第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址;
第五发送模块,用于将第二公网IP地址和所述第二主机对应的第二端口的信息发送至所述第一主机;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
6.根据权利要求5所述的装置,其特征在于,所述第一主机建立与所述第二主机的连接包括:
所述第一主机的所述第一端口与所述第二公网IP地址和所述第二端口建立连接。
7.一种网络地址转换NAT穿透装置,应用于第一主机,其特征在于,所述装置包括:
第一接收模块,用于接收公网服务器发送的第一通知消息,所述第一通知消息用于通知所述第一主机监听与所述第一主机对应的第一端口;
监听模块,用于根据所述第一通知消息监听所述第一端口;
第二接收模块,用于在第二主机尝试与所述第一主机建立连接,所述第二主机与所述第一主机连接失败的情况下,所述第二主机断开连接并监听所述第二主机的端口,所述第二主机通知所述公网服务器尝试连接完成,从所述公网服务器接收第三通知消息,其中,所述第三通知消息用于通知所述第一主机停止监听所述第一端口,并通知所述第一主机建立与所述第二主机的连接;
所述装置还包括:
发送模块,用于通过所述公网服务器将第一公网网络互连协议IP地址和所述第一端口的信息发送至第二主机;其中,所述第一公网IP地址为所述第一主机的IP地址经过第一网络转换后的IP地址;通过所述公网服务器将第二公网IP地址和所述第二主机对应的第二端口的信息发送至所述第一主机;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
8.根据权利要求7所述的装置,其特征在于,所述第一主机建立与所述第二主机的连接包括:
所述第一主机的所述第一端口与所述第二公网IP地址和所述第二主机对应的第二端口建立连接;其中,所述第二公网IP地址为所述第二主机的IP地址经过第二网络转换后的IP地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510369615.6A CN106331198B (zh) | 2015-06-29 | 2015-06-29 | Nat穿透方法及装置 |
PCT/CN2016/079775 WO2017000633A1 (zh) | 2015-06-29 | 2016-04-20 | Nat穿透方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510369615.6A CN106331198B (zh) | 2015-06-29 | 2015-06-29 | Nat穿透方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106331198A CN106331198A (zh) | 2017-01-11 |
CN106331198B true CN106331198B (zh) | 2020-04-21 |
Family
ID=57607658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510369615.6A Active CN106331198B (zh) | 2015-06-29 | 2015-06-29 | Nat穿透方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106331198B (zh) |
WO (1) | WO2017000633A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107580081A (zh) * | 2017-09-18 | 2018-01-12 | 北京奇艺世纪科技有限公司 | 一种nat穿透方法及装置 |
CN113067911B (zh) * | 2020-01-02 | 2023-06-30 | 中国移动通信有限公司研究院 | 一种nat穿越方法、装置、电子设备和存储介质 |
CN111600968B (zh) * | 2020-03-31 | 2022-07-05 | 普联技术有限公司 | P2p网络中nat打洞方法、装置、设备及可读存储介质 |
CN112637364B (zh) * | 2021-01-06 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
CN113037890A (zh) * | 2021-03-20 | 2021-06-25 | 张晋 | 一种能够确保穿透对称型nat设备的方法及系统 |
US11727519B1 (en) | 2023-02-01 | 2023-08-15 | Project Canary, Pbc | Air quality monitors minimization system and methods |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933427A (zh) * | 2005-09-12 | 2007-03-21 | 上海新纳广告传媒有限公司 | 基于udp协议的网络心跳监控系统及其方法 |
CN102231763A (zh) * | 2011-06-20 | 2011-11-02 | 北京思创银联科技股份有限公司 | 一种基于nat穿透的共享方法 |
CN103414797A (zh) * | 2013-07-31 | 2013-11-27 | 中国联合网络通信集团有限公司 | Nat穿越服务器的端口分配方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004034190A2 (en) * | 2002-10-04 | 2004-04-22 | Woodstock Systems, Llc | Systems and devices accessing inaccessible servers |
US8238241B2 (en) * | 2003-07-29 | 2012-08-07 | Citrix Systems, Inc. | Automatic detection and window virtualization for flow control |
CN100464540C (zh) * | 2005-09-09 | 2009-02-25 | 北京中星微电子有限公司 | 一种跨网关通信的方法 |
CN100454905C (zh) * | 2006-06-09 | 2009-01-21 | 华为技术有限公司 | 穿越网络地址转换的方法 |
CN101309203B (zh) * | 2007-05-17 | 2011-03-16 | 中兴通讯股份有限公司 | 一种网络媒体服务方法 |
CN101335681B (zh) * | 2007-06-27 | 2011-08-10 | 华为技术有限公司 | 获取穿越资源的方法、对等网络节点和对等网络 |
CN101217536B (zh) * | 2007-12-28 | 2011-11-09 | 腾讯科技(深圳)有限公司 | 穿越网络地址转换设备/防火墙的方法、系统及客户端 |
CN101262447B (zh) * | 2008-04-21 | 2011-02-16 | 中国科学院计算技术研究所 | 一种系统终端设备建立nat穿越通道的方法 |
CN101442492B (zh) * | 2008-12-26 | 2011-03-30 | 中国科学院计算技术研究所 | 一种p2p网络中实现nat穿越的方法和系统 |
CN101478493B (zh) * | 2009-02-10 | 2011-02-02 | 杭州华三通信技术有限公司 | 一种穿越nat的通信方法及设备 |
CN101945141B (zh) * | 2010-09-17 | 2014-02-19 | 北京神州泰岳软件股份有限公司 | 基于tcp的穿越nat设备的方法及系统 |
US9154426B2 (en) * | 2011-10-31 | 2015-10-06 | Apple Inc. | Low-latency hole punching |
CN104427008A (zh) * | 2013-08-28 | 2015-03-18 | 北大方正集团有限公司 | 针对tcp的nat穿越方法、系统、第三方服务器x、以及客户端 |
-
2015
- 2015-06-29 CN CN201510369615.6A patent/CN106331198B/zh active Active
-
2016
- 2016-04-20 WO PCT/CN2016/079775 patent/WO2017000633A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933427A (zh) * | 2005-09-12 | 2007-03-21 | 上海新纳广告传媒有限公司 | 基于udp协议的网络心跳监控系统及其方法 |
CN102231763A (zh) * | 2011-06-20 | 2011-11-02 | 北京思创银联科技股份有限公司 | 一种基于nat穿透的共享方法 |
CN103414797A (zh) * | 2013-07-31 | 2013-11-27 | 中国联合网络通信集团有限公司 | Nat穿越服务器的端口分配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017000633A1 (zh) | 2017-01-05 |
CN106331198A (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106331198B (zh) | Nat穿透方法及装置 | |
EP2833597B1 (en) | Apparatus and method for communications involving a legacy device | |
US8433807B2 (en) | Method, system, and apparatus for processing access prompt information | |
CN105635084B (zh) | 终端认证装置及方法 | |
US9113031B2 (en) | Call control for conferencing calls | |
CN107733808B (zh) | 一种流量传输方法及装置 | |
JP2006013827A (ja) | パケット転送装置 | |
CN101217482A (zh) | 一种穿越nat下发策略的方法和一种通信装置 | |
EP2472984A1 (en) | Method for realizing end-to-end call, end-to-end call terminal and system | |
EP2775661A1 (en) | Fault detection method, gateway, user equipment, and communication system | |
US20210297748A1 (en) | Method for managing mission critical video (mcvideo) communications in off-network mcvideo communication system | |
CN109600292A (zh) | 一种lac路由器自拨号发起l2tp隧道连接的方法及系统 | |
CN107566213B (zh) | 一种保活检测方法和装置 | |
CN102624745A (zh) | 一种路径计算单元通信协议会话建立方法及装置 | |
CN111064742B (zh) | 一种基于网络代理实现内网访问的方法、装置及相关设备 | |
CN105915662B (zh) | 一种数据传输方法及装置 | |
CN104009961B (zh) | 一种PPPoE会话标识分配方法及设备 | |
US11637874B2 (en) | Communications apparatus, systems, and methods for preventing and/or minimizing session data clipping | |
CN106936608B (zh) | 一种建立ssh连接的方法、相关设备及系统 | |
CN107454178B (zh) | 数据传输方法及装置 | |
CN103141072B (zh) | Ip地址获取方法及网络接入设备 | |
US10375175B2 (en) | Method and apparatus for terminal application accessing NAS | |
CN109120578B (zh) | 一种实现链路连接处理的方法及装置 | |
CN111385324A (zh) | 一种数据通信方法、装置、设备和存储介质 | |
CN109257444B (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 |