System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种实现点对点通信的NAT穿透方法及装置制造方法及图纸_技高网

一种实现点对点通信的NAT穿透方法及装置制造方法及图纸

技术编号:40290070 阅读:4 留言:0更新日期:2024-02-07 20:41
本发明专利技术提出一种实现点对点通信的NAT穿透方法及装置,该方法包括:主动连接设备发起连接请求;被动连接设备进入等待连接状态,并通过信令服务器附上NAT穿透算法参数回复主动连接设备;两设备分别向STUN服务器获取至少两个在NAT上映射的端口,相互交换NAT穿透协议数据,并根据对方的NAT穿透协议数据得出对方的NAT端口特性及NAT穿透算法参数;判断两设备的端口是否变化,当其中一方的端口随机变化时,使用NAT端口预测算法预测对方相对自己在NAT上映射的端口,向对对方预测的端口发送NAT穿透数据包;两设备任一方收到对方的穿透包锁定数据包的源端口并回复相应穿透包。其中,NAT端口特性指NAT对内网设备访问不同公网IPv4地址时映射的端口变化范围。本发明专利技术可以提高NAT穿透的效率和成功率。

【技术实现步骤摘要】

本专利技术涉及通信,尤其涉及一种实现点对点通信的nat穿透方法及装置。


技术介绍

1、随着网络终端设备数量的急剧增长,ipv4地址的总数已经无法满足需求,导致ipv4地址的耗尽问题。为了解决这一问题,除了引入ipv6地址以提供更广泛的地址空间之外,nat(network address translation,网络地址转换)技术也被引入。nat技术允许多个网络终端设备共享一个公网ipv4地址,而这个ipv4地址属于安装了nat软件的路由器。在这种情况下,路由器负责对内网设备的私有ip地址进行转换,使得这些设备可以通过路由器的地址转换技术与互联网上具有公网ipv4地址的其他设备进行通信。nat技术的引入不仅有效地解决了ipv4地址耗尽的问题,还为内网设备提供了一定程度的安全性,因为内网设备不直接暴露在公网上。例如,如果内网设备a没有向公网设备b发送数据,那么公网设备b无法直接向内网设备a发送数据,提高了内网设备的安全性。

2、然而,由于存在nat,直接在两个经过nat的网络终端c和d之间进行通信变得更为复杂。一种常见的解决方案是通过具有公网ipv4地址的服务器进行数据转发,但这会增加服务器的带宽成本,尤其在需要大量音视频媒体流数据传输的场景下。为了降低服务器的带宽成本,并结合nat技术的特点,可以设计一套系统,使两个经过不同nat的网络终端c和d能够直接通过各自所在的nat进行通信,实现点对点(p2p,peer-to-peer)的直接通讯,而无需借助具有公网ipv4地址的服务器进行数据转发。这种方案有助于提高通信效率并减少对服务器资源的依赖,特别适用于对带宽敏感的实时通信场景。

3、该领域技术人员常用的nat穿透方法是使用stun协议以及nat类型探测的方法得知内网中的设备在nat上映射的ip地址和端口以及nat本身的类型,通过具有公网ipv4地址的服务器交换两端的地址信息,然后分别在两个nat后的两个设备互相往对端的地址发送穿透数据包,在两端nat上产生访问记录后则可完成nat的穿透,即两内网设备达成点到点的直接通讯。但是如果要探测明确nat类型为完全锥型(full cone)、受限制锥型(restricted cone)、端口受限制锥型(port restricted cone)和对称型(symmetric)四种nat类型之一,会增加nat穿透耗时且对nat穿透意义不大。

4、中国专利技术cn107580082b公开了一种对称型nat的穿透方法,p2p连接中至少一方主机对应的nat为对称型nat,应用于对称型nat网络内部的第一主机,第一主机和第二主机分别与打洞服务器建立连接后,向打洞服务器发送携带有由第一主机预测的公网端口号的第一协助打洞请求,使打洞服务器向第二主机发送携带有预测的公网端口号的第一打洞命令,使第二主机分别向对称型nat的第一端口范围内的每个公网端口号发送第一打洞请求。当第一主机接收到第一打洞请求或第二主机接收到第一主机发送的打洞请求时,第一主机与第二主机间的p2p连接建立。上述专利只针对于对称型nat的穿透方法,难以突破nat端口特性随机变化的情况,即对于两端设备都处在端口变化的nat内则无法达成nat穿透。但在当今手机网络盛行的情况下,普遍为nat端口特性随机变化,该方法已无法满足现有需求。


技术实现思路

1、本专利技术的目的在于,提供一种实现点对点通信的nat穿透方法及装置,以解决上述问题,可以缩短nat穿透的耗时,更快速地达成nat穿透,提高nat穿透的成功率。

2、本专利技术提出了一种实现点对点通信的nat穿透方法,包括如下步骤:

3、步骤s1、主动连接设备通过信令服务器向被动连接设备发起连接请求;

4、步骤s2、被动连接设备进入等待连接状态,并通过信令服务器附上nat穿透算法参数回复主动连接设备;

5、步骤s3、主动连接设备和被动连接设备分别向stun服务器获取至少两个在nat上映射的端口;

6、步骤s4、主动连接设备和被动连接设备相互交换nat穿透协议数据,并根据对方的nat穿透协议数据得出对方的nat端口特性及nat穿透算法参数;

7、步骤s5、判断主动连接设备和被动连接设备的端口是否变化,当主动连接设备和/或被动连接设备的端口随机变化时进入步骤s6;

8、步骤s6、使用nat端口预测算法预测对方相对自己在nat上映射的端口,主动连接设备和被动连接设备向对对方预测的端口发送nat穿透数据包;

9、步骤s7、主动连接设备和被动连接设备任一方收到对方的nat穿透数据包锁定数据包的源端口并回复相应nat穿透数据包,即完成nat穿透达成点到点连接;

10、其中,nat端口特性指nat对内网设备访问不同公网ipv4地址时映射的端口变化范围。

11、在一个实施例中,所述步骤s5还包括当主动连接设备和被动连接设备的端口均不变时进入步骤s8;

12、步骤s8、主动连接设备和被动连接设备向对方端口发送数据,先收到对端数据的设备再向对端发送数据,完成nat穿透达成点到点通信。

13、在一个实施例中,所述步骤s6还包括被动连接设备同步使用主动连接设备的nat穿透算法参数;

14、所述步骤s6中,主动连接设备和被动连接设备向对对方预测的端口发送nat穿透数据包,具体包括每个端口发送一个nat穿透数据包,每发送一个nat穿透数据包在nat路由上创建一条映射记录。

15、在一个实施例中,nat端口特性通过nat端口特性值表征,nat端口特性值包括表示端口未知的0、表示端口不变的1、表示端口随机变化范围在1000以内的1000、表示端口随机变化范围在1001至2000之间的2000、表示端口随机变化范围在2001至4000之间的4000、表示端口随机变化范围在4001至8000之间的8000、表示端口随机变化范围在8001至16000之间的16000、表示端口随机变化范围在16001至20000之间的20000、表示端口随机变化范围在20001至25000之间的25000、表示端口随机变化范围在25001至30000之间的30000、表示端口随机变化范围在30001至35000之间的35000、表示端口随机变化范围在35001至40000之间的40000、表示端口随机变化范围在40001至45000之间的45000、表示端口随机变化范围在45001至50000之间的50000、表示端口随机变化范围在50001至55000之间的55000、表示端口随机变化范围在55001至60000之间的60000、表示端口随机变化范围在60001至65535之间的65535。

16、在一个实施例中,nat穿透协议数据包括版本、连接id、角色、nat ip地址、nat端口数量、nat端口、nat穿透算法、nat穿透包总数、nat每轮穿透包数量、nat每轮穿透间隔时间。

17、在一个实施例中,版本、连接id、角色、n本文档来自技高网...

【技术保护点】

1.一种实现点对点通信的NAT穿透方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的实现点对点通信的NAT穿透方法,其特征在于,所述步骤S5还包括当主动连接设备和被动连接设备的端口均不变时进入步骤S8;

3.根据权利要求1所述的实现点对点通信的NAT穿透方法,其特征在于,所述步骤S6还包括被动连接设备同步使用主动连接设备的NAT穿透算法参数;

4.根据权利要求1所述的实现点对点通信的NAT穿透方法,其特征在于,NAT端口特性通过NAT端口特性值表征,NAT端口特性值包括表示端口未知的0、表示端口不变的1、表示端口随机变化范围在1000以内的1000、表示端口随机变化范围在1001至2000之间的2000、表示端口随机变化范围在2001至4000之间的4000、表示端口随机变化范围在4001至8000之间的8000、表示端口随机变化范围在8001至16000之间的16000、表示端口随机变化范围在16001至20000之间的20000、表示端口随机变化范围在20001至25000之间的25000、表示端口随机变化范围在25001至30000之间的30000、表示端口随机变化范围在30001至35000之间的35000、表示端口随机变化范围在35001至40000之间的40000、表示端口随机变化范围在40001至45000之间的45000、表示端口随机变化范围在45001至50000之间的50000、表示端口随机变化范围在50001至55000之间的55000、表示端口随机变化范围在55001至60000之间的60000、表示端口随机变化范围在60001至65535之间的65535。

5.根据权利要求4所述的实现点对点通信的NAT穿透方法,其特征在于,NAT穿透协议数据包括版本、连接ID、角色、NAT IP地址、NAT端口数量、NAT端口、NAT穿透算法、NAT穿透包总数、NAT每轮穿透包数量、NAT每轮穿透间隔时间。

6.根据权利要求5所述的实现点对点通信的NAT穿透方法,其特征在于,版本、连接ID、角色、NAT端口数量、NAT端口、NAT穿透算法、NAT穿透包总数和NAT每轮穿透包数量均为整型数值,NAT IP地址为IP地址字符串,NAT每轮穿透间隔时间为浮点型数值,单位为毫秒。

7.根据权利要求5所述的实现点对点通信的NAT穿透方法,其特征在于,NAT端口预测算法包括:

8.根据权利要求7所述的实现点对点通信的NAT穿透方法,其特征在于,从NAT穿透端口范围[P1,P2]中获取C个端口的具体过程包括:

9.根据权利要求1所述的实现点对点通信的NAT穿透方法,其特征在于,NAT穿透数据包使用八字节设计并支持后续扩展。

10.一种实现点对点通信的NAT穿透装置,其特征在于,用于实现如权利要求1-9任一项所述的实现点对点通信的NAT穿透方法,包括主动连接设备、被动连接设备、信令服务器和STUN服务器:

...

【技术特征摘要】

1.一种实现点对点通信的nat穿透方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的实现点对点通信的nat穿透方法,其特征在于,所述步骤s5还包括当主动连接设备和被动连接设备的端口均不变时进入步骤s8;

3.根据权利要求1所述的实现点对点通信的nat穿透方法,其特征在于,所述步骤s6还包括被动连接设备同步使用主动连接设备的nat穿透算法参数;

4.根据权利要求1所述的实现点对点通信的nat穿透方法,其特征在于,nat端口特性通过nat端口特性值表征,nat端口特性值包括表示端口未知的0、表示端口不变的1、表示端口随机变化范围在1000以内的1000、表示端口随机变化范围在1001至2000之间的2000、表示端口随机变化范围在2001至4000之间的4000、表示端口随机变化范围在4001至8000之间的8000、表示端口随机变化范围在8001至16000之间的16000、表示端口随机变化范围在16001至20000之间的20000、表示端口随机变化范围在20001至25000之间的25000、表示端口随机变化范围在25001至30000之间的30000、表示端口随机变化范围在30001至35000之间的35000、表示端口随机变化范围在35001至40000之间的40000、表示端口随机变化范围在40001至45000之间的45000、表示端口随机变化范围在45001至50000之间的50000、表示端口随机变化范...

【专利技术属性】
技术研发人员:梁起存王刚王家宾薛有义
申请(专利权)人:天翼数字生活科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1