CN111314481A - 一种数据传输方法、装置、设备以及可读存储介质 - Google Patents

一种数据传输方法、装置、设备以及可读存储介质 Download PDF

Info

Publication number
CN111314481A
CN111314481A CN202010125792.0A CN202010125792A CN111314481A CN 111314481 A CN111314481 A CN 111314481A CN 202010125792 A CN202010125792 A CN 202010125792A CN 111314481 A CN111314481 A CN 111314481A
Authority
CN
China
Prior art keywords
socket
network
terminal
network address
pass
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.)
Granted
Application number
CN202010125792.0A
Other languages
English (en)
Other versions
CN111314481B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010125792.0A priority Critical patent/CN111314481B/zh
Publication of CN111314481A publication Critical patent/CN111314481A/zh
Application granted granted Critical
Publication of CN111314481B publication Critical patent/CN111314481B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

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

Abstract

本申请实施例公开了一种数据传输方法、装置、设备以及可读存储介质,方法包括:第一终端生成数据传输请求;第一终端获取预测套接字数量以及第二终端的第二穿透外网套接字;第一终端通知第一网络地址转换器构建与预测套接字数量对应的第一外网套接字区间,第一终端通过第一外网套接字区间中的每个套接字,向第二穿透外网套接字发送第一穿透数据包;当第一外网套接字区间中存在第一穿透外网套接字时,第一终端通过第一穿透外网套接字与第二穿透外网套接字,与第二终端进行数据传输;第一穿透外网套接字为已发送第一穿透数据包,且已接收到基于第二穿透外网套接字所发送的第二穿透数据包的套接字。采用本申请,可以提高点对点直连链路建立的成功率。

Description

一种数据传输方法、装置、设备以及可读存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据传输方法、装置、设备以及可读存储介质。
背景技术
随着互联网技术的快速发展,利用基于网际互联协议语音或视频(Voice andVideo over Internet Protocol,VVoIP)技术的应用使得人们之间的远程沟通方式愈发的简单、方便、实惠。
直连传输链路是指VVoIP应用产生的音视频数据包传输到对端客户端所经过的网络路径为点对点(peer-to-peer)直连链路,传输途径不经过专门的服务器,直连传输链路具有简单高效的优势,但是由于绝大多数终端都位于网络地址转换(Network AddressTranslation,NAT)的内网中,因此直连传输链路建立失败率较高,特别是对于对称型NAT-对称型NAT互通,直连传输链路建立成功率很低,大大降低了直连传输的通用性。
发明内容
本申请实施例提供一种数据传输方法、装置、设备以及可读存储介质,可以提高点对点直连链路建立的成功率。
本申请实施例一方面提供一种数据传输方法,包括:
第一终端生成数据传输请求;所述数据传输请求用于请求与第二终端进行数据传输;
所述第一终端根据所述数据传输请求,获取预测套接字数量以及所述第二终端的第二穿透外网套接字;
所述第一终端通知第一网络地址转换器构建与所述预测套接字数量对应的第一外网套接字区间,所述第一终端通过所述第一外网套接字区间中的每个外网套接字,向所述第二穿透外网套接字发送第一穿透数据包;
当所述第一外网套接字区间中存在第一穿透外网套接字时,所述第一终端通过所述第一穿透外网套接字与所述第二穿透外网套接字,与所述第二终端进行数据传输;所述第一穿透外网套接字为已发送所述第一穿透数据包,且已接收到基于所述第二穿透外网套接字所发送的第二穿透数据包的套接字。
本申请实施例一方面提供一种数据传输方法,包括:
决策服务器获取数据传输请求;所述数据传输请求表征第一终端与第二终端进行数据传输;
所述决策服务器根据所述数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字;
所述决策服务器将所述第一预测套接字数量以及所述第二穿透外网套接字发送至所述第一终端,以使所述第一终端根据所述第一预测套接字数量确定第一外网套接字区间,并通过所述第一外网套接字区间中每个外网套接字发送第一穿透数据包到所述第二穿透外网套接字;
所述决策服务器将所述第二预测套接字数量以及所述第一穿透外网套接字发送至所述第二终端,以使所述第二终端根据所述第二预测套接字数量确定第二外网套接字区间,并通过所述第二外网套接字区间中每个外网套接字发送第二穿透数据包到所述第一穿透外网套接字;
当所述第一外网套接字区间中存在接收到所述第二穿透数据包的所述第一穿透外网套接字,且所述第二外网套接字区间中存在接收到所述第一穿透数据包的所述第二穿透外网套接字时,所述决策服务器通过所述第一穿透外网套接字与所述第二穿透外网套接字,创建所述第一终端与所述第二终端之间的数据传输信道。
本申请实施例一方面提供了一种数据传输装置,包括:
生成请求模块,用于生成数据传输请求;所述数据传输请求用于请求与第二终端进行数据传输;
获取套接字模块,用于根据所述数据传输请求,获取预测套接字数量以及所述第二终端的第二穿透外网套接字;
构建外网区间模块,用于通知第一网络地址转换器构建与预测套接字数量对应的第一外网套接字区间,通过所述第一外网套接字区间中的每个外网套接字,向所述第二穿透外网套接字发送第一穿透数据包;
数据传输模块,用于当所述第一外网套接字区间中存在第一穿透外网套接字时,通过所述第一穿透外网套接字与所述第二穿透外网套接字,与所述第二终端进行数据传输;所述第一穿透外网套接字为已发送所述第一穿透数据包,且已接收到基于所述第二穿透外网套接字所发送的第二穿透数据包的套接字。
其中,还包括:
发送请求模块,用于根据所述数据传输请求生成第一内网套接字,通过所述第一内网套接字,发送所述数据传输请求至决策服务器;
获取反馈数据模块,用于获取所述决策服务器返回的第一反馈数据;所述第一反馈数据包括穿透服务器对应的外网套接字;
获取目标套接字模块,用于根据所述穿透服务器对应的外网套接字,从所述穿透服务器获取所述第一终端在所述第一网络地址转换器中的目标外网套接字;
发送目标套接字模块,用于将所述目标外网套接字发送至所述决策服务器,以使所述决策服务器根据所述目标外网套接字确定所述第一穿透外网套接字;所述第一穿透外网套接字用于接收所述第二终端对应的第二外网套接字区间中每个外网套接字所发送的所述第二穿透数据包。
其中,所述获取目标套接字模块,包括:
生成内网套接字单元,用于根据所述第一内网套接字生成第二内网套接字;
发送测试数据包单元,用于通过所述第二内网套接字和所述穿透服务器对应的外网套接字,发送测试数据包至所述第一网络地址转换器,以使所述第一网络地址转换器发送所述测试数据包至所述穿透服务器;
获取反馈数据单元,用于获取所述穿透服务器根据所述测试数据包返回的第二反馈数据;所述第二反馈数据包括针对所述第一终端的目标外网套接字;所述目标外网套接字为所述第二内网套接字映射在所述第一网络地址转换器中的套接字。
其中,所述构建外网区间模块,包括:
构建内网区间单元,用于根据所述预测套接字数量,构建内网套接字区间;所述内网套接字区间中的内网套接字数量等于所述预测套接字数量;
构建外网区间单元,用于根据所述内网套接字区间中的每个内网套接字以及所述第一穿透数据包,通知所述第一网络地址转换器构建所述第一外网套接字区间。
其中,所述构建内网区间单元,包括:
生成内网套接字子单元,用于根据所述第二内网套接字,逐一生成用于发送所述第一穿透数据包的内网套接字,将所生成的内网套接字添加至待确定内网套接字区间;
确定内网区间子单元,用于当所述待确定内网套接字区间内的内网套接字数量等于所述预测套接字数量时,将所述待确定内网套接字区间确定为所述内网套接字区间。
其中,所述构建外网区间单元,包括:
发送穿透数据包子单元,用于通过所述至少两个内网套接字,分别发送所述第一穿透数据包至所述第一网络地址转换器,以使所述第一网络地址转换器根据所述第一穿透数据包为每个内网套接字分别生成对应的外网套接字;
生成外网区间子单元,用于根据所述每个内网套接字分别对应的外网套接字,生成所述第一外网套接字区间;所述第一外网套接字区间中的外网套接字数量等于所述预测套接字数量。
本申请实施例一方面提供了一种数据传输装置,包括:
获取请求模块,用于决策服务器获取数据传输请求;所述数据传输请求表征第一终端与第二终端进行数据传输;
确定套接字模块,用于根据所述数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字;
第一发送套接字模块,用于将所述第一预测套接字数量以及所述第二穿透外网套接字发送至所述第一终端,以使所述第一终端根据所述第一预测套接字数量确定第一外网套接字区间,并通过所述第一外网套接字区间中每个外网套接字发送第一穿透数据包到所述第二穿透外网套接字;
所述第一发送套接字模块,还用于将所述第二预测套接字数量以及所述第一穿透外网套接字发送至所述第二终端,以使所述第二终端根据所述第二预测套接字数量确定第二外网套接字区间,并通过所述第二外网套接字区间中每个外网套接字发送第二穿透数据包到所述第一穿透外网套接字;
创建传输信道模块,用于当所述第一外网套接字区间中存在接收到所述第二穿透数据包的所述第一穿透外网套接字,且所述第二外网套接字区间中存在接收到所述第一穿透数据包的所述第二穿透外网套接字时,通过所述第一穿透外网套接字与所述第二穿透外网套接字,创建所述第一终端与所述第二终端之间的数据传输信道。
其中,所述确定套接字模块,包括:
获取转换器流量单元,用于根据所述数据传输请求,获取网络地址转换器的网络地址转换流量;
第一确定套接字单元,用于根据所述网络地址转换器的网络地址转换流量,确定所述第一预测套接字数量以及所述第二预测套接字数量;
第二确定套接字单元,用于根据所述第一预测外网套接字数量,确定所述第一穿透外网套接字;
所述第二确定套接字单元,还用于根据所述第二预测外网套接字数量,确定所述第二穿透外网套接字。
其中,所述获取转换器流量单元,包括:
获取转换记录子单元,用于根据所述数据传输请求,获取所述网络地址转换器在历史周期内的网络地址转换记录;
确定转换器流量子单元,用于根据所述网络地址转换记录,确定所述网络地址转换器的网络地址转换流量。
其中,所述第一确定套接字单元,具体用于获取所述第一网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第一网络地址转换流量范围,将所述第一网络地址转换流量范围所映射的预测套接字数量,确定为所述第一预测套接字数量;所述第一网络地址转换器用于将所述第一终端的内网套接字转换为外网套接字;
所述第一确定套接字单元,具体还用于获取所述第二网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第二网络地址转换流量范围,将所述第二网络地址转换流量范围所映射的预测套接字数量,确定为所述第二预测套接字数量;所述第二网络地址转换器用于将所述第二终端的内网套接字转换为外网套接字。
其中,还包括:
第二发送套接字模块,用于根据所述数据传输请求,发送穿透服务器对应的外网套接字至所述第一终端,以使所述第一终端获取所述第一网络地址转换器的第一网络地址转换类型;
所述第二发送套接字模块,还用于根据所述数据传输请求,发送所述穿透服务器对应的外网套接字至所述第二终端,以使所述第二终端获取所述第二网络地址转换器的第二网络地址转换类型;
接收转换类型模块,用于接收所述第一终端发送的所述第一网络地址转换类型,接收所述第二终端发送的所述第二网络地址转换类型;
执行步骤模块,用于当所述第一网络地址转换类型和所述第二网络地址转换类型均为对称网络地址转换类型时,执行所述根据所述数据传输请求,所述决策服务器确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字的步骤。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,以执行如本申请实施例中的方法。
本申请实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,即提升P2P直连链路建立成功率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种数据传输的场景示意图;
图3是本申请实施例提供的一种数据传输方法的流程示意图;
图4是本申请实施例提供的一种数据传输的场景示意图;
图5是本申请实施例提供的一种数据传输的场景示意图;
图6是本申请实施例提供的一种数据传输方法的流程示意图;
图7是本申请实施例提供的一种数据传输装置的结构示意图;
图8是本申请实施例提供的一种数据传输装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着移动终端技术的发展和网络带宽的提升,越来越多的终端用户之间有大流量数据传输的需求,比如大文件传输或者高清音视频通话等。根据数据流传输的途径的不同,数据传输链路分为直连传输链路和中转传输链路两种:前者是用户与用户直接进行P2P数据传输,传输途径中没有专门的服务器节点;后者是在两端用户之间加入一个中转服务器,数据流需要通过该服务器传输到对端。直连传输链路和中转传输链路各有优缺点:
1)中转传输链路优点是稳定可控,缺点是需要部署服务器和带宽资源。
2)直连传输链路优点是简单高效,缺点是稳定性和可控性弱。这是因为绝大多数终端都位于NAT内网,直连传输链路建立失败率较高,特别是对于对称型NAT-对称型NAT互通,直连传输链路建立成功率很低,大大降低了直连传输的通用性。
在所有NAT类型中,对称型NAT占比46%左右,且近年来占比越来越高,也就是说P2P传输场景中双方都是对称型NAT的比例接近25%,为了提升P2P直连传输链路建立的成功率,本申请提出一种基于双向区间端口预测的NAT穿透方案,用于大大提升两个对称型NAT之间的打洞成功率。
如果一个终端处于对称型NAT路由器内网,那么这个终端的某个套接字往不同目标地址发送数据包时,数据包的出口地址端口都不同。有些NAT采用线性模式(比如递增或递减)分配端口,有些NAT采用随机方式分配端口,本申请主要作用于双方都是线性端口分配的对称型NAT之间的打洞场景,请参见图1,是本申请实施例提供的一种系统架构示意图。
为了便于理解本申请中提到的缩略语以及关键术语,首先对以下关键术语做个简单介绍。
1、互联网协议地址(Internet Protocol Address,IP地址),又称为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。分为以下两种:
1.1、公有IP地址:也叫全局地址,是指合法的IP地址,它是由因特网信息中心(Internet Network Information Center,NIC)或者因特网服务提供商(InternetService Provider,ISP)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址。请一并参见图2,是本申请实施例提供的一种数据传输的场景示意图。如图2所示,IP地址210.21.12.141以及IP地址210.15.27.167为公有IP地址,它们分别代表了第一终端10a以及第二终端10b各自局域网内的公用地址。
1.2、私有IP地址:也叫内部地址,属于非注册地址,专门为组织机构内部使用。因特网数字分配机构(The Internet Assigned Numbers Authority,IANA)保留了以下3类IP地址做为私有IP地址:
A类:10.0.0.0———10.255.255.255,
B类:172.16.0.0———172.16.255.255,
C类:192.168.0.0———192.168.255.255。
请参见图2,如图2所示,IP地址192.168.1.4以及IP地址192.168.1.5为私有IP地址,其中,IP地址192.168.1.4仅代表了第一终端10a在局域网内的内部地址,IP地址192.168.1.5仅代表了第二终端10b在局域网内的内部地址。
2、端口(Port),本申请主要是指逻辑意义上用于区分应用服务的端口,在IP协议中的端口指的是什么呢?如果把IP地址比作一间房子,端口就是出入这间房子的门。由于物理端口和逻辑端口数量较多,为了对端口进行区分,对每个端口进行编号,形成端口号,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于文件传输协议(FileTransfer Protocol,FTP)服务的21端口等。请参见图2,如图2所示,“192.168.1.4,123”中的“123”即为端口号,代表着第一终端10a的某个聊天应用服务端口,“210.21.12.141,42”中的“42”也为第一终端10a的端口,与“123”的区别是,“123”为第一终端10a本身的端口号,“42”为第一终端10a的某个聊天应用服务端口(即“123”)映射在第一网络地址转换器20a上的端口号。
3、套接字(Socket),端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如万维网(World Wide Web,Web)服务、FTP服务、简单邮件传输协议(SimpleMail Transfer Protocol,SMTP)服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系,实际上是通过“IP地址+端口号”来区分不同的服务的,即套接字。套接字是一个抽象层,应用程序可以通过它发送或接收数据,也可以看成是两个程序进行通讯连接中的一个端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即“主机IP地址:端口号”或者“主机IP地址,端口号”。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的套接字中,该套接字通过网络接口卡的传输介质将这段信息发送给另一台主机的套接字中,使这段信息能传输到其他程序中。请参见图2,如图2所示,“192.168.1.4,123”为第一终端10a的内网套接字(或者称为内部套接字),对应着第一终端10a的私有IP地址“192.168.1.4”以及端口“123”,“210.21.12.141,42”为第一终端10a的外网套接字,对应着第一终端10a的公有IP地址“210.21.12.141”以及端口“42”。当第一终端10a与第二终端10b成功建立直连传输链路时,也可以将“192.168.1.4,123”称为第一终端10a的目标内网套接字,也为第二终端10b的目的内网套接字,“210.21.12.141,42”称为第一终端10a的目标外网套接字或者穿透外网套接字,也为第二终端10b的目的外网套接字。
4、网络地址转换(Network Address Translation,NAT),也叫做网络掩蔽或者IP掩蔽,是一种在IP数据包通过路由器或防火墙时重写来源IP:Port地址(即目标套接字)或目的IP:Port地址的技术(即目的套接字),能够解决了lP地址不足的问题,而且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。根据映射规则和过滤规则的不同,NAT分为全锥型、受限型、端口受限型、对称型等类型,这其中对称型的安全等级最高、连通条件最苛刻、应用最广。请参见图2,如图2所示,第一网络地址转换器20a将第一终端10a的内网套接字“192.168.1.4,123”转换为外网套接字“210.21.12.141,42”。
5、NAT穿透:也可称为NAT打洞,NAT会把内网套接字映射为外网套接字,另外,NAT收到外网来包后会按照一定的规则进行过滤,这些导致两个NAT内网终端进行通信变得复杂,NAT穿透技术就是用于打破NAT壁垒,在两个NAT内网主机之间建立P2P直连传输链路。
请再参见图1,如图1所示,P2P直连传输链路创建过程主要包括以下几个元素:
1)、P2P传输参与方。如图1中的第一终端10a以及第二终端10b2。
2)、网络地址转换器。也包括图1中的第一网络地址转换器20a以及第二网络地址转换器20b。NAT功能通常被集成到路由器、防火墙或者单独的NAT设备中。比如防火墙将网页服务器(WEB Server)的内网地址192.168.1.1映射为外网地址202.96.23.11,外部访问202.96.23.11地址实际上就是访问192.168.1.1。此外,对于资金有限的小型企业来说,现在通过软件也可以实现这一功能。请再参见图2,如图2所示,第一终端10a使用“192.168.1.4,123”发送数据,通过第一网络地址转换器20a,映射为“210.21.12.141,42”,此时在公网上第一终端10a的内网套接字被“210.21.12.141,42”代替。
第一网络地址转换器20a是第一终端10a的网络出口设备NAT,第二网络地址转换器20b是第二终端10b的网络出口设备NAT,这里的NAT可以是多层NAT组合而成。
3)、穿透服务器30。也称作打洞服务器,是用于获取第一终端10a以及第二终端10b的外网套接字(IP:Port),和网络地址转换类型的用户数据报协议(User Data Protocol,UDP)服务器,穿透服务器30拥有外网套接字,可以被终端直接访问。
4)、决策服务器40。即应用后台服务器,用于收集第一终端10a以及第二终端10b的NAT信息,根据双方NAT类型决策出打洞策略,并通知两个终端分别进入具体的打洞流程。
该系统架构的具体工作流程如下:当第一终端10a想与第二终端10b建立数据传输信道300时,第一终端10a首先生成一个数据传输请求,数据传输请求用于请求与第二终端10b进行数据传输;第一终端10a通过传输链路200a将数据传输请求发送至决策服务器40,决策服务器40根据数据传输请求,通过传输链路200a返回携带针对穿透服务器30的外网套接字。获取到针对穿透服务器30的外网套接字之后,第一终端10a会通过传输链路100a发送第一测试数据包至针对穿透服务器30的外网套接字。穿透服务器30能根据第一终端10a发送的第一测试数据包,解析出第一终端10a所对应的第一网络地址转换器20a的网络地址转换类型,以及第一终端10a映射在第一网络地址转换器20a中的外网套接字,然后穿透服务器30根据传输链路100a返回第一反馈数据(包括第一网络地址转换器20a的网络地址转换类型,以及第一终端10a映射在第一网络地址转换器20a中的外网套接字)至第一终端10a。第一终端10a获取到第一反馈数据后,将第一反馈数据同步至决策服务器40。同样,决策服务器40通过传输链路200b返回携带针对穿透服务器30的外网套接字至第二终端10b,第二终端10b会通过传输链路100b发送第二测试数据包至针对穿透服务器30的外网套接字。穿透服务器30能根据第二终端10ba发送的第二测试数据包,解析出第二终端10b所对应的第二网络地址转换器20b的网络地址转换类型,以及第二终端10b映射在第二网络地址转换器20b中的外网套接字,然后穿透服务器30根据传输链路100b返回第二反馈数据(包括第二网络地址转换器20b的网络地址转换类型,以及第二终端10b映射在第二网络地址转换器20b中的外网套接字)至第二终端10b。第二终端10b获取到第二反馈数据后,将第二反馈数据同步至决策服务器40,使得决策服务器40根据第一终端10a以及第二终端10b分别对应的反馈数据决策打洞方案。
当第一终端10a以及第二终端10b分别对应的网络地址转换器,即第一网络地址转换器20a以及第二网络地址转换器20b分别对应的网络地址转换类型均为对称型网络地址转换类型时,决策服务器40分别预测第一终端10a的套接字数量(称为第一预测套接字数量)以及第二终端10b的套接字数量(称为第二预测套接字数量),根据针对第一终端10a的第一预测套接字数量,决策服务器40可以确定针对第一终端10a的第一穿透外网套接字(用于进行直连的外网套接字)。根据第一预测套接字数量,第一终端10a通知第一网络地址转换器20a构建第一外网套接字区间,通过第一外网套接字区间中的每个外网套接字,第一终端10a向第二穿透外网套接字发送第一穿透数据包;根据针对第二终端10b的第二预测套接字数量,决策服务器40可以确定针对第二终端10b的第二穿透外网套接字(用于与第一穿透外网套接字进行直连的外网套接字),根据第二预测套接字数量,第二终端10b通知第二网络地址转换器20b构建第二外网套接字区间,通过第二外网套接字区间中的每个外网套接字,第二终端10b向第一穿透外网套接字发送第二穿透数据包。
当第一外网套接字区间中存在接收到第二穿透数据包的第一穿透外网套接字,且第二外网套接字区间中存在接收到第一穿透数据包的第二穿透外网套接字时,通过第一穿透外网套接字与第二穿透外网套接字,决策服务器40创建第一终端10a与第二终端10b之间的数据传输信道300。
其中,本申请实施例中的执行主体可以位于决策服务器40上,当第一终端10a作为发送终端时,第一终端10a可以作为执行主体,同理,第二终端10b也可以作为执行主体,此处并不限定。
其中,图1中的第一终端10a以及第二终端10b可以包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point OfSales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。图1中的第一网络地址转换器20a以及第二网络地址转换器20b可以包括路由器、防火墙或者单独的NAT设备。
进一步地,请参见图2,假设第一终端10a为发送终端,第二终端10b为接收终端,第一网络地址转换器20a为第一路由器,第二网络地址转换器20b为第二路由器,则当发送终端与接收终端建立直连传输链路成功时(创建直连传输链路的过程请参见图1所对应的实施例),发送终端通过内网套接字“192.168.1.4,123”发送“您好,在吗?”(根据“您好,在吗?”所生成的数据包携带接收终端的穿透外网套接字,即“210.15.27.167,101”)至第一路由器,第一路由器将发送终端的内网套接字“192.168.1.4,123”转换为外网套接字“210.21.12.141,42”,然后根据接收终端的穿透外网套接字“210.15.27.167,101”,通过IP网络100将信息“您好,在吗?”传输至第二路由器,第二路由器根据映射关系,确定接收终端的内网套接字“192.168.1.5,100”,然后将“您好,在吗?”传输至接收终端,如图2所示,接收终端的显示屏上显示接收到来自用户名为“天天向上”的信息,当接收终端对应的接收者回复此信息时,如回复“您好,在了”,此时的传输过程与过程一致,区别是用户“好好学习”对应的第二终端10b变成发送终端,用户“天天向上”对应的第一终端10a变成接收终端。
进一步地,请参见图3,是本申请实施例提供的一种数据传输方法的流程示意图。如图3所示,方法可以包括:
步骤S101,第一终端生成数据传输请求;数据传输请求用于请求与第二终端进行数据传输。
具体的,请一并参见图4,是本申请实施例提供的一种数据传输的场景示意图。如图4所示,随着移动终端技术的发展和网络带宽的提升,越来越多的用户选择使用VVoIP应用来进行远程沟通。在VVoIP应用中,声音和画面通过数据流的形式在终端之间进行传输,因此在第一终端10a与第二终端10b初次传输数据时,需要建立数据传输信道300,即在传输第一终端10a所发送的信息“您好,在吗?”之前,需要先生成一个数据传输请求400,用于表明第一终端10a想要与第二终端10b传输数据。需要说明的是,本申请主要叙述直连传输链路,因为大多数终端都位于网络地址转换的内网中,致使直连传输链路建立失败率较高,特别是对于对称型NAT-对称型NAT互通,直连传输链路建立成功率很低,大大降低了直连传输的通用性。
步骤S102,第一终端根据数据传输请求,获取预测套接字数量以及第二终端的第二穿透外网套接字。
具体的,第一终端根据数据传输请求生成第一内网套接字,通过第一内网套接字,发送数据传输请求至决策服务器;第一终端获取决策服务器返回的第一反馈数据;第一反馈数据包括穿透服务器对应的外网套接字;第一终端根据第一内网套接字生成第二内网套接字;第一终端通过第二内网套接字和穿透服务器对应的外网套接字,发送测试数据包至第一网络地址转换器,以使第一网络地址转换器发送测试数据包至穿透服务器;第一终端获取穿透服务器根据测试数据包返回的第二反馈数据;第二反馈数据包括针对第一终端的目标外网套接字;目标外网套接字为第二内网套接字映射在第一网络地址转换器中的套接字;第一终端将目标外网套接字发送至决策服务器,以使决策服务器根据目标外网套接字确定第一穿透外网套接字;第一穿透外网套接字用于接收第二终端对应的第二外网套接字区间中每个外网套接字所发送的第二穿透数据包。
请再参见图4,第一终端10a首先根据自身的数据传输请求400,生成第一内网套接字101a,第一内网套接字101a包括第一终端10a自身的主机IP地址以及主机的一个端口号。然后根据第一内网套接字101a向决策服务器40发送数据传输请求400,决策服务器40通过解析数据传输请求400,得知第一终端10a欲发送消息至第二终端10b,则将穿透服务器30对应的外网套接字201a,即第一反馈数据,返回至第一终端10a,在第一内网套接字101a的基础上,第一终端10a随机生成一个内网端口,与主机IP地址生成第二内网套接字102a,将穿透服务器30对应的外网套接字201a作为目的外网套接字,通过第二内网套接字102a,发送测试数据包202a,测试数据包202a首先被传输至第一网络地址转换器20a,第一网络地址转换器20a将测试数据包202a所对应的目标内网套接字,转换成测试数据包202a所对应的目标外网套接字203a,因此当测试数据包202a传输至穿透服务器30时,穿透服务器30可以获取第一终端10a的外网地址以及第二内网套接字102a所对应的目标外网套接字203a。
穿透服务器30返回第二反馈数据至第一终端10a,第二反馈数据包括针对第一终端10a的目标外网套接字203a以及第一网络地址转换器20a对应的网络地址转换类型,第一终端10a将第二反馈数据发送至决策服务器40,使得决策服务器40可以根据第一网络地址转换器20a的网络地址转换情况,确定第一终端10a对应的第一预测套接字数量204a,进而根据目标外网套接字203a以及第一预测套接字数量204a确定第一终端10a的第一穿透外网套接字;第一穿透外网套接字用于接收第二终端10b对应的第二外网套接字区间中每个外网套接字所发送的第二穿透数据包。决策服务器40将针对第一终端的预测套接字数量204a以及第二终端10b的第二穿透外网套接字发送给第一终端10a。
需要说明的是,因为第二终端10b的工作步骤与第一终端10a的工作步骤基本一致,因此只叙述第一终端10a侧,不再赘述第二终端10b的工作步骤。
步骤S103,第一终端通知第一网络地址转换器构建与预测套接字数量对应的第一外网套接字区间,第一终端通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包。
具体的,第一终端根据第二内网套接字,逐一生成用于发送第一穿透数据包的内网套接字,将所生成的内网套接字添加至待确定内网套接字区间;当待确定内网套接字区间内的内网套接字数量等于预测套接字数量时,第一终端将待确定内网套接字区间确定为内网套接字区间;内网套接字区间中的内网套接字数量等于预测套接字数量;内网套接字区间包括至少两个内网套接字;第一终端通过至少两个内网套接字,分别发送第一穿透数据包至第一网络地址转换器,以使第一网络地址转换器根据第一穿透数据包为每个内网套接字分别生成对应的外网套接字;第一终端根据每个内网套接字分别对应的外网套接字,生成第一外网套接字区间;第一外网套接字区间中的外网套接字数量等于预测套接字数量。
根据步骤S101以及步骤S102可知,第一终端10a通过与决策服务器40以及穿透服务器30交互,可以确定自身的第二内网套接字102a,还可以获取针对第一终端10a的预测套接字数量204a以及第二终端10b的第二穿透外网套接字。
请一并参见图5,是本申请实施例提供的一种数据传输的场景示意图。如图5所示,第二内网套接字(即图4中的第二内网套接字102a)中的内网端口X在第一网络地址转换器20a上被映射为外网端口N,根据外网端口N以及第一网络地址转换器20a的IP地址,形成第一终端10a的目标外网套接字(即图4中的目标外网套接字203a),第一终端10a在获取到决策服务器40返回的第一预测套接字数量(即图4中的第一预测套接字数量204a)后,假设第一预测套接字数量为α个,则在内网端口X的基础上,第一终端10a逐一生成用于发送第一穿透数据包(如图4中的第一穿透数据包205a)的α个内网端口,如图5中所示的内网端口X+1、内网端口X+2、…、内网端口X+α-1、内网端口X+α,根据内网端口X+1、内网端口X+2、…、内网端口X+α-1、内网端口X+α,以及第一终端10a的内网主机IP地址,生成对应的内网套接字,将对应生成的内网套接字添加至待确定内网套接字区间,且当待确定内网套接字区间中的套接字数量等于α个时,将待确定内网套接字区间确定为内网套接字区间。
当内网套接字区间生成后,同时通过内网套接字区间中的每个内网套接字向第二穿透外网套接字发送第一穿透数据包,如图5所示,内网端口X+1在第一网络地址转换器20a上被映射成外网端口N+2,内网端口X+α-1在第一网络地址转换器20a上被映射成外网端口N+α,内网端口X+α在第一网络地址转换器20a上被映射成外网端口N+α+1,其中,第一网络地址转换器20a采用线性模式(比如端口递增或递减)分配端口,而第一网络地址转换器20a上的端口N+1可能被其他终端或者第一终端10a上的其它应用占据,因此内网套接字区间对应的外网套接字区间从外网端口N+1开始,直至外网端口N+α+1,然后通过外网端口N+1将第一穿透数据包传输至第二穿透外网套接字,通过外网端口N+2将第一穿透数据包传输至第二穿透外网套接字,…,通过外网端口N+α将第一穿透数据包传输至第二穿透外网套接字,通过外网端口N+α+1将第一穿透数据包传输至第二穿透外网套接字。
综上所述,第一终端10a首先和穿透服务器30进行交互,获取自己的外网端口,假设内网端口X是第一终端10a的本地端口,外网端口N是对应于内网端口X的外网端口。同样第二终端10b获取自身的外网端口为M。
决策服务器40根据第一终端10a对应的目标外网套接字、第一网络地址转换器20a的网络地址转换类型以及网络地址转换器的网络地址转换流量,对第一网络地址转换器20a预测一个套接字区间,套接字区间的套接字数量为α个,然后假设第一终端10a接收第二终端10b的第二穿透数据包的第一穿透外网端口为N+α,则第一穿透外网端口为N+α对应生成的外网套接字为第一终端10a的第一穿透外网套接字;同样,假设第二终端10b接收第一终端10a的第一穿透数据包的第二穿透外网端口为M+β,则第二穿透外网端口为M+β对应生成的外网套接字为第二终端10b的第二穿透外网套接字。如图5所示,通过在第一终端10a上创建[X+1,X+α]的α个内网端口,则在第一网络地址转换器20a上一一生成对应的α个外网端口,即外网端口区间[N+2,N+α+1],然后根据外网端口区间[N+2,N+α+1]所对应生成的第一外网套接字区间,向第二穿透外网套接字发送第一穿透数据包。
这样,只要端口区间预测是正确的(主要区间足够大,预测成功的概率就足够高),那么第一终端10a的外网端口N+α会给第二终端10b的外网端口M+β发送过第一穿透数据包,同理,第二终端10b的外网端口M+β也会给第一终端10a的外网端口N+α发送过第二穿透数据包,根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一端的穿透数据包,则打洞成功。
步骤S104,当第一外网套接字区间中存在第一穿透外网套接字时,第一终端通过第一穿透外网套接字与第二穿透外网套接字,与第二终端进行数据传输;第一穿透外网套接字为已发送第一穿透数据包,且已接收到基于第二穿透外网套接字所发送的第二穿透数据包的套接字。
具体的,本申请实施例提出一种基于区间的端口预测方案,也就是不再预测对端往自己发包时的外网套接字,而是预测一个线性外网套接字区间,这个区间中存在一个外网套接字是用来给自己发包的。因此对第一终端预测第一预测套接字数量,从而确定第一终端对应的第一外网套接字区间,以及预测第一穿透外网套接字,对第二终端预测第二预测套接字数量,从而确定第二终端对应的第二外网套接字区间,以及预测第二穿透外网套接字,然后通过第一外网套接字区间中的每个外网套接字,第一终端向第二穿透外网套接字发送第一穿透数据包,通过第二外网套接字区间中的每个外网套接字,第二终端向第一穿透外网套接字发送第二穿透数据包,当第一外网套接字区间中存在预测的第一穿透外网套接字,且第二外网套接字区间中存在预测的第二穿透外网套接字时,则可以通过第一穿透外网套接字与第二穿透外网套接字,第一终端与第二终端进行数据传输。
本申请实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,提升P2P直连传输链路建立成功率能带来以下两个好处:第一,传输不需要额外消耗中转服务器和带宽资源,降低服务运营成本。第二,P2P直连传输链路的数据包传输延时比中转传输链路低,对于实时流媒体应用(比如实时音视频通话),低延时能带来更好的用户体验。
进一步地,请参见图6,是本申请实施例提供的一种数据传输方法的流程示意图。如图6所示,方法可以包括:
步骤S201,生成数据传输请求。
具体的,如图6所示,当第一终端10a与第二终端10b初次进行数据传输时,需要建立传输信道,因此发送终端需要生成一个数据传输请求,在图6中,第一终端10a作为发送终端,第二终端b作为接收终端。
步骤S202,传输数据传输请求。
具体的,决策服务器40获取第一终端10a发送的数据传输请求;数据传输请求表征第一终端10a与第二终端10b进行数据传输。
步骤S203,传输穿透服务器的外网套接字。
具体的,决策服务器40根据数据传输请求,发送穿透服务器30对应的外网套接字至第一终端10a,以使第一终端10a获取第一网络地址转换器(即图6中的NAT1)的第一网络地址转换类型;决策服务器40根据数据传输请求,发送穿透服务器30对应的外网套接字至第二终端10b,以使第二终端10b获取第二网络地址转换器(即图6中的NAT2)的第二网络地址转换类型。
综上所述,请再参见图4,当第一终端10a生成数据传输请求400时,先将数据传输请求400发送给决策服务器40(即后台应用服务器),决策服务器40需要了解第一终端10a以及第二终端10b分别对应的网络地址转换器的网络地址转换类型,因此决策服务器40发送穿透服务器30对应的外网套接字201a至第一终端10a以及第二终端10b。
步骤S204,发送测试数据包。
具体的,请再参见图4,第一终端10a获取到穿透服务器30对应的外网套接字201a后,发送一个测试数据包202a至穿透服务器30,测试数据包202a先被传输至第一网络地址转换器20a,此时,将第一终端10a的第二内网套接字102a转换成目标外网套接字203a,然后第一网络地址转换器20a将测试数据包202a传输至穿透服务器30,此时,穿透服务器30可以获取第一终端10a的目标外网套接字203a,即图6中的目标外网套接字(a,N),以及第一网络地址转换器20a所对应的网络地址转换类型,同理,穿透服务器30可以获取第二终端10b的目标外网套接字,即图6中的目标外网套接字(b,M),以及第二网络地址转换器所对应的网络地址转换类型。
步骤S205,返回NAT1的类型、(a,N)以及返回NAT2的类型、(b,M)。
具体的,穿透服务器30将第一终端10a的目标外网套接字(a,N),以及第一网络地址转换器20a所对应的网络地址转换类型返回至第一终端10a;穿透服务器30将第二终端10b的目标外网套接字(b,M),以及第二网络地址转换器所对应的网络地址转换类型返回至第二终端10b。
步骤S206,同步NAT1的类型、(a,N)以及同步NAT2的类型、(b,M)。
具体的,第一终端10a将自身所对应的第一网络地址转换器的网络地址转换类型以及目标外网套接字同步至决策服务器40,同样,第二终端10b将自身所对应的第二网络地址转换器的网络地址转换类型以及目标外网套接字同步至决策服务器40。决策服务器40对两端的NAT信息进行整合,如果发现两端都是线性端口分配的对称型NAT,那么分别预测两端的外网套接字区间,即根据两端的NAT信息做出端口区间预测。这里假设对第一终端10a预测的外网套接字区间所对应的套接字数量为α,对第二终端10b预测的外网套接字区间所对应的套接字数量β。
具体过程为决策服务器40根据数据传输请求,获取网络地址转换器在历史周期内的网络地址转换记录;决策服务器40根据网络地址转换记录,确定网络地址转换器的网络地址转换流量。网络地址转换器包括第一网络地址转换器以及第二网络地址转换器,决策服务器40获取第一网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第一网络地址转换流量范围,决策服务器40将第一网络地址转换流量范围所映射的预测套接字数量,确定为第一预测套接字数量;第一网络地址转换器用于将第一终端10a的内网套接字转换为外网套接字;决策服务器40获取第二网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第二网络地址转换流量范围,决策服务器40将第二网络地址转换流量范围所映射的预测套接字数量,确定为第二预测套接字数量;第二网络地址转换器用于将第二终端的内网套接字转换为外网套接字。决策服务器40根据第一预测外网套接字数量,确定第一预测穿透外网套接字;决策服务器40根据第二预测外网套接字数量,确定第二预测穿透外网套接字。
步骤S207,返回α、(b,M+β)以及返回β、(a、N+α)。
具体的,决策服务器40将第一预测套接字数量α,以及第二穿透外网套接字(b,M+β)发送至第一终端10a;将第二预测套接字数量β,以及第一穿透外网套接字(a、N+α)发送至第二终端10b。
步骤S208,创建α个外网套接字向套接字(b,M+β)发第一穿透数据包以及S208,创建β个外网套接字、向套接字(b,N+α)发第二穿透数据包。
具体的,第一终端10a根据第一预测套接字数量α确定第一外网套接字区间,并通过第一外网套接字区间中每个外网套接字发送第一穿透数据包到第二穿透外网套接字(b,M+β);第二终端10b根据第二预测套接字数量β确定第二外网套接字区间,并通过第二外网套接字区间中每个外网套接字发送第二穿透数据包到第一穿透外网套接字(a、N+α)。
综上所述,决策服务器40根据第一终端10a对应的第一网络地址转换器的网络地址转换信息(包括网络地址转换类型以及网络地址转换流量),对第一终端10a预测一个线性外网套接字区间,这个区间中存在一个外网套接字是用来给第一终端10a收包的,将这个收包的外网套接字称为第一穿透外网套接字;决策服务器40根据第二终端10b对应的第二网络地址转换器的网络地址转换信息(包括网络地址转换类型以及网络地址转换流量),对第二终端10b预测一个线性外网套接字区间,这个区间中也存在一个外网套接字是用来给第二终端10b收包的,将这个收包的外网套接字称为第二穿透外网套接字。因此,当第一外网套接字区间中存在接收到第二穿透数据包的第一穿透外网套接字,且第二外网套接字区间中存在接收到第一穿透数据包的第二穿透外网套接字时,决策服务器40通过第一穿透外网套接字与第二穿透外网套接字,创建第一终端与第二终端之间的数据传输信道。
本申请实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,提升P2P直连传输链路建立成功率能带来以下两个好处:第一,传输不需要额外消耗中转服务器和带宽资源,降低服务运营成本。第二,P2P直连传输链路的数据包传输延时比中转传输链路低,对于实时流媒体应用(比如实时音视频通话),低延时能带来更好的用户体验。
请参见图7,是本申请实施例提供的一种数据传输装置的结构示意图。数据传输装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据传输装置1为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图7所示,该数据传输装置1可以包括:生成请求模块11、获取套接字模块12、构建外网区间模块13以及数据传输模块14。
生成请求模块11,用于生成数据传输请求;数据传输请求用于请求与第二终端进行数据传输;
获取套接字模块12,用于根据数据传输请求,获取预测套接字数量以及第二终端的第二穿透外网套接字;
构建外网区间模块13,用于通知第一网络地址转换器构建与预测套接字数量对应的第一外网套接字区间,通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包;
数据传输模块14,用于当第一外网套接字区间中存在第一穿透外网套接字时,通过第一穿透外网套接字与第二穿透外网套接字,与第二终端进行数据传输;第一穿透外网套接字为已发送第一穿透数据包,且已接收到基于第二穿透外网套接字所发送的第二穿透数据包的套接字。
其中,生成请求模块11、获取套接字模块12、构建外网区间模块13以及数据传输模块14的具体功能实现方式可以参见图3对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
再请参见图7,数据传输装置1还可以包括:发送请求模块15、获取反馈数据模块16、获取目标套接字模块17以及发送目标套接字模块18。
发送请求模块15,用于根据数据传输请求生成第一内网套接字,通过第一内网套接字,发送数据传输请求至决策服务器;
获取反馈数据模块16,用于获取决策服务器返回的第一反馈数据;第一反馈数据包括穿透服务器对应的外网套接字;
获取目标套接字模块17,用于根据穿透服务器对应的外网套接字,从穿透服务器获取第一终端在第一网络地址转换器中的目标外网套接字;
发送目标套接字模块18,用于将目标外网套接字发送至决策服务器,以使决策服务器根据目标外网套接字确定第一穿透外网套接字;第一穿透外网套接字用于接收第二终端对应的第二外网套接字区间中每个外网套接字所发送的第二穿透数据包。
其中,发送请求模块15、获取反馈数据模块16、获取目标套接字模块17以及发送目标套接字模块18的具体功能实现方式可以参见图3对应实施例中的步骤S102,这里不再进行赘述。
再请参见图7,获取目标套接字模块17可以包括:生成内网套接字单元171、发送测试数据包单元172以及获取反馈数据单元173。
生成内网套接字单元171,用于根据第一内网套接字生成第二内网套接字;
发送测试数据包单元172,用于通过第二内网套接字和穿透服务器对应的外网套接字,发送测试数据包至第一网络地址转换器,以使第一网络地址转换器发送测试数据包至穿透服务器;
获取反馈数据单元173,用于获取穿透服务器根据测试数据包返回的第二反馈数据;第二反馈数据包括针对第一终端的目标外网套接字;目标外网套接字为第二内网套接字映射在第一网络地址转换器中的套接字。
其中,生成内网套接字单元171、发送测试数据包单元172以及获取反馈数据单元173的具体功能实现方式可以参见图3对应实施例中的步骤S102,这里不再进行赘述。
再请参见图7,构建外网区间模块13可以包括:构建内网区间单元131以及构建外网区间单元132。
构建内网区间单元131,用于构建内网套接字区间;内网套接字区间中的内网套接字数量等于预测套接字数量;
构建外网区间单元132,用于根据内网套接字区间中的每个内网套接字以及第一穿透数据包,通知第一网络地址转换器构建第一外网套接字区间。
其中,构建内网区间单元131以及构建外网区间单元132的具体功能实现方式可以参见图3对应实施例中的步骤S103,这里不再进行赘述。
再请参见图7,构建内网区间单元131可以包括:生成内网套接字子单元1311以及确定内网区间子单元1312。
生成内网套接字子单元1311,用于根据第二内网套接字,逐一生成用于发送第一穿透数据包的内网套接字,将所生成的内网套接字添加至待确定内网套接字区间;
确定内网区间子单元1312,用于当待确定内网套接字区间内的内网套接字数量等于预测套接字数量时,将待确定内网套接字区间确定为内网套接字区间。
其中,生成内网套接字子单元1311以及确定内网区间子单元1312的具体功能实现方式可以参见图3对应实施例中的步骤S103,这里不再进行赘述。
再请参见图7,构建外网区间单元132可以包括:发送穿透数据包子单元1321以及生成外网区间子单元1322。
发送穿透数据包子单元1321,用于通过至少两个内网套接字,分别发送第一穿透数据包至第一网络地址转换器,以使第一网络地址转换器根据第一穿透数据包为每个内网套接字分别生成对应的外网套接字;
生成外网区间子单元1322,用于根据每个内网套接字分别对应的外网套接字,生成第一外网套接字区间;第一外网套接字区间中的外网套接字数量等于预测套接字数量。
其中,发送穿透数据包子单元1321以及生成外网区间子单元1322的具体功能实现方式可以参见图3对应实施例中的步骤S103,这里不再进行赘述。
本申请实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,提升P2P直连传输链路建立成功率能带来以下两个好处:第一,传输不需要额外消耗中转服务器和带宽资源,降低服务运营成本。第二,P2P直连传输链路的数据包传输延时比中转传输链路低,对于实时流媒体应用(比如实时音视频通话),低延时能带来更好的用户体验。
请参见图8,是本申请实施例提供的一种数据传输装置的结构示意图。数据传输装置2可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据传输装置2为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该数据传输装置2可以包括:获取请求模块21、确定套接字模块22、第一发送套接字模块23以及创建传输信道模块24。
获取请求模块21,用于获取数据传输请求;数据传输请求表征第一终端与第二终端进行数据传输;
确定套接字模块22,用于根据数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字;
第一发送套接字模块23,用于将第一预测套接字数量以及第二穿透外网套接字发送至第一终端,以使第一终端根据第一预测套接字数量确定第一外网套接字区间,并通过第一外网套接字区间中每个外网套接字发送第一穿透数据包到第二穿透外网套接字;
第一发送套接字模块23,还用于将第二预测套接字数量以及第一穿透外网套接字发送至第二终端,以使第二终端根据第二预测套接字数量确定第二外网套接字区间,并通过第二外网套接字区间中每个外网套接字发送第二穿透数据包到第一穿透外网套接字;
创建传输信道模块24,用于当第一外网套接字区间中存在接收到第二穿透数据包的第一穿透外网套接字,且第二外网套接字区间中存在接收到第一穿透数据包的第二穿透外网套接字时,通过第一穿透外网套接字与第二穿透外网套接字,创建第一终端与第二终端之间的数据传输信道。
其中,获取请求模块21、确定套接字模块22、第一发送套接字模块23以及创建传输信道模块24的具体功能实现方式可以参见图6对应实施例中的步骤S201-步骤S208,这里不再进行赘述。
再请参见图8,确定套接字模块22可以包括:获取转换器流量单元221、第一确定套接字单元222以及第二确定套接字单元223。
获取转换器流量单元221,用于根据数据传输请求,获取网络地址转换器的网络地址转换流量;
第一确定套接字单元222,用于根据网络地址转换器的网络地址转换流量,确定第一预测套接字数量以及第二预测套接字数量;
第二确定套接字单元223,用于根据第一预测外网套接字数量,确定第一穿透外网套接字;
第二确定套接字单元223,还用于根据第二预测外网套接字数量,确定第二穿透外网套接字。
其中,获取转换器流量单元221、第一确定套接字单元222以及第二确定套接字单元223的具体功能实现方式可以参见图6对应实施例中的步骤S207,这里不再进行赘述。
再请参见图8,获取转换器流量单元221可以包括:获取转换记录子单元2211以及确定转换器流量子单元2212。
获取转换记录子单元2211,用于根据数据传输请求,获取网络地址转换器在历史周期内的网络地址转换记录;
确定转换器流量子单元2212,用于根据网络地址转换记录,确定网络地址转换器的网络地址转换流量。
其中,获取转换记录子单元2211以及确定转换器流量子单元2212的具体功能实现方式可以参见图6对应实施例中的步骤S207,这里不再进行赘述。
再请参见图8,第一确定套接字单元222,具体用于获取第一网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第一网络地址转换流量范围,将第一网络地址转换流量范围所映射的预测套接字数量,确定为第一预测套接字数量;第一网络地址转换器用于将第一终端的内网套接字转换为外网套接字;
第一确定套接字单元222,具体还用于获取第二网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第二网络地址转换流量范围,将第二网络地址转换流量范围所映射的预测套接字数量,确定为第二预测套接字数量;第二网络地址转换器用于将第二终端的内网套接字转换为外网套接字。
其中,第一确定套接字单元222的具体功能实现方式可以参见图6对应实施例中的步骤S207,这里不再进行赘述。
再请参见图8,数据传输装置2还可以包括:第二发送套接字模块25、接收转换类型模块26以及执行步骤模块27。
第二发送套接字模块25,用于根据数据传输请求,发送穿透服务器对应的外网套接字至第一终端,以使第一终端获取第一网络地址转换器的第一网络地址转换类型;
第二发送套接字模块25,还用于根据数据传输请求,发送穿透服务器对应的外网套接字至第二终端,以使第二终端获取第二网络地址转换器的第二网络地址转换类型;
接收转换类型模块26,用于接收第一终端发送的第一网络地址转换类型,接收第二终端发送的第二网络地址转换类型;
执行步骤模块27,用于当第一网络地址转换类型和第二网络地址转换类型均为对称网络地址转换类型时,执行决策服务器根据数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字的步骤。
其中,第二发送套接字模块25、接收转换类型模块26以及执行步骤模块27的具体功能实现方式可以参见图6对应实施例中的步骤S208,这里不再进行赘述。
本实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,提升P2P直连传输链路建立成功率能带来以下两个好处:第一,传输不需要额外消耗中转服务器和带宽资源,降低服务运营成本。第二,P2P直连传输链路的数据包传输延时比中转传输链路低,对于实时流媒体应用(比如实时音视频通话),低延时能带来更好的用户体验。
请参见图9,是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
生成数据传输请求;数据传输请求用于请求与第二终端进行数据传输;
根据数据传输请求,获取预测套接字数量以及第二终端的第二穿透外网套接字;
通知第一网络地址转换器构建与预测套接字数量对应的第一外网套接字区间,通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包;
当第一外网套接字区间中存在第一穿透外网套接字时,通过第一穿透外网套接字与第二穿透外网套接字,与第二终端进行数据传输;第一穿透外网套接字为已发送第一穿透数据包,且已接收到基于第二穿透外网套接字所发送的第二穿透数据包的套接字。
在一个实施例中,处理器1001还具体执行以下步骤:
根据数据传输请求生成第一内网套接字,通过第一内网套接字,发送数据传输请求至决策服务器;
获取决策服务器返回的第一反馈数据;第一反馈数据包括穿透服务器对应的外网套接字;
根据穿透服务器对应的外网套接字,从穿透服务器获取第一终端在第一网络地址转换器中的目标外网套接字;
将目标外网套接字发送至决策服务器,以使决策服务器根据目标外网套接字确定第一穿透外网套接字;第一穿透外网套接字用于接收第二终端对应的第二外网套接字区间中每个外网套接字所发送的第二穿透数据包。
在一个实施例中,处理器1001在执行根据穿透服务器对应的外网套接字,从穿透服务器获取第一终端在第一网络地址转换器中的目标外网套接字时,具体执行以下步骤:
根据第一内网套接字生成第二内网套接字;
通过第二内网套接字和穿透服务器对应的外网套接字,发送测试数据包至第一网络地址转换器,以使第一网络地址转换器发送测试数据包至穿透服务器;
获取穿透服务器根据测试数据包返回的第二反馈数据;第二反馈数据包括针对第一终端的目标外网套接字;目标外网套接字为第二内网套接字映射在第一网络地址转换器中的套接字。
在一个实施例中,处理器1001在执行通知第一网络地址转换器构建与预测套接字数量对应的第一外网套接字区间时,具体执行以下步骤:
根据预测套接字数量,构建内网套接字区间;内网套接字区间中的内网套接字数量等于预测套接字数量;
根据内网套接字区间中的每个内网套接字以及第一穿透数据包,通知第一网络地址转换器构建第一外网套接字区间。
在一个实施例中,处理器1001在执行根据预测套接字数量,构建内网套接字区间时,具体执行以下步骤:
根据第二内网套接字,逐一生成用于发送第一穿透数据包的内网套接字,将所生成的内网套接字添加至待确定内网套接字区间;
当待确定内网套接字区间内的内网套接字数量等于预测套接字数量时,将待确定内网套接字区间确定为内网套接字区间。
在一个实施例中,内网套接字区间包括至少两个内网套接字;
处理器1001在执行根据内网套接字区间中的每个内网套接字以及第一穿透数据包,通知第一网络地址转换器构建第一外网套接字区间时,具体执行以下步骤:
通过至少两个内网套接字,分别发送第一穿透数据包至第一网络地址转换器,以使第一网络地址转换器根据第一穿透数据包为每个内网套接字分别生成对应的外网套接字;
根据每个内网套接字分别对应的外网套接字,生成第一外网套接字区间;第一外网套接字区间中的外网套接字数量等于预测套接字数量。
本申请实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,提升P2P直连传输链路建立成功率能带来以下两个好处:第一,传输不需要额外消耗中转服务器和带宽资源,降低服务运营成本。第二,P2P直连传输链路的数据包传输延时比中转传输链路低,对于实时流媒体应用(比如实时音视频通话),低延时能带来更好的用户体验。
请参见图10,是本申请实施例提供的一种计算机设备的结构示意图。如图10所示,计算机设备2000可以包括:处理器2001,网络接口2004和存储器2005,此外,计算机设备2000还可以包括:用户接口2003,和至少一个通信总线2002。其中,通信总线2002用于实现这些组件之间的连接通信。其中,用户接口2003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口2003还可以包括标准的有线接口、无线接口。网络接口2004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器2005可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器2005可选的还可以是至少一个位于远离前述处理器2001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器2005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备2000中,网络接口2004可提供网络通讯功能;而用户接口2003主要用于为用户提供输入的接口;而处理器2001可以用于调用存储器2005中存储的设备控制应用程序,以实现:
获取数据传输请求;数据传输请求表征第一终端与第二终端进行数据传输;
根据数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字;
将第一预测套接字数量以及第二穿透外网套接字发送至第一终端,以使第一终端根据第一预测套接字数量确定第一外网套接字区间,并通过第一外网套接字区间中每个外网套接字发送第一穿透数据包到第二穿透外网套接字;
将第二预测套接字数量以及第一穿透外网套接字发送至第二终端,以使第二终端根据第二预测套接字数量确定第二外网套接字区间,并通过第二外网套接字区间中每个外网套接字发送第二穿透数据包到第一穿透外网套接字;
当第一外网套接字区间中存在接收到第二穿透数据包的第一穿透外网套接字,且第二外网套接字区间中存在接收到第一穿透数据包的第二穿透外网套接字时,通过第一穿透外网套接字与第二穿透外网套接字,创建第一终端与第二终端之间的数据传输信道。
在一个实施例中,处理器2001在执行根据数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字时,具体执行以下步骤:
根据数据传输请求,获取网络地址转换器的网络地址转换流量;
根据网络地址转换器的网络地址转换流量,确定第一预测套接字数量以及第二预测套接字数量;
根据第一预测外网套接字数量,确定第一穿透外网套接字;
根据第二预测外网套接字数量,确定第二穿透外网套接字。
在一个实施例中,处理器2001在执行根据数据传输请求,获取网络地址转换器的网络地址转换流量时,具体执行以下步骤:
根据数据传输请求,获取网络地址转换器在历史周期内的网络地址转换记录;
根据网络地址转换记录,确定网络地址转换器的网络地址转换流量。
在一个实施例中,网络地址转换器包括第一网络地址转换器以及第二网络地址转换器;
处理器2001在执行根据网络地址转换器的网络地址转换流量,确定第一预测套接字数量以及第二预测套接字数量时,具体执行以下步骤:
获取第一网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第一网络地址转换流量范围,将第一网络地址转换流量范围所映射的预测套接字数量,确定为第一预测套接字数量;第一网络地址转换器用于将第一终端的内网套接字转换为外网套接字;
获取第二网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第二网络地址转换流量范围,将第二网络地址转换流量范围所映射的预测套接字数量,确定为第二预测套接字数量;第二网络地址转换器用于将第二终端的内网套接字转换为外网套接字。
在一个实施例中,网络地址转换器包括第一网络地址转换器以及第二网络地址转换器;
处理器2001还具体执行以下步骤:
根据数据传输请求,发送穿透服务器对应的外网套接字至第一终端,以使第一终端获取第一网络地址转换器的第一网络地址转换类型;
根据数据传输请求,发送穿透服务器对应的外网套接字至第二终端,以使第二终端获取第二网络地址转换器的第二网络地址转换类型;
接收第一终端发送的第一网络地址转换类型,接收第二终端发送的第二网络地址转换类型;
当第一网络地址转换类型和第二网络地址转换类型均为对称网络地址转换类型时,执行决策服务器根据数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字的步骤。
本申请实施例通过对第一终端的待创建的套接字进行数量预测,来构建针对第一终端的第一外网套接字区间,然后通过第一外网套接字区间中的每个外网套接字,向第二穿透外网套接字发送第一穿透数据包,因此本申请不需要预测第一终端发送第一穿透数据包时的单个穿透外网套接字,而是预测一个线性外网套接字区间,因为在真实的网络环境中,同一个NAT下可能有几十上百个终端,每个终端又可能有多个应用在访问IP网络,每一秒都可能有很多外网端口被分配出去,单个NAT端口预测成功的概率难以保证,两个NAT同时预测成功更是难上加难,而通过预测的第一外网套接字区间的方式去发第一穿透数据包,可以降低第一穿透外网套接字被其它终端或其它应用占用的概率,从而可以提高通过第一穿透外网套接字发送数据包的概率。因此当第一外网套接字区间中存在第一穿透外网套接字时,那就可以说明第一终端不但给第二终端发送过第一穿透数据包,也接收了第二终端通过第二外网套接字区间发送的第二穿透数据包(第二外网套接字区间包括第二穿透外网套接字),根据对称型NAT数据包过滤规则,会有一个终端可以收到另外一个终端的穿透数据包,则打洞成功。因此,采用本申请,可以大大提升两个对称型NAT之间的打洞成功率,提升P2P直连传输链路建立成功率能带来以下两个好处:第一,传输不需要额外消耗中转服务器和带宽资源,降低服务运营成本。第二,P2P直连传输链路的数据包传输延时比中转传输链路低,对于实时流媒体应用(比如实时音视频通话),低延时能带来更好的用户体验。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图3和图6中各个步骤所提供的数据传输方法,具体可参见图3以及图6各个步骤所提供的实现方式,在此不再赘述。
计算机可读存储介质可以是前述任一实施例提供的数据传输装置或者计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smartmedia card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种数据传输方法,其特征在于,所述方法包括:
第一终端生成数据传输请求;所述数据传输请求用于请求与第二终端进行数据传输;
所述第一终端根据所述数据传输请求,获取预测套接字数量以及所述第二终端的第二穿透外网套接字;
所述第一终端通知第一网络地址转换器构建与所述预测套接字数量对应的第一外网套接字区间,所述第一终端通过所述第一外网套接字区间中的每个外网套接字,向所述第二穿透外网套接字发送第一穿透数据包;
当所述第一外网套接字区间中存在第一穿透外网套接字时,所述第一终端通过所述第一穿透外网套接字与所述第二穿透外网套接字,与所述第二终端进行数据传输;所述第一穿透外网套接字为已发送所述第一穿透数据包,且已接收到基于所述第二穿透外网套接字所发送的第二穿透数据包的套接字。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述第一终端根据所述数据传输请求生成第一内网套接字,通过所述第一内网套接字,发送所述数据传输请求至决策服务器;
所述第一终端获取所述决策服务器返回的第一反馈数据;所述第一反馈数据包括穿透服务器对应的外网套接字;
所述第一终端根据所述穿透服务器对应的外网套接字,从所述穿透服务器获取所述第一终端在所述第一网络地址转换器中的目标外网套接字;
所述第一终端将所述目标外网套接字发送至所述决策服务器,以使所述决策服务器根据所述目标外网套接字确定所述第一穿透外网套接字;所述第一穿透外网套接字用于接收所述第二终端对应的第二外网套接字区间中每个外网套接字所发送的所述第二穿透数据包。
3.根据权利要求2所述的方法,其特征在于,所述第一终端根据所述穿透服务器对应的外网套接字,从所述穿透服务器获取所述第一终端在所述第一网络地址转换器中的目标外网套接字,包括:
所述第一终端根据所述第一内网套接字生成第二内网套接字;
所述第一终端通过所述第二内网套接字和所述穿透服务器对应的外网套接字,发送测试数据包至所述第一网络地址转换器,以使所述第一网络地址转换器发送所述测试数据包至所述穿透服务器;
所述第一终端获取所述穿透服务器根据所述测试数据包返回的第二反馈数据;所述第二反馈数据包括针对所述第一终端的目标外网套接字;所述目标外网套接字为所述第二内网套接字映射在所述第一网络地址转换器中的套接字。
4.根据权利要求3所述的方法,其特征在于,所述第一终端通知第一网络地址转换器构建与所述预测套接字数量对应的第一外网套接字区间,包括:
所述第一终端构建内网套接字区间;所述内网套接字区间中的内网套接字数量等于所述预测套接字数量;
所述第一终端根据所述内网套接字区间中的每个内网套接字以及所述第一穿透数据包,通知所述第一网络地址转换器构建所述第一外网套接字区间。
5.根据权利要求4所述的方法,其特征在于,所述第一终端构建内网套接字区间,包括:
所述第一终端根据所述第二内网套接字,逐一生成用于发送所述第一穿透数据包的内网套接字,将所生成的内网套接字添加至待确定内网套接字区间;
当所述待确定内网套接字区间内的内网套接字数量等于所述预测套接字数量时,所述第一终端将所述待确定内网套接字区间确定为所述内网套接字区间。
6.根据权利要求4所述的方法,其特征在于,所述内网套接字区间包括至少两个内网套接字;
所述第一终端根据所述内网套接字区间中的每个内网套接字以及所述第一穿透数据包,通知所述第一网络地址转换器构建所述第一外网套接字区间,包括:
所述第一终端通过所述至少两个内网套接字,分别发送所述第一穿透数据包至所述第一网络地址转换器,以使所述第一网络地址转换器根据所述第一穿透数据包为每个内网套接字分别生成对应的外网套接字;
所述第一终端根据所述每个内网套接字分别对应的外网套接字,生成所述第一外网套接字区间;所述第一外网套接字区间中的外网套接字数量等于所述预测套接字数量。
7.一种数据传输方法,其特征在于,所述方法包括:
决策服务器获取数据传输请求;所述数据传输请求表征第一终端与第二终端进行数据传输;
所述决策服务器根据所述数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字;
所述决策服务器将所述第一预测套接字数量以及所述第二穿透外网套接字发送至所述第一终端,以使所述第一终端根据所述第一预测套接字数量确定第一外网套接字区间,并通过所述第一外网套接字区间中每个外网套接字发送第一穿透数据包到所述第二穿透外网套接字;
所述决策服务器将所述第二预测套接字数量以及所述第一穿透外网套接字发送至所述第二终端,以使所述第二终端根据所述第二预测套接字数量确定第二外网套接字区间,并通过所述第二外网套接字区间中每个外网套接字发送第二穿透数据包到所述第一穿透外网套接字;
当所述第一外网套接字区间中存在接收到所述第二穿透数据包的所述第一穿透外网套接字,且所述第二外网套接字区间中存在接收到所述第一穿透数据包的所述第二穿透外网套接字时,所述决策服务器通过所述第一穿透外网套接字与所述第二穿透外网套接字,创建所述第一终端与所述第二终端之间的数据传输信道。
8.根据权利要求7所述的方法,其特征在于,所述根据所述数据传输请求,所述决策服务器确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字,包括:
所述决策服务器根据所述数据传输请求,获取网络地址转换器的网络地址转换流量;
所述决策服务器根据所述网络地址转换器的网络地址转换流量,确定所述第一预测套接字数量以及所述第二预测套接字数量;
所述决策服务器根据所述第一预测外网套接字数量,确定所述第一穿透外网套接字;
所述决策服务器根据所述第二预测外网套接字数量,确定所述第二穿透外网套接字。
9.根据权利要求8所述的方法,其特征在于,所述决策服务器根据所述数据传输请求,获取网络地址转换器的网络地址转换流量,包括:
所述决策服务器根据所述数据传输请求,获取所述网络地址转换器在历史周期内的网络地址转换记录;
所述决策服务器根据所述网络地址转换记录,确定所述网络地址转换器的网络地址转换流量。
10.根据权利要求8所述的方法,其特征在于,所述网络地址转换器包括第一网络地址转换器以及第二网络地址转换器;
所述决策服务器根据所述网络地址转换器的网络地址转换流量,确定所述第一预测套接字数量以及所述第二预测套接字数量,包括:
所述决策服务器获取所述第一网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第一网络地址转换流量范围,将所述第一网络地址转换流量范围所映射的预测套接字数量,确定为所述第一预测套接字数量;所述第一网络地址转换器用于将所述第一终端的内网套接字转换为外网套接字;
所述决策服务器获取所述第二网络地址转换器的网络地址转换流量所处于的网络地址转换流量范围,作为第二网络地址转换流量范围,将所述第二网络地址转换流量范围所映射的预测套接字数量,确定为所述第二预测套接字数量;所述第二网络地址转换器用于将所述第二终端的内网套接字转换为外网套接字。
11.根据权利要求7所述的方法,其特征在于,所述网络地址转换器包括第一网络地址转换器以及第二网络地址转换器;
所述方法还包括:
所述决策服务器根据所述数据传输请求,发送穿透服务器对应的外网套接字至所述第一终端,以使所述第一终端获取所述第一网络地址转换器的第一网络地址转换类型;
所述决策服务器根据所述数据传输请求,发送所述穿透服务器对应的外网套接字至所述第二终端,以使所述第二终端获取所述第二网络地址转换器的第二网络地址转换类型;
所述决策服务器接收所述第一终端发送的所述第一网络地址转换类型,接收所述第二终端发送的所述第二网络地址转换类型;
当所述第一网络地址转换类型和所述第二网络地址转换类型均为对称网络地址转换类型时,所述决策服务器执行所述决策服务器根据所述数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字的步骤。
12.一种数据传输装置,其特征在于,所述装置包括:
生成请求模块,用于生成数据传输请求;所述数据传输请求用于请求与第二终端进行数据传输;
获取套接字模块,用于根据所述数据传输请求,获取预测套接字数量以及所述第二终端的第二穿透外网套接字;
构建外网区间模块,用于通知第一网络地址转换器构建与所述预测套接字数量对应的第一外网套接字区间,通过所述第一外网套接字区间中的每个外网套接字,向所述第二穿透外网套接字发送第一穿透数据包;
数据传输模块,用于当所述第一外网套接字区间中存在第一穿透外网套接字时,通过所述第一穿透外网套接字与所述第二穿透外网套接字,与所述第二终端进行数据传输;所述第一穿透外网套接字为已发送所述第一穿透数据包,且已接收到基于所述第二穿透外网套接字所发送的第二穿透数据包的套接字。
13.一种数据传输装置,其特征在于,所述装置包括:
获取请求模块,用于获取数据传输请求;所述数据传输请求表征第一终端与第二终端进行数据传输;
确定套接字模块,用于根据所述数据传输请求,确定第一预测套接字数量、第一穿透外网套接字、第二预测套接字数量以及第二穿透外网套接字;
第一发送套接字模块,用于将所述第一预测套接字数量以及所述第二穿透外网套接字发送至所述第一终端,以使所述第一终端根据所述第一预测套接字数量确定第一外网套接字区间,并通过所述第一外网套接字区间中每个外网套接字发送第一穿透数据包到所述第二穿透外网套接字;
所述第一发送套接字模块,还用于将所述第二预测套接字数量以及所述第一穿透外网套接字发送至所述第二终端,以使所述第二终端根据所述第二预测套接字数量确定第二外网套接字区间,并通过所述第二外网套接字区间中每个外网套接字发送第二穿透数据包到所述第一穿透外网套接字;
创建传输信道模块,用于当所述第一外网套接字区间中存在接收到所述第二穿透数据包的所述第一穿透外网套接字,且所述第二外网套接字区间中存在接收到所述第一穿透数据包的所述第二穿透外网套接字时,通过所述第一穿透外网套接字与所述第二穿透外网套接字,创建所述第一终端与所述第二终端之间的数据传输信道。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1至11中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执权利要求1至11中任一项所述方法的步骤。
CN202010125792.0A 2020-02-27 2020-02-27 一种数据传输方法、装置、设备以及可读存储介质 Active CN111314481B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010125792.0A CN111314481B (zh) 2020-02-27 2020-02-27 一种数据传输方法、装置、设备以及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010125792.0A CN111314481B (zh) 2020-02-27 2020-02-27 一种数据传输方法、装置、设备以及可读存储介质

Publications (2)

Publication Number Publication Date
CN111314481A true CN111314481A (zh) 2020-06-19
CN111314481B CN111314481B (zh) 2021-08-24

Family

ID=71162007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010125792.0A Active CN111314481B (zh) 2020-02-27 2020-02-27 一种数据传输方法、装置、设备以及可读存储介质

Country Status (1)

Country Link
CN (1) CN111314481B (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 杭州华橙软件技术有限公司 网络连通性的探测方法及装置、存储介质、电子装置
CN113726901A (zh) * 2021-09-02 2021-11-30 世纪龙信息网络有限责任公司 一种基于ice的p2p通信方法及系统
CN114979305A (zh) * 2022-06-30 2022-08-30 京东方科技集团股份有限公司 一种通信方法、装置、设备、存储介质及程序产品

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025769A (zh) * 2010-09-10 2011-04-20 香港城市大学深圳研究院 一种分布式互联网接入方法
EP2394414A1 (en) * 2009-02-06 2011-12-14 Sagemcom Canada Inc. Scalable nat traversal
CN103024095A (zh) * 2012-11-23 2013-04-03 北京百度网讯科技有限公司 数据中心系统及数据中心提供服务方法
US20130124735A1 (en) * 2011-11-11 2013-05-16 Samsung Electronics Co., Ltd Method and apparatus for provisioning network address translator traversal methods
CN103795819A (zh) * 2014-01-27 2014-05-14 杭州顺浪信息技术有限公司 P2p应用中基于nat的终端间的数据传输方法
CN103957287A (zh) * 2014-04-25 2014-07-30 浙江大学城市学院 一种基于nat穿透适配器的物联网设备p2p连接方法
CN105227692A (zh) * 2015-09-17 2016-01-06 青岛海信电器股份有限公司 一种nat穿越方法及网关设备
CN107580082A (zh) * 2017-09-18 2018-01-12 北京奇艺世纪科技有限公司 一种对称型nat的穿透方法及装置
CN109600449A (zh) * 2018-12-24 2019-04-09 深圳市网心科技有限公司 一种p2p穿透方法、装置、系统及存储介质
CN109688100A (zh) * 2018-09-07 2019-04-26 平安科技(深圳)有限公司 Nat穿透方法、装置、设备及存储介质
CN109831547A (zh) * 2019-03-14 2019-05-31 腾讯科技(深圳)有限公司 Nat穿透方法、装置、设备及存储介质
CN110581903A (zh) * 2019-09-16 2019-12-17 上海享途网络科技有限公司 一种多层内网穿透方法、系统及介质
CN110611692A (zh) * 2018-06-15 2019-12-24 上海宽翼通信科技股份有限公司 一种基于点对点穿越的web访问方法、系统及客户端

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2394414A1 (en) * 2009-02-06 2011-12-14 Sagemcom Canada Inc. Scalable nat traversal
CN102025769A (zh) * 2010-09-10 2011-04-20 香港城市大学深圳研究院 一种分布式互联网接入方法
US20130124735A1 (en) * 2011-11-11 2013-05-16 Samsung Electronics Co., Ltd Method and apparatus for provisioning network address translator traversal methods
CN103024095A (zh) * 2012-11-23 2013-04-03 北京百度网讯科技有限公司 数据中心系统及数据中心提供服务方法
CN103795819A (zh) * 2014-01-27 2014-05-14 杭州顺浪信息技术有限公司 P2p应用中基于nat的终端间的数据传输方法
CN103957287A (zh) * 2014-04-25 2014-07-30 浙江大学城市学院 一种基于nat穿透适配器的物联网设备p2p连接方法
CN105227692A (zh) * 2015-09-17 2016-01-06 青岛海信电器股份有限公司 一种nat穿越方法及网关设备
CN107580082A (zh) * 2017-09-18 2018-01-12 北京奇艺世纪科技有限公司 一种对称型nat的穿透方法及装置
CN110611692A (zh) * 2018-06-15 2019-12-24 上海宽翼通信科技股份有限公司 一种基于点对点穿越的web访问方法、系统及客户端
CN109688100A (zh) * 2018-09-07 2019-04-26 平安科技(深圳)有限公司 Nat穿透方法、装置、设备及存储介质
CN109600449A (zh) * 2018-12-24 2019-04-09 深圳市网心科技有限公司 一种p2p穿透方法、装置、系统及存储介质
CN109831547A (zh) * 2019-03-14 2019-05-31 腾讯科技(深圳)有限公司 Nat穿透方法、装置、设备及存储介质
CN110581903A (zh) * 2019-09-16 2019-12-17 上海享途网络科技有限公司 一种多层内网穿透方法、系统及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
XIAN-HAO ZHANG: "Design and Realization of TCP-Based NAT Traversal in P2P", 《2008 INTERNATIONAL CONFERENCE ON APPERCEIVING COMPUTING AND INTELLIGENCE ANALYSIS》 *
冯金哲,殷海兵: "一种Symmetric NAT穿透的新方法", 《计算机应用与软件》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301183A (zh) * 2021-06-15 2021-08-24 杭州华橙软件技术有限公司 网络连通性的探测方法及装置、存储介质、电子装置
CN113726901A (zh) * 2021-09-02 2021-11-30 世纪龙信息网络有限责任公司 一种基于ice的p2p通信方法及系统
CN114979305A (zh) * 2022-06-30 2022-08-30 京东方科技集团股份有限公司 一种通信方法、装置、设备、存储介质及程序产品
CN114979305B (zh) * 2022-06-30 2024-03-22 京东方科技集团股份有限公司 一种通信方法、装置、设备、存储介质及程序产品

Also Published As

Publication number Publication date
CN111314481B (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
CN111314481B (zh) 一种数据传输方法、装置、设备以及可读存储介质
US7522594B2 (en) Method and apparatus to permit data transmission to traverse firewalls
CN101385315B (zh) 使用本地网络的私用ip地址的通信
US7590758B2 (en) Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
US7328280B2 (en) Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
US8055771B2 (en) Network traversal method for establishing connection between two endpoints and network communication system
EP2148518B1 (en) Packet communication method using node identifier and locator
JP4557803B2 (ja) ネットワークシステム及び通信方法
US20040153858A1 (en) Direct peer-to-peer transmission protocol between two virtual networks
US7558249B2 (en) Communication terminal, and communication method
CN108702394B (zh) 网络端点间的媒体会话
CN102984289A (zh) 用于移动网络设备的nat穿透
JP2011091826A (ja) 互いに異なるipアドレス体系を使用するipネットワークのアプリケーション層ゲートウェイ(alg)、ネットワークアドレス変換装置及びそのsipメッセージルーティング方法
CN102045409B (zh) 网络穿透方法及网络通讯系统
US7701934B2 (en) System and method for managing devices within a private network via a public network
CN104883390A (zh) 一种访问第三方视频监控设备的方法及装置
US7542475B2 (en) Communication between users located behind a NAT device
CN102739815A (zh) 减小视频会议系统网络地址转换穿越的系统时延的方法
US20140337478A1 (en) Peer-to-peer network communications
Siekkinen et al. Beyond the Future Internet--Requirements of Autonomic Networking Architectures to Address Long Term Future Networking Challenges
EP2509284B1 (en) Method and system for allocating local transport address, media gateway and media gateway controller
Jia PFQDN: SDN-and DNS-Assisted Transparent Communications among Behind-NAT Networks
CN108337331B (zh) 网络穿透方法、装置、系统及网络连通性检查方法
JP2006025457A (ja) ネットワーク管理システム
JP4648436B2 (ja) パケット振り分け装置、通信システム、パケット処理方法、及びプログラム

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40024281

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant