CN109962987A - 一种通信连接的建立方法、装置及系统 - Google Patents

一种通信连接的建立方法、装置及系统 Download PDF

Info

Publication number
CN109962987A
CN109962987A CN201711405844.4A CN201711405844A CN109962987A CN 109962987 A CN109962987 A CN 109962987A CN 201711405844 A CN201711405844 A CN 201711405844A CN 109962987 A CN109962987 A CN 109962987A
Authority
CN
China
Prior art keywords
message
port
network equipment
equipment
sent
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
CN201711405844.4A
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.)
Hangzhou Ezviz Software Co Ltd
Original Assignee
Hangzhou Ezviz Software 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 Hangzhou Ezviz Software Co Ltd filed Critical Hangzhou Ezviz Software Co Ltd
Priority to CN201711405844.4A priority Critical patent/CN109962987A/zh
Publication of CN109962987A publication Critical patent/CN109962987A/zh
Pending legal-status Critical Current

Links

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
    • 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/14Session management
    • H04L67/141Setup of application sessions

Abstract

本申请实施例提供了一种通信连接的建立方法、装置及系统。该方法包括:第一网络设备接收第一终端设备发送的第一数量个报文,将各个报文发送至第二网络设备,接收第二网络设备发送的各个第二报文,将端口匹配成功的目标报文发送至第一终端设备。第二网络设备接收第二终端设备发送的第二数量个报文,将端口匹配成功的目标报文发送至第二终端设备。第一终端设备和第二终端设备均可以根据目标报文中的端口与对端建立通信连接。其中,第一数量和第二数量远小于总端口数量,且均为根据预设概率和总端口数量预先确定的数值。应用本申请实施例提供的方案,能够建立端口不规则的Symmetric NAT类型的终端设备与Port‑restricted cone NAT类型的终端设备之间的通信连接。

Description

一种通信连接的建立方法、装置及系统
技术领域
本申请涉及通信技术领域,特别是涉及一种通信连接的建立方法、装置及系统。
背景技术
为了解决互联网协议(Internet Protocol,IP)第四版中IP地址不够用的问题,出现了应用网络地址转换(Network Address Translation,NAT)协议的组网形式。
根据NAT协议的不同实现方式,大致可以将NAT协议分为全锥形NAT(Full ConeNAT)、受限制锥形NAT(Restricted Cone NAT)、端口受限制锥形NAT(Port-restrictedcone NAT)和对称型NAT(Symmetric NAT)四种类型。其中,Symmetric NAT又包括端口规则Symmetric NAT和端口不规则Symmetric NAT两种类型。以下将端口不规则Symmetric NAT简称为第一类型,将Port-restricted cone NAT简称为第二类型。
其中,在第一类型的局域网中,内网终端设备与不同的外网终端设备通信时,将在内网终端设备中建立不同的通信连接。内网路由器会针对每个通信连接建立不同的内网端口与外网映射端口的对应关系,内网路由器所生成的外网映射端口是不规则的。所有从外网发送至内网终端设备的报文都使用路由器的地址和对应通信连接中的映射端口。并且,只有接收到了内网终端设备发送的报文的外网终端设备,才能向内网终端设备返回报文。
在第二类型的局域网中,内网终端设备与不同的外网终端设备通信时,将在内网终端设备中建立同一个通信连接。内网路由器会针对该通信连接建立一个内网端口与外网映射端口的对应关系。所有从外网发送至内网终端设备的报文都使用路由器的地址和同一映射端口。并且,只有接收到了内网终端设备发送的报文的外网终端设备,才能向内网终端设备返回报文。
相关技术中,第一类型的终端设备与第二类型的终端设备之间无法建立通信连接。
发明内容
本申请实施例的目的在于提供了一种通信连接的建立方法、装置及系统,以建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。具体的技术方案如下。
第一方面,本申请实施例提供了一种通信连接的建立方法。该方法应用于第一网络设备,所述方法包括:
接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第二网络设备发送的各个第二报文;
判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
如果存在,则将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
可选的,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
可选的,所述第一网络设备和第二网络设备分别与服务器相连;在将各个第一报文发送至第二网络设备时,所述方法还包括:
接收所述第一终端设备发送至所述服务器的通知报文;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文;
将所述通知报文发送至所述服务器,以使所述服务器将所述通知报文通过所述第二网络设备发送至所述第二终端设备。
可选的,所述第一报文中的目的互联网协议IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址;
在接收所述第一终端设备发送的各个第一报文之前,所述方法还包括:
接收所述第一终端设备向所述服务器发送的第一信息获取请求,将所述第一信息获取请求发送至所述服务器,所述第一信息获取请求用于获取所述第二网络设备的IP地址;
接收所述服务器针对所述第一信息获取请求发送的所述第二网络设备的IP地址,并将所述第二网络设备的IP地址发送至所述第一终端设备。
可选的,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;
当所述第一网络设备为端口不规则的对称性网络地址转换NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;在接收所述第一终端设备发送的各个第一报文之前,所述方法还包括:
接收所述第一终端设备向所述服务器发送的第二信息获取请求,将所述第二信息获取请求发送至所述服务器,所述第二信息获取请求用于获取所述第二终端设备在所述第二网络设备中的映射端口;
接收所述服务器针对所述第二信息获取请求发送的所述第二终端设备在所述第二网络设备中的映射端口,并将所述第二终端设备在所述第二网络设备中的映射端口发送至所述第一终端设备。
可选的,所述将各个第一报文发送至第二网络设备的步骤,包括:
将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至第二网络设备;
所述判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文的步骤,包括:
判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文。
可选的,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,在将各个第一报文中的源端口替换为对应的映射端口之前,所述方法还包括:
生成与各个第一报文的源端口对应的映射端口;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述将各个第一报文中的源端口替换为对应的映射端口的步骤,包括:
将各个第一报文中的源端口替换为存储的同一映射端口。
可选的,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文的步骤,包括:
判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文的步骤,包括:
判断各个第二报文中是否存在源端口与各个第一报文中的目的端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。
第二方面,本申请实施例提供了一种通信连接的建立方法。该方法应用于第一终端设备,所述第一终端设备与第一网络设备相连,所述方法包括:
向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
可选的,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
可选的,所述第一网络设备和第二网络设备分别与服务器相连;在向所述第一网络设备发送各个第一报文时,所述方法还包括:
向所述第一网络设备发送待发送至所述服务器的通知报文,以使所述第一网络设备将所述通知报文发送至所述服务器;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文。
可选的,所述第一报文中的目的IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址;
在向所述第一网络设备发送各个第一报文之前,所述方法还包括:
向所述第一网络设备发送待发送至所述服务器的第一信息获取请求,以使所述第一网络设备将所述第一信息获取请求发送至所述服务器;其中,所述第一信息获取请求,用于获取所述第二网络设备的IP地址;
接收所述第一网络设备发送的所述第二网络设备的IP地址;其中,所述第二网络设备的IP地址为所述服务器发送至所述第一网络设备的信息。
可选的,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;
当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;
在向所述第一网络设备发送各个第一报文之前,所述方法还包括:
向所述第一网络设备发送待发送至所述服务器的第二信息获取请求,以使所述第一网络设备将所述第二信息获取请求发送至所述服务器;其中,所述第二信息获取请求,用于获取所述第二终端设备在所述第二网络设备中的映射端口;
接收所述第一网络设备发送的所述第二终端设备在所述第二网络设备中的映射端口;其中,所述第二终端设备在所述第二网络设备中的映射端口为所述服务器发送至所述第一网络设备的信息。
可选的,当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接的步骤,包括:
以所述目标第二报文中的目的端口作为源端口,与所述第二终端设备建立通信连接;
当所述第一终端设备为端口受限制锥形NAT类型的终端设备,所述第二终端设备为端口不规则的对称性NAT类型的终端设备时,所述根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接的步骤,包括:
将所述目标第二报文中的源端口作为所述第二终端设备的目的端口,与所述第二终端设备建立通信连接。
第三方面,本申请实施例提供了一种通信连接的建立装置。该装置应用于第一网络设备,所述装置包括:
第一接收模块,用于接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
第一发送模块,用于将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
所述第一接收模块,用于接收所述第二网络设备发送的各个第二报文;
判断模块,用于判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
所述第一发送模块,用于当各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文时,将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
可选的,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
可选的,所述第一网络设备和第二网络设备分别与服务器相连;
第一接收模块,还用于在将各个第一报文发送至第二网络设备时,接收所述第一终端设备发送至所述服务器的通知报文;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文;
第一发送模块,还用于将所述通知报文发送至所述服务器,以使所述服务器将所述通知报文通过所述第二网络设备发送至所述第二终端设备。
可选的,所述第一报文中的目的互联网协议IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址;
第一接收模块,还用于在接收所述第一终端设备发送的各个第一报文之前,接收所述第一终端设备向所述服务器发送的第一信息获取请求;
第一发送模块,还用于将所述第一信息获取请求发送至所述服务器,所述第一信息获取请求用于获取所述第二网络设备的IP地址;
第一接收模块,还用于接收所述服务器针对所述第一信息获取请求发送的所述第二网络设备的IP地址;
第一发送模块,还用于将所述第二网络设备的IP地址发送至所述第一终端设备。
可选的,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;当所述第一网络设备为端口不规则的对称性网络地址转换NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;
第一接收模块,还用于在接收所述第一终端设备发送的各个第一报文之前,接收所述第一终端设备向所述服务器发送的第二信息获取请求;
第一发送模块,还用于将所述第二信息获取请求发送至所述服务器,所述第二信息获取请求用于获取所述第二终端设备在所述第二网络设备中的映射端口;
第一接收模块,还用于接收所述服务器针对所述第二信息获取请求发送的所述第二终端设备在所述第二网络设备中的映射端口;
第一发送模块,还用于将所述第二终端设备在所述第二网络设备中的映射端口发送至所述第一终端设备。
可选的,所述第一发送模块,具体用于:
将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至第二网络设备;
所述判断模块,具体用于:
判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文。
可选的,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述装置还包括:
生成模块,用于在将各个第一报文中的源端口替换为对应的映射端口之前,生成与各个第一报文的源端口对应的映射端口;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述第一发送模块,具体用于:
将各个第一报文中的源端口替换为存储的同一映射端口。
可选的,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述判断模块,具体用于:
判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述判断模块,具体用于:
判断各个第二报文中是否存在源端口与各个第一报文中的目的端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。
第四方面,本申请实施例提供了另一种通信连接的建立装置。该装置应用于第一终端设备,所述第一终端设备与第一网络设备相连,所述装置包括:
第二发送模块,用于向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
第二接收模块,用于接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
建立模块,用于根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
可选的,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
可选的,所述第一网络设备和第二网络设备分别与服务器相连;
第二发送模块,还用于在向所述第一网络设备发送各个第一报文时,向所述第一网络设备发送待发送至所述服务器的通知报文,以使所述第一网络设备将所述通知报文发送至所述服务器;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文。
可选的,所述第一报文中的目的IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址;
第二发送模块,还用于在向所述第一网络设备发送各个第一报文之前,向所述第一网络设备发送待发送至所述服务器的第一信息获取请求,以使所述第一网络设备将所述第一信息获取请求发送至所述服务器;其中,所述第一信息获取请求,用于获取所述第二网络设备的IP地址;
第二接收模块,还用于接收所述第一网络设备发送的所述第二网络设备的IP地址;其中,所述第二网络设备的IP地址为所述服务器发送至所述第一网络设备的信息。
可选的,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;
当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;
第二发送模块,还用于在向所述第一网络设备发送各个第一报文之前,向所述第一网络设备发送待发送至所述服务器的第二信息获取请求,以使所述第一网络设备将所述第二信息获取请求发送至所述服务器;其中,所述第二信息获取请求,用于获取所述第二终端设备在所述第二网络设备中的映射端口;
第二接收模块,还用于接收所述第一网络设备发送的所述第二终端设备在所述第二网络设备中的映射端口;其中,所述第二终端设备在所述第二网络设备中的映射端口为所述服务器发送至所述第一网络设备的信息。
可选的,当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述建立模块,具体用于:
以所述目标第二报文中的目的端口作为源端口,与所述第二终端设备建立通信连接;
当所述第一终端设备为端口受限制锥形NAT类型的终端设备,所述第二终端设备为端口不规则的对称性NAT类型的终端设备时,所述建立模块,具体用于:
将所述目标第二报文中的源端口作为所述第二终端设备的目的端口,与所述第二终端设备建立通信连接。
第五方面,本申请实施例提供了一种通信连接的建立系统。该系统包括:第一终端设备、第一网络设备、第二网络设备和第二终端设备;
所述第一终端设备,用于向所述第一网络设备发送待发送至所述第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
所述第一网络设备,用于接收所述第一终端设备发送的第一数量个第一报文,将各个第一报文发送至所述第二网络设备;
所述第二终端设备,用于向所述第二网络设备发送待发送至所述第一终端设备的第二数量个第二报文;其中,所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
所述第二网络设备,用于接收所述第二终端设备发送的第二数量个第二报文,将各个第二报文发送至所述第一网络设备;接收所述第一网络设备发送的各个第一报文,判断各个第一报文中是否存在端口与各个第二报文中的端口匹配的目标第一报文,如果存在,则将所述目标第一报文发送至所述第二终端设备;
所述第一网络设备,用于接收所述第二网络设备发送的各个第二报文,判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文,如果存在,则将所述目标第二报文发送至所述第一终端设备;
所述第一终端设备,用于接收所述第一网络设备发送的所述目标第二报文,根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接;
所述第二终端设备,用于接收所述第二网络设备发送的所述目标第一报文,根据所述目标第一报文中的端口,与所述第一终端设备建立通信连接。
可选的,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
可选的,所述系统还包括服务器,所述第一网络设备和第二网络设备分别与所述服务器相连;
所述第一终端设备,还用于在向所述第一网络设备发送各个第一报文时,向所述第一网络设备发送待发送至所述服务器的通知报文,其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文;
所述第一网络设备,还用于接收所述第一终端设备发送的通知报文,将所述通知报文发送至所述服务器;
所述服务器,用于接收所述第一网络设备发送的通知报文,将所述通知报文通过所述第二网络设备发送至所述第二终端设备。
可选的,所述第一报文中的目的互联网协议IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址和所述第一网络设备的IP地址;
所述第一终端设备,还用于在向所述第一网络设备发送各个第一报文之前,向所述第一网络设备发送待发送至所述服务器的第一信息获取请求,接收所述第一网络设备发送的所述第二网络设备的IP地址;其中,所述第一信息获取请求,用于获取所述第二网络设备的IP地址;
所述第一网络设备,还用于接收所述第一终端设备发送的第一信息获取请求,将所述第一信息获取请求发送至所述服务器,接收所述服务器针对所述第一信息获取请求发送的所述第二网络设备的IP地址,并将所述第二网络设备的IP地址发送至所述第一终端设备;
所述第二终端设备,还用于在向所述第二网络设备发送各个第二报文之前,向所述第二网络设备发送待发送至所述服务器的第三信息获取请求,接收所述第二网络设备发送的所述第一网络设备的IP地址;其中,所述第三信息获取请求,用于获取所述第一网络设备的IP地址;
所述第二网络设备,还用于接收所述第二终端设备发送的第三信息获取请求,将所述第三信息获取请求发送至所述服务器,接收所述服务器针对所述第三信息获取请求发送的所述第一网络设备的IP地址,并将所述第一网络设备的IP地址发送至所述第二终端设备;
所述服务器,还用于接收所述第一网络设备发送的第一信息获取请求,根据所述第一信息获取请求获取所述第二网络设备的IP地址,将所述第二网络设备的IP地址发送至所述第一网络设备;接收所述第二网络设备发送的第三信息获取请求,根据所述第三信息获取请求获取所述第一网络设备的IP地址,将所述第一网络设备的IP地址发送至所述第二网络设备。
可选的,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;
当所述第一网络设备和第一终端设备均为端口不规则的对称性网络地址转换NAT类型的设备,所述第二网络设备和第二终端设备均为端口受限制锥形NAT类型的设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;
所述第一终端设备,还用于在向所述第一网络设备发送各个第一报文之前,向所述第一网络设备发送待发送至所述服务器的第二信息获取请求;其中,所述第二信息获取请求,用于获取所述第二终端设备在所述第二网络设备中的映射端口;
所述第一网络设备,还用于接收所述第一终端设备发送的第二信息获取请求,将所述第二信息获取请求发送至所述服务器,接收所述服务器针对所述第二信息获取请求发送的所述第二终端设备在所述第二网络设备中的映射端口,并将所述第二终端设备在所述第二网络设备中的映射端口发送至所述第一终端设备;
所述服务器,还用于接收所述第一网络设备发送的第二信息获取请求,根据所述第二信息获取请求获取所述第二终端设备在所述第二网络设备中的映射端口,将所述第二终端设备在所述第二网络设备中的映射端口发送至所述第一网络设备。
可选的,所述第一网络设备,具体用于将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至所述第二网络设备;判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文;
所述第二网络设备,具体用于将各个第二报文中的源端口替换为对应的映射端口,将替换后的各个第二报文发送至所述第一网络设备;判断各个第一报文中是否存在端口与替换后的各个第二报文中的端口匹配的目标第一报文。
可选的,所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备;
所述第一网络设备,还用于在将各个第一报文中的源端口替换为对应的映射端口之前,生成与各个第一报文的源端口对应的映射端口;
所述第二网络设备,具体用于将各个第二报文中的源端口替换为存储的同一映射端口。
可选的,所述第一网络设备和第一终端设备均为端口不规则的对称性NAT类型的设备,所述第二网络设备和第二终端设备均为端口受限制锥形NAT类型的设备;
所述第一网络设备,具体用于判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
所述第一终端设备,具体用于以所述目标第二报文中的目的端口作为源端口,与所述第二终端设备建立通信连接;
所述第二网络设备,具体用于判断各个第一报文中是否存在源端口与各个第二报文中的目的端口匹配的目标第一报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
所述第二终端设备,具体用于以所述目标第一报文中的源端口作为所述第一终端设备的目的端口,与所述第一终端设备建立通信连接。
第六方面,本申请实施例提供了一种第一网络设备。该第一网络设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本申请实施例提供的一种通信连接的建立方法。该方法包括:
接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第二网络设备发送的各个第二报文;
判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
如果存在,则将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
第七方面,本申请实施例提供了一种第一终端设备。该第一终端设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本申请实施例提供的另一种通信连接的建立方法。该方法包括:
向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
第八方面,本申请实施例提供了一种计算机可读存储介质。该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的一种通信连接的建立方法。该方法包括:
接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第二网络设备发送的各个第二报文;
判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
如果存在,则将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
第九方面,本申请实施例提供了一种计算机可读存储介质。该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的另一种通信连接的建立方法。该方法包括:
向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
本申请实施例提供的通信连接的建立方法、装置及系统中,第一网络设备可以在各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文时,将目标第二报文发送至第一终端设备。这样,第一终端设备可以根据目标第二报文中的端口与第二终端设备建立通信连接。同样的,第二网络设备可以在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将目标第一报文发送至第二终端设备。这样,第二终端设备可以根据目标第一报文中的端口与第一终端设备建立通信连接。
本申请实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本申请实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种通信连接的建立方法的流程示意图;
图2a为本申请实施例提供的一种应用场景示意图;
图2b为本申请实施例提供的一种报文发送流程示意图;
图3为本申请实施例提供的设备之间的一种交互示意图;
图4为本申请实施例提供的另一种通信连接的建立方法的流程示意图;
图5为本申请实施例提供的一种通信连接的建立装置的结构示意图;
图6为本申请实施例提供的另一种通信连接的建立装置的结构示意图;
图7和图8为本申请实施例提供的通信连接的建立系统的两种结构示意图;
图9为本申请实施例提供的第一网络设备的一种结构示意图;
图10为本申请实施例提供的第一终端设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在相关技术中,在网络地址转换(Network Address Translation,NAT)协议中,内部终端设备与外部终端设备通信时,网络设备将内部地址转换为外部地址。该协议的产生能够解决互联网协议(Internet Protocol,IP)的第四个版本(IPv4)地址不够用的问题。其中,NAT协议包括端口不规则的对称性(Symmetric)NAT和端口受限制锥形NAT(Port-restricted cone NAT)等类型。
为了能够建立端口不规则的Symmetric NAT的终端设备与Port-restricted coneNAT的终端设备之间的通信连接,本申请实施例提供了一种通信连接的建立方法、装置及系统。下面通过具体实施例,对本申请进行详细说明。以下将端口不规则的Symmetric NAT简称为第一类型,将Port-restricted cone NAT简称为第二类型。
在本申请实施例中,终端设备可以包括普通计算机、笔记本电脑、平板电脑、服务器、移动终端(例如智能手机等)、摄像机等设备。网络设备可以包括路由器、交换机等设备。
图1为本申请实施例提供的通信连接的建立方法的一种流程示意图。该实施例应用于第一网络设备。图2a为本实施例提供的一种应用场景示意图。在图2a中,局域网1中的第一终端设备通过第一网络设备与外网设备通信,局域网2中的第二终端设备通过第二网络设备与外网设备通信,第一网络设备和第二网络设备均可以与服务器相连。在本实施例中,局域网1可以应用第一类型协议,局域网2可以应用第二类型协议;也可以是,局域网2可以应用第一类型协议,局域网1可以应用第二类型协议,本申请实施例对此不做具体限定。
本实施例包括如下步骤S101~步骤S105:
步骤S101:接收第一终端设备发送至第二终端设备的第一数量个第一报文。
其中,第一数量为预设的远小于总端口数量的数量。例如,当端口可以在1~65536中取值时,总端口数量为65536,最大端口为65536。总端口数量对应最大端口,在数值上,总端口数量等于最大端口。第一数量远小于总端口数量,可以理解为,总端口数量与第一数量的差值大于十倍以上的第一数量,或者总端口数量大于十倍以上的第一数量。例如,当总端口数量为65536时,第一数量可以为数量级在几千以下的数值。上述端口是指虚拟端口,即逻辑意义上的端口,而非物理端口。本申请中各实施例中的端口均是指上述含义。
本实施例中,第一终端设备可以在接收到预设指令时向第二终端设备发送第一报文,也可以在预设时刻到达时向第二终端设备发送第一报文。预设指令可以为通知类的报文。
其中,各个第一报文中可以包含源IP地址、源端口、目的IP地址和目的端口。第一报文中的源IP地址为第一终端设备的内网地址,第一报文中的源端口为第一终端设备的内网端口。第一报文中的目的IP地址为第二终端设备的外网地址,也就是第二网络设备的IP地址。各个第一报文的源IP地址和目的IP地址均相同。第一报文中的目的IP地址为第一终端设备预先获取的地址。第一报文中的目的端口为第二终端设备的外网端口,也就是第二终端设备在第二网络设备中的映射端口。外网端口相对于终端设备而言是保密的、不可知的。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,各个第一报文中的源端口均不同,各个第一报文中的目的端口均相同,各个第一报文中的源端口为第一终端设备生成的端口,各个第一报文中的目的端口为预先获得的端口。第一终端设备在生成各个第一报文中的源端口时,针对每个不同的源端口会创建对应的套接字(socket)。在本实施方式,第一终端设备用于生成内网端口,第二终端设备用于猜测第一终端设备生成的内网端口对应的外网端口。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,各个第一报文中的源端口均相同,各个第一报文中的目的端口均不同,各个第一报文中的目的端口为第一终端设备生成的端口。所有第一报文的源端口均为同一个,因此所有第一报文对应同一个套接字。在本实施方式,第一终端设备用于猜测第二终端设备生成的内网端口对应的外网端口,第二终端设备用于生成内网端口。
本实施例中,第一报文可以为携带数据的数据报文,也可以为不携带数据的协议报文,本申请实施例对此不做具体限定。
步骤S102:将各个第一报文发送至第二网络设备,以使第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将目标第一报文发送至第二终端设备,以使第二终端设备根据目标第一报文中的端口与第一终端设备建立通信连接。
其中,各个第二报文为第二终端设备通过第二网络设备发送至第一终端设备的第二数量个报文。第二数量远小于总端口数量,第一数量和第二数量均为根据预设概率和总端口数量预先确定的数值。预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率。第二数量远小于总端口数量,可以理解为,总端口数量与第二数量的差值大于十倍以上的第二数量,或者总端口数量大于十倍以上的第二数量。
在一种具体的实施方式中,在将各个第一报文发送至第二网络设备时,第一网络设备可以将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至第二网络设备。
在本实施方式中,各个第一报文的源端口均对应一个映射端口,源端口与映射端口之间一一对应。将各个第一报文中的源端口替换为对应的映射端口,可以理解为,将各个第一报文中的内网端口替换为对应的外网端口。第一报文中的源端口对应的映射端口可以理解为外网端口。
在将各个第一报文中的源端口替换为对应的映射端口时,还可以将各个第一报文中的源IP地址替换为第二网络设备的IP地址,也就是将各个第一报文的内网地址替换为外网地址。第一网络设备将各个第一报文发送至第二网络设备时,可以为将各个第一报文的内网地址和内网端口分别替换为外网地址和外网端口,将替换后的各个第一报文发送至第二网络设备。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,在将各个第一报文中的源端口替换为对应的映射端口之前,第一网络设备还可以生成与各个第一报文的源端口对应的映射端口。在本实施方式中,与各个第一报文的源端口对应的映射端口不是预先存储的,而是在接收到各个第一报文之后生成的端口。在生成与各个第一报文的源端口对应的映射端口时,可以在预设端口范围内随机生成与各个第一报文的源端口对应的映射端口。其中,预设端口范围可以为预设的最大端口对应的端口范围。例如,最大端口为65536,那么预设端口范围可以为1~65536表示的整数范围。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,各个第一报文中的源端口均相同,与各个第一报文的源端口对应的映射端口均相同,该映射端口可以为第一网络设备预先存储的端口。在这种情况下,可以将各个第一报文中的源端口替换为存储的同一映射端口。
在本实施例中,各个第一报文可以按照时间顺序陆续发送至第二网络设备。
在本实施例中,在将各个第一报文发送至第二网络设备时,或者是,在第一终端设备向第二终端设备发送各个第一报文时,第二终端设备也向第一终端设备发送各个第二报文。
由于在第一类型的局域网和第二类型的局域网中,只有接收到了内网终端设备发送的报文的外网终端设备,才能将报文发送至内网终端设备,也就才能建立通信连接。该内网终端设备是指局域网内部的终端设备,外网终端设备是指局域网之外的终端设备。因此,第一类型的终端设备和第二类型的终端设备要想将报文发送至对端,即与对端建立通信连接,可以通过一端生成端口、一端猜测端口的方式在同一时段向对端发送报文。如果猜测的端口与生成的端口相同,报文就能够到达对端,即能够建立通信连接。
具体的,第一终端设备和第二终端设备可以在预设时刻到达时开始向对端发送报文,也可以是,第一终端设备或第二终端设备在需要与对端建立通信连接时,通过其他的第三方设备通知对端向自身发送报文。第一终端设备和第二终端设备可以同时开始向对端发送报文,也可以前后相差较短时间地开始向对端发送报文。第一终端设备可以先向第二终端设备发送报文,也可以是第二终端设备先向第一终端设备发送报文,本申请实施例对此不做具体限定。
各个第二报文可以包括源IP地址、源端口、目的IP地址和目的端口。第二报文中的源IP地址为第二终端设备的内网地址,第二报文的源端口为第二终端设备的内网端口。第二报文中的目的IP地址为第一终端设备的外网地址,也就是第一网络设备的IP地址。各个第二报文的源IP地址和目的IP地址均相同。第二报文中的目的IP地址为第二终端设备预先获取的地址。第二报文中的目的端口为第一终端设备的外网端口,也就是第一终端设备在第一网络设备中的映射端口。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,各个第二报文中的源端口均相同。各个第二报文中的目的端口为第二终端设备生成的端口。该目的端口即为第二终端设备猜测的第一终端设备在第一网络设备中的映射端口。各个第二报文中的目的端口可以为第二终端设备在预设端口范围内随机生成的端口。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,各个第二报文中的源端口均不同。各个第二报文中的源端口为第二终端设备生成的端口。各个第二报文中的源端口可以为第二终端设备在预设端口范围内随机生成的端口。
第二终端设备向第一终端设备发送的第二报文会通过第二网络设备发送至第一网络设备,因此第二网络设备可以接收到各个第二报文,并将各个第二报文发送至第一网络设备。第二网络设备在将各个第二报文发送至第一网络设备时,可以将第二报文中的源端口替换为对应的映射端口,也就是将第二报文中的内网端口替换为对应的外网端口,将替换后的各个第二报文发送至第一网络设备。上述映射端口即为第二终端设备在第二网络设备中的映射端口。
在第二网络设备将各个第二报文的源端口替换为对应的映射端口时,还可以将各个第二报文中的源IP地址替换为第一网络设备的IP地址,也就是将各个第二报文的内网地址替换为外网地址。第一网络设备的IP地址可以理解为外网地址。第二网络设备将各个第二报文发送至第一网络设备,可以为将各个第二报文的内网地址和内网端口分别替换为外网地址和外网端口,将替换后的各个第二报文发送至第一网络设备。
第二网络设备在接收到第一网络设备发送的各个第一报文时,可以判断各个第一报文中是否存在端口与各个第二报文中的端口匹配的目标第一报文,如果存在,则将目标第一报文发送至第二终端设备,以使第二终端设备根据目标第一报文中的端口与第一终端设备建立通信连接。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,第二网络设备可以判断第一报文中是否存在源端口与各个第二报文中的目的端口匹配的目标第一报文,如果存在,则将目标第一报文发送至第二终端设备,以使第二终端设备以目标第一报文中的源端口作为目的端口与第一终端设备建立通信连接。在判断第一报文中是否存在源端口与各个第二报文中的目的端口匹配的目标第一报文时,具体可以判断第一报文中是否存在源端口与替换后的各个第二报文中的目的端口匹配的目标第一报文,如果是,则确定第一报文中存在源端口与各个第二报文中的目的端口匹配的目标第一报文。在第二网络设备将目标第一报文发送至第二终端设备时,可以将目标第一报文中的目的IP地址和目的端口分别替换为内网地址和内网端口,将替换后的目标第一报文发送至第二终端设备,以使第二终端设备以替换后的目标第一报文中的源端口作为第一终端设备的目的端口与第一终端设备建立通信连接。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,第二网络设备可以判断第一报文中是否存在目的端口与各个第二报文中的源端口匹配的目标第一报文,如果存在,则将目标第一报文发送至第二终端设备,以使第二终端设备以目标第一报文中的目的端口作为源端口与第一终端设备建立通信连接。在判断第一报文中是否存在目的端口与各个第二报文中的源端口匹配的目标第一报文时,可以判断第一报文中是否存在目的端口与替换后的各个第二报文中的源端口匹配的目标第一报文,如果是,则确定第一报文中存在目的端口与各个第二报文中的源端口匹配的目标第一报文。在第二网络设备将目标第一报文发送至第二终端设备时,可以将目标第一报文中的目的IP地址和目的端口分别替换为内网地址和内网端口,将替换后的目标第一报文发送至第二终端设备,以使第二终端设备以替换后的目标第一报文中的目的端口作为源端口与第一终端设备建立通信连接。
当第一报文的数量为第一数量时,第二报文的数量为第二数量时,各个第一报文与各个第二报文中至少存在一对儿报文的端口是相互匹配的,这种情况出现的概率为预设概率。也就是说,各个第一报文中至少存在一个报文1,各个第二报文中也至少存在一个报文2,报文1的目的端口和源端口分别为报文2的源端口和目的端口,这种情况出现的概率为预设概率。当预设概率取值较大时,例如取95%以上时,基本能保证第一终端设备与第二终端设备之间成功建立通信连接。
当第一数量和第二数量均远小于总端口数量时,无需第一终端设备和第二终端设备猜测所有可能的端口,因此能够保证本实施例的方案在实际中是可以实施的,而且效率较高。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,可以设置第一数量小于第二数量。这样,当第一数量较少时,第一终端设备创建的套接字(socket)也较少,从而可以降低设备创建套接字时的开销。
步骤S103:接收第二网络设备发送的各个第二报文。
在本步骤中,第二报文可以为按照时间顺序陆续接收到的报文。本步骤具体可以为,接收第二网络设备发送的替换后的各个第二报文。替换后的各个第二报文的源IP地址和源端口均为第二终端设备的外网地址和外网端口。第二终端设备的外网地址为,第二网络设备的IP地址;第二终端设备的外网端口为,第二终端设备在第二网络设备中的映射端口。
步骤S104:判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文,如果是,则执行步骤S105;如果否,则可以不予以处理。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,本步骤可以为:判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则认为匹配成功,确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。如果不存在,则认为匹配失败。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,本步骤可以为:判断各个第二报文中是否存在源端口与各个第一报文中的目的端口相同的目标第二报文,如果存在,则认为匹配成功,确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。如果不存在,则认为匹配失败。
当步骤S102包括将替换后的各个第一报文发送至第二网络设备时,本步骤可以为,判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文。
步骤S105:将目标第二报文发送至第一终端设备,以使第一终端设备根据目标第二报文中的端口与第二终端设备建立通信连接。
在本步骤中,当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,将目标第二报文发送至第一终端设备时,可以将目标第二报文中的目的IP地址和目的端口分别替换为第一终端设备的内网地址和内网端口,将替换后的目标第二报文发送至第一终端设备,以使第一终端设备将目标第二报文中的目的端口作为源端口与第二终端设备建立通信连接。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,将目标第二报文发送至第一终端设备时,可以将目标第二报文中的目的IP地址和目的端口分别替换为第一终端设备的内网地址和内网端口,将替换后的目标第二报文发送至第一终端设备,以使第一终端设备将目标第二报文中的源端口作为第二终端设备的目的端口与第二终端设备建立通信连接。
下面再结合图2b所示的报文流向示意图对本申请进行详细说明。在图2b中,终端设备A和网络设备A为第一类型的设备,终端设备B和网络设备B为第二类型的设备。终端设备A通过网络设备A与外网的终端设备通信,终端设备B通过网络设备B与外网的终端设备通信。
终端设备A向网络设备A发送125个报文1。各个报文1的目的IP地址均为网络设备B的IP地址112.2.2.2,目的端口均为终端设备B在网络设备B中的映射端口2001,源IP地址均为终端设备A的内网地址192.168.1.1,源端口分别为终端设备A生成的内网端口10,11,12,13,…,134共125个。该125个源端口可以为规则的,也可以为不规则的。
网络设备A接收到终端设备A发送的各个报文1时,将报文1中的内网地址和内网端口分别替换为外网地址和外网端口,得到各个报文2。各个报文2中的目的IP地址均为112.2.2.2,目的端口均为2001。各个报文2中的源IP地址被替换为网络设备A的IP地址112.2.2.3。各个报文2中的源端口分别为1001,50394,4578,20011,…,7112共125个映射端口,这些映射端口为网络设备A随机生成的不规则的端口。网络设备A可以存储报文1的源端口和报文2的源端口(即映射端口)之间的第一对应关系,包括:10—1001,11—50394,12—4578,13—20011,…,134—7112。a—b表示内网端口—外网端口。
网络设备A将各个报文2发送至网络设备B。
在终端设备A向网络设备A发送各个报文1时,终端设备B也向网络设备B发送1600个报文3。各个报文3的目的IP地址均为网络设备A的IP地址112.2.2.3,源IP地址均为终端设备B的内网地址192.168.1.2,源端口均为终端设备B的内网端口21,目的端口分别为终端设备B随机生成的不规则端口1002,100,2457,245,…,1001。
网络设备B接收到终端设备A发送的各个报文3时,将各个报文3中的源端口21替换为映射端口(外网端口)2001,将各个报文3中的源IP地址192.168.1.2替换为网络设备B的IP地址(外网地址)112.2.2.2,得到各个报文4。也就是说,报文4的目的IP地址为112.2.2.3,目的端口分别为1002,100,2457,245,…,1001。网络设备B可以存储报文3的源端口21和报文4的源端口2001(即映射端口)之间的第二对应关系21—2001。
网络设备B将各个报文4发送至网络设备A。
网络设备A将接收到的各个报文4分别与各个报文2进行匹配,匹配得到目标报文4的目的端口与一个报文2的源端口相同。网络设备A将目标报文4的目的端口作为外网端口转换成第一对应关系中对应的内网端口,并将转换后的目标报文4发送至终端设备A。终端设备A接收到网络设备A发送的转换后的目标报文4时根据该报文中的目的端口与终端设备B建立通信连接。
网络设备B将接收到的各个报文2分别与各个报文4进行匹配,匹配得到目标报文2的源端口与一个报文4的目的端口相同。网络设备B将目标报文2的目的端口2001转换成第二对应关系中对应的端口21,并将转换后的目标报文2发送至终端设备B。终端设备B接收到网络设备B发送的转换后的目标报文2时根据该目标报文2中的源端口与终端设备A建立通信连接。
在上述例子中,报文1为第一报文,报文2为替换后的第一报文,报文3为第二报文,报文4为替换后的第二报文。
第一终端设备与第二终端设备之间成功建立通信连接,也可以称为实现P2P穿透。
由上述内容可知,本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
在家用路由器中,Port-restricted cone NAT类型的路由器占比在45%左右。而在移动4G网络中,移动运营商和联通运营商的移动网络多为端口不规则的Symmetric NAT。在通信双方一方采用移动网络,另一方采用家用路由器连接网络时,可以增大P2P穿透的成功率。
在本申请的另一实施例中,图1所示实施例中,第一数量为不小于以下公式中n的数量,第二数量为不小于以下公式中m的数量:
其中,p为预设概率,T为总端口数量。表示从T中选出n个数的组合数量,表示以及从T中选出m个数时的组合数量,表示从T中选出n个数并且从T中选出m个数时的总组合数量。表示从T中选出n个数并且从剩余的T-n中选出m个数时的组合数量,该组合数量为各个组合中的数完全不同时的组合数量。表示从T中选出n个数得到的组合与从T中选出m个数得到的组合中,各个组合中的数互不相同时的概率。表示从T中选出n个数得到的组合与从T中选出m个数得到的组合中,至少有一组数相同的概率。各个组合中一个数代表一个端口。公式(1)展开后得到
p=(T-n)!*(T-m)!/[T!*(T-n-m)!]
当T取为65536时,p=(65536-n)!*(65536-m)!/[65536!*(65536-n-m)!]。
公式(1)也可以表示为该公式与上述公式(1)是等价的。
表1为根据上述公式(1)得到的n和m取不同值对应的p值,其中,总端口数量T为65536。
n(或m) m(或n) p
125 1000 85.4%
125 1600 95.5%
125 2000 98%
125 3000 99.7%
从表1中可以看出,当n和m分别取125和1600时,端口猜对的概率可以达到95%以上。在上表中,以第二行数据为例,n和m分别取125和1600包括两种方式,n取125,m取1600,或者n取1600,m取125。当预设概率为95%时,第一数量不小于n,第二数量不小于m可以理解为,第一数量可以取大于等于125的数量,第二数量可以取大于等于1600的数量;或者,第一数量取大于等于1600的数量,第二数量取大于等于125的数量。
第一数量和第二数量的取值还可以根据第一终端设备和第二终端设备的NAT类型进行选择。当第一终端设备为第一类型的NAT时,第二终端设备为第二类型的NAT,每个第一报文对应一个套接字,因此第一终端设备会创建第一数量个套接字;所有第二报文对应同一个套接字,因此第二终端设备会创建一个套接字。由于创建套接字需要消耗资源,因此在这种情况下,第一数量可以较少,第二数量可以较多,从而减少创建套接字时的开销,节省资源。例如,总端口数量与第一数量的差值大于百倍以上的第一数量,总端口数量与第二数量的差值大于十倍以上的第二数量。
例如,当总端口数量为65536时,如果预设概率设置为95.5%,则第一数量可以为125,第二数量可以为1600;如果预设概率设置为98%,则第一数量可以为125,第二数量可以为2000;如果预设概率设置为99.7%,则第一数量可以为125,第二数量可以为3000。
表1中的n和m均为远小于总端口数量的数量。这与大多数人的直觉是相抵触的。一般人认为从包含很大数量的样本空间中选择远少于该样本空间的总数量个数时,所选择的数中存在两个相同数的概率非常低。但事实并非如此。例如上表所示,从65536个数中分别选择125个数和1600个数时,125个数中和1600个数中存在至少一组相同数的概率为95.5%。当选择的数量越多时,相同的概率越大。例如,见表1,当第一数量取125,第二数量取大于1600的数值时,该概率更大了;当第二数量取1600,第一数量取大于125的数值时,该概率更大了。
综上,在本实施例中,第一数量和第二数量根据上述公式(1)中的n和m取值时,可以保证端口猜对的概率达到预设概率。同时,本实施例也能够实现使第一数量和第二数量尽可能地小,减少终端设备发送报文的数量,提高处理效率。
在本申请的另一实施例中,图1所示实施例中,第一网络设备和第二网络设备可以分别与服务器相连。参见图2a中所示的网络连接关系。在将各个第一报文发送至第二网络设备时,该方法还包括:
接收第一终端设备发送至服务器的通知报文,将该通知报文发送至服务器,以使服务器将通知报文通过第二网络设备发送至第二终端设备。
其中,通知报文用于通知第二终端设备向第一终端设备发送报文。该通知报文中可以携带第二终端设备的标识。上述服务器可以为具有固定的IP地址的设备。第一终端设备可以预先存储服务器的地址,以服务器的地址作为通知报文的目的地址。
第一终端设备和第二终端设备可以预先与服务器建立通信连接,服务器可以基于建立的通信连接获得第一终端设备的标识和第二终端设备的标识,以及第一终端设备的地址和端口,第二终端设备的地址和端口。
上述服务器可以在接收到第一终端设备发送的通知报文时,根据通知报文中携带的第二终端设备的标识。将该通知报文通过第二网络设备发送至第二终端设备。
综上,在本实施例中,第一终端设备可以通过发送通知报文的形式通知第二终端设备向第一终端设备发送报文,以使第二终端设备与第一终端设备基本上在同一时段开始向对端发送报文。
在本申请的另一实施例中,图1所示实施例中,第一报文中的目的IP地址为第二网络设备的IP地址,也就是第二终端设备的外网地址。该外网地址可以存储在服务器中。服务器与第一终端设备和第二终端设备之间的连接关系,可以参见图2a所示的网络连接关系。在本实施例中,服务器可以用于存储第二网络设备的IP地址。第一网络设备在接收第一终端设备发送的各个第一报文之前,该方法还可以包括以下步骤1a和步骤2a:
步骤1a:接收第一终端设备向服务器发送的第一信息获取请求,将第一信息获取请求发送至服务器。其中,第一信息获取请求用于获取第二网络设备的IP地址。
服务器在接收到第一信息获取请求时从自身存储的信息中获取第二网络设备的IP地址,并将第二网络设备的IP地址通过第一网络设备发送至第一终端设备。其中,服务器中存储的第二网络设备的IP地址可以是服务器与第二终端设备建立通信连接时从报文中获取的。
步骤2a:接收服务器针对第一信息获取请求发送的第二网络设备的IP地址,并将第二网络设备的IP地址发送至第一终端设备。
对应的,服务器也可以用于存储第一网络设备的IP地址,第二终端设备可以通过第二网络设备向服务器发送用于获取第一网络设备的IP地址的信息获取请求,服务器在接收到该信息获取请求之后获取第一网络设备的IP地址,并将第一网络设备的IP地址通过第二网络设备发送至第二终端设备。
在本申请的另一实施例中,第一报文中的目的端口为第二终端设备在第二网络设备中的映射端口。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,服务器还可以用于存储第二终端设备在第二网络设备中的映射端口。第一网络设备在接收第一终端设备发送的各个第一报文之前,还可以包括以下步骤1b~步骤2b:
步骤1b:接收第一终端设备向服务器发送的第二信息获取请求,将第二信息获取请求发送至服务器。其中,第二信息获取请求用于获取第二终端设备在第二网络设备中的映射端口。
在本实施例中,服务器接收到第二信息获取请求时可以从自身存储的信息中获取第二终端设备在第二网络设备中的映射端口。其中,服务器中存储的第二终端设备在第二网络设备中的映射端口可以是服务器与第二终端设备建立通信连接时从报文中获取的。
步骤2b:接收服务器针对第二信息获取请求发送的第二终端设备在第二网络设备中的映射端口,并将第二终端设备在第二网络设备中的映射端口发送至第一终端设备。
在另一实施方式中,第二信息获取请求与第一信息获取请求可以以同一信息获取请求实现,也可以以不同信息获取请求实现。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,第一报文中的目的端口可以为第一终端设备生成的端口。
综上,在本实施例中,第一终端设备可以通过第一网络设备向服务器发送信息获取请求,以获取第二终端设备的外网地址(第二网络设备的IP地址),或者获取第二终端设备的外网端口(第二终端设备在第二网络设备中的映射端口)。
图3为本申请实施例提供的设备之间一种交互示意图。该图3中包括第一终端设备、服务器和第二终端设备。在该实施例中,第一网络设备为第一类型的网络设备,第二网络设备NAT-B为第二类型的网络设备。第一终端设备以设备A表示,第二终端设备以设备B表示,第一网络设备以网络设备NAT-A表示,第二网络设备以网络设备NAT-B表示。
设备A和设备B分别在处于公网中的同一服务器上注册,即与该服务器建立用户数据报协议(User Datagram Protocol,UDP)通信,使服务器获取并存储:设备A的外网地址NAT-A-IP,设备B的外网地址NAT-B-IP,设备B与服务器通信时在网络设备NAT-B上的映射端口NAT-B-Port。NAT-A-IP也为网络设备NAT-A的IP地址,NAT-B-IP也为网络设备NAT-B的IP地址。
设备A与服务器进行通信,从服务器中获取设备B的外网地址NAT-B-IP和映射端口NAT-B-Port。设备B与服务器进行通信,从服务器中获取设备A的外网地址NAT-A-IP。
设备A创建125个套接字(socket),分别向设备B发送UDP报文,每个socket对应的报文中的目的IP地址均为NAT-B-IP,目的端口均为NAT-B-Port。每个socket对应的报文中的源端口均是随机生成的、互不相同的端口,这些随机生成的端口为1~65536之间的整数。设备A创建的socket为不同于设备A与服务器通信时的socket。设备A将待发送至设备B的报文发送至网络设备NAT-A时,网络设备NAT-A会将报文的源端口替换为对应的映射端口。
当设备A开始向设备B发送报文时,向服务器发送通知报文,使服务器通知设备B开始猜测设备A生成的源端口,也就是通知设备B开始向设备A发送报文。
设备B从1~65536之间的整数中随机生成1600个互不相同的数,作为向设备A发送的报文的目的端口。这些报文的目的IP地址均为NAT-A-IP,源端口均为同一个端口。这些报文发送至网络设备NAT-B时,网络设备NAT-B将报文的源端口替换成NAT-B-Port。设备B发送的1600个报文均是通过一个socket发送的。设备B与服务器通信时,也采用该socket进行通信。
当设备B猜测的目的端口与设备A在网络设备NAT-A上的映射端口中至少存在一组相同端口时,即实现P2P的成功穿透,设备A可以与设备B建立通信连接。由于数量125和1600符合表1中的n和m的取值,因此认为设备A和设备B之间成功穿透的概率可以达到95%。
图4为本申请实施例提供的另一种通信连接的建立方法的流程示意图。该实施例应用于第一终端设备,第一终端设备与第一网络设备相连。图2a可以作为本实施例的一种应用场景示意图。在图2a中,局域网1中的第一终端设备通过第一网络设备与外网设备通信,局域网2中的第二终端设备通过第二网络设备与外网设备通信,第一网络设备和第二网络设备均可以与服务器相连。在本实施例中,局域网1可以应用第一类型协议,局域网2可以应用第二类型协议;也可以是,局域网2可以应用第一类型协议,局域网1可以应用第二类型协议,本申请实施例对此不做具体限定。
本实施例中,该方法具体包括以下步骤S401~步骤S403:
步骤S401:向第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使第一网络设备将各个第一报文发送至第二网络设备,以使第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将目标第一报文发送至第二终端设备,以使第二终端设备根据目标第一报文中的端口与第一终端设备建立通信连接。
其中,各个第二报文为第二终端设备通过第二网络设备发送至第一终端设备的第二数量个报文。第一数量和第二数量均远小于总端口数量,第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值。预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率。
上述总端口数量对应最大端口,在数值上,总端口数量等于最大端口。第一数量远小于总端口数量,可以理解为,总端口数量与第一数量的差值大于十倍以上的第一数量,或者总端口数量大于十倍以上的第一数量。第二数量远小于总端口数量的含义同上述释义。
本实施例中,第一终端设备可以在接收到预设指令时向第二终端设备发送第一报文,也可以在预设时刻到达时向第二终端设备发送第一报文。预设指令可以为通知类的报文。
当第一网络设备为第一类型的网络设备,第二网络设备为第二类型的网络设备时,各个第一报文中的源端口均不同,各个第一报文中的目的端口均相同,各个第一报文中的源端口为第一终端设备生成的端口,各个第一报文中的目的端口为预先获得的端口。在本实施方式,第一终端设备用于生成内网端口,第二终端设备用于猜测第一终端设备生成的内网端口对应的外网端口。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,各个第一报文中的源端口均相同,各个第一报文中的目的端口均不同,各个第一报文中的目的端口为第一终端设备生成的端口。在本实施方式,第一终端设备用于猜测第二终端设备生成的内网端口对应的外网端口,第二终端设备用于生成内网端口。
本实施例中,第一报文可以为携带数据的数据报文,也可以为不携带数据的协议报文,本申请实施例对此不做具体限定。
在本实施例中,在发送第一数量个第一报文时,第一终端设备可以按照时间顺序陆续将各个第一报文发送至第一网络设备。
在本实施例中,在将各个第一报文发送至第一网络设备时,第二终端设备也向第二网络设备发送待发送至第一终端设备的各个第二报文。
具体的,第一终端设备和第二终端设备可以在预设时刻到达时开始向对端发送报文,也可以是,第一终端设备或第二终端设备在需要与对端建立通信连接时,通过其他的第三方设备通知对端向自身发送报文。第一终端设备和第二终端设备可以同时开始向对端发送报文,也可以前后相差较短时间地开始向对端发送报文。第一终端设备可以先向第二终端设备发送报文,也可以是第二终端设备先向第一终端设备发送报文,本申请实施例对此不做具体限定。
当第一报文的数量为第一数量时,第二报文的数量为第二数量时,各个第一报文与各个第二报文中至少存在一对儿报文的端口是相互匹配的,这种情况出现的概率为预设概率。也就是说,各个第一报文中至少存在一个报文1,各个第二报文中也至少存在一个报文2,报文1的目的端口和源端口分别为报文2的源端口和目的端口,这种情况出现的概率为预设概率。当预设概率取值较大时,例如取95%以上时,基本能保证第一终端设备与第二终端设备之间成功建立通信连接。
当第一数量和第二数量均远小于总端口数量时,无需第一终端设备和第二终端设备猜测所有可能的端口,因此能够保证本实施例的方案在实际中是可以实施的,而且效率较高。
当第一终端设备为第一类型的终端设备,第二终端设备为第二类型的终端设备时,可以设置第一数量小于第二数量,例如,总端口数量与第一数量的差值大于百倍以上的第一数量,总端口数量与第二数量的差值大于十倍以上的第二数量。这样,当第一数量较少时,第一终端设备创建的套接字(socket)也较少,从而可以降低设备创建套接字时的开销。
步骤S402:接收第一网络设备发送的目标第二报文。
其中,目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文。
在本实施例中,接收第一网络设备发送的目标第二报文时,可以为,接收第一网络设备发送的替换后的目标第二报文,替换后的目标第二报文为第二网络设备将目标第二报文中的目的IP地址和目的端口分别替换为第一终端设备的内网地址和内网端口后得到的报文。
步骤S403:根据目标第二报文中的端口,与第二终端设备建立通信连接。
当第一终端设备为第一类型的终端设备,第二终端设备为第二类型的终端设备时,本步骤可以为,以目标第二报文中的目的端口作为源端口,与第二终端设备建立通信连接。也就是说,在后续与第二终端设备发送报文时,报文中的源端口为上述目标第二报文中的目的端口。
当第一终端设备为第二类型的终端设备,第二终端设备为第一类型的终端设备时,本步骤可以为,将目标第二报文中的源端口作为第二终端设备的目的端口,与第二终端设备建立通信连接。也就是说,在后续与第二终端设备发送报文时,报文中的目的端口为上述目标第二报文中的源端口。
当目标第二报文为替换后的目标第二报文时,本步骤可以为,根据替换后的目标第二报文中的端口,与第二终端设备建立通信连接。
当第一终端设备为第一类型的终端设备,第二终端设备为第二类型的终端设备时,本步骤可以为,以替换后的目标第二报文中的目的端口作为源端口,与第二终端设备建立通信连接。
当第一终端设备为第二类型的终端设备,第二终端设备为第一类型的终端设备时,本步骤可以为,将替换后的目标第二报文中的源端口作为第二终端设备的目的端口,与第二终端设备建立通信连接。
由上述内容可知,本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
在本申请的另一实施例中,图4所示实施例中,第一数量为不小于以下公式中n的数量,第二数量为不小于以下公式中m的数量:
其中,p为预设概率,T为总端口数量。公式(2)展开后得到
p=(T-n)!*(T-m)!/[T!*(T-n-m)!]
当T取为65536时,p=(65536-n)!*(65536-m)!/[65536!*(65536-n-m)!]。
公式(2)也可以表示为该公式与上述公式(2)是等价的。
综上,在本实施例中,第一数量和第二数量根据上述公式(2)中的n和m取值时,可以保证端口猜对的概率达到预设概率。同时,本实施例也能够实现使第一数量和第二数量尽可能地小,减少终端设备发送报文的数量,提高处理效率。
在本申请的另一实施例中,图4所示实施例中,第一网络设备和第二网络设备分别与服务器相连;在向第一网络设备发送各个第一报文时,该方法还可以包括:
向第一网络设备发送待发送至服务器的通知报文,以使第一网络设备将通知报文发送至服务器。
其中,通知报文用于通知第二终端设备向第一终端设备发送报文。该通知报文中可以携带第二终端设备的标识。上述服务器可以为具有固定的IP地址的设备。第一终端设备可以预先存储服务器的地址,以服务器的地址作为通知报文的目的地址。
第一终端设备和第二终端设备可以预先与服务器建立通信连接,服务器可以基于建立的通信连接获得第一终端设备的标识和第二终端设备的标识,以及第一终端设备的地址和端口,第二终端设备的地址和端口。
综上,在本实施例中,第一终端设备可以通过发送通知报文的形式通知第二终端设备向第一终端设备发送报文,以使第二终端设备与第一终端设备基本上在同一时段开始向对端发送报文。
在本申请的另一实施例中,图4所示实施例中,第一报文中的目的IP地址为第二网络设备的IP地址。服务器可以用于存储第二网络设备的IP地址。
在本实施例中,在向第一网络设备发送各个第一报文之前,该方法还可以以下步骤1c和步骤2c:
步骤1c:向第一网络设备发送待发送至服务器的第一信息获取请求,以使第一网络设备将第一信息获取请求发送至服务器。其中,第一信息获取请求用于获取第二网络设备的IP地址。
步骤2c:接收第一网络设备发送的第二网络设备的IP地址。其中,第二网络设备的IP地址为服务器发送至第一网络设备的信息。
在本申请的另一实施例中,第一报文中的目的端口为第二终端设备在第二网络设备中的映射端口。
当第一终端设备为第一类型的终端设备,第二终端设备为第二类型的终端设备时,服务器还可以用于存储第二终端设备在第二网络设备中的映射端口。第一终端设备在向第一网络设备发送各个第一报文之前,该方法还包括以下步骤1d和步骤2d:
步骤1d:向第一网络设备发送待发送至服务器的第二信息获取请求,以使第一网络设备将第二信息获取请求发送至服务器。其中,第二信息获取请求,用于获取第二终端设备在第二网络设备中的映射端口。
步骤2d:接收第一网络设备发送的第二终端设备在第二网络设备中的映射端口。其中,第二终端设备在第二网络设备中的映射端口为服务器发送至第一网络设备的信息。
在另一实施方式中,第二信息获取请求与第一信息获取请求可以以同一信息获取请求实现,也可以以不同信息获取请求实现。
当第一网络设备为第二类型的网络设备,第二网络设备为第一类型的网络设备时,第一报文中的目的端口可以为第一终端设备生成的端口。
综上,在本实施例中,第一终端设备可以通过第一网络设备向服务器发送信息获取请求,以获取第二终端设备的外网地址(第二网络设备的IP地址),或者获取第二终端设备的外网端口(第二终端设备在第二网络设备中的映射端口)。
图5为本申请实施例提供的一种设备通信的连接装置的结构示意图。本实施例应用于第一网络设备,本实施例与图1所示方法实施例相对应。该装置包括:
第一接收模块501,用于接收第一终端设备发送至第二终端设备的第一数量个第一报文,第一数量为预设的远小于总端口数量的数量;
第一发送模块502,用于将各个第一报文发送至第二网络设备,以使第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将目标第一报文发送至第二终端设备,以使第二终端设备根据目标第一报文中的端口与第一终端设备建立通信连接;其中,各个第二报文为第二终端设备通过第二网络设备发送至第一终端设备的第二数量个报文;第二数量远小于总端口数量,第一数量和第二数量均为根据预设概率和总端口数量预先确定的数值,预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
第一接收模块501,用于接收第二网络设备发送的各个第二报文;
判断模块503,用于判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
第一发送模块502,用于当各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文时,将目标第二报文发送至第一终端设备,以使第一终端设备根据目标第二报文中的端口与第二终端设备建立通信连接。
在本申请的另一实施例中,在图5所示实施例中,第一数量为不小于以下公式中n的数量,第二数量为不小于以下公式中m的数量:
其中,p为预设概率,T为总端口数量。
在本申请的另一实施例中,在图5所示实施例中,第一网络设备和第二网络设备分别与服务器相连;
第一接收模块501,还用于在将各个第一报文发送至第二网络设备时,接收第一终端设备发送至服务器的通知报文;其中,所述通知报文用于通知第二终端设备向第一终端设备发送报文;
第一发送模块502,还用于将所述通知报文发送至服务器,以使服务器将所述通知报文通过第二网络设备发送至第二终端设备。
在本申请的另一实施例中,在图5所示实施例中,第一报文中的目的互联网协议IP地址为第二网络设备的IP地址;服务器,用于存储第二网络设备的IP地址;
第一接收模块501,还用于在接收第一终端设备发送的各个第一报文之前,接收第一终端设备向服务器发送的第一信息获取请求;
第一发送模块502,还用于将第一信息获取请求发送至服务器,第一信息获取请求用于获取第二网络设备的IP地址;
第一接收模块501,还用于接收服务器针对第一信息获取请求发送的第二网络设备的IP地址;
第一发送模块502,还用于将第二网络设备的IP地址发送至第一终端设备。
在本申请的另一实施例中,在图5所示实施例中,第一报文中的目的端口为第二终端设备在第二网络设备中的映射端口;
当第一网络设备为端口不规则的对称性网络地址转换NAT类型的网络设备,第二网络设备为端口受限制锥形NAT类型的网络设备时,服务器还用于存储第二终端设备在第二网络设备中的映射端口;
第一接收模块501,还用于在接收第一终端设备发送的各个第一报文之前,接收第一终端设备向服务器发送的第二信息获取请求;
第一发送模块502,还用于将第二信息获取请求发送至服务器,第二信息获取请求用于获取第二终端设备在第二网络设备中的映射端口;
第一接收模块501,还用于接收服务器针对第二信息获取请求发送的第二终端设备在第二网络设备中的映射端口;
第一发送模块502,还用于将第二终端设备在第二网络设备中的映射端口发送至第一终端设备。
在本申请的另一实施例中,在图5所示实施例中,第一发送模块502具体用于:将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至第二网络设备;
判断模块503具体可以用于:判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文。
在本申请的另一实施例中,在图5所示实施例中,当第一网络设备为端口不规则的对称性NAT类型的网络设备,第二网络设备为端口受限制锥形NAT类型的网络设备时,所述装置还包括:
生成模块(图中未示出),用于在将各个第一报文中的源端口替换为对应的映射端口之前,生成与各个第一报文的源端口对应的映射端口;
当第一网络设备为端口受限制锥形NAT类型的网络设备,第二网络设备为端口不规则的对称性NAT类型的网络设备时,第一发送模块502,具体用于:
将各个第一报文中的源端口替换为存储的同一映射端口。
在本申请的另一实施例中,在图5所示实施例中,当第一网络设备为端口不规则的对称性NAT类型的网络设备,第二网络设备为端口受限制锥形NAT类型的网络设备时,判断模块503具体用于:
判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
当第一网络设备为端口受限制锥形NAT类型的网络设备,第二网络设备为端口不规则的对称性NAT类型的网络设备时,判断模块503具体用于:
判断各个第二报文中是否存在源端口与各个第一报文中的目的端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。
由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
图6为本申请实施例提供的另一种通信连接的建立装置。本实施例应用于第一终端设备,第一终端设备与第一网络设备相连。本实施例与图4所示方法实施例相对应。所述装置包括:
第二发送模块601,用于向第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使第一网络设备将各个第一报文发送至第二网络设备,以使第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将目标第一报文发送至第二终端设备,以使第二终端设备根据目标第一报文中的端口与第一终端设备建立通信连接;其中,各个第二报文为第二终端设备通过第二网络设备发送至第一终端设备的第二数量个报文;第一数量和第二数量均远小于总端口数量,第一数量和第二数量均为根据预设概率和总端口数量预先确定的数值,预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
第二接收模块602,用于接收第一网络设备发送的目标第二报文;其中,目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
建立模块603,用于根据目标第二报文中的端口,与第二终端设备建立通信连接。
在本申请的另一实施例中,在图6所示实施例中,第一数量为不小于以下公式中n的数量,第二数量为不小于以下公式中m的数量:
其中,p为预设概率,T为总端口数量。
在本申请的另一实施例中,在图6所示实施例中,第一网络设备和第二网络设备分别与服务器相连;
第二发送模块601,还用于在向第一网络设备发送各个第一报文时,向第一网络设备发送待发送至服务器的通知报文,以使第一网络设备将所述通知报文发送至服务器;其中,通知报文用于通知第二终端设备向第一终端设备发送报文。
在本申请的另一实施例中,在图6所示实施例中,第一报文中的目的IP地址为第二网络设备的IP地址;服务器,用于存储第二网络设备的IP地址;该装置还包括:
第二发送模块601,还用于在向第一网络设备发送各个第一报文之前,向第一网络设备发送待发送至服务器的第一信息获取请求,以使第一网络设备将第一信息获取请求发送至服务器;其中,第一信息获取请求,用于获取第二网络设备的IP地址;
第二接收模块602,还用于接收第一网络设备发送的第二网络设备的IP地址;其中,第二网络设备的IP地址为服务器发送至第一网络设备的信息。
在本申请的另一实施例中,在图6所示实施例中,第一报文中的目的端口为第二终端设备在第二网络设备中的映射端口;
当第一终端设备为端口不规则的对称性NAT类型的终端设备,第二终端设备为端口受限制锥形NAT类型的终端设备时,服务器,还用于存储第二终端设备在第二网络设备中的映射端口;
第二发送模块601,还用于在向第一网络设备发送各个第一报文之前,向第一网络设备发送待发送至服务器的第二信息获取请求,以使第一网络设备将第二信息获取请求发送至服务器;其中,第二信息获取请求,用于获取第二终端设备在第二网络设备中的映射端口;
第二接收模块602,还用于接收第一网络设备发送的第二终端设备在第二网络设备中的映射端口;其中,第二终端设备在第二网络设备中的映射端口为服务器发送至第一网络设备的信息。
在本申请的另一实施例中,在图6所示实施例中,当第一终端设备为端口不规则的对称性NAT类型的终端设备,第二终端设备为端口受限制锥形NAT类型的终端设备时,建立模块603具体用于:
以目标第二报文中的目的端口作为源端口,与第二终端设备建立通信连接;
当第一终端设备为端口受限制锥形NAT类型的终端设备,第二终端设备为端口不规则的对称性NAT类型的终端设备时,建立模块603具体用于:
将目标第二报文中的源端口作为第二终端设备的目的端口,与第二终端设备建立通信连接。
由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
图7为本申请实施例提供的通信连接的建立系统的一种结构示意图。该系统实施例与图1和图4所示方法实施例相对应,具体说明可以参见图1和图4所示实施例。该系统包括:第一终端设备701、第一网络设备702、第二网络设备703和第二终端设备704;第一终端设备701与第一网络设备702相连,第二终端设备704与第二网络设备703相连,第一网络设备702与第二网络设备703相连。
第一终端设备701,用于向第一网络设备702发送待发送至第二终端设备的第一数量个第一报文,第一数量为预设的远小于总端口数量的数量;
第一网络设备702,用于接收第一终端设备701发送的第一数量个第一报文,将各个第一报文发送至第二网络设备703;
第二终端设备704,用于向第二网络设备703发送待发送至第一终端设备701的第二数量个第二报文;其中,第二数量远小于总端口数量,第一数量和第二数量均为根据预设概率和总端口数量预先确定的数值,预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
第二网络设备703,用于接收第二终端设备704发送的第二数量个第二报文,将各个第二报文发送至第一网络设备702;接收第一网络设备702发送的各个第一报文,判断各个第一报文中是否存在端口与各个第二报文中的端口匹配的目标第一报文,如果存在,则将目标第一报文发送至第二终端设备704;
第一网络设备702,用于接收第二网络设备703发送的各个第二报文,判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文,如果存在,则将目标第二报文发送至第一终端设备701;
第一终端设备701,用于接收第一网络设备702发送的目标第二报文,根据目标第二报文中的端口,与第二终端设备704建立通信连接;
第二终端设备704,用于接收第二网络设备703发送的目标第一报文,根据目标第一报文中的端口,与第一终端设备701建立通信连接。
在本申请的另一实施例中,在图7所示实施例中,第一数量为不小于以下公式中n的数量,第二数量为不小于以下公式中m的数量:
其中,p为预设概率,T为总端口数量。
图8为本申请实施例提供的通信连接的建立系统的另一结构示意图。该系统实施例为对图7所示实施例加以改进之后得到的实施例。本系统中的第一终端设备801、第一网络设备802、第二网络设备803和第二终端设备804分别与图8所示实施例中的第一终端设备701、第一网络设备702、第二网络设备703和第二终端设备704相同,本实施例不再对其详述。本实施例中,第一网络设备802和第二网络设备803分别与服务器805相连;
第一终端设备801,还用于在向第一网络设备802发送各个第一报文时,向第一网络设备802发送待发送至服务器805的通知报文,其中,通知报文用于通知第二终端设备804向第一终端设备801发送报文;
第一网络设备802,还用于接收第一终端设备801发送的通知报文,将通知报文发送至服务器805;
服务器805,用于接收第一网络设备802发送的通知报文,将通知报文通过第二网络设备803发送至第二终端设备804。
在本申请的另一实施例中,在图7所示实施例中,,第一报文中的目的互联网协议IP地址为第二网络设备803的IP地址;服务器805,用于存储第二网络设备803的IP地址和第一网络设备802的IP地址;
第一终端设备801,还用于在向第一网络设备802发送各个第一报文之前,向第一网络设备802发送待发送至服务器805的第一信息获取请求,接收第一网络设备802发送的第二网络设备803的IP地址;其中,第一信息获取请求,用于获取第二网络设备803的IP地址;
第一网络设备802,还用于接收第一终端设备801发送的第一信息获取请求,将第一信息获取请求发送至服务器805,接收服务器805针对第一信息获取请求发送的第二网络设备803的IP地址,并将第二网络设备803的IP地址发送至第一终端设备801;
第二终端设备804,还用于在向第二网络设备803发送各个第二报文之前,向第二网络设备803发送待发送至服务器805的第三信息获取请求,接收第二网络设备803发送的第一网络设备802的IP地址;其中,第三信息获取请求,用于获取第一网络设备802的IP地址;
第二网络设备803,还用于接收第二终端设备804发送的第三信息获取请求,将第三信息获取请求发送至服务器805,接收服务器805针对第三信息获取请求发送的第一网络设备802的IP地址,并将第一网络设备802的IP地址发送至第二终端设备804;
服务器805,还用于接收第一网络设备802发送的第一信息获取请求,根据第一信息获取请求获取第二网络设备803的IP地址,将第二网络设备803的IP地址发送至第一网络设备802;接收第二网络设备803发送的第三信息获取请求,根据第三信息获取请求获取第一网络设备802的IP地址,将第一网络设备802的IP地址发送至第二网络设备803。
在本申请的另一实施例中,在图8所示实施例中,第一报文中的目的端口为第二终端设备804在第二网络设备803中的映射端口;
当第一网络设备802和第一终端设备801均为端口不规则的对称性网络地址转换NAT类型的设备,第二网络设备803和第二终端设备804均为端口受限制锥形NAT类型的设备时,服务器805,还用于存储第二终端设备804在第二网络设备803中的映射端口;
第一终端设备801,还用于在向第一网络设备802发送各个第一报文之前,向第一网络设备802发送待发送至服务器805的第二信息获取请求;其中,第二信息获取请求,用于获取第二终端设备804在第二网络设备803中的映射端口;
第一网络设备802,还用于接收第一终端设备801发送的第二信息获取请求,将第二信息获取请求发送至服务器805,接收服务器805针对第二信息获取请求发送的第二终端设备804在第二网络设备803中的映射端口,并将第二终端设备804在第二网络设备803中的映射端口发送至第一终端设备801;
服务器805,还用于接收第一网络设备802发送的第二信息获取请求,根据第二信息获取请求获取第二终端设备804在第二网络设备803中的映射端口,将第二终端设备804在第二网络设备803中的映射端口发送至第一网络设备802。
在本申请的另一实施例中,在图8所示实施例中,第一网络设备802,具体用于将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至第二网络设备803;判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文;
第二网络设备803,具体用于将各个第二报文中的源端口替换为对应的映射端口,将替换后的各个第二报文发送至第一网络设备802;判断各个第一报文中是否存在端口与替换后的各个第二报文中的端口匹配的目标第一报文。
在本申请的另一实施例中,在图8所示实施例中,第一网络设备802为端口不规则的对称性NAT类型的网络设备,第二网络设备803为端口受限制锥形NAT类型的网络设备;
第一网络设备802,还用于在将各个第一报文中的源端口替换为对应的映射端口之前,生成与各个第一报文的源端口对应的映射端口;
第二网络设备803,具体用于将各个第二报文中的源端口替换为存储的同一映射端口。
在本申请的另一实施例中,在图8所示实施例中,第一网络设备802和第一终端设备801均为端口不规则的对称性NAT类型的设备,所述第二网络设备803和第二终端设备804均为端口受限制锥形NAT类型的设备;
第一网络设备802,具体用于判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
第一终端设备801,具体用于以目标第二报文中的目的端口作为源端口,与第二终端设备804建立通信连接;
第二网络设备803,具体用于判断各个第一报文中是否存在源端口与各个第二报文中的目的端口匹配的目标第一报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
第二终端设备804,具体用于以目标第一报文中的源端口作为第一终端设备801的目的端口,与第一终端设备801建立通信连接。
综上,本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
图9为本申请实施例提供的第一网络设备的一种结构示意图。该第一网络设备包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901、通信接口902和存储器903通过通信总线904完成相互间的通信;通信接口902用于上述第一网络设备与其他设备之间的通信。
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现本申请实施例提供的通信连接的建立方法。该方法包括:
接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第二网络设备发送的各个第二报文;
判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
如果存在,则将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
上述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
图10为本申请实施例提供的第一终端设备的一种结构示意图。该第一终端设备与第一网络设备相连。该第一终端设备包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001、通信接口1002和存储器1003通过通信总线1004完成相互间的通信;通信接口1002用于第一终端设备与其他设备之间的通信。
存储器1003,用于存放计算机程序;
处理器1001,用于执行存储器1003上所存放的程序时,实现本申请实施例提供的通信连接的建立方法。该方法包括:
向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
本申请实施例还提供一种计算机可读存储介质。该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的通信连接的建立方法。该方法包括:
接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第二网络设备发送的各个第二报文;
判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
如果存在,则将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
本申请实施例还提供一种计算机可读存储介质。该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的通信连接的建立方法。该方法包括:
向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
本实施例中,第一终端设备向第二终端设备发送的第一报文为第一数量个,第二终端设备向第一终端设备发送的第二报文为第二数量个。也就是说,一个终端设备生成一定数量个端口,另一个终端设备猜测一定数量个端口。由于第一数量和第二数量均为根据预设概率和总端口数量确定的数值,因此第一数量个端口与第二数量个端口中存在至少一对儿相匹配端口的概率为预设概率,也就能够实现第一类型的终端设备与第二类型的终端设备建立通信连接的概率达到预设概率。并且,第一数量和第二数量均远小于总端口数量,从而无需发送大量报文来猜测端口。因此,应用本实施例提供的方法能够建立端口不规则的Symmetric NAT类型的终端设备与Port-restricted cone NAT类型的终端设备之间的通信连接。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (28)

1.一种通信连接的建立方法,其特征在于,应用于第一网络设备,所述方法包括:
接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第二网络设备发送的各个第二报文;
判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
如果存在,则将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
2.根据权利要求1所述的方法,其特征在于,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
3.根据权利要求1所述的方法,其特征在于,所述第一网络设备和第二网络设备分别与服务器相连;在将各个第一报文发送至第二网络设备时,所述方法还包括:
接收所述第一终端设备发送至所述服务器的通知报文;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文;
将所述通知报文发送至所述服务器,以使所述服务器将所述通知报文通过所述第二网络设备发送至所述第二终端设备。
4.根据权利要求3所述的方法,其特征在于,所述第一报文中的目的互联网协议IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址;
在接收所述第一终端设备发送的各个第一报文之前,所述方法还包括:
接收所述第一终端设备向所述服务器发送的第一信息获取请求,将所述第一信息获取请求发送至所述服务器,所述第一信息获取请求用于获取所述第二网络设备的IP地址;
接收所述服务器针对所述第一信息获取请求发送的所述第二网络设备的IP地址,并将所述第二网络设备的IP地址发送至所述第一终端设备。
5.根据权利要求3所述的方法,其特征在于,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;
当所述第一网络设备为端口不规则的对称性网络地址转换NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;在接收所述第一终端设备发送的各个第一报文之前,所述方法还包括:
接收所述第一终端设备向所述服务器发送的第二信息获取请求,将所述第二信息获取请求发送至所述服务器,所述第二信息获取请求用于获取所述第二终端设备在所述第二网络设备中的映射端口;
接收所述服务器针对所述第二信息获取请求发送的所述第二终端设备在所述第二网络设备中的映射端口,并将所述第二终端设备在所述第二网络设备中的映射端口发送至所述第一终端设备。
6.根据权利要求1所述的方法,其特征在于,所述将各个第一报文发送至第二网络设备的步骤,包括:
将各个第一报文中的源端口替换为对应的映射端口,将替换后的各个第一报文发送至所述第二网络设备;
所述判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文的步骤,包括:
判断各个第二报文中是否存在端口与替换后的各个第一报文中的端口匹配的目标第二报文。
7.根据权利要求6所述的方法,其特征在于,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,在将各个第一报文中的源端口替换为对应的映射端口之前,所述方法还包括:
生成与各个第一报文的源端口对应的映射端口;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述将各个第一报文中的源端口替换为对应的映射端口的步骤,包括:
将各个第一报文中的源端口替换为存储的同一映射端口。
8.根据权利要求1~7任一项所述的方法,其特征在于,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文的步骤,包括:
判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文的步骤,包括:
判断各个第二报文中是否存在源端口与各个第一报文中的目的端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。
9.一种通信连接的建立方法,其特征在于,应用于第一终端设备,所述第一终端设备与第一网络设备相连,所述方法包括:
向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
10.根据权利要求9所述的方法,其特征在于,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
11.根据权利要求9所述的方法,其特征在于,所述第一网络设备和第二网络设备分别与服务器相连;在向所述第一网络设备发送各个第一报文时,所述方法还包括:
向所述第一网络设备发送待发送至所述服务器的通知报文,以使所述第一网络设备将所述通知报文发送至所述服务器;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文。
12.根据权利要求11所述的方法,其特征在于,所述第一报文中的目的IP地址为所述第二网络设备的IP地址;所述服务器,用于存储所述第二网络设备的IP地址;
在向所述第一网络设备发送各个第一报文之前,所述方法还包括:
向所述第一网络设备发送待发送至所述服务器的第一信息获取请求,以使所述第一网络设备将所述第一信息获取请求发送至所述服务器;其中,所述第一信息获取请求,用于获取所述第二网络设备的IP地址;
接收所述第一网络设备发送的所述第二网络设备的IP地址;其中,所述第二网络设备的IP地址为所述服务器发送至所述第一网络设备的信息。
13.根据权利要求11所述的方法,其特征在于,所述第一报文中的目的端口为所述第二终端设备在所述第二网络设备中的映射端口;
当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述服务器,还用于存储所述第二终端设备在所述第二网络设备中的映射端口;
在向所述第一网络设备发送各个第一报文之前,所述方法还包括:
向所述第一网络设备发送待发送至所述服务器的第二信息获取请求,以使所述第一网络设备将所述第二信息获取请求发送至所述服务器;其中,所述第二信息获取请求,用于获取所述第二终端设备在所述第二网络设备中的映射端口;
接收所述第一网络设备发送的所述第二终端设备在所述第二网络设备中的映射端口;其中,所述第二终端设备在所述第二网络设备中的映射端口为所述服务器发送至所述第一网络设备的信息。
14.根据权利要求9~13任一项所述的方法,其特征在于,当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接的步骤,包括:
以所述目标第二报文中的目的端口作为源端口,与所述第二终端设备建立通信连接;
当所述第一终端设备为端口受限制锥形NAT类型的终端设备,所述第二终端设备为端口不规则的对称性NAT类型的终端设备时,所述根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接的步骤,包括:
将所述目标第二报文中的源端口作为所述第二终端设备的目的端口,与所述第二终端设备建立通信连接。
15.一种通信连接的建立装置,其特征在于,应用于第一网络设备,所述装置包括:
第一接收模块,用于接收第一终端设备发送至第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
第一发送模块,用于将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
所述第一接收模块,用于接收所述第二网络设备发送的各个第二报文;
判断模块,用于判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文;
所述第一发送模块,用于当各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文时,将所述目标第二报文发送至所述第一终端设备,以使所述第一终端设备根据所述目标第二报文中的端口与所述第二终端设备建立通信连接。
16.根据权利要求15所述的装置,其特征在于,所述第一网络设备和第二网络设备分别与服务器相连;
所述第一接收模块,还用于在将各个第一报文发送至第二网络设备时,接收所述第一终端设备发送至所述服务器的通知报文;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文;
所述第一发送模块,还用于将所述通知报文发送至所述服务器,以使所述服务器将所述通知报文通过所述第二网络设备发送至所述第二终端设备。
17.根据权利要求15或16所述的装置,其特征在于,当所述第一网络设备为端口不规则的对称性NAT类型的网络设备,所述第二网络设备为端口受限制锥形NAT类型的网络设备时,所述判断模块,具体用于:
判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
当所述第一网络设备为端口受限制锥形NAT类型的网络设备,所述第二网络设备为端口不规则的对称性NAT类型的网络设备时,所述判断模块,具体用于:
判断各个第二报文中是否存在源端口与各个第一报文中的目的端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文。
18.一种通信连接的建立装置,其特征在于,应用于第一终端设备,所述第一终端设备与第一网络设备相连,所述装置包括:
第二发送模块,用于向所述第一网络设备发送待发送至第二终端设备的第一数量个第一报文,以使所述第一网络设备将各个第一报文发送至第二网络设备,以使所述第二网络设备在各个第一报文中存在端口与各个第二报文中的端口匹配的目标第一报文时,将所述目标第一报文发送至所述第二终端设备,以使所述第二终端设备根据所述目标第一报文中的端口与所述第一终端设备建立通信连接;其中,各个第二报文为所述第二终端设备通过所述第二网络设备发送至所述第一终端设备的第二数量个报文;所述第一数量和第二数量均远小于总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
第二接收模块,用于接收所述第一网络设备发送的目标第二报文;其中,所述目标第二报文为各个第二报文中端口与各个第一报文中的端口匹配的报文;
建立模块,用于根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接。
19.根据权利要求18所述的装置,其特征在于,所述第一网络设备和第二网络设备分别与服务器相连;
第二发送模块,还用于在向所述第一网络设备发送各个第一报文时,向所述第一网络设备发送待发送至所述服务器的通知报文,以使所述第一网络设备将所述通知报文发送至所述服务器;其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文。
20.根据权利要求18或19所述的装置,其特征在于,当所述第一终端设备为端口不规则的对称性NAT类型的终端设备,所述第二终端设备为端口受限制锥形NAT类型的终端设备时,所述建立模块,具体用于:
以所述目标第二报文中的目的端口作为源端口,与所述第二终端设备建立通信连接;
当所述第一终端设备为端口受限制锥形NAT类型的终端设备,所述第二终端设备为端口不规则的对称性NAT类型的终端设备时,所述建立模块,具体用于:
将所述目标第二报文中的源端口作为所述第二终端设备的目的端口,与所述第二终端设备建立通信连接。
21.一种通信连接的建立系统,其特征在于,包括:第一终端设备、第一网络设备、第二网络设备和第二终端设备;
所述第一终端设备,用于向所述第一网络设备发送待发送至所述第二终端设备的第一数量个第一报文,所述第一数量为预设的远小于总端口数量的数量;
所述第一网络设备,用于接收所述第一终端设备发送的第一数量个第一报文,将各个第一报文发送至所述第二网络设备;
所述第二终端设备,用于向所述第二网络设备发送待发送至所述第一终端设备的第二数量个第二报文;其中,所述第二数量远小于所述总端口数量,所述第一数量和第二数量均为根据预设概率和所述总端口数量预先确定的数值,所述预设概率为各个第一报文与各个第二报文中至少存在一对儿报文的端口相匹配的概率;
所述第二网络设备,用于接收所述第二终端设备发送的第二数量个第二报文,将各个第二报文发送至所述第一网络设备;接收所述第一网络设备发送的各个第一报文,判断各个第一报文中是否存在端口与各个第二报文中的端口匹配的目标第一报文,如果存在,则将所述目标第一报文发送至所述第二终端设备;
所述第一网络设备,用于接收所述第二网络设备发送的各个第二报文,判断各个第二报文中是否存在端口与各个第一报文中的端口匹配的目标第二报文,如果存在,则将所述目标第二报文发送至所述第一终端设备;
所述第一终端设备,用于接收所述第一网络设备发送的所述目标第二报文,根据所述目标第二报文中的端口,与所述第二终端设备建立通信连接;
所述第二终端设备,用于接收所述第二网络设备发送的所述目标第一报文,根据所述目标第一报文中的端口,与所述第一终端设备建立通信连接。
22.根据权利要求21所述的系统,其特征在于,所述第一数量为不小于以下公式中n的数量,所述第二数量为不小于以下公式中m的数量:
其中,所述p为所述预设概率,所述T为所述总端口数量。
23.根据权利要求21所述的系统,其特征在于,所述系统还包括服务器,所述第一网络设备和第二网络设备分别与所述服务器相连;
所述第一终端设备,还用于在向所述第一网络设备发送各个第一报文时,向所述第一网络设备发送待发送至所述服务器的通知报文,其中,所述通知报文用于通知所述第二终端设备向所述第一终端设备发送报文;
所述第一网络设备,还用于接收所述第一终端设备发送的通知报文,将所述通知报文发送至所述服务器;
所述服务器,用于接收所述第一网络设备发送的通知报文,将所述通知报文通过所述第二网络设备发送至所述第二终端设备。
24.根据权利要求21~23任一项所述的系统,其特征在于,所述第一网络设备和第一终端设备均为端口不规则的对称性NAT类型的设备,所述第二网络设备和第二终端设备均为端口受限制锥形NAT类型的设备;
所述第一网络设备,具体用于判断各个第二报文中是否存在目的端口与各个第一报文中的源端口相同的目标第二报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
所述第一终端设备,具体用于以所述目标第二报文中的目的端口作为源端口,与所述第二终端设备建立通信连接;
所述第二网络设备,具体用于判断各个第一报文中是否存在源端口与各个第二报文中的目的端口匹配的目标第一报文,如果存在,则确定各个第二报文中存在端口与各个第一报文中的端口匹配的目标第二报文;
所述第二终端设备,具体用于以所述目标第一报文中的源端口作为所述第一终端设备的目的端口,与所述第一终端设备建立通信连接。
25.一种第一网络设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一所述的方法步骤。
26.一种第一终端设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求9-14任一所述的方法步骤。
27.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一所述的方法步骤。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求9-14任一所述的方法步骤。
CN201711405844.4A 2017-12-22 2017-12-22 一种通信连接的建立方法、装置及系统 Pending CN109962987A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711405844.4A CN109962987A (zh) 2017-12-22 2017-12-22 一种通信连接的建立方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711405844.4A CN109962987A (zh) 2017-12-22 2017-12-22 一种通信连接的建立方法、装置及系统

Publications (1)

Publication Number Publication Date
CN109962987A true CN109962987A (zh) 2019-07-02

Family

ID=67019354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711405844.4A Pending CN109962987A (zh) 2017-12-22 2017-12-22 一种通信连接的建立方法、装置及系统

Country Status (1)

Country Link
CN (1) CN109962987A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301183A (zh) * 2021-06-15 2021-08-24 杭州华橙软件技术有限公司 网络连通性的探测方法及装置、存储介质、电子装置
CN113542244A (zh) * 2021-07-01 2021-10-22 京东科技控股股份有限公司 微服务调用方法、装置、服务器和系统
WO2022148364A1 (zh) * 2021-01-06 2022-07-14 上海哔哩哔哩科技有限公司 数据发送方法及装置、建立p2p连接的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104243629A (zh) * 2014-09-24 2014-12-24 浙江宇视科技有限公司 一种基于nat类型的设备互通方法和系统
WO2017180254A1 (en) * 2016-04-11 2017-10-19 Western Digital Technologies, Inc. Establishing connections between data storage devices located behind a nat
CN107277185A (zh) * 2016-04-07 2017-10-20 物联智慧科技(深圳)有限公司 网络通讯系统及网络穿透方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104243629A (zh) * 2014-09-24 2014-12-24 浙江宇视科技有限公司 一种基于nat类型的设备互通方法和系统
CN107277185A (zh) * 2016-04-07 2017-10-20 物联智慧科技(深圳)有限公司 网络通讯系统及网络穿透方法
WO2017180254A1 (en) * 2016-04-11 2017-10-19 Western Digital Technologies, Inc. Establishing connections between data storage devices located behind a nat

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邱耀群: "基于STUN协议的NAT穿越技术研究", 《中国优秀硕士学位论文 信息科技辑,2016年》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022148364A1 (zh) * 2021-01-06 2022-07-14 上海哔哩哔哩科技有限公司 数据发送方法及装置、建立p2p连接的方法及系统
CN113301183A (zh) * 2021-06-15 2021-08-24 杭州华橙软件技术有限公司 网络连通性的探测方法及装置、存储介质、电子装置
CN113542244A (zh) * 2021-07-01 2021-10-22 京东科技控股股份有限公司 微服务调用方法、装置、服务器和系统
CN113542244B (zh) * 2021-07-01 2023-08-08 京东科技控股股份有限公司 微服务调用方法、装置、服务器和系统

Similar Documents

Publication Publication Date Title
CN100561976C (zh) 用于使数据包穿越网络地址转换装置的方法和装置
CN103905463B (zh) 一种适用于多路径传输的连接管理与控制方法
CN102209302A (zh) 一种实现移动终端信息推送的系统及方法
CN109962987A (zh) 一种通信连接的建立方法、装置及系统
CN106254410A (zh) 网络系统及建立数据连接的方法
CN102438331B (zh) 一种移动终端通过手机上网的方法及系统
CN104584640A (zh) 具有中继的网络中仅能有3个地址的接入点中的层2地址管理
CN104184749A (zh) 一种sdn网络访问方法及系统
CN109510758B (zh) 会话建立方法、终端及系统
CN102710765A (zh) 一种cdn服务器实现透明代理的方法、装置及系统
CN106878259A (zh) 一种报文转发方法及装置
Coetzee et al. An analysis of CoAP as transport in an Internet of Things environment
CN114900496B (zh) 一种通信方法以及相关设备
CN108809766A (zh) 一种获取rtt的方法、装置及系统
CN104506405B (zh) 跨域访问的方法及装置
CN106131039A (zh) Syn洪泛攻击的处理方法及装置
CN202111746U (zh) 一种实现移动终端信息推送的系统
CA2473124A1 (en) Method and arrangement for multimedia communication
CN101242354B (zh) 一种数据传输的方法、系统及设备
CN106953849A (zh) 一种基于IPv6地址的数据报文匹配方法及装置
CN101674297A (zh) 分布式业务网络、核心服务设备及协议报文处理方法
CN206149319U (zh) 网络视频共享设备
CN103841139A (zh) 传输数据的方法、装置和系统
CN106302846A (zh) 一种通信连接建立方法及装置、系统
CN107277185A (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: 20190702