CN109194778B - 一种基于kcp协议的nat穿透方法 - Google Patents

一种基于kcp协议的nat穿透方法 Download PDF

Info

Publication number
CN109194778B
CN109194778B CN201811059853.7A CN201811059853A CN109194778B CN 109194778 B CN109194778 B CN 109194778B CN 201811059853 A CN201811059853 A CN 201811059853A CN 109194778 B CN109194778 B CN 109194778B
Authority
CN
China
Prior art keywords
nat
successful
penetration
protocol
connection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811059853.7A
Other languages
English (en)
Other versions
CN109194778A (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.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN201811059853.7A priority Critical patent/CN109194778B/zh
Publication of CN109194778A publication Critical patent/CN109194778A/zh
Application granted granted Critical
Publication of CN109194778B publication Critical patent/CN109194778B/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
    • 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/164Adaptation or special uses of UDP protocol
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Abstract

本发明公开了一种基于KCP协议的NAT穿透方法,首先P2P网络中的节点需要向一个位于公网的辅助NAT穿透的服务节点进行NAT信息注册,然后当节点需要连接另一个使用TCP协议无法连接的节点时,先把NAT穿透请求发给服务节点,服务节点根据两个节点的NAT信息给双方返回对方的网络地址和NAT穿透策略。双方节点根据收到的信息执行NAT穿透逻辑,即先用UDP协议进行NAT穿透,如果穿透成功则使用KCP协议进行连接,否则,此次NAT穿透失败。本发明解决了使用TCP进行NAT穿透难度大的问题,使用UDP进行NAT穿透提高成功率,同时使用KCP协议作为传输层协议从一定程度上解决了UDP协议传输不可靠的问题。

Description

一种基于KCP协议的NAT穿透方法
技术领域
本发明涉及NAT类型探测技术、UDP穿透领域,尤其涉及一种基于KCP协议的NAT穿透方法。
背景技术
NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force,Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。NAT可以让那些使用私有地址的内部网络连接到Internet或其它IP网络上。
传统的穿透方法有基于TCP穿透和基于UDP穿透的方法,这两者都有一定程度上的缺陷;其中,基于TCP的穿透方法有TCP协议基于连接的模式导致成功率不高的问题,而基于UDP协议的穿透方法虽然成功率高,但是存在UDP协议不可靠的问题。
KCP是一个快速可靠协议,它主要的设计目的是为了解决在网络拥堵的情况下TCP协议网络速度慢的问题,增大网络传输速率,但相当于TCP而言,会相应的牺牲一部分带宽。KCP没有规定下层传输协议,一般用UDP作为下层传输协议。
在使用UDP协议进行NAT穿透成功的前提下,使用KCP协议进行连接的方案相比于TCP穿透方案的成功率要高上不少,相比于UDP穿透方案可靠性也得到一定的保障。
发明内容
针对TCP进行NAT穿透难度大和UDP穿透可靠性不高的技术问题,本发明提供一种基于KCP协议的NAT穿透方法,能够保障更高的NAT穿透成功率和不错的可靠性,具体技术方案如下:
一种基于KCP协议的NAT穿透方法,其特征在于,该方法中需要得到NAT穿透协助的客户端为C1,C1想要连接的客户端为C2,该方法具体包括如下步骤:
S1:C1向服务端发起NAT穿透C2的请求;
S2:服务端根据客户端C1的情况作出如下回复:
(1)如果C2不存在,则服务端向C1回复C2不存在的消息,C1结束本次NAT穿透;
(2)如果C2存在,且C1是公网节点,服务端则通知C2去反连C1,C1持续一段时间等待对方的连接,如果连接成功,此次穿透成功;否则,穿透失败;
(3)如果C2存在,且C1不是公网节点,且C2不是对称型NAT,则服务端通知C1进行NAT穿透,连接C2,C1首先判断C2是否存在UPNP端口,如果存在,则C1先使用C2的UPNP端口进行TCP连接,如果连接成功,则此次穿透成功,否则,C1使用UDP协议进行NAT穿透,如果穿透失败,则此次穿透失败;如果穿透成功,则使用KCP协议进行连接,如果连接成功,则此次穿透成功,否则穿透失败;
(4)如果C2存在且是对称型NAT,但C1不是公网节点也不是对称型NAT,则服务端通知C1进行NAT穿透,C1使用UDP协议进行NAT穿透,然后持续一段时间等待C2的连接,如果连接成功,那么此次NAT穿透成功,否则失败;
(5)如果都不是上面的情况,则服务端通知C1和C2进行中继服务。
进一步地,所述的客户端C1在启动时通过STUN协议探测自己的NAT类型,并向服务端注册自己的NAT类型,所述的服务端根据这些NAT信息进行策略选择;所述的NAT类型包括对称型、端口限制型、地址限制型和全锥型。
进一步地,所述的客户端C1启动时,向自己的网关设备绑定UPNP端口。
进一步地,如果存在客户端C2不存在或者没有注册的情况,则由服务端连接上该客户端C2并通知它进行注册。
进一步地,所述的步骤(5)中,如果C2存在UPNP端口,那么C1需要尝试使用该UPNP端口去连接C2,如果连接成功,那么此次NAT穿透成功,否则还需C1判断自己有没有UPNP端口,如果没有,那么此次NAT穿透失败,否则,C1需要等待C2的连接,如果连接成功,那么此次NAT穿透成功,否则失败。
本发明的有益效果如下:
本发明基于KCP协议的NAT穿透方法相比于基于TCP的穿透方法,成功率得到一定程度的提高;而相比于基于UDP的穿透方法,可靠性又得到了一定程度的保障。
附图说明
图1为本发明的基于KCP协议的NAT穿透方法的流程图。
具体实施方式
下面根据附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明显。
如图1所示,本发明的基于KCP协议的NAT穿透方法,该方法中需要得到NAT穿透协助的客户端为C1,C1想要连接的客户端为C2,该方法具体包括如下步骤:
S1:C1向服务端发起NAT穿透C2的请求;
S2:服务端根据客户端C1的情况作出如下回复:
(1)如果C2不存在,则服务端向C1回复C2不存在的消息,C1结束本次NAT穿透;
(2)如果C2存在,且C1是公网节点,服务端则通知C2去反连C1,C1持续一段时间等待对方的连接,如果连接成功,此次穿透成功;否则,穿透失败;
(3)如果C2存在,且C1不是公网节点,且C2不是对称型NAT,则服务端通知C1进行NAT穿透,连接C2,C1首先判断C2是否存在UPNP端口,如果存在,则C1先使用C2的UPNP端口进行TCP连接,如果连接成功,则此次穿透成功,否则,C1使用UDP协议进行NAT穿透,如果穿透失败,则此次穿透失败;如果穿透成功,则使用KCP协议进行连接,如果连接成功,则此次穿透成功,否则穿透失败;
(4)如果C2存在且是对称型NAT,但C1不是公网节点也不是对称型NAT,则服务端通知C1进行NAT穿透,C1使用UDP协议进行NAT穿透,然后持续一段时间等待C2的连接,如果连接成功,那么此次NAT穿透成功,否则失败;
(5)如果都不是上面的情况,则服务端通知C1和C2进行中继服务。
优选地,所述的客户端C1在启动时通过STUN协议探测自己的NAT类型,并向服务端注册自己的NAT类型,所述的服务端根据这些NAT信息进行策略选择;所述的NAT类型包括对称型、端口限制型、地址限制型和全锥型。
优选地,所述的客户端C1启动时,向自己的网关设备绑定UPNP端口。
优选地,如果存在客户端C2不存在或者没有注册的情况,则由服务端连接上该客户端C2并通知它进行注册。
优选地,所述的步骤(5)中,如果C2存在UPNP端口,那么C1需要尝试使用该UPNP端口去连接C2,如果连接成功,那么此次NAT穿透成功,否则还需C1判断自己有没有UPNP端口,如果没有,那么此次NAT穿透失败,否则,C1需要等待C2的连接,如果连接成功,那么此次NAT穿透成功,否则失败。

Claims (5)

1.一种基于KCP协议的NAT穿透方法,其特征在于,该方法中需要得到NAT穿透协助的客户端为C1,C1想要连接的客户端为C2,该方法具体包括如下步骤:
S1:C1向服务端发起NAT穿透C2的请求;
S2:服务端根据客户端C1的情况作出如下回复:
(1)如果C2不存在,则服务端向C1回复C2不存在的消息,C1结束本次NAT穿透;
(2)如果C2存在,且C1是公网节点,服务端则通知C2去反连C1,C1持续一段时间等待对方的连接,如果连接成功,此次穿透成功;否则,穿透失败;
(3)如果C2存在,且C1不是公网节点,且C2不是对称型NAT,则服务端通知C1进行NAT穿透,连接C2,C1首先判断C2是否存在UPNP端口,如果存在,则C1先使用C2的UPNP端口进行TCP连接,如果连接成功,则此次穿透成功,如果连接失败,C1使用UDP协议进行NAT穿透,如果穿透失败,则此次穿透失败;如果穿透成功,则使用KCP协议进行连接,如果连接成功,则此次穿透成功,否则穿透失败;
(4)如果C2存在且是对称型NAT,但C1不是公网节点也不是对称型NAT,则服务端通知C1进行NAT穿透,C1使用UDP协议进行NAT穿透,然后持续一段时间等待C2的连接,如果连接成功,那么此次NAT穿透成功,否则失败;
(5)如果都不是上面的情况,则服务端通知C1和C2进行中继服务。
2.根据权利要求1所述的基于KCP协议的NAT穿透方法,其特征在于,所述的客户端C1在启动时通过STUN协议探测自己的NAT类型,并向服务端注册自己的NAT类型,所述的服务端根据这些NAT信息进行策略选择;所述的NAT类型包括对称型、端口限制型、地址限制型和全锥型。
3.根据权利要求1所述的基于KCP协议的NAT穿透方法,其特征在于,所述的客户端C1启动时,向自己的网关设备绑定UPNP端口。
4.根据权利要求1所述的基于KCP协议的NAT穿透方法,其特征在于,如果存在客户端C2不存在或者没有注册的情况,则由服务端连接上该客户端C2并通知它进行注册。
5.根据权利要求1所述的基于KCP协议的NAT穿透方法,其特征在于,所述的步骤S2的情况(3)中,如果C2存在UPNP端口,那么C1需要尝试使用该UPNP端口去连接C2,如果连接成功,那么此次NAT穿透成功,否则还需C1判断自己有没有UPNP端口,如果没有,那么此次NAT穿透失败,否则,C1需要等待C2的连接,如果连接成功,那么此次NAT穿透成功,否则失败。
CN201811059853.7A 2018-09-12 2018-09-12 一种基于kcp协议的nat穿透方法 Active CN109194778B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811059853.7A CN109194778B (zh) 2018-09-12 2018-09-12 一种基于kcp协议的nat穿透方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811059853.7A CN109194778B (zh) 2018-09-12 2018-09-12 一种基于kcp协议的nat穿透方法

Publications (2)

Publication Number Publication Date
CN109194778A CN109194778A (zh) 2019-01-11
CN109194778B true CN109194778B (zh) 2021-11-05

Family

ID=64910308

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811059853.7A Active CN109194778B (zh) 2018-09-12 2018-09-12 一种基于kcp协议的nat穿透方法

Country Status (1)

Country Link
CN (1) CN109194778B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112019641B (zh) * 2020-10-19 2021-01-15 腾讯科技(深圳)有限公司 数据传输方法和装置
CN112769799B (zh) * 2020-12-30 2023-04-07 北京安博通科技股份有限公司 一种集控设备及其内网穿透方法、存储介质
CN112954406B (zh) * 2021-05-17 2021-07-30 腾讯科技(深圳)有限公司 数据下载方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101431511A (zh) * 2007-11-09 2009-05-13 友讯科技股份有限公司 一种穿透防火墙在网络终端装置间建立联机信道的方法
CN101977249A (zh) * 2010-10-27 2011-02-16 北京易视腾科技有限公司 穿透nat设备的方法
CN102340520A (zh) * 2010-07-20 2012-02-01 上海未来宽带技术及应用工程研究中心有限公司 一种p2p网络应用系统中私网检测与穿越的复合方法
CN106210092A (zh) * 2016-07-19 2016-12-07 天彩电子(深圳)有限公司 一种融合upnp及stun的p2p穿越方法及其系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101431511A (zh) * 2007-11-09 2009-05-13 友讯科技股份有限公司 一种穿透防火墙在网络终端装置间建立联机信道的方法
CN102340520A (zh) * 2010-07-20 2012-02-01 上海未来宽带技术及应用工程研究中心有限公司 一种p2p网络应用系统中私网检测与穿越的复合方法
CN101977249A (zh) * 2010-10-27 2011-02-16 北京易视腾科技有限公司 穿透nat设备的方法
CN106210092A (zh) * 2016-07-19 2016-12-07 天彩电子(深圳)有限公司 一种融合upnp及stun的p2p穿越方法及其系统

Also Published As

Publication number Publication date
CN109194778A (zh) 2019-01-11

Similar Documents

Publication Publication Date Title
Guha et al. NAT Behavioral requirements for TCP
US7227864B2 (en) Methods and systems for establishing communications through firewalls and network address translators
US8572172B2 (en) NAT traversal for media conferencing
US8611354B2 (en) Method and apparatus for relaying packets
US7483437B1 (en) Method of communicating packet multimedia to restricted endpoints
JP4349766B2 (ja) アドレス変換装置
US8923310B2 (en) Protocol and system for firewall and NAT traversal for TCP connections
US8560607B2 (en) Method based on the combination of the UPnP and STUN for NAT traversal
CN109194778B (zh) 一种基于kcp协议的nat穿透方法
WO2006089481A1 (fr) Méthode de contrôle de communication de pénétration directe dont deux parties sont dans différents nat et dispositif correspondant
US10375175B2 (en) Method and apparatus for terminal application accessing NAS
Phuoc et al. NAT traversal techniques in peer-to-peer networks
WO2011044810A1 (zh) 实现多方通信的方法、装置及系统
JP3928664B2 (ja) アドレス変換装置、メッセージ処理方法および装置
Seemann et al. Decentralized Hole Punching
EP1916816A1 (en) Method and devices to establish a public communication session
Ata et al. Architectural design of unified multiplex communications for one-time use of IP addresses
Duarte Jr et al. Transparent communications for applications behind NAT/firewall over any transport protocol
JP4350029B2 (ja) アドレス変換システム
Lin et al. TT-STUN protocol design for effective TCP NAT traversal
JP3928663B2 (ja) アドレス変換装置、メッセージ処理方法および装置
JP4350030B2 (ja) アドレス変換方法
JP3928662B2 (ja) アドレス変換装置、メッセージ処理方法および装置
Topal et al. Enabling peer-to-peer communication for hosts in private address realms using IPv4 LSRR option and IPv4+ 4 addresses
Zhang Design and realization of TCP-based NAT TRAVERSAL in P2P

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant