CN112351115B - 对称型nat设备的端口预测方法及装置 - Google Patents
对称型nat设备的端口预测方法及装置 Download PDFInfo
- Publication number
- CN112351115B CN112351115B CN201910736204.4A CN201910736204A CN112351115B CN 112351115 B CN112351115 B CN 112351115B CN 201910736204 A CN201910736204 A CN 201910736204A CN 112351115 B CN112351115 B CN 112351115B
- Authority
- CN
- China
- Prior art keywords
- port
- nat
- public network
- nat device
- 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.)
- Active
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
- H04L61/2589—NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/147—Network analysis or design for predicting network behaviour
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/2521—Translation architectures other than single NAT servers
- H04L61/2528—Translation at a proxy
-
- 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/2521—Translation architectures other than single NAT servers
- H04L61/2532—Clique of NAT servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种对称型NAT设备的端口预测方法及装置,能够提高对称型NAT设备的端口预测的成功率,可应用于包含对称型NAT设备的计算机网络中。该方法包括:第一NAT设备接收来自第一主机的第一数量的第一打洞请求报文和来自第二NAT设备的第二数量的第三打洞请求报文。其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个;第二NAT设备为对称型NAT设备。第一NAT设备确定上述第一公网端口和第二公网端口中均存在第三公网端口。第一NAT设备向第一主机转发源端口为第三公网端口的第三打洞请求报文。
Description
技术领域
本申请涉及计算机网络通信领域,尤其涉及一种对称型NAT设备的端口预测方法及装置。
背景技术
在计算机网络通信领域,主流通信方式包含主机(又称为客户端)-服务器(client-server,CS)模式和点对点(peer-to-peer,P2P)模式两大类。其中,在P2P模式中,主机之间可以直接通信以实现资源共享和信息交换,从而给用户之间的沟通和交流提供了更大的便利。然而,在目前的互联网协议版本4(internet protocol version 4,IPv4)网络中,由于网络地址数量有限,不得已引入一种可将私有网络(简称私网,又称为内部网络、内网等)地址转换为公有网络(简称公网,又称为外部网络、外网等)地址的设备,即网络地址转换(network address translation,NAT)设备。具体地,NAT设备可以将同一私网中的不同主机的私网地址转换为同一个公网地址,并通过该公网地址间接地与公网中的其他主机通信。其中,公网地址可以包括公网IP地址和公网端口。在实际通信中,公网IP地址通常不会频繁改变,而公网端口通常随私网主机和/或公网主机的变化而变化。也就是说,NAT设备的引入,虽然解决了网络地址不足的问题,但同时引入了另一问题:NAT设备使得处于不同私网的主机之间难以建立P2P直接通信,这在很大程度上限制了P2P的应用和发展。其中,“直接通信”是指,两个主机之间的通信不需要通过服务器转发即可完成。
为了解决NAT设备引入的问题,又引入了NAT穿越(NAT traversal)技术,如用户数据报协议(User datagram protocol,UDP)打洞技术。UDP打洞技术侧重于在处于不同私网之间的主机建立起UDP连接,从而实现直接通信。然而,UDP打洞技术并不适用于至少一端NAT设备为对称型NAT设备的情况。其原因在于:当同一私网主机访问不同的公网主机时,以及当不同私网主机访问同一个公网主机时,即只要私网主机和公网主机有一个不同,对称型NAT设备就会映射为不同的公网地址。因此,倘若对称型NAT设备的端口分配策略没有按照预设规则进行,如没有按照端口标识连续递增或连续递减的方式分配,则现有NAT设备端口预测方法预测对称型NAT设备为其私网主机分配的公网端口的成功率很低,从而导致UDP打洞和NAT穿越失败。
发明内容
本申请实施例提供一种对称型NAT设备的端口预测方法及装置,能够解决对称型NAT设备端口预测成功率低的问题,能够提高对称型NAT设备的端口预测的成功率,从而提高UDP打洞操作的成功率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种对称型NAT设备的端口预测方法。该方法包括:第一主机向第一NAT设备发送第一数量的第一打洞请求报文。其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。第一主机接收来自第一NAT设备,且源端口为第三公网端口的第三打洞请求报文。其中,第三公网端口为:第二NAT设备的第一数量的第一公网端口中的一个。第一主机向第一NAT设备发送第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。
在一种可能的设计方法中,第一打洞请求报文的跳数为第一跳数。相应地,上述在第一主机向第一NAT设备发送第一数量的第一打洞请求报文之后,该对称型NAT设备的端口预测方法还包括:若第一主机在指定时间段内未接收到源端口为第三公网端口的第三打洞请求报文,则第一主机向第一NAT设备发送第三数量的第四打洞请求报文。其中,第四打洞请求报文的跳数为第二跳数,第二跳数大于第一跳数,直到第一主机发送的第一数量的打洞报文,如第一打洞报文或第三打洞报文能够到达第一NAT设备,可以确保第一NAT设备获取到第二NAT设备的第二数量的第一公网端口的信息,如端口号,从而进一步提高对称型NAT设备的端口预测方法的成功率。
第二方面,提供一种对称型NAT设备的端口预测方法。该方法包括:第一NAT设备接收来自第一主机的第一数量的第一打洞请求报文。其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。第一NAT设备接收来自第二NAT设备的第二数量的第三打洞请求报文。其中,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个。第一NAT设备确定第二NAT设备的第二数量的第二公网端口中,与第二NAT设备的第一数量的第一公网端口中,均存在第三公网端口。第一NAT设备向第一主机转发源端口为第三公网端口的第三打洞请求报文。第一NAT设备接收来自第一主机的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。第一NAT设备向第二NAT设备转发第一打洞响应报文。
第三方面,提供一种对称型NAT设备的端口预测方法。该方法包括:第二NAT设备接收来自第二主机的第二数量的第二打洞请求报文。其中,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个,第二主机的第二数量的内网端口分别映射为:第二NAT设备的第二数量的第二公网端口;第二NAT设备为对称型NAT设备。第二NAT设备向第一NAT设备发送第二数量的第三打洞请求报文;其中,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个。第二NAT设备接收来自第一NAT设备的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口;第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个。第二NAT设备向第二主机发送第二打洞响应报文;其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为第二NAT设备的第三公网端口的内网端口。
第四方面,提供一种对称型NAT设备的端口预测方法。该方法包括:第二主机向第二NAT设备发送第二数量的第二打洞请求报文。其中,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个,第二主机的第二数量的内网端口分别映射为:第二NAT设备的第二数量的第二公网端口;第二NAT设备为对称型NAT设备。第二主机接收来自第二NAT设备的第二打洞响应报文。其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为第二NAT设备的第三公网端口的内网端口;第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个。
结合上述第一方面至第四方面,本申请实施例提供的对称型NAT设备的端口预测方法,第一NAT设备能够通过接收来自第一主机的第一数量的第一打洞请求报文,以及第二NAT设备从第二主机接收并转发第二数量的第三打洞请求报文,从而可以获取第二NAT设备的第一数量的第一公网端口,以及第二NAT设备的第二数量的第二公网端口,倘若第一NAT设备确定第二数量的第二公网端口中和第一数量的第一公网端口中均存在第三公网端口,则第一NAT设备向第一主机转发源端口为第二公网端口的第二打洞请求报文,也就是表明打洞成功,从而建立起第一主机经由第一NAT设备、第二NAT设备到达第二主机的直接通信,能够提高对称型NAT设备的端口预测的成功率。
第五方面,提供一种通信装置。该通信装置包括:接收模块和发送模块。其中,发送模块,用于向第一NAT设备发送第一数量的第一打洞请求报文;其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。接收模块,用于接收来自第一NAT设备,且源端口为第三公网端口的第三打洞请求报文;其中,第三公网端口为:第二NAT设备的第一数量的第一公网端口中的一个。发送模块,还用于向第一NAT设备发送第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。
在一种可能的设计中,第一打洞请求报文的跳数为第一跳数。相应地,第五方面所述的通信装置还包括:处理模块。其中,处理模块,用于在发送模块向第一NAT设备发送第一数量的第一打洞请求报文之后,确定接收模块在指定时间段内未接收到源端口为第三公网端口的第三打洞请求报文。发送模块,还用于向第一NAT设备发送第三数量的第四打洞请求报文;其中,第四打洞请求报文的跳数为第二跳数,第二跳数大于第一跳数。
可选地,第五方面所述的通信装置还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得第五方面所述的通信装置可以执行上述第一方面所述的对称型NAT设备的端口预测方法。
需要说明的是,第五方面所述的通信装置可以是第一主机,也可以是设置于第一主机中的芯片或芯片系统,本申请对此不做限定。
第六方面,提供一种通信装置。该通信装置包括:处理模块和收发模块。其中,收发模块,用于接收来自第一主机的第一数量的第一打洞请求报文;其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。收发模块,还用于接收来自第二NAT设备的第二数量的第三打洞请求报文;其中,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个。处理模块,用于确定第二NAT设备的第二数量的第二公网端口中,与第二NAT设备的第一数量的第一公网端口中,均存在第三公网端口。收发模块,还用于向第一主机转发源端口为第三公网端口的第三打洞请求报文。收发模块,还用于接收来自第一主机的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。收发模块,还用于向第二NAT设备转发第一打洞响应报文。
可选地,第六方面所述的通信装置还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得第六方面所述的通信装置可以执行上述第二方面所述的对称型NAT设备的端口预测方法。
需要说明的是,第六方面所述的通信装置可以是第一NAT设备,也可以是设置于第一NAT设备中的芯片或芯片系统,本申请对此不做限定。
第七方面,提供一种通信装置。该通信装置包括:接收模块和发送模块。其中,接收模块,用于接收来自第二主机的第二数量的第二打洞请求报文;其中,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个,第二主机的第二数量的内网端口分别映射为:该通信装置的第二数量的第二公网端口;该通信装置为对称型NAT设备。发送模块,用于向第一NAT设备发送第二数量的第三打洞请求报文;其中,第三打洞请求报文的源端口为:该通信装置的第二数量的第二公网端口中的一个。接收模块,还用于接收来自第一NAT设备的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:该通信装置的第三公网端口;第三公网端口为:该通信装置的第二数量的第二公网端口中的一个。发送模块,还用于向第二主机发送第二打洞响应报文;其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为该通信装置的第三公网端口的内网端口。
可选地,第七方面所述的通信装置还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得第七方面所述的通信装置可以执行上述第三方面所述的对称型NAT设备的端口预测方法。
需要说明的是,第七方面所述的通信装置可以是第二NAT设备,也可以是设置于第二NAT设备中的芯片或芯片系统,本申请对此不做限定。
第八方面,提供一种通信装置。该通信装置包括:接收模块和发送模块。其中,发送模块,用于向第二NAT设备发送第二数量的第二打洞请求报文;其中,第二打洞请求报文的源端口为:该通信装置的第二数量的内网端口中的一个,该通信装置的第二数量的内网端口分别映射为:第二NAT设备的第二数量的第二公网端口;第二NAT设备为对称型NAT设备。接收模块,用于接收来自第二NAT设备的第二打洞响应报文;其中,第二打洞响应报文的目的端口为:该通信装置的内网端口中,映射为第二NAT设备的第三公网端口的内网端口;第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个。
可选地,第八方面所述的通信装置还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得第八方面所述的通信装置可以执行上述第四方面所述的对称型NAT设备的端口预测方法。
需要说明的是,第八方面所述的通信装置可以是第二主机,也可以是设置于第二主机中的芯片或芯片系统,本申请对此不做限定。
第五方面至第八方面所述的通信装置的技术效果可以参考第一方面至第四方面所述的对称型NAT设备的端口预测方法的技术效果,此处不再赘述。
第九方面,提供一种通信装置。该通信装置包括:处理器,该处理器与存储器耦合,存储器用于存储计算机程序;处理器用于执行存储器中存储的计算机程序,以使得该通信装置执行如第一方面至第四方面中任意一种可能的实现方式所述的对称型NAT设备的端口预测方法。
在一种可能的设计中,第九方面所述的通信装置还可以包括收发器。该收发器可以为收发电路或输入/输出接口。所述收发器可以用于该通信装置与其他通信装置通信。
在本申请中,第九方面所述的通信装置可以为主机、对称型NAT设备或非对称型NAT设备中的任意一种,或者设置于主机、对称型NAT设备或非对称型NAT设备内部的芯片或芯片系统。
第九方面所述的通信装置的技术效果可以参考第一方面至第四方面中的任意一种实现方式所述的对称型NAT设备的端口预测方法的技术效果,此处不再赘述。
第十方面,提供了一种芯片系统。该芯片系统包括处理器和输入/输出端口,处理器用于实现如第一方面至第四方面所涉及的处理功能,输入/输出端口用于实现如第一方面至第四方面所涉及的收发功能。
在一种可能的设计中,该芯片系统还包括存储器,该存储器用于存储实现第一方面或第二方面所涉及功能的程序指令和数据。
该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
第十一方面,提供一种通信系统。该通信系统包括对称型NAT设备、非对称型NAT设备,以及至少两台主机。
第十二方面,提供一种可读存储介质。该可读存储介质包括程序或指令,当程序或指令在计算机上运行时,使得计算机执行如第一方面至第四方面所述的对称型NAT设备的端口预测方法。
第十三方面,提供一种计算机程序产品。该计算机程序产品包括:计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行第一方面至第四方面所述的对称型NAT设备的端口预测方法。
附图说明
图1为本申请实施例提供的通信系统的架构示意图;
图2为本申请实施例提供的通信装置的结构示意图一;
图3为本申请实施例提供的对称型NAT设备的端口预测方法的流程示意图一;
图4为本申请实施例提供的对称型NAT设备的端口预测方法中涉及到的交互报文的示意图;
图5为本申请实施例提供的对称型NAT设备的端口预测方法所适用的通信场景一的示意图;
图6为本申请实施例提供的对称型NAT设备的端口预测方法所适用的通信场景二的示意图;
图7为本申请实施例提供的通信装置的结构示意图二;
图8为本申请实施例提供的通信装置的结构示意图三;
图9为本申请实施例提供的通信装置的结构示意图四。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例的技术方案可以应用于各种通信系统,如计算机网络系统。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例地”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“信息(information)”,“信号(signal)”,“消息(message)”,“信道(channel)”、“信令(singalling)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例中,有时候下标如W1可能会笔误为非下标的形式如W1,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请实施例中部分场景以图1所示的通信系统中的场景为例进行说明。应当指出的是,本申请实施例中的方案还可以应用于其他通信系统中,相应的名称也可以用其他通信系统中的对应功能的名称进行替代。
为便于理解本申请实施例,首先以图1中示出的通信系统为例详细说明适用于本申请实施例的通信系统。图1示出了本申请实施例的对称型NAT设备的端口预测方法所适用的通信系统的示意图。如图1所示,该通信系统包括第一主机、第一NAT设备、第二NAT设备、第二主机、NAT服务器等。
其中,第一主机,用于向第一NAT设备发送第一数量的第一打洞请求报文。其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。第一主机,还用于接收来自第一NAT设备,且源端口为第三公网端口的第三打洞请求报文。其中,第三公网端口为:第二NAT设备的第一数量的第一公网端口中的一个。第一主机,还用于向第一NAT设备发送第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。
其中,第一NAT设备,用于接收来自第一主机的第一数量的第一打洞请求报文。其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。第一NAT设备,还用于接收来自第二NAT设备的第二数量的第三打洞请求报文。其中,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个。第一NAT设备,还用于确定第二NAT设备的第二数量的第二公网端口中,与第二NAT设备的第一数量的第一公网端口中,均存在第三公网端口。第一NAT设备,还用于向第一主机转发源端口为第三公网端口的第三打洞请求报文。第一NAT设备,还用于接收来自第一主机的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。第一NAT设备,还用于向第二NAT设备转发第一打洞响应报文。
其中,第二NAT设备,用于接收来自第二主机的第二数量的第二打洞请求报文。其中,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个,第二主机的第二数量的内网端口分别映射为:第二NAT设备的第二数量的第二公网端口;第二NAT设备为对称型NAT设备。第二NAT设备,还用于向第一NAT设备发送第二数量的第三打洞请求报文;其中,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个。第二NAT设备,还用于接收来自第一NAT设备的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口;第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个。第二NAT设备,还用于向第二主机发送第二打洞响应报文;其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为第二NAT设备的第三公网端口的内网端口。
其中,第二主机,用于向第二NAT设备发送第二数量的第二打洞请求报文。其中,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个,第二主机的第二数量的内网端口分别映射为:第二NAT设备的第二数量的第二公网端口;第二NAT设备为对称型NAT设备。第二主机,还用于接收来自第二NAT设备的第二打洞响应报文。其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为第二NAT设备的第三公网端口的内网端口;第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个。
此外,第一主机和第二主机还可以用于从NAT服务器获取第一NAT设备和第二NAT设备的NAT地址和NAT类型,以便发送打洞请求报文。
上述第一NAT设备可以为全锥型NAT(full cone NAT)设备、地址限制锥型NAT(address restricted cone NAT)设备、端口限制锥型(port restricted cone NAT)上报、对称型NAT(symmetric NAT)设备中的任意一种。上述第二NAT设备为对称型NAT设备。
上述主机,如第一主机和第二主机,可以为任意一种可以有线和/或无线方式接入图1所示的通信系统的终端设备,如个人电脑(personal computer,PC)、笔记本(notebook)、手机、平板电脑,以及任何具备网络通信能力的终端设备。
应理解,图1仅为便于理解而示例的简化示意图,该通信系统中还可以包括其他NAT设备,和/或,其他主机,图1中未予以画出。
图2为本申请实施例提供的对称型NAT设备的端口预测方法可所适用的一种通信装置200的结构示意图。通信装置200可以是第一主机、第一NAT设备、第二NAT设备、第二主机中的一种,也可以是应用于第一主机、第一NAT设备、第二NAT设备、第二主机中的芯片或者其他部件。如图2所示,通信装置200可以包括处理器201,存储器202、收发器203。其中,处理器201与存储器202和收发器203耦合,如相互之间存在信号连接,如可以通过通信总线连接。
下面结合图2对通信装置200的各个构成部件进行具体的介绍:
处理器201是通信装置200的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器201是一个或多个中央处理器(central processing unit,CPU),也可以是特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signalprocessor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。
其中,处理器201可以通过运行或执行存储在存储器202内的软件程序,以及调用存储在存储器202内的数据,执行通信装置200的各种功能。
在具体的实现中,作为一种实施例,处理器201可以包括一个或多个CPU,例如图2中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,通信装置200也可以包括多个处理器,例如图2中所示的处理器201和处理器204。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个通信设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器202可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储通信设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储通信设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储通信设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器202可以独立存在,也可以和处理器201集成在一起。
其中,所述存储器202用于存储执行本申请方案的软件程序,并由处理器201来控制执行。上述具体实现方式可以参考下述方法实施例,此处不再赘述。
收发器203,用于与其他通信装置之间的通信。当然,收发器203还可以用于与通信网络通信。收发器203可以包括接收单元实现接收功能,以及发送单元实现发送功能。
需要说明的是,图2中示出的通信装置200的结构并不构成对该通信装置的限定,实际的通信装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面将结合图3-图6对本申请实施例提供的对称型NAT设备的端口预测方法进行具体阐述。
图3为本申请实施例提供的对称型NAT设备的端口预测方法的流程示意图一。该对称型NAT设备的端口预测方法可以适用于对图1所示的第二NAT设备的端口进行预测,并基于端口预测完成第一主机与第二主机之间的UDP打洞操作,从而建立第一主机与第二主机之间的直接通信。
如图3所示,该对称型NAT设备的端口预测方法包括如下步骤:
S301,第一主机从NAT服务器获取第一NAT设备和第二NAT设备的NAT地址和NAT类型。相应地,第二主机从NAT服务器获取第一NAT设备和第二NAT设备的NAT地址和NAT类型。
示例性地,第一主机或第二主机可以向NAT服务器发送NAT地址请求消息,并接收来自NAT服务器的NAT地址响应消息。其中,该NAT地址请求消息用于请求第一NAT设备的公网地址和NAT设备类型,和/或,第二NAT设备的公网地址和NAT设备类型。
其中,第一NAT设备的公网地址包括第一NAT设备的公网IP地址和公网端口,第一NAT设备的公网IP地址为第一主机的内网IP地址在第一NAT设备上映射的公网地址,第一NAT设备的公网端口为第一主机的内网端口在第一NAT设备上映射的公网端口。第二NAT设备的公网地址包括第二NAT设备的公网IP地址,第二NAT设备的公网IP地址为第二主机的内网IP地址在第二NAT设备上映射的公网地址。
需要说明的是,无论NAT设备是否为对称型NAT设备,同一主机在NAT设备上映射的公网IP地址通常是固定的,因此可以从NAT服务器获取第二主机在第二NAT设备上映射的公网IP地址。但是,访问不同目的IP或相同目的IP的不同目的端口,同一主机在对称型NAT设备上映射的公网端口就会不同。也就是说,倘若对称型NAT设备在将主机私有端口映射为公网端口时没有采用预设规则,如映射的公网端口的端口号连续递增或递减,则在直接通信建立之前,NAT服务器是无法获知主机私有端口在对称型NAT设备上映射的公网端口的。
在本申请实施例中,S301可以分两步操作,也可以一步操作,具体视实际通信场景而定。例如,倘若NAT服务器上已经存储有第一NAT设备的公网地址和NAT设备类型,以及第二NAT设备的公网地址和NAT设备类型,如在执行S301之前,第一NAT设备和第二NAT设备已经在NAT服务器上完成注册,则两个主机只需要各执行一次与NAT服务器之间的交互,即可获取上述两个NAT设备的公网地址和NAT设备类型。又例如,倘若NAT服务器上尚未存储有对端NAT设备的公网地址和NAT设备类型,则该主机需要执行上述两次交互,方可获取上述两个NAT设备的公网地址和NAT设备类型。例如,倘若NAT服务器上尚未存储有第二NAT设备的公网地址和NAT设备类型,则第一主机与NAT服务器之间的第一次交互,只能获取第一NAT设备的公网地址和NAT设备类型。待第二主机执行与NAT服务器之间的第一次交互之后,NAT服务器上才会存储有第二NAT设备的公网地址和NAT设备类型。然后,第一主机执行与NAT服务器之间的第二次交互,方能获取第二NAT设备的公网地址和NAT设备类型。
需要说明的是,上述公网地址包括:NAT设备对应主机的内网IP地址在该NAT设备上映射的公网IP地址,以及NAT设备对应主机的内网端口在该NAT设备上映射的公网端口。
容易理解,倘若第一主机和第二主机已经获知第一NAT设备和第二NAT设备的NAT地址和NAT类型,则可以直接执行S302,也就是说,S301可以视为可选步骤。
S302,第一主机向第一NAT设备发送第一数量的第一打洞请求报文。相应地,第一NAT设备接收来自第一主机的第一数量的第一打洞请求报文。
其中,第一打洞请求报文的源地址为第一主机的私网地址,即第一主机的私网IP地址和同一个私网端口。相应地,第一打洞请求报文的目的IP地址为:第二NAT设备的公网IP地址,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。
需要说明的是,第二NAT设备的第一数量的第一公网端口,是第一主机随机地从第二NAT设备的可用公网端口中随机选取出来的。例如,假定NAT设备中公网端口包括端口号从0至65535的端口,且端口号从0至1024的端口通常为预留端口,则NAT设备的可用公网端口通常为端口号从1025至65535的公网端口,共计64511个公网端口。
示例性地,图4为本申请实施例提供对称型NAT设备的端口预测方法所涉及到的交互报文的示意图。如图4所示,假定第一数量为m(m大于1,且小于或等于64511),则第二NAT设备的m个第一公网端口,是第一主机从第二NAT设备的可用公网端口中随机选取出来的m个端口,且该m个端口互不相同。
S303,第二主机向第二NAT设备发送第二数量的第二打洞请求报文。相应地,第二NAT设备接收来自第二主机的第二数量的第二打洞请求报文。
其中,第二打洞请求报文的源IP地址为:第二主机的内网IP地址,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个。第二打洞请求报文的目的IP地址为:第一NAT设备的公网IP地址,第二打洞请求报文的目的端口为:第一NAT设备的同一个公网端口,也就是第一主机用于发送第一数量的第一打洞报文的内网端口在第一NAT设备上映射的公网端口。
需要说明的是,第二主机的第二数量的内网端口,是第二主机随机地从第二主机的可用端口中随机选取出来的。示例性地,如图4所示,假定第二数量为n,则第二主机的n个内网端口,是第二主机从第二主机的可用端口中随机选取出来的n个端口,且该n个端口互不相同。
此外,鉴于第二NAT设备为对称型NAT设备,上述第二主机的第二数量的内网端口会被第二NAT设备分别映射为:第二NAT设备的第二数量的第二公网端口。
S304,第二NAT设备向第一NAT设备发送第二数量的第三打洞请求报文。相应地,第一NAT设备接收来自第二NAT设备的第二数量的第三打洞请求报文。
其中,第三打洞请求报文的源IP地址为:第二主机在第二NAT设备映射的公网IP地址,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个,该第二数量的第二公网端口为第二主机的第二数量的内网端口在第二NAT设备映射的公网端口。
与S304相同,第三打洞请求报文的目的IP地址和目的端口分别为第一NAT设备的公网IP地址和公网端口。也就是说,第三打洞请求报文实际上是第二NAT设备接收到来自第二主机的第二数量的第二打洞请求报文后,向第一NAT设备转发的第二打洞请求报文。
示例性地,如图4所示,假定第二数量为n,则第二NAT设备的n个第二公网端口端口,是第二NAT设备将第二主机随机选择的n个内网端口分别映射的n个公网端口。容易理解,该n个第二公网端口互不相同。
需要说明的是,S303-S304可以在执行S302之后执行,也可以在执行S302之前执行,本申请实施例对此不作限定。
S305,第一NAT设备确定第二数量的第二公网端口中和第一数量的第一公网端口中均存在第三公网端口。
其中,第一NAT设备可以将第一数量的第一公网端口和第二数量的第二公网端口分别视为第二NAT设备的第一端口集合与第二端口集合,然后确定第一端口集合与第二端口集合是否存在非空交集。若存在非空交集,则可将该非空交集中的端口视为第三公网端口。
示例性地,第一端口集合包括第一公网端口1-5,第二端口集合包括第二公网端口1-3,若第一公网端口3的端口号等于第二公网端口1的端口号,则将第一公网端口3,也就是第二公网端口1视为第三公网端口。也就是说,第一NAT设备已经可以确定:第一主机可以经由第一NAT设备,以及第二NAT设备的第三公网端口,与第二主机之间建立直接通信,即可以通过在第二NAT设备的第三公网端口上打孔的方式完成第一主机与第二主机之间的NAT穿越。
在本申请实施例中,上述穿越成功率可以通过如下公式计算:
其中,r为穿越成功率,m为第一数量,n为第二数量。
示例性地,在本申请实施例中,假定m=2048,n=128,则穿越成功率r可高达98.3%。而在现有实现方式中,第一主机或第二主机通常一次只发送一个打洞请求报文。在此情况下,穿越成功率大约为1/64511。可见本申请实施例提供的对称型NAT设备的端口预测方法,可以大幅提高穿越成功率。
需要说明的是,上述m和n的取值可以根据实际需求进行调整,如根据实际要求的穿越成功率进行调整。
S306,第一NAT设备向第一主机转发源端口为第三公网端口的第三打洞请求报文。相应地,第一主机接收来自第一NAT设备的源端口为第三公网端口的第三打洞请求报文。
如图4所示,第一NAT设备向第一主机转发的1个第三打洞请求报文即为S305中确定的、源端口为第三公网端口的第三打洞请求报文,以便通知第一主机第二NAT设备穿越成功。
需要说明的是,对于第一主机,只能接收到第一NAT设备从第二数量的第三打洞报文中,选择并转发给第一主机的、源端口为第三公网端口的第三打洞报文,看不到除源端口为第三公网端口的第三打洞报文之外的其他第三打洞报文。因此,第一主机并不知道第二NAT设备的第二数量的第二公网端口中,除第三公网端口之外的其他第二公网端口。当然,对于第三公网端口是第二NAT设备的第一数量的第一公网端口中的一个,第一主机是可以看得到的。
容易理解,在第一主机获知第二NAT设备穿越成功之后,还需要通知第二主机打洞操作成功。因此,图3所示的对称型NAT设备的端口预测方法,还可以包括如下步骤:
S307,第一主机向第一NAT设备发送第一打洞响应报文。相应地,第一NAT设备接收来自第一主机的第一打洞响应报文。然后,第一NAT设备向第二NAT设备转发第一打洞响应报文。相应地,第二NAT设备接收来自第一NAT设备的第一打洞响应报文。
其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。需要说明的是,鉴于第一主机向第一NAT设备发送的第一数量的第一打洞报文可能到达不了第二NAT设备,如被第一NAT设备丢弃,即第二NAT设备并不知道第一数量的第一公网端口中除第三公网端口之外的其他端口。当然,对于第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个,第二NAT设备还是可以看得到的。
示例性地,如图4所示,第一主机还需要经由第一NAT设备,向第二NAT设备发送第一打洞响应报文,以便通知第二NAT设备穿越成功。容易理解,该打洞响应报文需要携带穿越成功的第二NAT设备的第二公网端口的端口号。
S308,第二NAT设备向第二主机发送第二打洞响应报文。相应地,第二主机接收来自第二NAT设备的第二打洞响应报文。
其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为第二NAT设备的第三公网端口的内网端口。第二打洞响应报文的目的IP为:第二主机的内网IP地址。也就是说,第二打洞响应报文为第二NAT设备接收并向第二主机转发的第一打洞需要报文。
需要说明的是,与第二NAT设备类似,鉴于第一主机向第一NAT设备发送的第一数量的第一打洞报文不会到达第二NAT设备,当然更不会达到第二主机,如被第一NAT设备丢弃,即第二主机也不知道第一数量的第一公网端口中除第三公网端口之外的其他端口。当然,对于第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个,第二主机还是可以看得到的。
需要说明的是,在执行上述S306-S308之后,第一主机和第二主机均已获知穿越成功,也就成功建立了第一主机经由第一NAT设备、第二NAT设备到达第二主机的直接通信。
在本申请实施例中,还可以为打洞请求报文设置跳数,如将第一打洞请求报文的跳数为第一跳数。容易理解,倘若第一跳数的数值较大,如65,虽然可以确保第一打洞请求报文能够到达第一NAT设备,但也可能经由第一NAT设备达到其他无关的网络设备,从而带来网络资源的浪费。然而,倘若第一跳数的值较小,如第一跳数为2、3等较小数值,则可能导致第一打洞请求报文到达不了第一NAT设备,如第一主机与第一NAT设备之间存在多于第一跳数的网关、路由器等其他网络设备,从而导致上述方法实施例的后续步骤,如S305-S308无法实施,并最终导致打孔操作失败。
为兼顾资源利用率和打孔成功率,第一主机可以先发送第一跳数的打洞请求报文。倘若打孔失败,第一主机在发送第二跳数的打洞请求报文。其中,第二跳数大于第一跳数,如第二跳数可以为4、5、8等较大值。因此,在一种可能的设计方法中,第一打洞请求报文的跳数为第一跳数。相应地,在执行S302,第一主机向第一NAT设备发送第一数量的第一打洞请求报文之后,上述对称型NAT设备的端口预测方法还可以包括如下步骤:
若第一主机在指定时间段内未接收到源端口为第三公网端口的第三打洞请求报文,则第一主机向第一NAT设备发送第三数量的第四打洞请求报文。其中,第四打洞请求报文的跳数为第二跳数,且第二跳数大于第一跳数。其中,第三数量可以等于第一数量,也可以不等于第一数量,本申请实施例对此不作限定。
下面结合具体示例,说明本申请实施例提供的对称型NAT设备的端口预测方法的具体应用场景。
图5和图6分别为本申请实施例提供的对称型NAT设备的端口预测方法所适用的通信场景一的示意图和通信场景二的示意图。下面分别说明。
图5所示的通信场景一为网络通话场景,具体可以包括如下步骤:
S501,第一主机经由NAT服务器,向第二主机发起网络呼叫请求。相应地,第二主机接收来自第一主机,且经由NAT服务器转发的网络呼叫请求。
其中,网络呼叫可以为网络电话,如语音通话或视频通话。需要说明的是,第一主机所在网络的NAT设备为对称型NAT设备,且第二主机所在网络的NAT设备为非对称型NAT设备。或者,第一主机所在网络的NAT设备为非对称型NAT设备,且第二主机所在网络的NAT设备为对称型NAT设备。
S502,执行S301-S308,具体可以参考图3所示的方法实施例,此处不再赘述。
S503,呼叫成功,第一主机与第二主机开始网络通话。
其中,网络通话相关内容可以参考现有实现方式,本申请实施例不再赘述。
图6所示的通信场景一为文件传输场景,具体可以包括如下步骤:
S601,第一主机经由NAT服务器,向第二主机发起文件传输请求。相应地,第二主机接收来自第一主机,且经由NAT服务器转发的文件传输请求。
其中,文件传输可以为语音文件传输、视频文件传输、文本文件传输,或者其他任意一种或多种格式的文件传输。需要说明的是,第一主机所在网络的NAT设备为对称型NAT设备,且第二主机所在网络的NAT设备为非对称型NAT设备。或者,第一主机所在网络的NAT设备为非对称型NAT设备,且第二主机所在网络的NAT设备为对称型NAT设备。
S602,执行S301-S308,具体可以参考图3所示的方法实施例,此处不再赘述。
S603,传输链路建立,第一主机与第二主机开始文件传输。
其中,文件传输相关内容可以参考现有实现方式,本申请实施例不再赘述。
需要说明的是,在执行成功图3、图5、图6中的任一流程之后,第一主机、第一NAT设备、第二主机、第二NAT设备、NAT服务器中的一个或多个,还可以存储上述NAT穿越成功的路由信息,以便在第一主机和第二主机下一次建立直接通信时使用。示例性地,可以存储如下信息中的一项或多项:第一主机的内网IP地址和内网端口、第一主机的内网IP地址和内网端口在第一NAT设备上分别映射的公网IP地址和公网端口、第二主机的内网IP地址和内网端口、第二主机的内网IP地址和内网端口在第二NAT设备上分别映射的公网IP地址和公网端口。
此外,图5和图6仅仅为本申请实施例提供的对称型NAT设备的端口预测方法的2个应用场景。容易理解,该方法还可以适用于其他包含对称型NAT设备的应用场景,本申请实施例不再赘述。
本申请实施例提供的对称型NAT设备的端口预测方法,第一NAT设备能够通过接收来自第一主机的第一数量的第一打洞请求报文,以及第二NAT设备从第二主机接收并转发第二数量的第三打洞请求报文,从而可以获取第二NAT设备的第一数量的第一公网端口,以及第二NAT设备的第二数量的第二公网端口,倘若第一NAT设备确定第二数量的第二公网端口中和第一数量的第一公网端口中均存在第三公网端口,则第一NAT设备向第一主机转发源端口为第二公网端口的第二打洞请求报文,也就是表明打洞成功,从而建立起第一主机经由第一NAT设备、第二NAT设备到达第二主机的直接通信,能够提高对称型NAT设备的端口预测的成功率。
以上结合图3-图6详细说明了本申请实施例提供的对称型NAT设备的端口预测方法。以下结合图7-图9详细说明本申请实施例提供的通信装置。
图7是本申请实施例提供的通信装置的结构示意图二。该通信装置可适用于图1所示出的通信系统中,执行上述方法实施例中第一主机的功能。为了便于说明,图7仅示出了该通信装置的主要部件。
如图7所示,通信装置700包括:接收模块701和发送模块702。
其中,发送模块702,用于向第一NAT设备发送第一数量的第一打洞请求报文;其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。
接收模块701,用于接收来自第一NAT设备,且源端口为第三公网端口的第三打洞请求报文;其中,第三公网端口为:第二NAT设备的第一数量的第一公网端口中的一个。
发送模块702,还用于向第一NAT设备发送第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。
图8为本申请实施例提供的通信装置的结构示意图三。在一种可能的设计中,第一打洞请求报文的跳数为第一跳数。相应地,如图8所示,通信装置700还可以包括:处理模块703。其中,处理模块703,用于在发送模块702向第一NAT设备发送第一数量的第一打洞请求报文之后,确定接收模块701在指定时间段内未接收到源端口为第三公网端口的第三打洞请求报文。相应地,发送模块702,还用于向第一NAT设备发送第三数量的第四打洞请求报文;其中,第四打洞请求报文的跳数为第二跳数,第二跳数大于第一跳数。
可选地,图7和图8所示的通信装置700还可以包括存储模块(图7和图8中未示出),该存储模块存储有程序或指令。当处理模块703执行该程序或指令时,使得通信装置700可以执行上述方法实施例所述的对称型NAT设备的端口预测方法中第一主机的功能。
需要说明的是,上述通信装置700可以是上述第一主机或图2所示的通信装置200,也可以是设置于上述第一主机或通信装置200中的芯片或芯片系统,本申请实施例对此不做限定。
通信装置700的技术效果,可以参考上述方法实施例所述的对称型NAT设备的端口预测方法的技术效果,此处不再赘述。
在另一种可能的设计中,图7或图8所示通信装置700还可适用于图1所示的通信系统中,执行上述方法实施例所述的对称型NAT设备的端口预测方法中第二NAT设备的功能。
其中,接收模块701,用于接收来自第二主机的第二数量的第二打洞请求报文;其中,第二打洞请求报文的源端口为:第二主机的第二数量的内网端口中的一个,第二主机的第二数量的内网端口分别映射为:通信装置700的第二数量的第二公网端口;通信装置700为对称型NAT设备。
发送模块702,用于向第一NAT设备发送第二数量的第三打洞请求报文;其中,第三打洞请求报文的源端口为:通信装置700的第二数量的第二公网端口中的一个。
接收模块701,还用于接收来自第一NAT设备的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:通信装置700的第三公网端口;第三公网端口为:通信装置700的第二数量的第二公网端口中的一个。
发送模块702,还用于向第二主机发送第二打洞响应报文;其中,第二打洞响应报文的目的端口为:第二主机的内网端口中,映射为通信装置700的第三公网端口的内网端口。
可选地,图7所示的通信装置700还可以包括存储模块(图7和图8中未示出),该存储模块存储有程序或指令,则如图8所示,当处理模块703执行该程序或指令时,使得通信装置700可以执行上述方法实施例所述的对称型NAT设备的端口预测方法。
需要说明的是,通信装置700可以是第二NAT设备,也可以是设置于第二NAT设备中的芯片或芯片系统,本申请对此不做限定。
在又一种可能的设计中,通信装置700还可适用于图1所示的通信系统中,执行上述方法实施例所述的对称型NAT设备的端口预测方法中第二主机的功能。
其中,发送模块702,用于向第二NAT设备发送第二数量的第二打洞请求报文;其中,第二打洞请求报文的源端口为:通信装置700的第二数量的内网端口中的一个,通信装置700的第二数量的内网端口分别映射为:第二NAT设备的第二数量的第二公网端口;第二NAT设备为对称型NAT设备。
接收模块701,用于接收来自第二NAT设备的第二打洞响应报文;其中,第二打洞响应报文的目的端口为:通信装置700的内网端口中,映射为第二NAT设备的第三公网端口的内网端口;第三公网端口为:第二NAT设备的第二数量的第二公网端口中的一个。
可选地,通信装置700还可以包括存储模块(图7和图8中未示出),该存储模块存储有程序或指令,则如图8所示,当处理模块703执行该程序或指令时,使得通信装置700可以执行上述方法实施例所述的对称型NAT设备的端口预测方法中第二主机的功能。
需要说明的是,上述通信装置700可以是第二NAT设备或图2所示的通信装置200,也可以是设置于第二NAT设备或通信装置200中的芯片或芯片系统,本申请实施例对此不做限定。
通信装置700的技术效果,可以参考上述方法实施例所述对称型NAT设备的端口预测方法的技术效果,此处不再赘述。
图9是本申请实施例提供的通信装置的结构示意图四。该通信装置可适用于图1所示出的通信系统中,执行上述方法实施例中第一NAT设备的功能。为了便于说明,图9仅示出了该通信装置的主要部件。
如图9所示,通信装置900包括:处理模块901和收发模块902。
其中,收发模块902,用于接收来自第一主机的第一数量的第一打洞请求报文;其中,第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;第二NAT设备为对称型NAT设备。
收发模块902,还用于接收来自第二NAT设备的第二数量的第三打洞请求报文;其中,第三打洞请求报文的源端口为:第二NAT设备的第二数量的第二公网端口中的一个。
处理模块901,用于确定第二NAT设备的第二数量的第二公网端口中,与第二NAT设备的第一数量的第一公网端口中,均存在第三公网端口。
收发模块902,还用于向第一主机转发源端口为第三公网端口的第三打洞请求报文。
收发模块902,还用于接收来自第一主机的第一打洞响应报文;其中,第一打洞响应报文的目的端口为:第二NAT设备的第三公网端口。
收发模块902,还用于向第二NAT设备转发第一打洞响应报文。
可选地,通信装置900还可以包括存储模块(图9中未示出),该存储模块存储有程序或指令。当处理模块901执行该程序或指令时,使得通信装置900可以执行上述方法实施例所述的对称型NAT设备的端口预测方法中第一NAT设备的功能。
需要说明的是,通信装置900可以是第一NAT设备或图2所示的通信装置200,也可以是设置于第一NAT设备或通信装置200中的芯片或芯片系统,本申请对此不做限定。
通信装置900的技术效果,可以参考上述方法实施例所述对称型NAT设备的端口预测方法的技术效果,此处不再赘述。
本申请实施例提供一种芯片系统。该芯片系统包括处理器和输入/输出端口,所述处理器用于实现上述方法实施例所涉及的处理功能,所述输入/输出端口用于实现上述方法实施例所涉及的收发功能。
在一种可能的设计中,该芯片系统还包括存储器,该存储器用于存储实现上述方法实施例所涉及的功能的程序指令和数据。
该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供一种通信系统。该系统包括上述一个或多个终端设备,以及一个或多个网络设备。
本申请实施例提供一种计算机可读存储介质,包括:该计算机可读存储介质中存储有计算机指令;当该计算机指令在计算机上运行时,使得该计算机执行上述方法实施例所述的对称型NAT设备的端口预测方法。
本申请实施例提供了一种包含指令的计算机程序产品,包括计算机程序或指令,当该计算机程序或指令在计算机上运行时,使得该计算机执行上述方法实施例所述的对称型NAT设备的端口预测方法。
应理解,在本申请实施例中的处理器可以是中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件(如电路)、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、NAT服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、NAT服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的NAT服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,NAT服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种对称型NAT设备的端口预测方法,其特征在于,包括:
第一主机向第一NAT设备发送第一数量的第一打洞请求报文;其中,所述第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;所述第二NAT设备为对称型NAT设备;
所述第一主机接收来自所述第一NAT设备,且源端口为第三公网端口的第三打洞请求报文;其中,所述第三公网端口为:所述第二NAT设备的第一数量的第一公网端口中的一个;
所述第一主机向所述第一NAT设备发送第一打洞响应报文;其中,所述第一打洞响应报文的目的端口为:所述第二NAT设备的第三公网端口。
2.根据权利要求1所述的对称型NAT设备的端口预测方法,其特征在于,所述第一打洞请求报文的跳数为第一跳数;
在所述第一主机向第一NAT设备发送第一数量的第一打洞请求报文之后,所述对称型NAT设备的端口预测方法还包括:
若所述第一主机在指定时间段内未接收到源端口为所述第三公网端口的第三打洞请求报文,则所述第一主机向所述第一NAT设备发送第三数量的第四打洞请求报文;其中,所述第四打洞请求报文的跳数为第二跳数,所述第二跳数大于所述第一跳数。
3.一种对称型NAT设备的端口预测方法,其特征在于,包括:
第一NAT设备接收来自第一主机的第一数量的第一打洞请求报文;其中,所述第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;所述第二NAT设备为对称型NAT设备;
所述第一NAT设备接收来自所述第二NAT设备的第二数量的第三打洞请求报文;其中,所述第三打洞请求报文的源端口为:所述第二NAT设备的第二数量的第二公网端口中的一个;
所述第一NAT设备确定所述第二NAT设备的第二数量的第二公网端口中,与所述第二NAT设备的第一数量的第一公网端口中,均存在第三公网端口;
所述第一NAT设备向所述第一主机转发源端口为所述第三公网端口的第三打洞请求报文;
所述第一NAT设备接收来自所述第一主机的第一打洞响应报文;其中,所述第一打洞响应报文的目的端口为:所述第二NAT设备的第三公网端口;
所述第一NAT设备向所述第二NAT设备转发所述第一打洞响应报文。
4.一种对称型NAT设备的端口预测方法,其特征在于,包括:
第二NAT设备接收来自第二主机的第二数量的第二打洞请求报文;其中,所述第二打洞请求报文的源端口为:所述第二主机的第二数量的内网端口中的一个,所述第二主机的第二数量的内网端口分别映射为:所述第二NAT设备的第二数量的第二公网端口;所述第二NAT设备为对称型NAT设备;
所述第二NAT设备向第一NAT设备发送第二数量的第三打洞请求报文;其中,所述第三打洞请求报文的源端口为:所述第二NAT设备的第二数量的第二公网端口中的一个;
所述第二NAT设备接收来自所述第一NAT设备的第一打洞响应报文;其中,所述第一打洞响应报文的目的端口为:所述第二NAT设备的第三公网端口;所述第三公网端口为:所述第二NAT设备的第二数量的第二公网端口中的一个;
所述第二NAT设备向所述第二主机发送第二打洞响应报文;其中,所述第二打洞响应报文的目的端口为:所述第二主机的内网端口中,映射为所述第二NAT设备的第三公网端口的内网端口。
5.一种对称型NAT设备的端口预测方法,其特征在于,包括:
第二主机向第二NAT设备发送第二数量的第二打洞请求报文;其中,所述第二打洞请求报文的源端口为:所述第二主机的第二数量的内网端口中的一个,所述第二主机的第二数量的内网端口分别映射为:所述第二NAT设备的第二数量的第二公网端口;所述第二NAT设备为对称型NAT设备;
所述第二主机接收来自所述第二NAT设备的第二打洞响应报文;其中,所述第二打洞响应报文的目的端口为:所述第二主机的内网端口中,映射为所述第二NAT设备的第三公网端口的内网端口;所述第三公网端口为:所述第二NAT设备的第二数量的第二公网端口中的一个。
6.一种通信装置,其特征在于,包括:接收模块和发送模块;其中,
所述发送模块,用于向第一NAT设备发送第一数量的第一打洞请求报文;其中,所述第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;所述第二NAT设备为对称型NAT设备;
所述接收模块,用于接收来自所述第一NAT设备,且源端口为第三公网端口的第三打洞请求报文;其中,所述第三公网端口为:所述第二NAT设备的第一数量的第一公网端口中的一个;
所述发送模块,还用于向所述第一NAT设备发送第一打洞响应报文;其中,所述第一打洞响应报文的目的端口为:所述第二NAT设备的第三公网端口。
7.根据权利要求6所述的通信装置,其特征在于,所述第一打洞请求报文的跳数为第一跳数;所述通信装置还包括:处理模块;其中,
所述处理模块,用于在所述发送模块向第一NAT设备发送第一数量的第一打洞请求报文之后,确定所述接收模块在指定时间段内未接收到源端口为所述第三公网端口的第三打洞请求报文;
所述发送模块,还用于向所述第一NAT设备发送第三数量的第四打洞请求报文;其中,所述第四打洞请求报文的跳数为第二跳数,所述第二跳数大于所述第一跳数。
8.一种通信装置,其特征在于,包括:处理模块和收发模块;其中,
所述收发模块,用于接收来自第一主机的第一数量的第一打洞请求报文;其中,所述第一打洞请求报文的目的端口为:第二NAT设备的第一数量的第一公网端口中的一个;所述第二NAT设备为对称型NAT设备;
所述收发模块,还用于接收来自所述第二NAT设备的第二数量的第三打洞请求报文;其中,所述第三打洞请求报文的源端口为:所述第二NAT设备的第二数量的第二公网端口中的一个;
所述处理模块,用于确定所述第二NAT设备的第二数量的第二公网端口中,与所述第二NAT设备的第一数量的第一公网端口中,均存在第三公网端口;
所述收发模块,还用于向所述第一主机转发源端口为所述第三公网端口的第三打洞请求报文;
所述收发模块,还用于接收来自所述第一主机的第一打洞响应报文;其中,所述第一打洞响应报文的目的端口为:所述第二NAT设备的第三公网端口;
所述收发模块,还用于向所述第二NAT设备转发所述第一打洞响应报文。
9.一种通信装置,其特征在于,包括:接收模块和发送模块;其中,
所述接收模块,用于接收来自第二主机的第二数量的第二打洞请求报文;其中,所述第二打洞请求报文的源端口为:所述第二主机的第二数量的内网端口中的一个,所述第二主机的第二数量的内网端口分别映射为:所述通信装置的第二数量的第二公网端口;所述通信装置为对称型NAT设备;
所述发送模块,用于向第一NAT设备发送第二数量的第三打洞请求报文;其中,所述第三打洞请求报文的源端口为:所述通信装置的第二数量的第二公网端口中的一个;
所述接收模块,还用于接收来自所述第一NAT设备的第一打洞响应报文;其中,所述第一打洞响应报文的目的端口为:所述通信装置的第三公网端口;所述第三公网端口为:所述通信装置的第二数量的第二公网端口中的一个;
所述发送模块,还用于向所述第二主机发送第二打洞响应报文;其中,所述第二打洞响应报文的目的端口为:所述第二主机的内网端口中,映射为所述通信装置的第三公网端口的内网端口。
10.一种通信装置,其特征在于,包括:接收模块和发送模块;其中,
所述发送模块,用于向第二NAT设备发送第二数量的第二打洞请求报文;其中,所述第二打洞请求报文的源端口为:所述通信装置的第二数量的内网端口中的一个,所述通信装置的第二数量的内网端口分别映射为:所述第二NAT设备的第二数量的第二公网端口;所述第二NAT设备为对称型NAT设备;
所述接收模块,用于接收来自所述第二NAT设备的第二打洞响应报文;其中,所述第二打洞响应报文的目的端口为:所述通信装置的内网端口中,映射为所述第二NAT设备的第三公网端口的内网端口;所述第三公网端口为:所述第二NAT设备的第二数量的第二公网端口中的一个。
11.一种通信装置,其特征在于,所述通信装置包括:处理器,所述处理器与存储器耦合;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中存储的所述计算机程序,以使得所述通信装置执行如权利要求1-5中任一项所述的对称型NAT设备的端口预测方法。
12.一种芯片系统,其特征在于,所述芯片系统包括处理器和输入/输出端口,所述处理器用于实现如权利要求1-5中任一项所涉及的处理功能,所述输入/输出端口用于实现如权利要求1-5中任一项所涉及的收发功能。
13.一种可读存储介质,其特征在于,所述可读存储介质包括程序或指令,当所述程序或指令在计算机上运行时,使得所述计算机执行如权利要求1-5中任一项所述的对称型NAT设备的端口预测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910736204.4A CN112351115B (zh) | 2019-08-09 | 2019-08-09 | 对称型nat设备的端口预测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910736204.4A CN112351115B (zh) | 2019-08-09 | 2019-08-09 | 对称型nat设备的端口预测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112351115A CN112351115A (zh) | 2021-02-09 |
CN112351115B true CN112351115B (zh) | 2022-03-04 |
Family
ID=74367032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910736204.4A Active CN112351115B (zh) | 2019-08-09 | 2019-08-09 | 对称型nat设备的端口预测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112351115B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112954061A (zh) * | 2021-02-20 | 2021-06-11 | 杭州卯方科技有限公司 | 一种在端口受限的网络中实现p2p打洞的装置 |
CN113301183A (zh) * | 2021-06-15 | 2021-08-24 | 杭州华橙软件技术有限公司 | 网络连通性的探测方法及装置、存储介质、电子装置 |
CN114844856B (zh) * | 2022-04-26 | 2024-03-22 | 夏宇 | 网络穿透方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631145A (zh) * | 2008-07-18 | 2010-01-20 | 友讯科技股份有限公司 | 一种预测nat设备端口的方法 |
CN105141711A (zh) * | 2015-08-24 | 2015-12-09 | 北京息通网络技术有限公司 | 一种基于大数据分析的对称nat穿越方法及系统 |
CN107580082A (zh) * | 2017-09-18 | 2018-01-12 | 北京奇艺世纪科技有限公司 | 一种对称型nat的穿透方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1694034B1 (en) * | 2005-02-16 | 2014-05-21 | Alcatel Lucent | Method to establish a peer-to-peer connection between two user agents located behind symmetric NATs |
-
2019
- 2019-08-09 CN CN201910736204.4A patent/CN112351115B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631145A (zh) * | 2008-07-18 | 2010-01-20 | 友讯科技股份有限公司 | 一种预测nat设备端口的方法 |
CN105141711A (zh) * | 2015-08-24 | 2015-12-09 | 北京息通网络技术有限公司 | 一种基于大数据分析的对称nat穿越方法及系统 |
CN107580082A (zh) * | 2017-09-18 | 2018-01-12 | 北京奇艺世纪科技有限公司 | 一种对称型nat的穿透方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112351115A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8650326B2 (en) | Smart client routing | |
US11277313B2 (en) | Data transmission method and corresponding device | |
CN112351115B (zh) | 对称型nat设备的端口预测方法及装置 | |
KR101455434B1 (ko) | 에지 라우팅을 갖는 피어-투-피어 협업 시스템 | |
JP4557803B2 (ja) | ネットワークシステム及び通信方法 | |
US9203872B2 (en) | Distributed connectivity policy enforcement with ICE | |
CN108702394B (zh) | 网络端点间的媒体会话 | |
CN113364894B (zh) | 用于网络端点间的媒体会话的方法和装置 | |
KR20150013860A (ko) | 클라이언트 없는 클라우드 컴퓨팅 | |
US9866525B2 (en) | Source-destination network address translation (SDNAT) proxy and method thereof | |
CN110177047B (zh) | 报文发送方法、装置、电子设备和计算机可读存储介质 | |
WO2024021414A1 (zh) | 数据传输 | |
CN109819070B (zh) | 一种网络地址转换方法 | |
US20230291706A1 (en) | Method for accessing network, media gateway, electronic device and storage medium | |
US10735476B1 (en) | Connection service with network routing | |
US10594746B1 (en) | Connection service with network routing | |
CN114598532B (zh) | 连接建立方法、装置、电子设备和存储介质 | |
US10333892B2 (en) | Network communication system and network-traversal method | |
CN112019641B (zh) | 数据传输方法和装置 | |
US9497088B2 (en) | Method and system for end-to-end classification of level 7 application flows in networking endpoints and devices | |
WO2024021714A1 (zh) | 一种网络地址转换nat穿越的方法、设备和系统 | |
US10826952B2 (en) | Conference access method and terminal for performing the same | |
US20240179178A1 (en) | Control method and apparatus, computing device, and computer-readable storage medium | |
JP2006261867A (ja) | ネットワーク、ルータ装置及びそれらに用いるプライベートアドレス間通信方法並びにそのプログラム | |
CN114095470A (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 |