CN113132507A - 实现对称型nat穿越的方法、装置和计算机设备 - Google Patents

实现对称型nat穿越的方法、装置和计算机设备 Download PDF

Info

Publication number
CN113132507A
CN113132507A CN202110244232.1A CN202110244232A CN113132507A CN 113132507 A CN113132507 A CN 113132507A CN 202110244232 A CN202110244232 A CN 202110244232A CN 113132507 A CN113132507 A CN 113132507A
Authority
CN
China
Prior art keywords
nat
user terminal
port
information
server
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.)
Pending
Application number
CN202110244232.1A
Other languages
English (en)
Inventor
康志斌
徐波
康文杰
李越
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sharing Zhicheng Information Technology Co ltd
Original Assignee
Beijing Sharing Zhicheng Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sharing Zhicheng Information Technology Co ltd filed Critical Beijing Sharing Zhicheng Information Technology Co ltd
Priority to CN202110244232.1A priority Critical patent/CN113132507A/zh
Publication of CN113132507A publication Critical patent/CN113132507A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及一种实现对称型NAT穿越的方法、装置和计算机设备。所述方法包括:数据交换服务器接收NAT信息并向用户终端转发;预测服务器接收用户终端发送的NAT标识信息;当预测服务器能够识别该NAT标识信息时向用户终端返回识别成功信息;STUN服务器接收用户终端的连接请求,并向用户终端返回N个NAT端口分配数据;预测服务器接收用户终端发送的N个NAT端口分配数据,将该N个NAT端口分配数据输入卷积神经网络模型进行预测,得到预测端口号并将该预测端口号发送给用户终端;用户终端利用该预测端口号实现对称型NAT穿越。采用本方法利用卷积神经网络模型能够更加准确预测NAT的端口号,且一维数据作为卷积神经网络模型的输入能够加快预测速度。

Description

实现对称型NAT穿越的方法、装置和计算机设备
技术领域
本申请涉及数据通信技术领域,特别是涉及一种实现对称型NAT穿越的方法、装置、计算机设备和存储介质。
背景技术
NAT(Network Address Translation,网络地址转换)技术的出现一方面缓解了当前IPv4地址紧缺的问题,另一方面能够使内网免受来自公网的攻击。位于内网的用户终端的端口对为(iAddr:iPort),其中iAddr为位于内网的用户终端IP地址,iPort为位于内网的用户终端通信时使用的端口号;当位于内网的用户终端试图访问位于公网的服务器时,NAT将位于内网的用户终端的端口对(iAddr:iPort)映射为公网能够识别的公网端口对(eAddr:ePort),其中eAddr为NAT的公网IP地址,ePort为NAT为位于内网的用户终端使用某个本地端口与位于公网的服务器进行通信时分配的端口号;位于公网的服务器的端口对为(hAddr:hPort),其中hAddr为位于公网的服务器的IP地址,hPort为位于公网的服务器使用的端口号。一般来讲,NAT分为下列四种类型:全锥形NAT、限制锥形NAT、端口限制锥形NAT和对称型NAT,其中对称型NAT的特点为:对称型NAT会把位于内网的用户终端的端口对(iAddr:iPort)和位于公网的服务器的端口对(hAddr:hPort)相同的数据包看作一个连接,并使用(eAddr:ePort)进行数据转发,当iAddr、iPort、hAddr、hPort任一项发生变化时,对称型NAT都会分配新的端口,建立新的映射关系。
NAT的技术特性使得位于不同内网的两个用户终端无法实现直接通讯,当与P2P(Peer-to-Peer,点对点)技术结合时,需要进行NAT穿透。一种常见的NAT穿透方式是借助STUN(Session Traversal Utilities for NAT,NAT会话穿透工具)协议,利用STUN协议,位于内网的用户终端可以获知NAT的公网IP地址以及分配的端口。锥形NAT的映射关系与目标地址、目标端口无关,以位于公网的服务器作为中转站可以较为轻松的实现两个位于不同内网的用户终端的直接通信,但在目标地址的变化时对称型NAT会分配不同的端口,因此无法利用上述方法实现两端均为对称型NAT的穿透。
为了解决对称型NAT穿透的问题,现有研究提出了端口预测的方法,即通过对对称型NAT分配端口号的历史数据进行观察,总结对称型NAT的映射规律,进而实现端口预测和对称型NAT穿透。传统的NAT端口预测方法预测准确率较低,无法有效实现对称型NAT穿越,进而导致位于对称型NAT后的用户终端难以进行P2P连接。
发明内容
基于此,有必要针对上述技术问题,提供一种能够准确预测NAT端口号的实现对称型NAT穿越的方法、装置、计算机设备和计算机可读存储介质。
第一方面,提供了一种实现对称型NAT穿越的方法,用于STUN服务器、数据交换服务器和预测服务器中,该方法包括:
数据交换服务器接收第一用户终端发送的第一NAT信息,并向第二用户终端转发该第一NAT信息;该数据交换服务器接收该第二用户终端发送的第二NAT信息,并向该第一用户终端转发该第二NAT信息;该第二NAT信息是第二用户终端接收到第一NAT信息后进行响应所发送的;当该第一NAT信息中的NAT类型为对称型NAT且该第二NAT信息中的NAT类型为对称型NAT时,预测服务器接收第一NAT的标识信息和第二NAT的标识信息;该第一NAT与该第二NAT为对称型NAT;当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,向该第一用户终端和该第二用户终端发送识别成功信息;STUN服务器接收到该第一用户终端和该第二用户终端的连接请求,将该第一NAT分配的N个NAT端口分配数据返回给该第一用户终端,将该第二NAT分配的N个NAT端口分配数据返回给该第二用户终端;N为自然数;该预测服务器接收该第一用户终端发送的该第一NAT分配的N个NAT端口分配数据和该第一NAT的标识信息;该预测服务器接收该第二用户终端发送的该第二NAT分配的N个NAT端口分配数据和该第二NAT的标识信息;该预测服务器将该第一个NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测,得到第一预测端口号,将该第二个NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测,得到第二预测端口号;并向该第一用户终端返回该第一预测端口号,以及向该第二用户终端返回该第二预测端口号;数据交换服务器接收该第一用户终端发送的第一预测端口号和该第二用户终端发送的第二预测端口号,并向该第一用户终端转发该第二预测端口号,向该第二用户终端转发该第一预测端口号;利用该第一预测端口号和该第二预测端口号实现对称型NAT穿越。
在其中一个实施例中,该实现对称型NAT穿越的方法还包括:当预测服务器无法识别该第一NAT和该第二NAT至少一个的标识信息时,向标识信息无法被识别的NAT对应的非识别用户终端发送等待信息;STUN服务器收到该非识别用户终端的连接请求,向非识别用户返回多组NAT端口分配数据,每组NAT端口分配数据包含该STUN服务器顺序返回的N+1个NAT端口分配数据;预测服务器接收非识别用户发送的多组NAT端口分配数据,利用该多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型;向非识别用户终端发送识别成功信息。
在其中一个实施例中,该利用多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型的技术过程包括:将多组NAT端口分配数据分为训练集样本和测试集样本;将该训练集样本输入卷积神经网络模型,得到经过训练的卷积神经网络模型;利用测试集样本对该经过训练的卷积神经网络模型进行验证,若验证结果符合预设标准,则经过训练的卷积神经网络模型为训练完成的卷积神经网络模型;若验证结果不符合预设标准,则利用该训练集样本对卷积神经网络模型重新进行训练,直至验证结果符合该预设标准。
在其中一个实施例中,该向第一用户终端和第二用户终端发送识别成功信息包括:向该第一用户终端发送识别成功信息和第一NAT端口分配策略,向该第二用户终端发送识别成功信息和第二NAT端口分配策略;该端口分配策略包括简单自增型分配策略和非自增型分配策略;该实现对称型NAT穿越的方法还包括:若端口分配策略为简单自增型分配策略,该STUN服务器收到用户终端的连接请求并向用户终端返回NAT端口分配数据,该预测服务器接收用户终端发送的该NAT端口分配数据;根据该简单自增分配策略,该预测服务器向用户终端发送预测端口号;若端口分配策略为非自增型分配策略,执行该STUN服务器收到用户终端的连接请求并向用户终端返回N个NAT端口分配数据,预测服务器接收用户终端发送的该N个NAT端口分配数据,将N个NAT端口分配数据输入卷积神经网络模型,得到预测端口号,该预测服务器向用户终端发送预测端口号的步骤。
第二方面,提供了一种实现对称型NAT穿越的方法,用于第一用户终端与第二用户终端中,该方法包括:
第一用户终端将第一NAT信息通过数据交换服务器发送给第二用户终端,该第二用户终端接收该第一NAT信息后通过该数据交换服务器将第二NAT信息发送给该第一用户终端;当该第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,所述第一用户终端将第一NAT的标识信息发送给预测服务器,第二用户终端将第二NAT的标识信息发送给预测服务器;该第一NAT与该第二NAT为对称型NAT;当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,该第一用户终端和该第二用户终端接收识别成功信息;该第一用户终端和该第二用户终端分别向STUN服务器发送N次连接请求;该第一用户终端接收该STUN服务器返回的该第一NAT分配的N个NAT端口分配数据,并将该第一NAT分配的N个NAT端口分配数据上传至该预测服务器;该第二用户终端接收该STUN服务器返回的该第二NAT分配的N个NAT端口分配数据,并将该第二NAT分配的N个NAT端口分配数据上传至该预测服务器;该第一用户终端接收该预测服务器返回的第一预测端口号,该第二用户终端接收预测服务器返回的该第二预测端口号;该第一预测端口号为将该第一NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测得到的;该第二预测端口号为将该第二NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到的;该第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越。
在其中一个实施例中,该第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越的技术过程包括:该第一用户终端与该第二用户终端利用数据交换服务器,将各自的预测端口号发送给对方;该第一用户终端接收到该第二预测端口号后,得到第二预测端口,该第一用户终端通过第一数据传输通道向该第二预测端口发送探测包;该第二用户终端收到该第一预测端口号后,得到第一预测端口,对该第一预测端口进行扩展,得到扩展后的第一预测端口;该第二用户终端通过多个第二数据传输通道分别向该扩展后的第一预测端口发送数据探测包;若该第一数据传输通道与该多个第二数据传输通道中任一数据传输通道互为发送关系,则端口预测成功;该第一用户终端或该第二用户终端至少一方收到另一方的探测包后,向该另一方发送响应消息,该另一方收到该响应消息后,实现对称型NAT的穿越。
在其中一个实施例中,该实现对称型NAT穿越的方法还包括:该第一用户终端或该第二用户终端中至少一个用户终端接收等待信息;该接收等待信息的用户终端采用预设方式向该STUN服务器发送多组连接请求,每一组连接请求包含N+1次连接请求;N为自然数;该接收等待信息的用户终端接收该STUN服务器返回的多组NAT端口分配数据;该接受等待信息的用户终端向该预测服务器发送多组NAT端口分配数据;该接收等待信息的用户终端接收该预测服务器返回的识别成功信息;其中,该预设方式包括以下至少一种:更改该接收等待信息的用户终端发送端口的方式;利用相同发送端口等待发送端口复用时间的方式;该发送端口复用时间的计算方式包括确定发送端口复用时间的初始估值;采用二分逼近法重新估算发送端口复用时间。
第三方面,提供了一种实现对称型NAT穿越的装置,用于STUN服务器、数据交换服务器和预测服务器中,该装置包括:
信息转发模块,用于数据交换服务器接收第一用户终端发送的第一NAT信息,并向第二用户终端转发该第一NAT信息;该数据交换服务器接收该第二用户终端发送的第二NAT信息,并向该第一用户终端转发该第二NAT信息;该第二NAT信息是第二用户终端接收到第一NAT信息后进行响应所发送的;
第一接收模块,用于当该第一NAT信息中的NAT类型为对称型NAT且该第二NAT信息中的NAT类型为对称型NAT时,预测服务器接收第一NAT的标识信息和第二NAT的标识信息;该第一NAT与该第二NAT为对称型NAT;
第一发送模块,用于当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,向该第一用户终端和该第二用户终端发送识别成功信息;
数据返回模块,用于STUN服务器接收到该第一用户终端和该第二用户终端的连接请求,将该第一NAT分配的N个NAT端口分配数据返回给该第一用户终端,将该第二NAT分配的N个NAT端口分配数据返回给该第二用户终端;N为自然数;
第二接收模块,用于该预测服务器接收所述第一用户终端发送的该第一NAT分配的N个NAT端口分配数据和该第一NAT的标识信息;该预测服务器接收该第二用户终端发送的该第二NAT分配的N个NAT端口分配数据和该第二NAT的标识信息;
预测模块,用于该预测服务器将该第一个NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测,得到第一预测端口号,将该第二个NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到第二预测端口号;并向该第一用户终端返回该第一预测端口号,以及向该第二用户终端返回该第二预测端口号;
穿越模块,用于该数据交换服务器接收该第一用户终端发送的第一预测端口号和该第二用户终端发送的第二预测端口号,并向该第一用户终端转发该第二预测端口号,向该第二用户终端转发该第一预测端口号;利用该第一预测端口号和该第二预测端口号实现对称型NAT穿越。
第四方面,提供了一种实现对称型NAT穿越的装置,用于第一用户终端与第二用户终端中,该装置包括:
第二发送模块,用于第一用户终端将第一NAT信息通过数据交换服务器发送给第二用户终端,该第二用户终端接收该第一NAT信息后通过该数据交换服务器将第二NAT信息发送给该第一用户终端;
第三发送模块,用于当该第一NAT信息中的NAT类型为对称型NAT且该第二NAT信息中的NAT类型为对称型NAT时,该第一用户终端将第一NAT的标识信息发送给预测服务器,第二用户终端将第二NAT的标识信息发送给预测服务器;该第一NAT与该第二NAT为对称型NAT;
第三接收模块,用于当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,该第一用户终端和该第二用户终端接收识别成功信息;
第四发送模块,用于该第一用户终端和该第二用户终端分别向STUN服务器发送N次连接请求;该第一用户终端接收该STUN服务器返回的该第一NAT分配的N个NAT端口分配数据,并将该第一NAT分配的N个NAT端口分配数据上传至该预测服务器;该第二用户终端接收该STUN服务器返回的该第二NAT分配的N个NAT端口分配数据,并将该第二NAT分配的N个NAT端口分配数据上传至该预测服务器;
第四接收模块,用于该第一用户终端接收该预测服务器返回的第一预测端口号,该第二用户终端接收预测服务器返回的该第二预测端口号;该第一预测端口号为将该第一NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测得到的;该第二预测端口号为将该第二NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到的;
穿越模块,用于该第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越。
第五方面,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现如上述第一方面任一所述的实现对称型NAT穿越的方法,或者,该处理器执行该计算机程序时实现如上述第二方面任一所述的实现对称型NAT穿越的方法。
第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面任一所述的实现对称型NAT穿越的方法,或者,该计算机程序被处理器执行时实现如上述第二方面任一所述的实现对称型NAT穿越的方法。
上述实现对称型NAT穿越的方法、装置、计算机设备和计算机可读存储介质,数据交换服务器将接收到的第一用户终端发送的第一NAT信息转发给第二用户终端,并将第二用户终端响应的第二NAT信息转发给第一用户终端;当第一NAT和第二NAT的NAT类型均为对称型NAT时,需要利用预测服务器对第一NAT和第二NAT的端口号进行预测才能实现P2P通信。预测服务器接收第一用户终端发送的第一NAT的标识信息和第二用户终端发送的第二NAT的标识信息,预测服务器的数据库中存储有第一NAT的标识信息和第二NAT的标识信息,则说明预测服务器能够识别第一NAT和第二NAT,此时预测服务器向第一用户终端和第二用户终端发送识别成功信息。STUN服务器接收到第一用户终端的连接请求并向第一用户终端返回第一NAT的N个NAT端口分配数据,STUN服务器接收到第二用户终端的连接请求并向第二用户终端返回第二NAT的N个NAT端口分配数据;预测服务器接收第一用户终端发送的第一NAT分配的N个NAT端口分配数据和第一NAT标识信息,预测服务器接收第二用户终端发送的第二NAT分配的N个NAT端口分配数据和第二NAT标识信息。预测服务器利用该NAT的标识信息定位该NAT对应的卷积神经网络模型,预测服务器将第一NAT分配的N个NAT端口分配数据输入第一NAT对应的训练完成的卷积神经网络模型进行预测,得到第一预测端口号,预测服务器将第二NAT分配的N个NAT端口分配数据输入第二NAT对应的训练完成的卷积神经网络模型进行预测,得到第二预测端口号。数据交换服务器接收第一用户终端发送的第一预测端口号和第二用户终端发送的第二预测端口号,并将第一预测端口号转发给第二用户终端,将第二预测端口号转发给第一用户终端,第一用户终端与第二用户终端利用第一预测端口号和第二预测端口实现对称型NAT穿越。采用卷积神经网络模型进行结果预测,包括特征提取和特征筛选过程,即使对称型NAT随机分配端口时也能够保证较高的预测准确率,从而提高穿越对称型NAT的概率;另外,卷积神经网络模型的输入为N个NAT端口分配数据,一维数据作为卷积神经网络模型的能够减小计算量,加快预测速度。
附图说明
图1为一个实施例中实现对称型NAT穿越的方法的实施环境的示意图;
图2为一个实施例中实现对称型NAT穿越的方法的流程示意图;
图3为一个实施例中卷积神经网络模型的结构图;
图4为另一个实施例中实现对称型NAT穿越的方法的流程示意图;
图5为利用该数量为(N+1)的倍数的NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型的技术过程的流程示意图;
图6为另一个实施例中实现对称型NAT穿越的方法的流程示意图;
图7为一个实施例中实现对称型NAT穿越的方法的流程示意图;
图8为第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越的技术过程的流程示意图;
图9为另一个实施例中实现对称型NAT穿越的方法的流程示意图;
图10为用户终端向N+1个STUN服务器发送连接请求进行单次数据采集的示意图;
图11为发送端口复用时间计算方法的流程图;
图12为第一用户终端和第二用户终端接收预测服务器发送的识别成功信息后,第一用户终端、第二用户终端与STUN服务器、预测服务器、数据交换服务器详细交互过程的示意图;
图13为一个实施例中实现对称型NAT穿越的装置的结构框图;
图14为另一个实施例中实现对称型NAT穿越的装置的结构框图;
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的实现对称型NAT穿越的方法,可以应用于如图1所示的应用环境中。其中,位于第一内网的第一用户终端102通过第一NAT104与位于公网的STUN服务器106、数据交换服务器108和预测服务器110进行通信,其中预测服务器中包含数据库112;位于第二内网的第二用户终端116通过第二NAT114与位于公网的STUN服务器106、数据交换服务器108和预测服务器110进行通信。其中,第一用户终端102和第二用户终端116可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,STUN服务器106、数据交换服务器108和预测服务器110可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种实现对称型NAT穿越的方法,以该方法应用于图1中的STUN服务器、数据交换服务器和预测服务器为例进行说明,包括以下步骤:
步骤202,数据交换服务器接收第一用户终端发送的第一NAT信息,并向第二用户终端转发该第一NAT信息;该数据交换服务器接收该第二用户终端发送的第二NAT信息,并向该第一用户终端转发该第二NAT信息;该第二NAT信息是第二用户终端接收到第一NAT信息后进行响应所发送的。
在本申请的一个实施例中,当位于第一内网的第一用户终端尝试连接位于第二内网的第二用户终端时,第一用户终端会将包含第一NAT信息的数据包通过数据交换服务器发送给第二用户终端,第二用户终端接收到该数据包后进行响应,将包含第二NAT信息的数据包通过数据交换服务器发送给第一用户终端。NAT信息中包含该NAT的类型和该NAT的公网IP地址。根据STUN协议,位于内网的用户终端向STUN服务器发送连接请求,STUN服务器向用户终端返回其对应的NAT的类型以及NAT的公网IP地址。当第二用户终端接收到第一NAT信息时可知第一用户终端尝试和第二用户终端建立P2P连接,因此将第二NAT信息返回给第一用户终端。第一用户终端和第二用户终端首先查看NAT信息中的NAT类型是否为对称型NAT,当第一NAT信息中的NAT类型为对称型NAT且第二NAT信息中的NAT类型为对称型NAT时进行下述技术过程。
WebSocket(双向通信)协议是基于TCP的应用层协议,使用WebSocket的用户终端与服务器交互过程如下:首先,客户端使用HTTP协议头向服务器端发送建立连接请求,服务器只需查看该HTTP协议头中是否包含WebSocket等字符串,若包含,服务器获知用户终端试图建立WebSocket连接请求。其次,服务器响应连接请求,服务器从请求协议包中获取特定字段值并对其进行加密,将加密后的结果发送给用户终端,用户终端收到响应后用户终端与服务器即建立WebSocket连接,之后用户终端与服务器可以双向发送数据。相较于HTTP协议,WebSocket协议更加轻量并且通信效率更高。因此在发送少量但要求准确送达的数据时可以利用WebSocket协议。
在本申请的一个实施例中,数据交换服务器位于公网中,数据交换服务器和用户终端都运行有WebSocket协议,第一用户终端、第二用户终端与数据交换服务器建立WebSocket连接,第一用户终端将第一NAT信息发送给数据交换服务器,由数据交换服务器转发给第二用户终端;第二用户终端将响应的第二NAT信息发送给数据交换服务器,由数据交换服务器发送给第一用户终端。WebSocket是基于TCP的应用层协议,传输速度较慢,无法实现P2P通信,因此只能利用运行WebSocket协议的数据交换服务器交换少量信息。
步骤204,当该第一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地址后,将该IP地址作发送给预测服务器。
步骤206,当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,向该第一用户终端和该第二用户终端发送识别成功信息。
在本申请的一个实施例中,需要通过储存在预测服务器的数据库中的卷积神经网络模型实现第一NAT和第二NAT的端口预测,标识信息不同的NAT对应不同的卷积神经网络模型。预测服务器的数据库中存储有利用该预测服务器进行过端口预测的NAT的标识信息与卷积神经网络模型的映射关系以及卷积神经网络模型。因此预测服务器能够识别NAT的标识信息代表预测服务器的数据库中存储有该标识信息对应的卷积神经网络模型。
在本申请的一个实施例中,当预测服务器能够成功识别第一NAT的标识信息和第二NAT的标识信息时,向第一用户终端和第二用户终端发送识别成功信息,该识别成功信息提示第一用户终端和第二用户终端,该预测服务器已完成预测准备工作。
步骤208,STUN服务器接收到该第一用户终端和该第二用户终端的连接请求,将该第一NAT分配的N个NAT端口分配数据返回给该第一用户终端,将该第二NAT分配的N个NAT端口分配数据返回给该第二用户终端;N为自然数。
STUN协议是一个网络协议,该网络协议允许位于NAT后的用户终端获得该NAT的类型信息、NAT的公网IP地址以及NAT为用户终端使用某个本地端口与公网进行通信时分配的端口。
在本申请的一个实施例中,STUN服务器位于公网中,STUN服务器和用户终端运行STUN协议,用户终端向STUN服务器发送连接请求,STUN服务器向用户终端返回该用户终端对应的NAT为用户终端与STUN服务器通信而分配的端口。NAT端口分配数据指的是NAT为位于内网的用户终端与位于公网的服务器通信而分配的端口号。
NAT端口分配数据需要通过用户终端的STUN客户端与STUN服务器通信获得,在本申请的一个实施例中如果用户终端的发送端口不变并且不间断的发送连接请求,则得到N个NAT端口分配数据需要N台STUN服务器,用户终端使用同一发送端口依次向第1台至第N台STUN服务器发送连接请求,在不考虑有其他用户终端使用该NAT与公网通信的情况下,得到NAT顺序分配的N个端口分配数据。在本申请的一个实施例中,还可以采用改变用户终端的发送端口的方式和等待发送端口复用时间的方式获得NAT顺序分配的N个端口分配数据。由上述可知,当N的值越大时所需的服务器成本和时间成本也更大。为了平衡性能与成本,N的值可以为3、4、5,不限于此。
步骤210,该预测服务器接收该第一用户终端发送的该第一NAT分配的N个NAT端口分配数据和该第一NAT的标识信息;该预测服务器接收该第二用户终端发送的该第二NAT分配的N个NAT端口分配数据和该第二NAT的标识信息。
在本申请的一个实施例中,如上文所述,用户终端顺序向STUN服务器发送N次连接请求,STUN服务器依次向用户终端返回NAT为N次连接请求分配的N个NAT端口分配数据。不改变N个端口号的排列顺序的情况下,第一用户终端将其接收到的N个NAT端口分配数据和第一NAT标识信息发送给预测服务器;第二用户终端将其接收到的N个NAT端口分配数据和第二NAT标识信息发送给预测服务器。
步骤212,该预测服务器将该第一个NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测,得到第一预测端口号,将该第二个NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测,得到第二预测端口号;并向该第一用户终端返回该第一预测端口号,以及向该第二用户终端返回该第二预测端口号。
如上文所述,当预测服务器向用户终端返回识别成功信息则代表预测服务器中存储有该用户终端对应的NAT的标识信息与卷积神经网络模型的映射关系和该卷积神经网络模型。预测服务器接收到用户终端发送的N个NAT端口分配数据和NAT标识信息,预测服务器以NAT的标识信息为索引定位到与其对应的卷积神经网络模型。
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一,由于对称型NAT的端口分配策略可能为完全随机分配,利用卷积神经网络进行特征提取和特征筛选,所得卷积神经网络模型预测结果的准确率较高。在本申请的一个实施例中,该第一卷积神经网络模型和第二卷积神经网络模型包括卷积层、批归一化层、激活函数、最大池化层和全连接层;第一卷积神经网络模型和第二卷积神经网络的区别在于各层的参数不同,但模型的结构和各层的参数选择均相同。该卷积神经网络模型包括三个卷积层,第一个卷积层的作用是特征提取,将输入的数据转化为特征表示,第二个卷积层和第三个卷积层的作用是提取更高维的特征,三个卷积层的卷积神经网络模型深度较浅,也能够进一步减少计算量,加快预测速度。如图3所示,N的值可以为4,4个NAT端口分配数据输入卷积神经网络模型后,首先经过卷积层进行卷积处理,得到局部特征,卷积步长为1,卷积层的卷积核大小为2×1;之后批归一化层对局部特征进行归一化处理,得到归一化后的局部特征;归一化后的局部特征经过激活函数后进行非线性处理,激活函数可以为线性修正单元;非线性处理的归一化后的局部特征输入最大池化层进行特征压缩,最大池化层的参数为2×1。N个NAT端口分配数据经过三次卷积层-批归一化层-最大池化层的处理,将三次处理后的数据传入全连接层,该全连接层对N个NAT端口分配数据进行分类,得到卷积神经网络模型的输出,即预测端口号。利用卷积神经网络模型进行端口预测准确率高,但其同时也具有计算量大,耗时长的特点,由于卷积神经网络模型的输入为一维的N个数据,可以减少计算量,加快模型预测速度。
在本申请的实施例中,卷积神经网络模型需要根据顺序发送的N次连接请求依次得到的N个NAT端口分配数据预测第N+1次连接时NAT分配的端口号。将依次得到的N个NAT端口分配数据按原有顺序排列,作为卷积神经网络模型的输入,卷积神经网络模型的输出为预测端口号,该预测端口号作为第N+1次连接时NAT分配端口号的预测值。预测服务器利用第一卷积神经网络预测得到第一预测端口号,将该第一预测端口号发送给第一用户终端;预测服务器利用第二卷积神经网络预测得到第二预测端口号,将该第二预测端口号发送给第二用户终端。
步骤214,数据交换服务器接收该第一用户终端发送的第一预测端口号和该第二用户终端发送的第二预测端口号,并向该第一用户终端转发该第二预测端口号,向该第二用户终端转发该第一预测端口号;利用该第一预测端口号和该第二预测端口号实现对称型NAT穿越。
在本申请的一个实施例中,如上文所述,数据交换服务器位于公网中,数据交换服务器和用户终端都运行有WebSocket协议,第一用户终端和第二用户终端首先与数据交换服务器建立WebSocket连接。数据交换服务器接收第一用户终端发送的第一预测端口号,并将该第一预测端口号转发给第二用户终端;数据交换服务器接收第二用户终端发送的第二预测端口号,并将该第二预测端口号转发给第一用户终端。至此,第一用户终端获得了第二预测端口号,该第二预测端口号为第二NAT为下一次连接分配的NAT端口号的预测值,第二用户终端获得了第一预测端口号,该第一预测端口号为第一NAT为下一次连接分配的NAT端口号的预测值。
在本申请的一个实施例中,第一用户终端向第二NAT的第二预测端口号发送探测包,第二用户终端向第一NAT的第一预测端口号发送探测包。NAT向内网用户终端转发数据的策略是只有当位于内网的用户终端(iAddr:iPort)向公网设备(hAddr:hPort)发送过数据,NAT才会将后续(hAddr:hPort)发送的数据转发到(iAddr:iPort)。不失一般性,若第二NAT收到探测包时第二用户终端未向第一NAT的第一预测端口号发送探测包,则该探测包由于不符合第二NAT的转发策略会被第二NAT丢弃,但由于第一用户终端曾向第二NAT的第二预测端口发送过探测包,当第二用户终端向第一NAT发送探测包时,第二NAT实际使用的端口号与第二预测端口号相同,则第一NAT会将收到的探测包转发给第一用户终端。此时第一用户终端重新向第二NAT的第二预测端口号发送探测包,若第一NAT实际使用的端口号与第一预测端口号相同,则第二NAT会将探测转发给第二用户终端,实现位于不同对称型NAT后的用户终端的P2P连接。
上述实现对称型NAT穿越的方法中,数据交换服务器接收第一用户终端发送的第一NAT信息转发给第二用户终端,并将第二用户终端响应的第二NAT信息转发给第一用户终端;当第一NAT和第二NAT的NAT类型均为对称型NAT时,需要利用预测服务器对第一NAT和第二NAT的端口号进行预测才能实现P2P通行。预测服务器接收第一用户终端发送的第一NAT的标识信息和第二用户终端发送的第二NAT的标识信息,预测服务器的数据库中存储有第一NAT的标识信息和第二NAT的标识信息,则说明预测服务器能够识别第一NAT和第二NAT,此时预测服务器向第一用户终端和第二用户终端发送识别成功信息。STUN服务器接收到第一用户终端的连接请求并向第一用户终端返回第一NAT的N个NAT端口分配数据,STUN服务器接收到第二用户终端的连接请求并向第二用户终端返回第二NAT的N个NAT端口分配数据;预测服务器接收第一用户终端发送的第一NAT分配的N个NAT端口分配数据和第一NAT标识信息,预测服务器接收第二用户终端发送的第二NAT分配的N个NAT端口分配数据和第二NAT标识信息。预测服务器利用该NAT的标识信息定位该NAT对应的卷积神经网络模型,预测服务器将第一NAT分配的N个NAT端口分配数据输入第一NAT对应的训练完成的卷积神经网络模型进行预测,得到第一预测端口号,预测服务器将第二NAT分配的N个NAT端口分配数据输入第二NAT对应的训练完成的卷积神经网络模型进行预测,得到第二预测端口号。数据交换服务器接收第一用户终端发送的第一预测端口号和第二用户终端发送的第二预测端口号,并将第一预测端口号转发给第二用户终端,将第二预测端口号转发给第一用户终端,第一用户终端与第二用户终端利用第一预测端口号和第二预测端口实现对称型NAT穿越。采用卷积神经网络模型进行结果预测,包括特征提取和特征筛选过程,即使对称型NAT随机分配端口时也能够保证较高的预测准确率,从而提高穿越对称型NAT的概率;另外,卷积神经网络模型的输入为N个NAT端口分配数据,一维数据作为卷积神经网络模型的能够减小计算量,加快预测速度。
在一个实施例中,如图4所示,该实现对称型NAT穿越的方法还包括:
步骤302,当预测服务器无法识别该第一NAT和该第二NAT至少一个的标识信息时,向标识信息无法被识别的NAT对应的非识别用户终端发送等待信息。
在本申请的一个实施例中,预测服务器的数据库未存储用户终端发送的NAT的标识信息时,则无法识别该NAT的标识信息,此时预测服务器向标识信息无法被识别的NAT对应的用户终端发送等待信息,该标识信息无法被识别的NAT对应用户终端为非识别用户终端。预测服务器返回的信息决定用户终端的下一步操作,当预测服务器返回的信息为识别成功信息时,用户终端只需获得N个NAT的端口分配数据,传入已经做好预测准备的预测服务器;当预测服务器返回的信息为等待信息时,用户终端需要获得多组NAT端口分配数据,并将多组NAT端口分配数据传入尚未做好预测准备的预测服务器,尚未做好预测准备是指该预测服务器的数据库中未存储该NAT对应的卷积神经网络模型。
步骤304,STUN服务器收到该非识别用户终端的连接请求,向非识别用户返回多组NAT端口分配数据,每组NAT端口分配数据包含该STUN服务器顺序返回的N+1个NAT端口分配数据。
在本申请的一个实施例中,非识别用户终端收到等待信息后,向STUN服务器顺序发送连接请求,N+1次连接请求为一组,STUN服务器向非识别用户依次返回该N+1次连接请求对应的N+1个NAT端口分配数据。非识别用户终端发送多组连接请求,STUN服务器向非识别用户终端返回多组NAT端口分配数据,其中每组都包含N+1个顺序分配的NAT端口分配数据。多组NAT端口分配数据作为卷积神经网络模型的训练样本以及测试样本。如上文所述,利用卷积神经网络进行端口预测时,需要输入N个NAT端口分配数据,因此对于每个包含N+1个NAT端口分配数据的组,前N个NAT端口分配数据为一组训练数据,最后一个NAT端口分配数据为该组训练数据对应的标签,将训练样本中的多组NAT端口分配数据输入卷积神经网络模型进行训练。
在本申请的一个实施例中,公网内可以布置(N+1)个STUN服务器,非识别用户终端首先依次向(N+1)个STUN服务器分别发送连接请求,每个STUN服务器返回一个NAT端口分配数据,将N+1个NAT端口分配数据按非识别用户接收到的顺序排列,得到一组(N+1)个NAT端口分配数据,当非识别用户终端改变发送端口向STUN服务器发送连接请求时,NAT会识别为新的连接并分配新的NAT端口号。当非识别用户终端一定时间内不再利用原发送端口与STUN服务器通信,则NAT认为该次通信已经结束,当非识别用户再次利用该端口与STUN服务器通信时,NAT会识别为新的连接并分配新的NAT端口号,因此非识别用户终端可以采用改变发送端口的方式或者等待发送端口复用时间的方式重新向(N+1)个STUN服务器发送连接请求,STUN服务器最终返回多组NAT端口分配数据。当不考虑有其他用户终端利用该NAT与公网中的服务器通信时,该(N+1)个NAT端口分配数据为该NAT顺序分配的端口号。卷积神经网络模型预测的准确率与训练样本的数量存在正相关的关系,但采集训练样本的过程需要非识别用户终端与STUN服务器交互,采用更改发送端口或等待端口复用的方式能够采用较少的STUN服务器资源,获得大量NAT端口分配数据。
在本申请的一个实施例中,STUN服务器的数量也可以大于(N+1)或小于(N+1),当STUN服务器的数量大于(N+1)时,采用改变发送端口的方式或等待发送端口复用时间的方式获得NAT端口分配数据的次数相应减少;当STUN服务器的数量大于(N+1)时,采用改变发送端口的方式或等待发送端口复用时间的方式获得NAT端口分配数据的次数相应增加,上述任一STUN服务器与更改发送端口或等待端口复用的组合,只要保证最终STUN服务器返回多组NAT端口分配数据,每一组包含N+1个NAT端口分配数据即可。在本申请的实施例中,N的数量可以为3、4、5,多组可以为100组、150组、200组,不限于此。
步骤306,预测服务器接收非识别用户发送的多组NAT端口分配数据,利用该多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型。
在本申请的实施例中,预测服务器接收非识别用户发送的多组NAT端口分配数据,预测服务器将多组NAT端口分配数据分为训练集样本和测试集样本,将训练集样本输入未训练的卷积神经网络模型,对于每一组包含(N+1)个NAT端口分配数据,其中前N个NAT端口分配数据为一组训练数据,第N+1个NAT端口分配数据为该组训练数据对应的标签。利用多组训练数据训练卷积神经网络模型,获得卷积神经网络模型的权重参数,保存该卷积神经网络模型的权重参数。将测试集样本输入经过训练的卷积神经网络模型验证经过训练的卷积神经网络模型的预测准确率。
步骤308,向非识别用户终端发送识别成功信息。
在卷积神经网络模型训练完成后,预测服务器向非识别用户终端发送识别成功信息。非识别用户终端在接收到预测服务器发送的识别成功信息后,可以依据上述实现对称型NAT穿越的方法进行NAT端口预测,实现对称型NAT穿越。
本实施例中,考虑预测服务器中不存在NAT的标识信息时的情况,通过用户终端与少量STUN服务器交互采集大量NAT端口分配数据,预测服务器利用采集到的NAT端口分配数据训练卷积神经网络模型,模型训练完成后预测服务器向用户终端返回识别成功信息,能够在预测服务器不存在NAT标识信息的情况下实现对称型NAT穿越。另外,采集大量NAT端口分配数据的过程仅使用少量的STUN服务器,可以有效节约服务器的IP资源。
在一个实施例中,如图5所示,利用该多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型的技术过程包括:
步骤402,将多组NAT端口分配数据分为训练集样本和测试集样本。
在本申请的一个实施例中多组NAT端口分配数据为总样本,将总样本分为训练集样本和测试集样本。对于训练集样本中的每一组NAT端口分配数据,其中前N个NAT端口分配数据为一组训练数据,第N+1个NAT端口分配数据为该组训练数据的标签;对于测试集样本中的每一组NAT端口分配数据,其中前N个NAT端口分配数据为训练完成的卷积神经网络模型的输入,第N+1个NAT端口分配数据用于判断卷积神经网络模型的预测结果是否准确。在本申请的一个实施例中,训练集样本可以占总样本的80%,测试集样本可以占总样本的20%。
步骤404,将该训练集样本输入卷积神经网络模型,得到经过训练的卷积神经网络模型。
在本申请的一个实施例中,训练集样本包含若干组训练数据,每一组训练数据通过卷积层进行特征提取,得到局部特征;将局部特征通过批归一化层进行归一化,得到归一化后的局部特征;将归一化后的局部特征输入激活函数,增加归一化后的局部特征的非线性因素,得到含有非线性因素的归一化后的局部特征;将含有非线性因素的归一化后的局部特征通过最大池化层进行特征压缩,得到压缩后的局部特征,利用压缩后的局部特征进行计算能够减少网络的复杂度,提高计算速度,同时防止模型过拟合;将压缩后的局部特征通过全连接层进行映射,建立压缩后的局部特征与该组训练数据标签的映射关系;通过随机失活函数以一定的概率暂时丢弃神经网络单元对卷积神经网络模型进行训练,增强卷积神经网络的泛化性。
在本申请的一个实施例中,卷积神经网络模型训练过程中使用Adam优化器,初始学习率设置为0.001,批量大小设置为32,使卷积神经网络模型迭代1000次,在卷积神经网络模型收敛后保存权重与参数,得到经过训练的卷积神经网络模型。
步骤406,利用测试集样本对该经过训练的卷积神经网络模型进行验证,若验证结果符合预设标准,则经过训练的卷积神经网络模型为训练完成的卷积神经网络模型;若验证结果不符合预设标准,则利用该训练集样本对卷积神经网络模型重新进行训练,直至验证结果符合该预设标准。
在本申请的一个实施例中,将每组测试集样本的前N个NAT端口分配数据分别输入经过训练的卷积神经网络模型,得到经过训练的卷积神经网络模型的预测端口号,将每一个预测端口号与对应组的测试集样本的第N+1个NAT端口分配数据进行比较,判断预测端口号是否准确并计算经过训练的卷积神经网络模型的预测正确率。预先设置一个预测正确率,若卷积神经网络模型的实际预测正确率不低于预先设置的预测正确率,则该卷积神经网络模型训练完成,得到训练完成的卷积神经网络模型;若卷积神经网络模型的实际预测正确率低于预先设置的预测正确率,则利用训练集样本对卷积神经网络模型进行重新训练,直到再次利用测试集样本进行测试时其实际预测正确率不低于预先设置的预测正确率。
在一个实施例中,向该第一用户终端和该第二用户终端发送识别成功信息包括向该第一用户终端发送识别成功信息和第一NAT端口分配策略,向第二用户终端发送识别成功信息和第二NAT端口分配策略;该端口分配策略包括简单自增型分配策略和非自增型分配策略。
在本申请的一个实施例中,预测服务器中存有NAT的标识信息以及该NAT对应的NAT端口分配策略;当预测服务器能够识别NAT的标识信息时,预测服务器向第一用户终端发送识别成功信息和NAT的端口分配策略。该端口分配策略包括简单自增型分配策略和非自增型分配策略。
其中,当预测服务器无法识别用户终端发送的NAT的标识信息时,向用户终端返回等待信息,STUN服务器接收用户终端发送的N次连接请求,并向用户终端返回N个NAT端口分配数据,预测服务器接收用户终端发送的N个NAT端口分配数据P1,P2,…,PN,预测服务器对该N个NAT端口分配数据进行分析,若P1,P2,…,PN中任意相邻的三个数据为等差数列,则该NAT的端口分配策略为简单自增型分配策略,若P3-P2=P2-P1=M>0,其中M>0,则预测服务器记录该NAT的端口分配策略为简单自增型分配策略,简单自增型分配策略中包含递增信息和M值。若P3-P2=P2-P1=M<0,其中M>0,则预测服务器记录该NAT的端口分配策略为简单自增型分配策略,简单自增型分配策略中包含递减信息和M值。之后向用户终端返回识别成功的信息。若P1,P2,…,PN不存在等差规律,为随机分布的N个数据,则该NAT的端口分配策略为非自增型策略,此时预测服务器向用户终端返回继续等待信息,STUN服务器接收用户终端发送的的连接请求,并向用户终端返回多组NAT端口分配数据,每一组NAT端口分配数据包含用户终端依次接收的N+1个NAT端口分配数据,预测服务器接收用户终端发送的多组NAT端口分配数据,并利用该数据训练并保存卷积神经网络模型,建立NAT的标识信息和训练完成的卷积神经网络模型之间的映射。之后预测服务器向用户终端返回识别成功的信息。
如图6所示,该实现对称型NAT穿越的方法还包括:
步骤502,若端口分配策略为简单自增型分配策略,该STUN服务器收到用户终端的连接请求并向用户终端返回NAT端口分配数据,预测服务器接收用户终端发送的该NAT端口分配数据;根据该简单自增型分配策略,预测服务器向用户终端发送预测端口号。
在本申请的一个实施例中,预测服务器根据NAT的标识信息与NAT的端口分配策略确定第一NAT或第二NAT中至少一个的端口分配策略为简单自增型分配策略,用户终端接收到NAT的端口分配策略为简单自增型后,STUN服务器发接收用户终端发起的一次连接请求,并向用户终端返回一个NAT端口分配数据。预测服务器接收该NAT端口分配数据P。如上文所述,简单自增策略包含递增信息或递减信息以及M值,当简单自增策略包含递增信息时,预测服务器对NAT端口分配数据P进行如下变换得到预测端口号Pa:Pa=P+M,其中M>0;当简单自增策略包含递减信息时,预测服务器对NAT端口分配数据P进行如下变换得到预测端口号Pa:Pa=P-M,其中M>0。
步骤504,若端口分配策略为非自增型分配策略,执行该STUN服务器收到用户终端的连接请求并向用户终端返回N个NAT端口分配数据,预测服务器接收用户终端发送的该N个NAT端口分配数据,将N个NAT端口分配数据输入卷积神经网络模型,得到预测端口号,预测服务器向用户终端发送预测端口号的步骤。
在本申请的一个实施例中,预测服务器根据NAT的标识信息与NAT的端口分配策略确定第一NAT或第二NAT中至少一个的端口分配策略为非自增型分配策略。用户终端接收到NAT的端口分配策略为非自增型后,执行STUN服务器收到用户终端的连接请求并向用户终端返回N个NAT端口分配数据,预测服务器接收用户终端发送的该N个NAT端口分配数据,将N个NAT端口分配数据输入卷积神经网络模型,得到预测端口号,预测服务器向用户终端发送预测端口号的步骤。该技术过程的描述详见上文实施例,在此不再赘述。
本实施例中,区分对称型NAT的不同分配策略进行端口预测,当对称型NAT的分配策略为简单自增型分配策略时,端口预测过程较为简单,无需训练卷积神经网络模型,节省预测时间,提高端口预测的效率。
在一个实施例中,如图7所示,提供了一种实现对称型NAT穿越的方法,以该方法应用于图1所示实施环境的第一用户终端、第二用户终端为例进行说明,包括以下步骤:
步骤602,第一用户终端将第一NAT信息通过数据交换服务器发送给第二用户终端,该第二用户终端接收该第一NAT信息后通过该数据交换服务器将第二NAT信息发送给该第一用户终端。
步骤604,当该第一NAT信息中的NAT类型为对称型NAT且该第二NAT信息中的NAT类型为对称型NAT时,该第一用户终端将第一NAT的标识信息发送给预测服务器,该第二用户终端将第二NAT的标识信息发送给预测服务器;该第一NAT与该第二NAT为对称型NAT。
步骤606,当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,该第一用户终端和该第二用户终端接收识别成功信息。
步骤608,该第一用户终端和该第二用户终端分别向STUN服务器发送N次连接请求;该第一用户终端接收该STUN服务器返回的该第一NAT分配的N个NAT端口分配数据,并将该第一NAT分配的N个NAT端口分配数据上传至该预测服务器;该第二用户终端接收该STUN服务器返回的为该第二NAT分配的N个NAT端口分配数据,并将该为第二NAT分配的N个NAT端口分配数据上传至所述预测服务器。
步骤610,该第一用户终端接收该预测服务器返回的第一预测端口号,该第二用户终端接收预测服务器返回的该第二预测端口号;该第一预测端口号为将该第一NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测得到的;该第二预测端口号为将该第二NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到的。
步骤612,该第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越。
关于用户终端向数据交换服务器发送NAT信息,用户终端接收预测服务器返回的信息,向STUN服务器发送连接请求,接收STUN服务器返回的NAT端口数据,向预测服务器发送NAT端口数据以及接收预测服务器返回的预测端口号等技术过程详见上文中的实施例,在此不再赘述。
在一个实施例中,如图8所示,第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越的技术过程包括:
步骤702,该第一用户终端与该第二用户终端利用数据交换服务器,将各自的预测端口号发送给对方。
在本申请的一个实施例中,数据交换服务器运行WebSocket协议,第一用户终端与第二用户终端利用WebSocket协议通过数据交换服务器交换各自的预测端口号,该技术过程详见上文的实施例,此处不再赘述。
步骤704,该第一用户终端接收到该第二预测端口号后,得到第二预测端口,该第一用户终端通过第一数据传输通道向该第二预测端口发送探测包。
在本申请的一个实施例中,第一用户终端接收到数据交换服务器转发的第二NAT的第二预测端口号Pb后,通过第一NAT向第二NAT的第二预测端口Pb发送探测包,在第一用户终端向第二NAT的第二预测端口号发送探测包时,第一NAT实际使用端口号为PaS。该第一用户终端与第二NAT通信的通道称为第一数据传输通道,该第一数据传输通道表示为(PaS->Pb)。
步骤706,该第二用户终端收到该第一预测端口号后,得到第一预测端口,对该第一预测端口进行扩展,得到扩展后的第一预测端口。
在本申请的一个实施例中,第二用户终端接收到数据交换服务器转发的第一NAT的第一预测端口号Pa后,第二用户终端对第一预测端口号Pa进行扩展,将第一预测端口号扩展为多个端口号Pa-n,Pa-n+1,…,Pa-1,Pa,Pa+1,…,Pa+n-1,Pa+n,其中n为自然数,值可以为2、3、4,不限于此。
步骤708,该第二用户终端通过多个第二数据传输通道分别向该扩展后的第一预测端口发送数据探测包。
在本申请的一个实施例中,第二用户终端通过第二NAT向第一NAT的扩展后的第一预测端口号各发送一个探测包。在第二用户终端向第一NAT的扩展后的第一预测端口号发送探测包时,第二NAT实际使用的端口号分别为PbS(-n),PbS(-n+1),…,PbS(-1),PbS,PbS(1),…,PbS(n-1),PbS(n)。第二用户终端向第一NAT的扩展后的第一预测端口号发送的探测包的多个数据传输通道为多个第二数据传输通道。多个第二数据传输通道分别表示为(PbS(-n)->Pa-n),(PbS(-n+1)->Pa-n+1),…,(PbS(-1)->Pa-1),(PbS->Pa),(PbS(1)->Pa1),…,(PbS(n-1)->Pa+n-1),(PbS(n)->Pa+n)。
步骤710,若该第一数据传输通道与该多个第二数据传输通道中任一数据传输通道互为发送关系,则端口预测成功;该第一用户终端或该第二用户终端至少一方收到另一方的探测包后,向该另一方发送响应消息,该另一方收到所述响应消息后,实现对称型NAT的穿越。
在本申请的一个实施例中,当第一数据传输通道(PaS->Pb)与多个第二数据传输通道(PbS(-n)->Pa-n),(PbS(-n+1)->Pa-n+1),…,(PbS(-1)->Pa-1),(PbS->Pa),(PbS(1)->Pa1),…,(PbS(n-1)->Pa+n-1),(PbS(n)->Pa+n)中的任一第二数据传输通道互为发送探测包的关系时,如PaS=Pa+n且Pb=PbS(n),则端口预测成功。利用预测端口号进行对称型NAT穿越的技术过程详见上文的实施例,此处不再赘述。
本实施例中,第二用户终端将获得的第一预测端口号进行扩展,通过多个第二数据传输通道向第一NAT发送过多个探测包,若多个第二数据传输通道中的任一个第二数据传输通道与第一数据传输通道互为发送关系,则端口预测成功。对卷积神经网络模型输出的预测结果进行适当扩展,能够增大预测正确的可能性。
如上文所述,第一用户终端将第一NAT的标识信息发送给预测服务器,第二用户终端将第二NAT的标识信息发送给预测服务器。在一个实施例中,如图9所示,该实现对称型NAT穿越的方法还包括:
步骤802,该第一用户终端或该第二用户终端中至少一个用户终端接收等待信息。
在本申请的一个实施例中,当预测服务器无法识别第一NAT的标识信息或第二NAT的标识信息时,预测服务器向无法被识别的标识信息对应的用户终端发送等待信息。
步骤804,接收等待信息的用户终端采用预设方式向STUN服务器发送多组连接请求,每组连接请求包含N+1次连接请求;N为自然数。该预设方式包括以下至少一种:更改该接收等待信息的用户终端发送端口的方式;利用相同发送端口等待发送端口复用时间的方式;该发送端口复用时间的计算方式包括确定发送端口复用时间的初始估值;采用二分逼近法重新估算发送端口复用时间。
在本申请的一个实施例中,当预设服务器无法识别NAT的标识信息时,需要采集NAT的端口数据作为卷积神经网络模型的训练样本和测试样本,接受等待信息的用户终端采用预设方式向STUN服务器发送多组连接请求,每一组连接请求包含N+1次连接请求。
如上文所述,对称型NAT将位于内网的用户终端的端口对(iAddr:iPort)和位于公网的服务器的端口对(hAddr:hPort)相同的报文看作一个连接,当iAddr、iPort、hAddr、hPort中任一项发生变化时,对称型NAT都会分配新的端口,因此更改该接收等待信息的用户终端发送端口的方式指的是改变用户终端的发送端口,利用新的发送端口向STUN服务器发送连接请求。另外,当用户终端利用某端口与STUN服务器通信后,一定时间内双方未进行通信,对称型NAT认为该次通信已经结束。因此利用相同发送端口等待发送端口复用时间的方式指的是当用户终端间隔一定时间后再次利用相同端口向STUN服务器发送连接请求。
在本申请的一个实施例中,对于不同的对称型NAT,其发送端口复用时间可能不同,因此对于采用利用相同发送端口等待发送端口复用时间的方式采集NAT端口分配数据需要估算发送端口复用时间。当估算的发送端口复用时间超过600秒时,由于等待时间过长则不再利用相同发送端口等待发送端口复用时间的方式进行NAT端口分配数据采集。上述两种方式对称型NAT都会为新的连接请求分配新的端口。由于采集的NAT端口分配数据作为卷积神经网络的训练和测试样本,因此需要数量较多的NAT端口分配数据,而用户终端向STUN服务器发送一次连接请求只能返回一个NAT端口分配数据,因此采用上述两种预设方式采集NAT端口分配数据能够节省STUN服务器成本。
在本申请的一个实施例中,公网内可以布置N+1个STUN服务器,用户终端首先依次向该N+1个STUN服务器发送连接请求,用户终端接收到每一个STUN服务器返回的NAT端口分配数据P(1),P(2),…,P(N+1),共计N+1个。上述数据采集过程为单次数据采集的过程,图10示出了该单次数据采集的过程。之后用户终端采取更改发送端口的方式或利用相同发送端口等待发送端口复用时间的方式中至少一种重新向N+1个STUN服务器发送连接请求,得到每一个STUN服务器第二次返回的NAT端口分配数据,共计N+1个。重复利用更改发送端口的方式或利用相同发送端口等待发送端口复用时间的方式中至少一种持续进行NAT端口分配数据采集,发送多组连接请求,得到多组NAT端口分配数据。
图11示出了发送端口复用时间计算方式的流程图。在本申请的一个实施例中,该发送端口复用时间的计算方式为:t为中间变量,初始值为T0,结束标识为Te,tU和tL为二分逼近法的端值;第一步,设置t=T0,tU=10×T0,tL=0;第二步,用户终端向STUN服务器发送连接请求并接收STUN服务器返回的NAT端口分配数据,该NAT端口分配数据记为lastp;第三步,用户终端等待t秒后向同一台STUN服务器发送连接请求并接收STUN服务器返回的NAT端口分配数据,该NAT端口分配数据记为p;第四步,比较p和lastp,如果p和lastp相同,则说明NAT未重新分配端口,相较于实际的发送端口复用时间,目前等待时间较短,因此设置tL=t,t=(tL+tU)/2;如果p和lastp不相同,则说明NAT重新分配了端口,相较于实际的发送端口复用时间,目前等待时间较长,因此设置tU=t,t=(tL+tU)/2;第五步,比较tU-tL的值与Te的大小关系,如果tU-tL<Te,则tU的值为估算的发送端口复用时间;如果tU-tL≥Te,则返回第三步;其中初始值T0可以设置为60秒。
在本申请的一个实施例中,可以在向STUN服务器发送多组连接请求之前计算一次发送端口复用时间tw,之后在发送多组连接请求的过程中,每次利用相同发送端口等待发送端口复用时间的方式采集数据时均等待tw后重新利用相同发送端口向STUN服务器发送连接请求;也可以每隔一段时间计算一次发送端口复用时间,用户终端再次利用相同发送端口等待发送端口复用时间的方式采集数据时,等待最近一次计算得到的发送端口复用时间后向STUN服务器发送连接请求。
步骤806,该接收等待信息的用户终端接收STUN服务器返回的多组NAT端口分配数据。
步骤808,该接受等待信息的用户终端向预测服务器发送多组NAT端口分配数据。
步骤810,接收等待信息的用户终端接收该预测服务器返回的识别成功信息。
步骤806,步骤808和步骤810技术过程的描述详见上文中的实施例,在此不再赘述。
本实施例中,用户终端接收等待信息后,采用预设方式向STUN服务器发送连接请求;用户终端接收STUN服务器返回的NAT端口分配数据,并将NAT端口分配数据发送给预测服务器,用户终端接收预测服务器进行卷积神经网络模型训练后向用户终端返回的识别成功信息。该方法解决了预测服务器无法识别NAT的标识信息时实现对称型NAT穿越的技术问题,并且在训练卷积神经网络模型时需要数量较多的NAT端口分配数据,采用更改用户终端发送端口的方式或采用利用相同发送端口等待发送端口复用时间的方式进行NAT端口分配数据采集,能够降低配置STUN服务器的成本。另外,采用二分逼近法估算发送端口复用时间能够获得较为精确的发送端口复用时间,在利用相同发送端口等待发送端口复用时间的方式获得NAT端口分配数据时能够节省等待时间。
在一个实施例中,如图12所示,其示出了第一用户终端和第二用户终端接收预测服务器发送的识别成功信息后,第一用户终端、第二用户终端与STUN服务器、预测服务器、数据交换服务器的详细交互过程参考图12,读者更容易理解本申请实施例提供的技术方案。
应该理解的是,虽然图2以及图4-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2以及图4-9中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图13所示,提供了一种实现对称型NAT穿越的装置1300,该实现对称型NAT穿越的装置1300可以配置于图1所示实施环境的STUN服务器、数据交换服务器和预测服务器中。该实现对称型NAT穿越的装置1300包括:信息转发模块1302、第一接收模块1304、第一发送模块1306、数据返回模块1308、第二接收模块1310、预测模块1312和穿越模块1314。
其中,该信息转发模块1302,用于数据交换服务器接收第一用户终端发送的第一NAT信息,并向第二用户终端转发该第一NAT信息;该数据交换服务器接收该第二用户终端发送的第二NAT信息,并向该第一用户终端转发该第二NAT信息;该第二NAT信息是第二用户终端接收到第一NAT信息后进行响应所发送的。该第一接收模块1304,用于当该第一NAT信息中的NAT类型为对称型NAT且该第二NAT信息中的NAT类型为对称型NAT时,预测服务器接收第一NAT的标识信息和第二NAT的标识信息;该第一NAT与该第二NAT为对称型NAT。该第一发送模块1306,用于当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,向该第一用户终端和该第二用户终端发送识别成功信息。该数据返回模块1308,用于STUN服务器接收到该第一用户终端和该第二用户终端的连接请求,将该第一NAT分配的N个NAT端口分配数据返回给该第一用户终端,将该第二NAT分配的N个NAT端口分配数据返回给该第二用户终端;N为自然数。该第二接收模块1310,用于该预测服务器接收该第一用户终端发送的该第一NAT分配的N个NAT端口分配数据和该第一NAT的标识信息;该预测服务器接收该第二用户终端发送的该第二NAT分配的N个NAT端口分配数据和该第二NAT的标识信息。该预测模块1312,用于该预测服务器将该第一个NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测,得到第一预测端口号,将该第二个NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到第二预测端口号;并向该第一用户终端返回该第一预测端口号,以及向该第二用户终端返回该第二预测端口号。该穿越模块1314,用于数据交换服务器接收该第一用户终端发送的第一预测端口号和该第二用户终端发送的第二预测端口号,并向该第一用户终端转发该第二预测端口号,向该第二用户终端转发该第一预测端口号;利用该第一预测端口号和该第二预测端口号实现对称型NAT穿越。
在本申请的一个实施例中,提供了另一种实现对称型NAT穿越的装置,该实现对称型NAT穿越的装置除了包括实现对称型NAT穿越的装置1300包括的各个模块外,可选的,还包括等待信息发送模块,数据采集模块,模型训练模块和识别信息发送模块。
其中,该等待信息发送模块,用于当预测服务器无法识别该第一NAT和该第二NAT至少一个的标识信息时,向标识信息无法被识别的NAT对应的非识别用户终端发送等待信息。该数据采集模块,用于STUN服务器收到该非识别用户终端的连接请求,向非识别用户返回多组NAT端口分配数据,每组NAT端口分配数据包含该STUN服务器顺序返回的N+1个NAT端口分配数据。该模型训练模块,用于预测服务器接收非识别用户发送的多组NAT端口分配数据,利用该多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型。该识别信息发送模块,用于向非识别用户终端发送识别成功信息。
在本申请的一个实施例中,该模型训练模块具体用于:将多组NAT端口分配数据分为训练集样本和测试集样本;将该训练集样本输入卷积神经网络模型,得到经过训练的卷积神经网络模型;利用测试集样本对该经过训练的卷积神经网络模型进行验证,若验证结果符合预设标准,则经过训练的卷积神经网络模型为训练完成的卷积神经网络模型;若验证结果不符合预设标准,则利用该训练集样本对卷积神经网络模型重新进行训练,直至验证结果符合所述预设标准。
在本申请的一个实施例中,向该第一用户终端和该第二用户终端发送识别成功信息包括向该第一用户终端发送识别成功信息和第一NAT端口分配策略,向该第二用户终端发送识别成功信息和第二NAT端口分配策略;该端口分配策略包括简单自增型分配策略和非自增型分配策略;提供了另一种实现对称型NAT穿越的装置,该实现对称型NAT穿越的装置包括简单自增模块和非自增模块。
其中,该简单自增模块,用于若端口分配策略为简单自增型分配策略,该STUN服务器收到用户终端的连接请求并向用户终端返回NAT端口分配数据,该预测服务器接收用户终端发送的该NAT端口分配数据;根据该简单自增分配策略,预测服务器向用户终端发送预测端口号。该非自增模块,用于若端口分配策略为非自增型分配策略,执行该STUN服务器收到用户终端的连接请求并向用户终端返回N个NAT端口分配数据,预测服务器接收用户终端发送的N个NAT端口分配数据,将N个NAT端口分配数据输入卷积神经网络模型,得到预测端口号,预测服务器向用户终端发送预测端口号的步骤。
在一个实施例中,如图14所示,提供了一种实现对称型NAT穿越的装置1400,该实现对称型NAT穿越的装置1400可以配置于图1所示实施环境的第一用户终端和第二用户终端中。该实现对称型NAT穿越的装置1400包括第二发送模块1402、第三发送模块1404、第三接收模块1406、第四发送模块1408、第四接收模块1410和穿越模块1412。
其中,该第二发送模块1402,用于第一用户终端将第一NAT信息通过数据交换服务器发送给第二用户终端,该第二用户终端接收该第一NAT信息后通过该数据交换服务器将第二NAT信息发送给该第一用户终端。该第三发送模块1404,用于当该第一NAT信息中的NAT类型为对称型NAT且该第二NAT信息中的NAT类型为对称型NAT时,该第一用户终端将第一NAT的标识信息发送给预测服务器,第二用户终端将第二NAT的标识信息发送给预测服务器;该第一NAT与该第二NAT为对称型NAT。该第三接收模块1406,用于当该预测服务器能够识别该第一NAT的标识信息和该第二NAT的标识信息时,该第一用户终端和该第二用户终端接收识别成功信息。该第四发送模块1408,用于该第一用户终端和该第二用户终端分别向STUN服务器发送N次连接请求;该第一用户终端接收该STUN服务器返回的该第一NAT分配的N个NAT端口分配数据,并将为该第一NAT分配的N个NAT端口分配数据上传至该预测服务器;该第二用户终端接收该STUN服务器返回的该第二NAT分配的N个NAT端口分配数据,并将为该第二NAT分配的N个NAT端口分配数据上传至该预测服务器。第四接收模块1410,用于该第一用户终端接收该预测服务器返回的第一预测端口号,该第二用户终端接收预测服务器返回的该第二预测端口号;该第一预测端口号为将该第一NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测得到的;该第二预测端口号为将该第二NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到的。穿越模块1412,用于该第一用户终端将该第一预测端口号通过数据交换服务器发送给该第二用户终端,该第二用户终端将该第二预测端口号通过该数据交换服务器发送给该第一用户终端,以实现对称型NAT穿越。
在本申请的一个实施例中,该穿越模块1412具体用于:该第一用户终端与该第二用户终端利用数据交换服务器,将各自的该预测端口号发送给对方;该第一用户终端接收到该第二预测端口号后,得到第二预测端口,该第一用户终端通过第一数据传输通道向该第二预测端口发送探测包;该第二用户终端收到该第一预测端口号后,得到第一预测端口,对该第一预测端口进行扩展,得到扩展后的第一预测端口;该第二用户终端通过多个第二数据传输通道分别向该扩展后的第一预测端口发送数据探测包;若该第一数据传输通道与该多个第二数据传输通道中任一数据传输通道互为发送关系,则端口预测成功;该第一用户终端或该第二用户终端至少一方收到另一方的探测包后,向该另一方发送响应消息,该另一方收到所述响应消息后,实现对称型NAT的穿越。
在本申请的一个实施例中,提供了另一种实现对称型NAT穿越的装置,该实现对称型NAT穿越的装置除了包括实现对称型NAT穿越的装置1400包括的各个模块外,可选的,还包括等待信息接收模块,连接请求发送模块,数据接收模块,数据发送模块,识别信息接收模块。
其中,该等待信息接收模块,用于第一用户终端或第二用户终端中至少一个用户终端接收等待信息。该连接请求发送模块,用于该接收等待信息的用户终端采用预设方式向该STUN服务器发送多组连接请求,每一组连接请求包含N+1次连接请求;N为自然数;该预测方式包括以下至少一种:更改所述接收等待信息的用户终端发送端口的方式;利用相同发送端口等待发送端口复用时间的方式;该发送端口复用时间的计算方式包括确定发送端口复用时间的初始估值;采用二分逼近法重新估算发送端口复用时间。该数据接收模块,用于该接收等待信息的用户终端接收该STUN服务器返回的多组NAT端口分配数据。该数据发送模块,用于该接受等待信息的用户终端向该预测服务器发送多组NAT端口分配数据。该识别信息接收模块,用于该接收等待信息的用户终端接收该预测服务器返回的识别成功信息。
关于实现对称型NAT穿越的装置的具体限定可以参见上文中对于实现对称型NAT穿越的方法的限定,在此不再赘述。上述实现对称型NAT穿越的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图15所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种实现对称型NAT穿越方法。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种实现对称型NAT穿越的方法,其特征在于,所述方法包括:
数据交换服务器接收第一用户终端发送的第一NAT信息,并向第二用户终端转发所述第一NAT信息;所述数据交换服务器接收所述第二用户终端发送的第二NAT信息,并向所述第一用户终端转发所述第二NAT信息;所述第二NAT信息是第二用户终端接收到第一NAT信息后进行响应所发送的;
当所述第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,预测服务器接收第一NAT的标识信息和第二NAT的标识信息;所述第一NAT与所述第二NAT为对称型NAT;
当所述预测服务器能够识别所述第一NAT的标识信息和所述第二NAT的标识信息时,向所述第一用户终端和所述第二用户终端发送识别成功信息;
STUN服务器接收到所述第一用户终端和所述第二用户终端的连接请求,将所述第一NAT分配的N个NAT端口分配数据返回给所述第一用户终端,将所述第二NAT分配的N个NAT端口分配数据返回给所述第二用户终端;N为自然数;
所述预测服务器接收所述第一用户终端发送的所述第一NAT分配的N个NAT端口分配数据和所述第一NAT的标识信息;所述预测服务器接收所述第二用户终端发送的所述第二NAT分配的N个NAT端口分配数据和所述第二NAT的标识信息;
所述预测服务器将所述第一个NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测,得到第一预测端口号,将所述第二个NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测,得到第二预测端口号;并向所述第一用户终端返回所述第一预测端口号,以及向所述第二用户终端返回所述第二预测端口号;
所述数据交换服务器接收所述第一用户终端发送的第一预测端口号和所述第二用户终端发送的第二预测端口号,并向所述第一用户终端转发所述第二预测端口号,向所述第二用户终端转发所述第一预测端口号;利用所述第一预测端口号和所述第二预测端口号实现对称型NAT穿越。
2.根据权利要求1所述的方法,其特征在于,当所述第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,预测服务器接收所述第一NAT的标识信息和第二NAT的标识信息;所述第一NAT与所述第二NAT为对称型NAT之后,所述方法包括:
当预测服务器无法识别所述第一NAT和所述第二NAT至少一个的标识信息时,向标识信息无法被识别的NAT对应的非识别用户终端发送等待信息;
STUN服务器收到所述非识别用户终端的连接请求,向非识别用户返回多组NAT端口分配数据,每组NAT端口分配数据包含所述STUN服务器顺序返回的N+1个NAT端口分配数据;
预测服务器接收非识别用户发送的所述多组NAT端口分配数据,利用所述多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型;
向非识别用户终端发送识别成功信息。
3.根据权利要求2所述的方法,其特征在于,所述利用所述多组NAT端口分配数据对未训练的卷积神经网络模型进行训练,得到训练完成的卷积神经网络模型包括:
将所述多组NAT端口分配数据分为训练集样本和测试集样本;
将所述训练集样本输入卷积神经网络模型,得到经过训练的卷积神经网络模型;
利用测试集样本对所述经过训练的卷积神经网络模型进行验证,若验证结果符合预设标准,则经过训练的卷积神经网络模型为训练完成的卷积神经网络模型;若验证结果不符合预设标准,则利用所述训练集样本对卷积神经网络模型重新进行训练,直至验证结果符合所述预设标准。
4.根据权利要求1所述的方法,其特征在于,所述向所述第一用户终端和所述第二用户终端发送识别成功信息包括:
向所述第一用户终端发送识别成功信息和第一NAT端口分配策略,向所述第二用户终端发送识别成功信息和第二NAT端口分配策略;所述端口分配策略包括简单自增型分配策略和非自增型分配策略;
所述方法还包括:
若端口分配策略为简单自增型分配策略,所述STUN服务器收到用户终端的连接请求并向用户终端返回NAT端口分配数据,所述预测服务器接收用户终端发送的所述NAT端口分配数据;根据所述简单自增分配策略,所述预测服务器向用户终端发送预测端口号;
若端口分配策略为非自增型分配策略,执行所述STUN服务器收到用户终端的连接请求并向用户终端返回N个NAT端口分配数据,预测服务器接收用户终端发送的所述N个NAT端口分配数据,将N个NAT端口分配数据输入卷积神经网络模型,得到预测端口号,所述预测服务器向用户终端发送预测端口号的步骤。
5.一种实现对称型NAT穿越的方法,其特征在于,所述方法包括:
第一用户终端将第一NAT信息通过数据交换服务器发送给第二用户终端,所述第二用户终端接收所述第一NAT信息后通过所述数据交换服务器将第二NAT信息发送给所述第一用户终端;
当所述第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,所述第一用户终端将第一NAT的标识信息发送给预测服务器,所述第二用户终端将第二NAT的标识信息发送给预测服务器;所述第一NAT与所述第二NAT为对称型NAT;
当所述预测服务器能够识别所述第一NAT的标识信息和所述第二NAT的标识信息时,所述第一用户终端和所述第二用户终端接收识别成功信息;
所述第一用户终端和所述第二用户终端分别向STUN服务器发送N次连接请求;所述第一用户终端接收所述STUN服务器返回的所述第一NAT分配的N个NAT端口分配数据,并将所述第一NAT分配的N个NAT端口分配数据上传至所述预测服务器;所述第二用户终端接收所述STUN服务器返回的所述第二NAT分配的N个NAT端口分配数据,并将所述第二NAT分配的N个NAT端口分配数据上传至所述预测服务器;
所述第一用户终端接收所述预测服务器返回的第一预测端口号,所述第二用户终端接收预测服务器返回的所述第二预测端口号;所述第一预测端口号为将所述第一NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测得到的;所述第二预测端口号为将所述第二NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到的;
所述第一用户终端将所述第一预测端口号通过数据交换服务器发送给所述第二用户终端,所述第二用户终端将所述第二预测端口号通过所述数据交换服务器发送给所述第一用户终端,以实现对称型NAT穿越。
6.根据权利要求5所述的方法,其特征在于,所述第一用户终端将所述第一预测端口号通过数据交换服务器发送给所述第二用户终端,所述第二用户终端将所述第二预测端口号通过所述数据交换服务器发送给所述第一用户终端,以实现对称型NAT穿越,包括:
所述第一用户终端与所述第二用户终端利用数据交换服务器,将各自的所述预测端口号发送给对方;
所述第一用户终端接收到所述第二预测端口号后,得到第二预测端口,所述第一用户终端通过第一数据传输通道向所述第二预测端口发送探测包;
所述第二用户终端收到所述第一预测端口号后,得到第一预测端口,对所述第一预测端口进行扩展,得到扩展后的第一预测端口;
所述第二用户终端通过多个第二数据传输通道分别向所述扩展后的第一预测端口发送数据探测包;
若所述第一数据传输通道与所述多个第二数据传输通道中任一数据传输通道互为发送关系,则端口预测成功;所述第一用户终端或所述第二用户终端至少一方收到另一方的探测包后,向所述另一方发送响应消息,所述另一方收到所述响应消息后,实现对称型NAT的穿越。
7.根据权利要求5所述的方法,其特征在于,当所述第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,所述第一用户终端将第一NAT的标识信息发送给预测服务器,所述第二用户终端将第二NAT的标识信息发送给预测服务器;所述第一NAT与所述第二NAT为对称型NAT之后,所述方法还包括:
所述第一用户终端或所述第二用户终端中至少一个用户终端接收等待信息;
所述接收等待信息的用户终端采用预设方式向所述STUN服务器发送多组连接请求,每一组连接请求包含N+1次连接请求;N为自然数;
所述接收等待信息的用户终端接收所述STUN服务器返回的多组NAT端口分配数据;
所述接受等待信息的用户终端向所述预测服务器发送多组NAT端口分配数据;
所述接收等待信息的用户终端接收所述预测服务器返回的识别成功信息;
其中,所述预设方式包括以下至少一种:
更改所述接收等待信息的用户终端发送端口的方式;
利用相同发送端口等待发送端口复用时间的方式;所述发送端口复用时间的计算方式包括确定发送端口复用时间的初始估值;采用二分逼近法重新估算发送端口复用时间。
8.一种实现对称型NAT穿越的装置,其特征在于,所述装置包括:
信息转发模块,用于数据交换服务器接收第一用户终端发送的第一NAT信息,并向第二用户终端转发所述第一NAT信息;所述数据交换服务器接收所述第二用户终端发送的第二NAT信息,并向所述第一用户终端转发所述第二NAT信息;所述第二NAT信息是第二用户终端接收到第一NAT信息后进行响应所发送的;
第一接收模块,用于当所述第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,预测服务器接收第一NAT的标识信息和第二NAT的标识信息;所述第一NAT与所述第二NAT为对称型NAT;
第一发送模块,用于当所述预测服务器能够识别所述第一NAT的标识信息和所述第二NAT的标识信息时,向所述第一用户终端和所述第二用户终端发送识别成功信息;
数据返回模块,用于STUN服务器接收到所述第一用户终端和所述第二用户终端的连接请求,将所述第一NAT分配的N个NAT端口分配数据返回给所述第一用户终端,将所述第二NAT分配的N个NAT端口分配数据返回给所述第二用户终端;N为自然数;
第二接收模块,用于所述预测服务器接收所述第一用户终端发送的所述第一NAT分配的N个NAT端口分配数据和所述第一NAT的标识信息;所述预测服务器接收所述第二用户终端发送的所述第二NAT分配的N个NAT端口分配数据和所述第二NAT的标识信息;
预测模块,用于所述预测服务器将所述第一个NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测,得到第一预测端口号,将所述第二个NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到第二预测端口号;并向所述第一用户终端返回所述第一预测端口号,以及向所述第二用户终端返回所述第二预测端口号;
穿越模块,用于所述数据交换服务器接收所述第一用户终端发送的第一预测端口号和所述第二用户终端发送的第二预测端口号,并向所述第一用户终端转发所述第二预测端口号,向所述第二用户终端转发所述第一预测端口号;利用所述第一预测端口号和所述第二预测端口号实现对称型NAT穿越。
9.一种实现对称型NAT穿越的装置,其特征在于,所述装置包括:
第二发送模块,用于第一用户终端将第一NAT信息通过数据交换服务器发送给第二用户终端,所述第二用户终端接收所述第一NAT信息后通过所述数据交换服务器将第二NAT信息发送给所述第一用户终端;
第三发送模块,用于当所述第一NAT信息中的NAT类型为对称型NAT且所述第二NAT信息中的NAT类型为对称型NAT时,所述第一用户终端将第一NAT的标识信息发送给预测服务器,所述第二用户终端将第二NAT的标识信息发送给预测服务器;所述第一NAT与所述第二NAT为对称型NAT;
第三接收模块,用于当所述预测服务器能够识别所述第一NAT的标识信息和所述第二NAT的标识信息时,所述第一用户终端和所述第二用户终端接收识别成功信息;
第四发送模块,用于所述第一用户终端和所述第二用户终端分别向STUN服务器发送N次连接请求;所述第一用户终端接收所述STUN服务器返回的所述第一NAT分配的N个NAT端口分配数据,并将所述第一NAT分配的N个NAT端口分配数据上传至所述预测服务器;所述第二用户终端接收所述STUN服务器返回的所述第二NAT分配的N个NAT端口分配数据,并将所述第二NAT分配的N个NAT端口分配数据上传至所述预测服务器;
第四接收模块,用于所述第一用户终端接收所述预测服务器返回的第一预测端口号,所述第二用户终端接收预测服务器返回的所述第二预测端口号;所述第一预测端口号为将所述第一NAT分配的N个NAT端口分配数据输入训练完成的第一卷积神经网络模型进行预测得到的;所述第二预测端口号为将所述第二NAT分配的N个NAT端口分配数据输入训练完成的第二卷积神经网络模型进行预测得到的;
穿越模块,用于所述第一用户终端将所述第一预测端口号通过数据交换服务器发送给所述第二用户终端,所述第二用户终端将所述第二预测端口号通过所述数据交换服务器发送给所述第一用户终端,以实现对称型NAT穿越。
10.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7任一所述的实现对称型NAT穿越的方法。
CN202110244232.1A 2021-03-05 2021-03-05 实现对称型nat穿越的方法、装置和计算机设备 Pending CN113132507A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110244232.1A CN113132507A (zh) 2021-03-05 2021-03-05 实现对称型nat穿越的方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110244232.1A CN113132507A (zh) 2021-03-05 2021-03-05 实现对称型nat穿越的方法、装置和计算机设备

Publications (1)

Publication Number Publication Date
CN113132507A true CN113132507A (zh) 2021-07-16

Family

ID=76772575

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110244232.1A Pending CN113132507A (zh) 2021-03-05 2021-03-05 实现对称型nat穿越的方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN113132507A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060182100A1 (en) * 2005-02-11 2006-08-17 Microsoft Corporation Automated NAT traversal for peer-to-peer networks
US20090006648A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Network Address Translation Traversals for Peer-to-Peer Networks
CN101631145A (zh) * 2008-07-18 2010-01-20 友讯科技股份有限公司 一种预测nat设备端口的方法
CN105141711A (zh) * 2015-08-24 2015-12-09 北京息通网络技术有限公司 一种基于大数据分析的对称nat穿越方法及系统
CN109120737A (zh) * 2018-08-10 2019-01-01 哈尔滨工业大学(威海) 一种基于泊松模型的递增型对称nat的udp穿透方法与系统
CN109274735A (zh) * 2018-09-11 2019-01-25 腾讯科技(深圳)有限公司 一种对等网络连接方法及相关设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060182100A1 (en) * 2005-02-11 2006-08-17 Microsoft Corporation Automated NAT traversal for peer-to-peer networks
US20090006648A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Network Address Translation Traversals for Peer-to-Peer Networks
CN101631145A (zh) * 2008-07-18 2010-01-20 友讯科技股份有限公司 一种预测nat设备端口的方法
CN105141711A (zh) * 2015-08-24 2015-12-09 北京息通网络技术有限公司 一种基于大数据分析的对称nat穿越方法及系统
CN109120737A (zh) * 2018-08-10 2019-01-01 哈尔滨工业大学(威海) 一种基于泊松模型的递增型对称nat的udp穿透方法与系统
CN109274735A (zh) * 2018-09-11 2019-01-25 腾讯科技(深圳)有限公司 一种对等网络连接方法及相关设备

Similar Documents

Publication Publication Date Title
CN111182637B (zh) 一种基于生成对抗强化学习的无线网络资源分配方法
CN109120679A (zh) 任务分配方法及装置
CN108512885A (zh) 对被识别为消息队列遥测传输包的网络包执行特定动作
CN105579990A (zh) 应用感知网络管理
CN109246027B (zh) 一种网络维护的方法、装置和终端设备
CN113489619B (zh) 一种基于时间序列分析的网络拓扑推断方法及装置
CN112119620B (zh) 用于在节点的网络中传播数据分组的系统和方法
CN106101264B (zh) 内容分发网络日志推送方法、装置和系统
US20240054354A1 (en) Federated learning method and apparatus
CN105763297B (zh) 一种基于云计算系统的远程数据优化传输方法和装置
KR102346109B1 (ko) 부하분산 장치 및 방법
CN112637883A (zh) 电力物联网中对无线环境变化具有鲁棒性的联邦学习方法
CN107995013B (zh) 客服分配方法及装置
CN110414979A (zh) 线上背书签名方法、装置、设备和存储介质
CN108289125A (zh) 基于流式处理的tcp会话重组与统计数据提取方法
Liu et al. IEEE P2668-compliant multi-layer IoT-DDoS defense system using deep reinforcement learning
CN112040512B (zh) 一种基于公平的雾计算任务卸载方法及系统
CN110365659B (zh) 一种小样本场景下的网络入侵检测数据集的构造方法
CN115759289A (zh) 基于用户分组协同的联邦学习方法、系统及装置
US20210158217A1 (en) Method and Apparatus for Generating Application Identification Model
CN113114541A (zh) 一种判断网络节点之间能否建立网络连接的方法和系统
CN112492591B (zh) 一种电力物联网终端接入网络的方法及装置
CN113132507A (zh) 实现对称型nat穿越的方法、装置和计算机设备
CN110601909B (zh) 网络维护方法、装置、计算机设备和存储介质
CN115002031B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210716