首页> 中国专利> 一种基于NAT穿透适配器的物联网设备P2P连接方法

一种基于NAT穿透适配器的物联网设备P2P连接方法

摘要

本发明涉及一种基于NAT穿透适配器的物联网设备P2P连接方法,其特征在于,位于NAT以外的公网上的主机,实现对NAT穿透,以P2P方式对NAT内的物联网嵌入式终端进行数据探测和控制。位于不同NAT内的主机实现NAT设备的穿透,达到不同局域网之间以及外网与局域网设备之间基于NAT内物联网嵌入式设备和通用设备传感和控制数据的双向传输。本发明基于交互式连通建立方式技术,结合了STUN和TURN的穿越NAT方式,是一种综合性的NAT解决方案。

著录项

  • 公开/公告号CN103957287A

    专利类型发明专利

  • 公开/公告日2014-07-30

    原文格式PDF

  • 申请/专利权人 浙江大学城市学院;

    申请/专利号CN201410171046.X

  • 发明设计人 蔡建平;吴剑钟;何加铭;霍梅梅;

    申请日2014-04-25

  • 分类号H04L29/12(20060101);H04L29/08(20060101);

  • 代理机构33100 浙江杭州金通专利事务所有限公司;

  • 代理人赵红英

  • 地址 310015 浙江省杭州市拱墅区湖州街51号

  • 入库时间 2023-12-17 00:40:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-17

    授权

    授权

  • 2014-08-27

    实质审查的生效 IPC(主分类):H04L29/12 申请日:20140425

    实质审查的生效

  • 2014-07-30

    公开

    公开

说明书

技术领域

本发明属于互联网和物联网网络技术应用领域,主要涉及一种在互联网环境下各类通用嵌入式测控设备的NAT穿透实现方法。

背景技术

目前对物联网上位于局域网内的通用设备,主要通过DDNS(动态域名服务)与局域网网关中的UPnP(即插即用)端口映射功能实现单个设备的地址映射,其中DDNS需要用到第三方的动态域名服务器,在可靠性和稳定性需求上不一定能符合物联网设备连接的需求。又或者单位或家庭网关中的UPnP 牌关闭状态或没有UPnP功能,则根本无法建立起与局域网内部设备的连接和数据传输。

目前对局域网内物联网嵌入式测控设备的连接,更没有考虑同时针对多个设备的并行连接传输。P2P(Peer-to-Peer)技术与传统的网络结构不同,P2P在用户间建立起一条直接通路,不依赖服务器进行数据传输。P2P网络的本质特点在于共享与协作,参与者能共享他们所拥有的各种资源,这些资源也能被其他参与者直接访问,而所有的参与者既是服务的接受者也是服务的提供者。P2P打破了传统C/S方式下,一方提供服务、一方接受服务的模式,不再存在专门提供服务的节点。P2P网络系统由于改变了传统的C/S系统中,两台主机间的通信必须通过服务器中转的情况,并建立了一个对等的网络,使其信息之间的交互不是必须存在着中转节点,从而还可以有效保护用户隐私。

NAT ( Network Address Translator ) 技术通过将只能作为局域网内部地址而在因特网上不能被识别或直接使用的私有IP 地址映射为Internet上合法IP 地址,实现私有网络中节点对Internet的访问。NAT设备位于互联网与局域网之间,有翻译网络地址和保护网络安全的作用。但是NAT 之后的主机不能作为服务器向外部网络提供服务,位于不同NAT 之后的主机间也无法互相通信。因而NAT 的穿透对P2P技术应用有重要意义。

NAT的四种类型:

(1) 完全圆锥(Full Cone)NAT

    完全锥形NAT将从同个内网IP与端口号发出的所有请求映射为相同的外部IP地址与端口号。同理,任何外网主机能够通过向这个内网主机被映射过的外网地址发送数据包。

(2) 受限圆锥(Restricted Cone)NAT

    受限锥形NAT 将从同个内部IP地址和端口号发出的所有请求映射为相同的外部IP地址与端口号。但与完全锥形NAT不同的是,外网主机(IP地址为X)只能够向先前向IP 地址X发送过数据包的内部主机发送数据,从而可以拒绝非请求的(unsolicited)包,支持数据包过滤功能。

(3) 端口受限锥形(Port Restricted Cone)NAT

端口受限锥形NAT与受限锥形NAT类似,不同的是加了端口号的限制。IP地址为X,端口号P的外部主机只能够向先前已经向IP地址X、端口号P发送过数据包的内部主机发送数据包。

(4) 对称型(Symmetric)NAT

对称型NAT将把从相同的内部IP地址与端口号发出,以及目的IP地址与端口号也相同的所有请求映射为相同的外部IP地址和端口号。数据包在经过此类型的NAT时候,源地址与端口即使相同,但目的地不同的话,将为其分配不同的映射地址。此外,只有提前收到内网主机X发来数据包的外部主机才可以向该内部主机发送数据包。

STUN 解决穿透 NAT 问题的思路是,私网中的终端通过某种机制(STUN 探测方式)预先得到出口 NAT 上的对外地址,然后在净载中所填写的地址信息直接填写出口 NAT 上的对外地址,而不是私网内终端的私有 IP 地址,这样净载中的内容在经过 NAT 时就无需被修改了,只需按普通 NAT 流程转换报文头的 IP 地址即可,净载中的 IP 地址信息和报文头地址信息是一致的,所以数据包可以顺利的穿越NAT 设备。

TURN 方式解决 NAT 问题的思路是私网中的终端,通过某种机制预先获得公网上的服务地址信息(STUN 方式得到的地址为出口 NAT 上的外部映射地址,而 TURN 方式得到地址是 TURN Server 的公网地址),通过在报文净载中直接填写该公网地址可以实现 NAT 的成功穿越。

发明内容

本发明所要解决的技术问题是:提供一种基于NAT穿透适配器的物联网设备P2P连接方法。基于交互式连通建立方式技术,结合了STUN和TURN的穿越NAT方式,是一种综合性的NAT解决方案,实现NAT设备的穿透,达到不同局域网之间以及外网与局域网设备之间基于NAT内物联网嵌入式设备和通用设备传感及控制数据的双向传输。

为了解决上述技术问题,本发明采用以下技术方案:

一种基于NAT穿透适配器的物联网设备P2P连接方法, 其特征在于,位于NAT以外的公网上的主机,实现对NAT穿透,以P2P方式对NAT内的物联网嵌入式终端进行数据探测和控制。

位于不同NAT内的主机实现NAT设备的穿透,达到不同局域网之间以及外网与局域网设备之间基于NAT内物联网嵌入式设备和通用设备传感和控制数据的双向传输。  

该连接方法具体包括以下步骤: 

1)位于局域网内的NAT适配器B主动向位于公网的穿透服务器S发送UDP数据包,穿透服务器S返回初始化信息,其中包括适配器的内网地址和端口、NAT映射地址和端口、穿透服务器S转发消息的地址和端口;

2)向适配器B发起连接请求的客户端A也向位于公网的穿透服务器S发送UDP数据包,穿透服务器S返回初始化信息,其中包括适配器B的内网地址和端口、NAT映射地址和端口、穿透服务器S转发消息的地址和端口;

3)当客户端A的注册完成之后,穿透服务器S的数据库中会有每个客户相应的地址和端口记录,当客户端A要与NAT后的适配器B进行通信时,会向穿透服务器S发起请求,获得穿透适配器B的可能IP地址和端口,包括内网IP地址和端口、NAT映射地址和端口、服务器S转发地址和端口;

4)请求访问的客户端A获得了穿透适配器B的基本信息后,会从这些信息里面提取出部分信息,主要是穿透的适配器B的内网IP地址和端口、NAT映射地址和端口、服务器S转发地址和端口,用于NAT穿透协商时使用;

5)客户端A和穿透适配器B根据各自获得的对方地址和端口信息,互相发送穿透信息,尝试以STUN、TURN来源中收集尽可能多的可能被连通的IP地址;然后按照地址的优先级依次测试,选择最优路径;在STUN能穿透的情况下,走STUN协议打通的直连通道,当STUN无法穿透时,则走TURN转发的方式。

本发明与现有技术相比,具有以下有益效果:

1)  本发明充分考虑单个物联网传感设备和受控设备所不具备的网络功能,尤其是NAT穿透功能,对各种传感协议均以预留接口的方式,便于扩展。

2)本发明为了提高降低局域网内物联网传感设备和受控设备的联网使用成本,在一个适配器上可提供多个标准协议接口,用于将各设备通过一个适配器同时被公网客户端访问。

3)在穿透技术中,本发明结合了STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relay NAT)的穿越NAT方式。首先会从STUN、TURN来源中收集尽可能多的可能被连通的IP地址。然后按照地址的优先级依次测试,选择最优路径。在STUN能穿透的情况下,通过STUN协议打通的直连通道进行双向数据传输,当STUN无法穿透时,则通过TURN转发的方式进行双向数据传输。

4)本发明采用服务器与客户端工作模式,本发明在同一个服务器同时包括STUN (Session Traversal Utilities for NAT)服务器和TURN (Traversal Using Relay NAT)服务器。STUN服务器实现STUN协议,TURN服务器实现TURN协议,将两个服务器进行整合,最终实现一种综合的解决NAT穿透方案。本发明的服务器的主要功能是完成客户端的注册、获取并保存客户端穿透过程的相关信息、实现与客户端之间的心跳机制、客户端数据的转发。

5)本发明的客户端主要包括STUN(Session Traversal Utilities for NAT)客户端、TURN(Traversal Using Relay NAT)客户端,其主要包括本发明的工作在NAT内的适配器和工作在另一个网络的普通客户端。STUN客户端实现STUN协议,TURN客户端实现TURN协议,将两个客户端整合开发,最终让客户端也实现综合穿透技术,实现与服务器的交互。客户端的主要功能是向服务器进行注册、向服务器发送心跳包、从服务器获取对方客户端的穿透地址信息、实现穿透过程、完成数据传输。

附图说明

图1发明的系统组网结构图

图2适配器模块结构图

图3 穿透服务器结构示意图

图4 客户端结构示意图

图5 NAT穿透流程图。

具体实施方式

参见图1~图5,一种基于NAT穿透适配器的物联网设备P2P连接方法,是基于交互式连通建立方式技术,结合了STUN和TURN的穿越NAT方式,是一种综合性的NAT解决方案,实现NAT设备的穿透,达到不同局域网之间以及外网与局域网设备之间基于NAT内物联网嵌入式设备和通用设备传感及控制数据的双向传输。

本发明的NAT解决方案:

位于NAT以外的公网上的主机,实现对NAT穿透,以P2P方式对NAT内的物联网嵌入式终端进行数据探测和控制。

位于不同NAT内的主机实现NAT设备的穿透,达到不同局域网之间以及外网与局域网设备之间基于NAT内物联网嵌入式设备和通用设备传感和控制数据的双向传输;

具体包括以下步骤: 

1)位于局域网内的NAT适配器B主动向位于公网的穿透服务器S发送UDP数据包,穿透服务器S返回初始化信息,其中包括适配器的内网地址和端口、NAT映射地址和端口、穿透服务器S转发消息的地址和端口等;

2)向适配器B发起连接请求的客户端A也向位于公网的穿透服务器S发送UDP数据包,穿透服务器S返回初始化信息,其中包括适配器B的内网地址和端口、NAT映射地址和端口、穿透服务器S转发消息的地址和端口等;

3)当客户端A的注册完成之后,穿透服务器S的数据库中会有每个客户相应的地址和端口记录,当客户端A要与NAT后的适配器B进行通信时,会向穿透服务器S发起请求,获得穿透适配器B的可能IP地址和端口,包括内网IP地址和端口、NAT映射地址和端口、服务器S转发地址和端口;

4)请求访问的客户端A获得了穿透适配器B的基本信息后,会从这些信息里面提取出部分信息,主要是穿透的适配器B的内网IP地址和端口、NAT映射地址和端口、服务器S转发地址和端口,用于NAT穿透协商时使用;

5)客户端A和穿透适配器B根据各自获得的对方地址和端口信息,互相发送穿透信息,尝试以STUN、TURN来源中收集尽可能多的可能被连通的IP地址;然后按照地址的优先级依次测试,选择最优路径;在STUN能穿透的情况下,走STUN协议打通的直连通道,当STUN无法穿透时,则走TURN转发的方式。

通过适配器实现NAT穿透,并通过TCP/IP网络协议与各传感器设备协议的转换,从而实现从公网对NAT内网传感器数据的读取, 实现从公网对NAT内网中物联网设备的控制。

实施例1

1. 客户端注册、心跳检测

客户端A、B分别向P2P穿透服务器S进行注册,这是一个创建实例和初始化过程,在这个过程中,客户端会获得P2P穿透服务器S返回的初始化信息,这些信息是以SDP信息的形式返回,包括协议版本、回话名称、该客户端的内网地址和端口、NAT映射地址和端口、服务器S转发消息的地址和端口等。各字段如下:

v =(协议版本)

o =(所有者/创建者和回话标识符)

s =(会话名称)

t =(会话活动时间)

m =(媒体名称)

c =(连接信息)

a =ice-ufrag(会话用户名)

a =ice-pwd(会话密码)

a = candidate(客户端穿透时采用的候选地址)

服务器返回的这些信息会被存入到数据库中,当客户端双发进行穿透时,会调用这些数据。

另外,客户端还会间隔性(相隔15秒)的发送一组STUN message的消息到服务器S,保持与服务器的联系,同时服务器也会返回一组STUN message消息进行响应。

客户端发送的STUN message:

STUN Bingding request

Hdr:

length =(消息长度)

magic =(魔术字域,是事物ID的一部分,该值为固定的0x2112A442)

tsx_id =(事物ID,用于唯一识别STUN事物)

服务器返回的STUN message:

STUN Binding success response

Hdr:

length =(消息长度)

mageic =(魔术字域,是事物ID的一部分,该值为固定的0x2112A442)

tsx_id =(事物ID,用于唯一识别STUN事物)

Attrbutes:

MAPPED-ADDRESS:客户端映射之后的IP地址和端口

SOURCE-ADDRESS:服务器发送响应的源IP地址和端口

CHANGED-ADDRESS:服务器发送响应的改变后的IP地址和端口

2. 获取对方客户端的地址和端口信息

当客户端的注册完成之后,服务器S的数据库中会有每个客户相应的地址和端口记录。当客户A要与客户B进行通信时,会请求服务器S,获得客户端B的IP地址和端口(包括内网IP地址和端口、NAT映射地址和端口、服务器转发地址和端口),同时,客户B也会向服务器S请求获得A的IP地址和端口。

3. 服务器返回客户端的地址和端口信息

   服务器S返回的客户端信息是以SDP信息的形式返回的,SDP各字段所代表的意义在上面已经介绍。客户端A获得了客户端B的信息后,会从这些信息里面提取出部分信息,主要是客户端B的内网IP地址和端口、NAT映射地址和端口、服务器转发地址和端口,并将这些数据存入到remoteInfo数组中,等待NAT穿透协商的时候使用。

4. 客户端双方进行穿透连接

4.1 穿透连接过程

客户端A和客户端B根据各自获得的对方地址和端口信息,互相发送穿透信息,调用方法icedemo_start_nego(),进行穿透连接测试,这个过程实现的是STUN协议,会根据对方客户端的候选地址,逐个发送穿透信息,等待连接成功。如果成功,将会返回成功通道的地址和端口号,然后A、B双方可以利用该通道进行数据传输;如果失败,则A、B双方会采用服务器转发的方式进行数据通信,转发过程实现的是TURN协议,转发方式中,所有的数据都会经过服务。

    例如客户端A会向客户端B的外网和内网地址发送穿透连接信息:

192.168.1.103:8000(222.111.99.1:20202)——>222.123.88.1:10101

192.168.1.103:8000(222.111.99.1:20202)——>192.168.2.110:8001

    同时客户端B也会向客户端A的外网和内网地址发送穿透连接信息:

192.168.2.110:8001(222.123.88.1:10101)——>222.111.99.1:20202

192.168.2.110:8001(222.123.88.1:10101)——>192.168.1.103:8000

当NAT设备的记录中有两条记录的源端地址、端口号和目的端地址、端口号正好相反时,就代表双方希望互相通信,这时,除对称型NAT外,其它NAT设备就会让双方建立一条通道进行数据传输,此时代表穿透成功。针对对称型NAT,会采用服务器转发的方式让客户端A、B进行通信。

整个穿透测试的过程可能需要数十到数百毫秒的时间才能完成,这主要取决于客户端候选地址的数量。而穿透连接能否成功,与NAT的类型有很大关系。不同类型的NAT在内外网的地址和端口映射上存在差别,这会直接影响到穿透连接的成功概率。在项目中,实现了STUN协议的穿透连接测试,可以成功穿透完全圆锥(Full Cone)NAT、受限圆锥(Restricted Cone)NAT、 端口受限锥形(Port Restricted Cone)NAT,但是无法穿透对称型(Symmetric)NAT,针对对称型NAT,采用实现了TURN协议的转发方式进行通信。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号