CN108833433A - 一种依据nat穿透的共享方法 - Google Patents
一种依据nat穿透的共享方法 Download PDFInfo
- Publication number
- CN108833433A CN108833433A CN201810704838.7A CN201810704838A CN108833433A CN 108833433 A CN108833433 A CN 108833433A CN 201810704838 A CN201810704838 A CN 201810704838A CN 108833433 A CN108833433 A CN 108833433A
- Authority
- CN
- China
- Prior art keywords
- customer end
- port
- server
- nat
- tunnel
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2592—Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
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
本发明涉及计算机网络领域,提供了一种依据NAT穿透的共享方法,通过建立基于TCP协议的隧道,使得分别位于不同私网中的两个客户端可以穿透各自的NAT设备,而进行稳定可靠的数据传输。本发明的方法不仅可以很灵活地实现不同网络间的数据收发,实现不同网段间的通信,更进一步地还可支持不同私网用户之间安全可靠地共享应用。
Description
技术领域
本发明涉及计算机网络领域,特别涉及一种依据NAT穿透的共享方法。
背景技术
随着Internet的普及和网络设备的飞速发展,接入互联网的用户和 设备正在呈几何级数地增长着,然而依照现行的IPv4协议,每个 Internet的主机都有一个唯一的IP地址,IP地址用一个32位二进制的数 来表示。由于32位的二进制数仅仅是十亿级别的数值,随着接入 Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见 肘。事实上,除了中国教育和科研计算机网(CERNET)外,一般用户 几乎申请不到整段的C类IP地址。在其他ISP那里,即使是拥有几百台 计算机的大型局域网用户,当申请IP地址时,所分配的地址也不过只 有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用 户的需求。
与此同时,虽然下一代互联网协议IPv6已经被讨论制定,但由于 新的协议需要众多的设备厂商的支持,同时需要对现有的基础网络设 施进行大规模地升级或换代,所需的时间和成本都难以估量,因而短 期内也无法大规模地实施。
于是,目前的互联网企业普遍采用网络地址转换(NAT,Network AddressTranslation)方式来解决这一问题,网络地址转换属接入广域 网(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的问题亟待解决。
发明内容
(一)要解决的技术问题
针对现有技术的缺点,本发明为了解决一种依据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 (1)
1.一种依据NAT穿透的共享方法,其特征在于,所述方法包括步骤:
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之间进行 共享应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810704838.7A CN108833433A (zh) | 2018-07-01 | 2018-07-01 | 一种依据nat穿透的共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810704838.7A CN108833433A (zh) | 2018-07-01 | 2018-07-01 | 一种依据nat穿透的共享方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108833433A true CN108833433A (zh) | 2018-11-16 |
Family
ID=64134189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810704838.7A Withdrawn CN108833433A (zh) | 2018-07-01 | 2018-07-01 | 一种依据nat穿透的共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108833433A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113824803A (zh) * | 2021-11-24 | 2021-12-21 | 飞狐信息技术(天津)有限公司 | 一种多媒体文件共享的方法及相关装置 |
-
2018
- 2018-07-01 CN CN201810704838.7A patent/CN108833433A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113824803A (zh) * | 2021-11-24 | 2021-12-21 | 飞狐信息技术(天津)有限公司 | 一种多媒体文件共享的方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102231763B (zh) | 一种基于nat穿透的共享方法 | |
CN105376299B (zh) | 一种网络通信方法、设备及网络附属存储设备 | |
CN103957287A (zh) | 一种基于nat穿透适配器的物联网设备p2p连接方法 | |
CN104427010A (zh) | 应用于动态虚拟专用网络的网络地址转换方法和装置 | |
CN105072213B (zh) | 一种IPSec NAT双向穿越方法、系统及VPN网关 | |
CN102420774B (zh) | 使用igmp实现内网穿透的方法和内网穿透系统 | |
CN102845123A (zh) | 虚拟私云的连接方法及隧道代理服务器 | |
CN101217482A (zh) | 一种穿越nat下发策略的方法和一种通信装置 | |
CN101895590A (zh) | 基于udt实现nat穿越的系统和方法 | |
CN112637364A (zh) | 建立p2p连接的方法、客户端及系统 | |
CN107071079B (zh) | 一种私网终端获取公网ip的方法及系统 | |
CN106331187A (zh) | 一种nat穿透方法、装置及系统 | |
CN111800341B (zh) | 一种跨路由器终端通信方法及装置 | |
CN102647432A (zh) | 一种认证信息传输方法、装置及认证中间件 | |
WO2015117454A1 (zh) | 一种IPv4与IPv6之间的翻译方法及装置 | |
CN101083594A (zh) | 一种网络设备的管理方法及装置 | |
CN108833433A (zh) | 一种依据nat穿透的共享方法 | |
CN103944760B (zh) | 一种穿越nat的网络管理方法及装置 | |
CN111182071A (zh) | 一种内网穿透与服务发布的方法 | |
CN105516382A (zh) | Ipv4网络与ipv6物联网节点的通信方法及系统 | |
CN101426030A (zh) | 一种获取网络地址的方法和终端 | |
CN110620783B (zh) | 一种基于nat内网穿透的互联网络串口透传通信方法 | |
CN110380947B (zh) | 一种基于p2p技术的二级网络架构和vpn组网方法 | |
CN104104740B (zh) | 一种分散式网络信息的交换方法 | |
CN103516795B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181116 |