CN104660728B - 基于智能家居控制系统的nat穿透方法 - Google Patents
基于智能家居控制系统的nat穿透方法 Download PDFInfo
- Publication number
- CN104660728B CN104660728B CN201510080442.6A CN201510080442A CN104660728B CN 104660728 B CN104660728 B CN 104660728B CN 201510080442 A CN201510080442 A CN 201510080442A CN 104660728 B CN104660728 B CN 104660728B
- Authority
- CN
- China
- Prior art keywords
- server
- client
- party
- port
- party server
- 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.)
- Expired - Fee Related
Links
- 238000011378 penetrating method Methods 0.000 title claims abstract description 11
- 230000004044 response Effects 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 abstract description 4
- 230000000149 penetrating effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000035515 penetration Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004870 electrical engineering Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于智能家居控制系统的NAT穿透方法,包括以下步骤:步骤一,客户端直接连接服务器;步骤二,客户端请求第三方服务器的协助;步骤三,服务器往客户端与第三方服务器连接所用的端口发一个数据包;步骤四,第三方服务器通知客户端;步骤五,服务器收到客户端的数据包后,如果客户端收到第三方服务器回应,第三方服务器将服务器的IP和端口号回复给客户端,客户端则可以记录下收到回复的端口,使用该端口与服务器通讯;如果客户端未收到第三方服务器回应,则认为信息丢失,客户端重新向第三方服务器发送协助请求,从步骤二开始重复进行。本发明穿透成功率高,穿透过程简单。
Description
技术领域
本发明涉及电气工程领域,具体地,涉及一种基于智能家居控制系统的NAT穿透方法。
背景技术
网络地址转换技术(Network Address Translation,NAT)的基本功能是用一个或几个IP地址来实现一个内网中的所有主机和公网中主机的通信,使一个机构内的所有用户通过有限的数个(或一个)合法IP地址访问Internet,不仅可以有效节省Internet中有效IP的数量,也可以提高网络通信的安全性。
智能家居控制系统包括服务器、客户端、第三方服务器与硬件模块等。其中,客户端APP必须与用户的服务器进行网络通信才能对控制相关设备的运行。在服务器端有公网IP或者服务器端与客户端在同一局域网中时,可以顺利地利用网络进行通讯。但是如果服务器端没有公网IP并且与客户端不在同一个局域网中,那么服务器端是不能被客户端直接连接的。要在这种情况下实现通讯,就要实现有效的NAT穿透。然而,随着IPv4地址的枯竭,很多地方的网络运营商选择把大量用户介入到自己的内网中,再通过运营商级NAT让这些用户共享一个或多个公网IP进行上网,因此为了保证家中的智能家居控制系统能在大部分情况下正常工作,就必须解决NAT穿透问题。常规NAT穿透常常有穿透成功率低、穿透过程复杂的问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于智能家居控制系统的NAT穿透方法,其穿透成功率高,穿透过程简单。
根据本发明的一个方面,提供一种基于智能家居控制系统的NAT穿透方法,其特征在于,包括以下步骤:
步骤一,客户端直接连接服务器;若服务器的IP位于公网IP中,则直接连接成功,否则客户端连接失败,则需要继续进行步骤二,借助第三方服务器的协助;
步骤二,客户端请求第三方服务器的协助;
步骤三,服务器往客户端与第三方服务器连接所用的端口发一个数据包,然后往客户端的五百个不同端口发各发一个数据包;
步骤四,第三方服务器通知客户端,服务器已向客户端的五百个端口发完数据包,客户端确认收到信息后,向服务器与第三方服务器连接所用的端口发多个数据包;若服务器和客户端都在锥形NAT或者服务器在不限制端口的锥形NAT后,此时连接成功,然后用五百个不同端口往服务器与第三方服务器连接所用的端口发数据包,并向第三方服务器请求服务器的IP与端口号;
步骤五,服务器收到客户端的数据包后,如果客户端收到第三方服务器回应,第三方服务器将服务器的IP和端口号回复给客户端,客户端则记录下收到回复的端口,使用该端口与服务器通讯;如果客户端未收到第三方服务器回应,则认为信息丢失,客户端重新向第三方服务器发送协助请求,从步骤二开始重复进行。
优选地,所述第三方服务器指的是一个有公网IP的用于协助双方进行NAT穿透的服务器,客户端须保证必要时连接第三方服务器的可靠性。
优选地,所述第三方服务器在正常工作的条件下处于开启状态,时刻准备接收客户端与服务器信息;当第三方服务器接收到一条信息后,首先判断这条信息是否是客户端发送的协助请求,若是,则回复客户端已收到协助请求,并将客户端的IP地址和端口号发送给服务器;若判断此条信息不是协助请求,则需进一步判断此条信息是否为服务器发送数据包完成后的信息,若是,则回复服务器已收到该消息,并通知相应的客户端,服务器已向它的五百个端口发完数据包,客户端可以继续进行下一步操作;若不是,则最后判定该信息是否是客户端请求返回服务器IP和端口号的信息,若是,则向客户端发送服务器的IP和端口号,若不是,则判定此信息为无用信息,弃置并重新开始接收消息。
与现有技术相比,本发明具有如下的有益效果:
一,穿透成功率高。经计算,对于服务器端在端口限制锥形NAT,客户端在对称型NAT后的情况能达到97.8%的理论穿透成功率。对于更为容易穿透的情况,服务器和客户端均处在锥形NAT后,或服务器端处在不限制端口的锥形NAT后,穿透成功率可以达到100%。
二,穿透时间短,效率高。客户端与服务器端工作正常、网络条件良好的的情况下,NAT穿透在几十至几百毫秒内即可完成。
三,在最常见的客户端和服务器端均处在同一公网IP的情况下,不需要借助第三方服务器的协助,穿透过程快速、直接、简单且有效,数据传输稳定且基本无延时。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明基于智能家居控制系统的NAT穿透方法的流程图。
图2为是第三方服务器的运行流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
如图1所示,本发明基于智能家居控制系统的NAT穿透方法包括以下步骤:
步骤一,客户端(比如手机客户端)开启后,直接连接服务器,判断是否需要进行NAT穿透。具体来说,若服务器的IP位于公网IP中,则可以直接连接成功,通过公网进行网络通讯,并不需要NAT穿透,否则客户端连接失败,则需要继续进行步骤二,借助第三方服务器的协助。
步骤二,客户端请求第三方服务器的协助。这里的“第三方服务器”指的是一个有公网IP的用于协助双方进行NAT穿透的服务器,客户端须保证必要时连接第三方服务器的可靠性。这里,客户端向第三方服务器发送消息,第三方服务器接收消息后,对客户端进行回应,告知客户端协助信息已收到,并将客户端的IP地址和端口号发送给服务器,以便服务器发送数据包。
步骤三,服务器往客户端与第三方服务器连接所用的端口发一个数据包,然后往客户端的五百个不同端口发各发一个数据包。这样做的目的是为了在服务器的NAT上打洞,它并不需要被客户端收到,所以对每个端口各发一个数据包即可。发送结束后通知第三方服务器发送过程已完成。
步骤四,第三方服务器通知客户端,服务器已向客户端的五百个端口发完数据包,客户端确认收到信息后,向服务器与第三方服务器连接所用的端口发多个数据包;若服务器和客户端都在锥形NAT或者服务器在不限制端口的锥形NAT后,此时连接成功,然后客户端用五百个不同端口向服务器与第三方服务器连接所用的端口发数据包,并向第三方服务器请求服务器的IP与端口号。这是穿透成功最重要的一步,之所以要发几个数据包而不是一个是因为要尽量减少丢包带来的影响。
步骤五,服务器收到客户端的数据包后,如果客户端收到第三方服务器回应,第三方服务器将服务器的IP和端口号回复给客户端,客户端则可以记录下收到回复的端口,使用该端口与服务器通讯;如果客户端在一定时间内未收到第三方服务器回应,则可以认为信息丢失,客户端重新向第三方服务器发送协助请求,从步骤二开始重复进行。
第三方服务器运行流程图如图2所示。第三方服务器在整个系统的运行过程中非常重要,但其逻辑较为简单,只要根据收到的请求进行相应的动作即可,它不需要考虑NAT穿透的进度,而NAT穿透步骤的正确性则主要由客户端保证。在正常工作的条件下,第三方服务器处于开启状态,时刻准备接收客户端与服务器信息;当第三方服务器接收到一条信息后,首先判断这条信息是否是客户端发送的协助请求(当客户端在步骤一中直接连接服务器失败后,向第三方服务器发送协助请求),若是,则回复客户端已收到协助请求,并将客户端的IP地址和端口号发送给服务器;若判断此条信息不是协助请求,则需进一步判断此条信息是否为服务器发送数据包完成后的信息(步骤三中服务器向客户端的五百个不同端口发各发一个数据包),若是,则回复服务器已收到该消息,并通知相应的客户端,服务器已向它的五百个端口发完数据包,客户端可以继续进行下一步操作;若不是,则最后判定该信息是否是客户端请求返回服务器IP和端口号的信息(步骤四中客户端向第三方服务器请求服务器的IP与端口号),若是,则向客户端发送服务器的IP和端口号(步骤五中第三方服务器将服务器的IP和端口号回复给客户端),若不是,则判定此信息为无用信息,弃置并重新开始接收消息。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (4)
1.一种基于智能家居控制系统的NAT穿透方法,其特征在于,包括以下步骤:
步骤一,客户端直接连接服务器;若服务器的IP位于公网IP中,则直接连接成功,否则客户端连接失败,则需要继续进行步骤二,借助第三方服务器的协助;
步骤二,客户端请求第三方服务器的协助;
步骤三,服务器往客户端与第三方服务器连接所用的端口发一个数据包,然后往客户端的五百个不同端口各发一个数据包;
步骤四,第三方服务器通知客户端,服务器已向客户端的五百个端口发完数据包,客户端确认收到信息后,向服务器与第三方服务器连接所用的端口发多个数据包;若服务器和客户端都在锥形NAT或者服务器在不限制端口的锥形NAT后,此时连接成功,然后用五百个不同端口往服务器与第三方服务器连接所用的端口发数据包,并向第三方服务器请求服务器的IP与端口号;
步骤五,服务器收到客户端的数据包后,如果客户端收到第三方服务器回应,第三方服务器将服务器的IP和端口号回复给客户端,客户端则记录下收到回复的端口,使用该端口与服务器通讯;如果客户端未收到第三方服务器回应,则认为信息丢失,客户端重新向第三方服务器发送协助请求,从步骤二开始重复进行。
2.根据权利要求1所述的基于智能家居控制系统的NAT穿透方法,其特征在于,所述第三方服务器指的是一个有公网IP的用于协助双方进行NAT穿透的服务器,客户端须保证连接第三方服务器的可靠性。
3.根据权利要求1所述的基于智能家居控制系统的NAT穿透方法,其特征在于,所述客户端是手机客户端。
4.根据权利要求1所述的基于智能家居控制系统的NAT穿透方法,其特征在于,所述第三方服务器在正常工作的条件下处于开启状态,时刻准备接收客户端与服务器信息;当第三方服务器接收到一条信息后,首先判断这条信息是否是客户端发送的协助请求,若是,则回复客户端已收到协助请求,并将客户端的IP地址和端口号发送给服务器;若判断此条信息不是协助请求,则需进一步判断此条信息是否为服务器发送数据包完成后的信息,若是,则回复服务器已收到该信息,并通知相应的客户端,服务器已向它的五百个端口发完数据包,客户端可以继续进行下一步操作;若不是,则最后判定该信息是否是客户端请求返回服务器IP和端口号的信息,若是,则向客户端发送服务器的IP和端口号,若不是,则判定此信息为无用信息,弃置并重新开始接收消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510080442.6A CN104660728B (zh) | 2015-02-13 | 2015-02-13 | 基于智能家居控制系统的nat穿透方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510080442.6A CN104660728B (zh) | 2015-02-13 | 2015-02-13 | 基于智能家居控制系统的nat穿透方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104660728A CN104660728A (zh) | 2015-05-27 |
CN104660728B true CN104660728B (zh) | 2018-01-19 |
Family
ID=53251414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510080442.6A Expired - Fee Related CN104660728B (zh) | 2015-02-13 | 2015-02-13 | 基于智能家居控制系统的nat穿透方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104660728B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119946A (zh) * | 2015-06-17 | 2015-12-02 | 深圳市美贝壳科技有限公司 | 一种自动切换网络的智能家电控制装置及其方法 |
CN110621017B (zh) * | 2018-06-19 | 2022-06-10 | 佛山市顺德区美的电热电器制造有限公司 | 一种网络配置方法、设备及存储介质 |
CN110636039A (zh) * | 2019-07-31 | 2019-12-31 | 浙江工业大学 | 一种基于内网穿透技术的智能家居加密控制管理方法 |
CN112437169B (zh) * | 2020-11-17 | 2022-10-25 | 郑炳立 | 一种nat穿透方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895590A (zh) * | 2010-07-23 | 2010-11-24 | 华南理工大学 | 基于udt实现nat穿越的系统和方法 |
CN101938532A (zh) * | 2010-09-17 | 2011-01-05 | 北京神州泰岳软件股份有限公司 | 基于udp的穿越nat设备的方法及系统 |
CN103795818A (zh) * | 2014-01-27 | 2014-05-14 | 杭州顺浪信息技术有限公司 | 一种nat穿透方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101557388B (zh) * | 2008-04-11 | 2012-05-23 | 中国科学院声学研究所 | 一种基于UPnP和STUN技术相结合的NAT穿越方法 |
-
2015
- 2015-02-13 CN CN201510080442.6A patent/CN104660728B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895590A (zh) * | 2010-07-23 | 2010-11-24 | 华南理工大学 | 基于udt实现nat穿越的系统和方法 |
CN101938532A (zh) * | 2010-09-17 | 2011-01-05 | 北京神州泰岳软件股份有限公司 | 基于udp的穿越nat设备的方法及系统 |
CN103795818A (zh) * | 2014-01-27 | 2014-05-14 | 杭州顺浪信息技术有限公司 | 一种nat穿透方法 |
Non-Patent Citations (1)
Title |
---|
P2P网络中的NAT穿透机制研究;贾学锋;《中国优秀硕士学位论文全文数据库》;20090315;正文26-31页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104660728A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102231763B (zh) | 一种基于nat穿透的共享方法 | |
CN100493045C (zh) | 一种群组消息发送方法及发送客户端和系统 | |
CN104270379B (zh) | 基于传输控制协议的https 代理转发方法及装置 | |
CN104660728B (zh) | 基于智能家居控制系统的nat穿透方法 | |
CN101159714B (zh) | 一种即时通讯方法和装置 | |
US7492764B2 (en) | System for management of equipment deployed behind firewalls | |
CN103442224A (zh) | 一种基于nat穿透的视频监控访问策略和实现方法 | |
CN105847343B (zh) | 用于点对点传输的公网信息探测方法、装置及系统 | |
CN103220161A (zh) | 一种服务器状态的探测方法和装置 | |
CN101977199A (zh) | 声音终端、声音终端的通信方法以及登记方法 | |
CN102420774B (zh) | 使用igmp实现内网穿透的方法和内网穿透系统 | |
CN101138219A (zh) | 应用与客户机之间的通信方法 | |
WO2016070633A1 (zh) | 上网日志生成方法和装置 | |
CN101090370B (zh) | 一种实现会话转移的方法及装置 | |
CN102917082B (zh) | 穿透网络地址转换的消息推送方法及系统 | |
CN102647432B (zh) | 一种认证信息传输方法、装置及认证中间件 | |
CN107911496A (zh) | 一种vpn服务端代理dns的方法及装置 | |
CN102035655A (zh) | 端到端即时通讯的实现方法、端到端即时通讯终端及系统 | |
CN105915662B (zh) | 一种数据传输方法及装置 | |
CN107645339A (zh) | 一种光纤直放站自动实现拓扑结构的方法及装置 | |
CN107566213A (zh) | 一种保活检测方法和装置 | |
CN107800745A (zh) | 基于mDNS进行服务宣告和服务发现的方法 | |
CN113067910B (zh) | 一种nat穿越方法、装置、电子设备和存储介质 | |
CN101796769B (zh) | 用于改善控制服务器性能的因特网协议版本4上的因特网协议版本6转变方法和设备 | |
CN106302846B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180119 |
|
CF01 | Termination of patent right due to non-payment of annual fee |