CN102231763B - 一种基于nat穿透的共享方法 - Google Patents
一种基于nat穿透的共享方法 Download PDFInfo
- Publication number
- CN102231763B CN102231763B CN201110166617.7A CN201110166617A CN102231763B CN 102231763 B CN102231763 B CN 102231763B CN 201110166617 A CN201110166617 A CN 201110166617A CN 102231763 B CN102231763 B CN 102231763B
- Authority
- CN
- China
- Prior art keywords
- customer end
- port
- server
- nat
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及计算机网络领域,提供了一种基于NAT穿透的共享方法,通过建立基于TCP协议的隧道,使得分别位于不同私网中的两个客户端可以穿透各自的NAT设备,而进行稳定可靠的数据传输。本发明的方法不仅可以很灵活地实现不同网络间的数据收发,实现不同网段间的通信,更进一步地还可支持不同私网用户之间安全可靠地共享应用。
Description
技术领域
本发明涉及计算机网络领域,特别涉及一种基于NAT穿透的共享方法。
背景技术
随着Internet的普及和网络设备的飞速发展,接入互联网的用户和设备正在呈几何级数地增长着,然而依照现行的IPv4协议,每个Internet的主机都有一个唯一的IP地址,IP地址用一个32位二进制的数来表示。由于32位的二进制数仅仅是十亿级别的数值,随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地址。在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用户的需求。
与此同时,虽然下一代互联网协议IPv6已经被讨论制定,但由于新的协议需要众多的设备厂商的支持,同时需要对现有的基础网络设施进行大规模地升级或换代,所需的时间和成本都难以估量,因而短期内也无法大规模地实施。
于是,目前的互联网企业普遍采用网络地址转换(NAT,NetworkAddress Translation)方式来解决这一问题,网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT设备允许处于同一NAT后的多台主机共享一个公网(处于同一NAT后的网络称为私网,处于NAT前的网络称为公网)IP地址。一个私网IP地址通过NAT设备与公网的其他主机通信。NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
一个通常的基于NAT技术的公网和私网IP地址域构成如图1所示,一般来说都是由私网内主机,如图1中的设备A-01,主动发起连接,数据包经过NAT地址转换后送给公网上的服务器Server,连接建立以后可双向传送数据。NAT设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,使得一些特殊场合需要不同私网内的主机进行互联的活动(例如P2P软件、网络会议、视频传输等)无法进行,这明显制约了互联网应用的发展。
尽管通常使用UDP协议就能够穿透NAT,但是UDP数据虽然速度快,却没有保障,而且NAT为UDP准备的临时端口号有生命周期的限制,使用起来不够方便。在需要保证传输质量的应用上(如文件传输等)TCP连接还是首选,基于TCP协议的众多网络应用,尤其是不同私网内主机之间的共享应用无法在NAT环境中实施,极大地影响了互联网企业中的用户使用。因而目前,TCP穿透NAT的问题亟待解决。
发明内容
(一)要解决的技术问题
针对现有技术的缺点,本发明为了解决基于TCP协议穿透NAT进行共享应用的问题,通过互联网中服务器主机的协助,在两不同私网中的客户端之间建立直接的TCP连接,使得不同私网内客户端的共享应用可以穿透NAT进行实施。
(二)技术方案
为此解决上述技术问题,本发明具体地采用如下技术方案进行:
首先,本发明提供一种基于NAT穿透的共享方法,私网中客户端A通过NAT路由器NAT-A与公网上服务器S通信,另一私网中客户端B通过NAT路由器NAT-B与服务器S通信,所述方法包括步骤:
S1,服务器S开启两个网络端口,主连接端口和隧道协助端口;
S2,客户端A和客户端B分别与服务器S的主连接端口保持联系;
S3,当客户端A需要和客户端B建立直接的TCP连接时,首先连接服务器S的隧道协助端口,并发送协助连接请求,同时在该端口上启动监听;
S4,服务器S的隧道协助端口接收到客户端A的连接请求后通过主连接端口通知客户端B,并将客户端A经过路由器NAT-A转换后的公网IP地址和端口信息告诉客户端B;
S5,客户端B收到服务器S的通知后首先与服务器S的隧道协助端口连接,发送一些随机数据后立即断开;
S6,客户端B尝试与客户端A经过路由器NAT-A转换后的公网IP地址和端口进行连接;
S7,客户端B建立隧道的同时在相同的端口上启动监听,客户端B在一切准备就绪以后向服务器S的主连接端口回复“准备就绪”消息,服务器S在收到该消息后将客户端B经过路由器NAT-B转换后的公网IP和端口号告诉给A;
S8,客户端A收到服务器S回复的客户端B的公网IP和端口号等信息以后,开始连接到客户端B的公网IP和端口号,在客户端A和客户端B之间建立起直接的TCP连接;
S9,基于所述直接的TCP连接在客户端A和客户端B之间进行共享应用。
优选地,步骤S9中,所述共享应用为共享桌面,具体包括步骤:
客户端A发送共享桌面请求,客户端B接收;
客户端A将压缩的桌面字节流通过TCP连接实时发送;
客户端B接收并显示。
优选地,步骤S9中,所述共享应用为共享画板,具体包括步骤:
客户端A发送共享画板请求,客户端B接收;
客户端A和客户端B各自显示一个画板,用来进行操作;
任意一方在画板的变化通过TCP连接发送到对方的画板上,实时进行显示。
(三)有益效果
本发明通过利用公网上的服务器协助在不同私网中的两个客户端之间建立基于TCP协议的隧道,使得客户端可以穿透各自的NAT设备,而进行稳定可靠的数据传输。
附图说明
图1为现有技术中常见的基于NAT技术的组网方式示意图;
图2为本发明中基于TCP协议穿透NAT的示意图;
图3为本发明中基于TCP协议穿透NAT进行共享的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,参见图2,服务器S在公网上有一个IP,两个私网分别通过NAT路由器NAT-A和NAT-B连接到公网,NAT-A后面的私网中有一台客户端A,NAT-B后面的私网中有一台客户端B,现在,我们需要借助服务器S在客户端A和客户端B之间建立直接的TCP连接,即由客户端B向客户端A建立一个隧道,让客户端A可以沿这个隧道直接连接到客户端B,就好像路由器NAT-B不存在一样。其方法具体的流程图如图3所示:
S1,服务器S开启两个网络端口,主连接端口和隧道协助端口。
S2,客户端A和客户端B分别与服务器S的主连接端口保持联系。
S3,当客户端A需要和客户端B建立直接的TCP连接时,首先连接服务器S的隧道协助端口,并发送协助连接请求,同时在该端口上启动监听;注意由于要在相同的网络终端上绑定到不同的套接字上,所以必须为这些套接字设置SO_REUSEADDR属性(即允许重用),否则监听会失败。
S4,服务器S的隧道协助端口接收到客户端A的连接请求后通过主连接端口通知客户端B,并将客户端A经过路由器NAT-A转换后的公网IP地址和端口等信息告诉客户端B。
S5,客户端B收到服务器S的通知后首先与服务器S的隧道协助端口连接,发送一些随机数据后立即断开,使服务器S获知客户端B经过路由器NAT-B转换后的公网IP和端口号。
S6,客户端B尝试与客户端A经过路由器NAT-A转换后的公网IP地址和端口进行连接;此步骤根据不同的路由器会有不同的结果,某些路由器(如TP-Link R402)在此步骤能够建立连接,但绝大多数路由器会直接丢弃这类并非由自身网络内部首先发起的SYN请求包,进而导致客户端B此次尝试连接失败;但路由器NAT-A会记录此次连接的源地址和端口号,这为接下来真正的连接做好了准备,这就是所谓的隧道,即由客户端B向客户端A打通了一个隧道,下次客户端A就能直接连接到客户端B刚才使用的IP地址和端口号。
S7,客户端B建立隧道的同时在相同的端口上启动监听,客户端B在一切准备就绪以后向服务器S的主连接端口回复“准备就绪”(I’m Ready)消息,服务器S在收到该消息后将客户端B经过路由器NAT-B转换后的公网IP和端口号告诉给A。
S8,客户端A收到服务器S回复的客户端B的公网IP和端口号等信息以后,开始连接到客户端B的公网IP和端口号,由于在步骤S6中客户端B曾经尝试连接过客户端A的公网IP地址和端口,且路由器NAT-A已记录了此次连接的信息,所以当客户端A主动连接客户端B时,路由器NAT-B会认为是合法的SYN数据,并允许通过,从而在客户端A和客户端B之间建立起了直接的TCP连接。
S9,基于所述直接的TCP连接在客户端A和客户端B之间进行共享应用。
更进一步地,通过已经建立的TCP的连接,可以利用此隧道来传输具体的数据或文件,实现客户端A和客户端B之间的共享应用。客户端A和客户端B之间共享桌面(通过此功能不同用户可以查看对方的电脑桌面,观察对方的操作)的实现方法为:
1)首先客户端A和客户端B之间建立连接;
2)客户端A发送共享桌面请求,客户端B接收;
3)客户端A将压缩的桌面字节流通过TCP连接实时发送;
4)客户端B接收并显示。
客户端A和客户端B之间共享画板(通过此功能不同客户端可以实时协作绘画,增强客户端之间的互动性)的实现方法为:
1)首先客户端A和客户端B之间建立连接;
2)客户端A发送共享画板请求,客户端B接收;
3)客户端A和客户端B都会显示一个画板,用来进行操作;
4)任意一方在画板的变化都会及时通过TCP连接发送到对方的画板上,达到双方的操作互动性。
本发明通过上述方案可以很灵活地实现不同网络间的数据发送,使得客户可以不仅与在同一网段的客户通信,也可实现不同网段间的通信,使用TCP协议增强了数据发送的可靠性,稳定性。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的发明保护范围应由权利要求限定。
Claims (3)
1.一种基于NAT穿透的共享方法,私网中客户端A通过NAT路由器NAT-A与公网上服务器S通信,另一私网中客户端B通过NAT路由器NAT-B与服务器S通信,其特征在于,所述方法包括步骤:
S1,服务器S开启两个网络端口,主连接端口和隧道协助端口;
S2,客户端A和客户端B分别与服务器S的主连接端口保持联系;
S3,当客户端A需要和客户端B建立直接的TCP连接时,首先连接服务器S的隧道协助端口,并发送协助连接请求,同时在该端口上启动监听;
S4,服务器S的隧道协助端口接收到客户端A的连接请求后通过主连接端口通知客户端B,并将客户端A经过路由器NAT-A转换后的公网IP地址和端口信息告诉客户端B;
S5,客户端B收到服务器S的通知后首先与服务器S的隧道协助端口连接,发送一些随机数据后立即断开;
S6,客户端B尝试与客户端A经过路由器NAT-A转换后的公网IP地址和端口进行连接;
S7,客户端B建立隧道的同时在相同的端口上启动监听,客户端B在一切准备就绪以后向服务器S的主连接端口回复“准备就绪”消息,服务器S在收到该消息后将客户端B经过路由器NAT-B转换后的公网IP和端口号告诉给A;
S8,客户端A收到服务器S回复的客户端B的公网IP和端口号以后,开始连接到客户端B的公网IP和端口号,在客户端A和客户端B之间建立起直接的TCP连接;
S9,基于所述直接的TCP连接在客户端A和客户端B之间进行共享应用,所述共享应用为共享桌面或共享画板。
2.根据权利要求1所述的方法,其特征在于,步骤S9中,所述共享应用为共享桌面,具体包括步骤:
客户端A发送共享桌面请求,客户端B接收;
客户端A将压缩的桌面字节流通过TCP连接实时发送;
客户端B接收并显示。
3.根据权利要求1所述的方法,其特征在于,步骤S9中,所述共享应用为共享画板,具体包括步骤:
客户端A发送共享画板请求,客户端B接收;
客户端A和客户端B各自显示一个画板,用来进行操作;
任意一方在画板的变化通过TCP连接发送到对方的画板上,实时进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110166617.7A CN102231763B (zh) | 2011-06-20 | 2011-06-20 | 一种基于nat穿透的共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110166617.7A CN102231763B (zh) | 2011-06-20 | 2011-06-20 | 一种基于nat穿透的共享方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102231763A CN102231763A (zh) | 2011-11-02 |
CN102231763B true CN102231763B (zh) | 2014-04-09 |
Family
ID=44844295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110166617.7A Active CN102231763B (zh) | 2011-06-20 | 2011-06-20 | 一种基于nat穿透的共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102231763B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103369061B (zh) * | 2012-04-01 | 2016-08-24 | 华为终端有限公司 | 一种穿越两级nat的方法及nat设备 |
CN103457850B (zh) * | 2012-05-29 | 2018-03-20 | 中兴通讯股份有限公司 | 站点的通信方法、rtr及隧道路由器 |
CN103220297B (zh) * | 2013-04-26 | 2015-01-28 | 李达航 | 通过社交网络进行多屏互动的方法 |
CN104427008A (zh) * | 2013-08-28 | 2015-03-18 | 北大方正集团有限公司 | 针对tcp的nat穿越方法、系统、第三方服务器x、以及客户端 |
CN103442305A (zh) * | 2013-09-02 | 2013-12-11 | 西安诺瓦电子科技有限公司 | 插播控制方法和集群式播放控制系统及方法 |
CN104780230A (zh) * | 2014-01-09 | 2015-07-15 | 东莞市微云系统科技有限公司 | 自动获取云服务器ip地址的方法、系统和云系统 |
CN105791338B (zh) * | 2014-12-22 | 2019-10-11 | Tcl集团股份有限公司 | 一种基于WiFi AP的多屏互动方法及系统 |
CN104883307B (zh) * | 2015-06-03 | 2018-05-25 | 上海斐讯数据通信技术有限公司 | 路由器之间进行数据文件共享的系统及方法 |
CN105187366B (zh) * | 2015-06-04 | 2018-07-24 | 中国联合网络通信集团有限公司 | 一种信息获取系统及方法 |
CN106331198B (zh) * | 2015-06-29 | 2020-04-21 | 中兴通讯股份有限公司 | Nat穿透方法及装置 |
CN105100253A (zh) * | 2015-08-05 | 2015-11-25 | 东莞市中控电子技术有限公司 | 一种数据传输的系统以及方法 |
CN105721625A (zh) * | 2016-02-03 | 2016-06-29 | 迈普通信技术股份有限公司 | 一种私网设备间通信的实现方法、私网设备及中心端设备 |
CN105681330A (zh) * | 2016-02-29 | 2016-06-15 | 四川长虹电器股份有限公司 | 远程访问电信内网的方法 |
CN110677291A (zh) * | 2019-09-26 | 2020-01-10 | 广州兰德视讯有限公司 | 多点通信中降低服务器负载及网络带宽的方法及装置 |
CN111405018B (zh) * | 2020-03-10 | 2023-04-07 | 创新奇智(上海)科技有限公司 | 一种文件传输方法、装置、电子设备及存储介质 |
CN112637364B (zh) * | 2021-01-06 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369959A (zh) * | 2007-08-14 | 2009-02-18 | 中兴通讯股份有限公司 | 一种支持点对点业务的网络地址转换穿越方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002071717A2 (en) * | 2000-12-14 | 2002-09-12 | Vocaltec Communications Ltd. | Traversing firewalls and nats |
CN100550882C (zh) * | 2004-03-02 | 2009-10-14 | 华为技术有限公司 | 一种穿越子网的方法及子网穿越系统 |
CN1855924A (zh) * | 2005-04-27 | 2006-11-01 | 华为技术有限公司 | 网络层安全报文穿越地址变换设备的方法 |
-
2011
- 2011-06-20 CN CN201110166617.7A patent/CN102231763B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369959A (zh) * | 2007-08-14 | 2009-02-18 | 中兴通讯股份有限公司 | 一种支持点对点业务的网络地址转换穿越方法 |
Non-Patent Citations (2)
Title |
---|
云亮.基于对等网的NAT穿透技术的研究和实现.《中国优秀硕士学位论文全文数据库 信息科技辑》.2009,(第05期),正文第1页,第32-33页,第36-37页. |
基于对等网的NAT穿透技术的研究和实现;云亮;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090515(第05期);正文第1页,第32-33页,第36-37页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102231763A (zh) | 2011-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102231763B (zh) | 一种基于nat穿透的共享方法 | |
US10305856B2 (en) | System and method for logging communications | |
CN105376299B (zh) | 一种网络通信方法、设备及网络附属存储设备 | |
CN112637364B (zh) | 建立p2p连接的方法、客户端及系统 | |
US20130290561A1 (en) | Method and device for providing user information to cgn device | |
CN101217482A (zh) | 一种穿越nat下发策略的方法和一种通信装置 | |
CN102845123A (zh) | 虚拟私云的连接方法及隧道代理服务器 | |
CN101110847A (zh) | 一种获取介质访问控制地址的方法、系统及装置 | |
CN101895590A (zh) | 基于udt实现nat穿越的系统和方法 | |
CN105072213A (zh) | 一种IPSec NAT双向穿越方法、系统及VPN网关 | |
CN1917512B (zh) | 一种建立对等直连通道的方法 | |
CN111800341B (zh) | 一种跨路由器终端通信方法及装置 | |
CN111131448B (zh) | ADSL Nat的运维管理的边缘管理方法、边缘端代理设备及计算机可读存储介质 | |
CN112073244A (zh) | 基于tr069协议的消息处理方法及系统 | |
CN102035655A (zh) | 端到端即时通讯的实现方法、端到端即时通讯终端及系统 | |
CN102647432A (zh) | 一种认证信息传输方法、装置及认证中间件 | |
CN102447703B (zh) | 一种热备份方法和系统、cgn设备 | |
CN108833433A (zh) | 一种依据nat穿透的共享方法 | |
CN101170502B (zh) | 一种实现堆叠成员间互访的方法及系统 | |
CN103220203B (zh) | 一种实现网络设备间多IPsec隧道建立的方法 | |
CN105391585B (zh) | 一种分布式的Tor链路拓扑发现方法 | |
CN110620783A (zh) | 一种基于nat内网穿透的互联网络串口透传通信方法 | |
CN105516377A (zh) | 一种IPv6地址管理方法、装置和终端 | |
CN103516795A (zh) | 分布式网络连通性改善方法以及使用该方法的分布式网络 | |
CN103209122B (zh) | 一种路由管理模块与协议子系统的信息交互方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |