一种提高webrtcp2p打洞成功效率的方法技术

技术编号:36083505 阅读:54 留言:0更新日期:2022-12-24 10:58
本发明专利技术公开了一种提高webrtc p2p打洞成功效率的方法,包括以下步骤:S1探测NAT类型;S2判断NAT类型:收到对方的NAT类型和自己的NAT类型对比;S3生成访问记录:不同类型生成的访问记录不一样;S4 UDP穿透:中间服务器保存信息、并能发出建立UDP隧道的命令;S5控制发布速率:打洞过程需要控制发布速率,端口限制型NAT访问对方不同端口时很容易被认为UDP端口扫描攻击,对称性NAT探测端口限制型NAT的报文很容易被误认为UDP洪泛攻击,需要控制发包速率,基于谷歌开源的webrtc sdk,优化打洞策略,成功穿透一端NAT类型是端口限制型NAT,另一端是对称型NAT的场景,极大的提高了p2p成功效率。率。率。

【技术实现步骤摘要】
一种提高webrtc p2p打洞成功效率的方法
[0001]

[0002]本专利技术涉及电子信息
,具体为一种提高webrtc p2p打洞成功效率的方法。
[0003]
技术介绍

[0004]Webrtc是谷歌开源的即使通信标准,能提供P2P音视频聊天,但在国内公网ip资源匮乏,大多设备都是处于内网环境没有公网IP,都需要路由器做NAT连通外网,因此两个处于不同内网的设备是没办法进行p2p直连。路由器NAT有几种常见类型,包括全锥形NAT,限制型NAT,端口限制型NAT,及对称型NAT,而当前路由器用的最多的是对称型NAT和端口型NAT,对称型NAT的安全性最高,用于大型路由器和运营商网络,家用路由器则端口限制型NAT居多。谷歌提供的webrtc SDK只支持通话两端都是端口限制型NAT才能穿透NAT进行p2p聊天,对于一端是端口限制型NAT另一端是对称型NAT或则两端都是对称型NAT则无法穿透NAT。
[0005]
技术实现思路

[0006]为了解决上述问题,本专利技术的目的在于提供一种提高webrtc p2p打洞成功效率的方法。
[0007]为实现上述目的,本专利技术提供如下技术方案:一种提高webrtc p2p打洞成功效率的方法,包括以下步骤:(S1)探测NAT类型:两端使用stun协议探测自己的NAT类型,并放在offer和answer的candidate里面告知对方;(S2)判断NAT类型:收到对方的NAT类型和自己的NAT类型对比,如果一端是对称型NAT另一端是端口限制型NAT则进入接下来的打洞过程;(S3)生成访问记录:不同类型生成的访问记录不一样;(S4)UDP穿透:中间服务器保存信息、并能发出建立UDP隧道的命令,网关均要求为Cone NAT类型,Symmetric NAT不适合,完全圆锥型网关可以无需建立udp隧道,但这种情况非常少,要求双方均为这种类型网关的更少;(S5)控制发布速率:打洞过程需要控制发布速率, 端口限制型NAT访问对方不同端口时很容易被认为UDP端口扫描攻击,对称性NAT探测端口限制型NAT的报文很容易被误认为UDP 洪泛攻击,需要控制发包速率;进一步地,所述步骤(S2)中判断NAT类型的方法包括以下步骤;(1)判断主机是否在NAT后:主机A首先发送任意一个UDP数据包给服务器S(Endpoint1),S收到包之后,用Endpoint1将接收到数据包头的IP地址和端口打成一个UDP
反馈包发送给用户A,A在收到反馈包之后,比较自身的Endpoint和反馈包中的Endpoint,如果一样则说明A不位于任何NAT之后,否则,就是位于NAT之后;(2)检测NAT是否是完全锥型:主机A向服务器S(Endpoint1)发送UDP数据包后,服务器用Endpoint2将接收到数据包头的IP地址和端口打成一个UDP反馈包发送给用户A,另外,A在发送UDP数据包后,立即开始端口侦听,设定一个等待时间上限,防止无限堵塞(因为接收是一个While循环),这样进行若干次,如果A每次都没有收到数据包,说明A所处的NAT类型不是完全锥型的,相反,在这整个过程中只要收到一次服务的包,就说明A所处的NAT类型是完全限制型的;(3)检测NAT是否是对称型:主机A向服务器S(Endpoint1)发送UDP数据包,服务器S(Endpoint1)在收到数据包后,用Endpoint1将接收到数据包头的IP地址和端口打成一个UDP反馈包发送给用户A,另外,A在发送数据包后,开始侦听端口并接收数据,设定一个等待时间上限,防止无限堵塞(因为接收是一个While循环),与此同时,主机A用同一个套接字向服务器S (Endpoint2)发送UDP数据,Endpoint2发送与上面类似的UDP回馈包,在A的整个数据接收过程中,如果收到的服务器反馈数据包中标识自身的IP地址和端口存在不相同的情况,就说明NAT是对称型的,否则是非对称型NAT;进一步地,所述步骤(S3)中生成访问记录的方法包括以下步骤:(1)对称型NAT需要创建多个udp socket,每个socket朝端口限制型NAT的外网地址发送stun ping探测报文,此时端口限制型NAT的路由器会记录对端的公网IP有多个端口有访问记录;(2)端口限制型NAT也会使用同一个udp socket朝对端外网IP的不同端口发送stun ping探测报文,如果刚好探测的某个端口也有发过包给端口限制型NAT,则此时就能被对方的NAT通过,至此就能打通,因为此时两端的路由器都有记录双方的访问记录;进一步地,所述步骤(S4)UDP穿透的方法包括以下步骤:(1)双方先都通过UDP与服务器通讯后,NAT网关默认会做一个外网IP和端口号 与 内网IP与端口号的映射,这个无需设置的,服务器也不需要知道客户的真正内网IP用户A的NAT穿透;(2)用户A先通过服务器知道用户B的外网地址与端口;(3)用户A向用户B的外网地址与端口发送消息;(4)在这一次发送中,用户B的网关会拒收这条消息,因为它的映射中并没有这条规则;(5)但是用户A的网关就会增加了一条允许规则,允许接收从B发送过来的消息用户B的NAT穿透:(6)服务器要求用户B发送一个消息到用户A的外网IP与端口号;(7)用户B发送一条消息,这时用户A就可以接收到B的消息,而且网关B也增加了允许规则用户A

B的双向UDP通信;(8)之后,由于网关A与网关B都增加了允许规则,所以A与B都可以向对方的外网IP和端口号发送消息。
[0008]与现有技术相比,本专利技术的有益效果如下:本专利技术主要基于谷歌开源的webrtc sdk,优化打洞策略,成功穿透一端NAT类型是
端口限制型NAT,另一端是对称型NAT的场景,其中端口限制型NAT探测对称性NAT时采用hash攻击算法,朝对方公网IP的 随机端口发送探测包,对称性NAT则需要绑定不同的socket分别朝对方同一个外网地址发送探测包,若某个socket的外网地址刚好有被对方访问过,则此时能打通,相较与原有的只能打通两端都是端口限制型NAT的场景,优化后可以打通一端是端口限制型NAT另外一端是对称型NAT的场景,提高了p2p成功效率。
[0009]参照后文的说明和附图,详细公开了本专利技术的特定实施方式,指明了本专利技术的原理可以被采用的方式。应该理解,本专利技术的实施方式在范围上并不因而受到限制。
[0010]针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
[0011]应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
[0012]附图说明
[0013]图1为本专利技术一种提高webrtc p2p打洞成功效率的方法的流程图;图2为本专利技术一种提高webrtc p2p打洞成功效率的方法的步骤(3)生成访问记录的示意图;图3为本专利技术一种提高webrtc p2p打洞成功效率的方法步骤(2)本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种提高webrtc p2p打洞成功效率的方法,其特征在于:包括以下步骤:(S1)探测NAT类型:两端使用stun协议探测自己的NAT类型,并放在offer和answer的candidate里面告知对方;(S2)判断NAT类型:收到对方的NAT类型和自己的NAT类型对比,如果一端是对称型NAT另一端是端口限制型NAT则进入接下来的打洞过程;(S3)生成访问记录:不同类型生成的访问记录不一样;(S4)UDP穿透:中间服务器保存信息、并能发出建立UDP隧道的命令,网关均要求为Cone NAT类型,Symmetric NAT不适合,完全圆锥型网关可以无需建立udp隧道;(S5)控制发布速率:打洞过程需要控制发布速率, 端口限制型NAT访问对方不同端口时很容易被认为UDP端口扫描攻击,对称性NAT探测端口限制型NAT的报文很容易被误认为UDP 洪泛攻击,需要控制发包速率。2.根据权利要求1所述的一种提高webrtc p2p打洞成功效率的方法,其特征在于,所述步骤(S2)中判断NAT类型的方法包括以下步骤;(1)判断主机是否在NAT后:主机A首先发送任意一个UDP数据包给服务器S(Endpoint1),S收到包之后,用Endpoint1将接收到数据包头的IP地址和端口打成一个UDP反馈包发送给用户A,A在收到反馈包之后,比较自身的Endpoint和反馈包中的Endpoint,如果一样则说明A不位于任何NAT之后,否则,就是位于NAT之后;(2)检测NAT是否是完全锥型:主机A向服务器S(Endpoint1)发送UDP数据包后,服务器用Endpoint2将接收到数据包头的IP地址和端口打成一个UDP反馈包发送给用户A,另外,A在发送UDP数据包后,立即开始端口侦听,设定一个等待时间上限,防止无限堵塞(因为接收是一个While循环),这样进行若干次,如果A每次都没有收到数据包,说明A所处的NAT类型不是完全锥型的,相反,在这整个过程中只要收到一次服务的包,就说明A所处的NAT类型是完全限制型的;(3)检测NAT是否是对称型:主机A向服务器S(Endpoint1)发送UDP数据包,服务器S(Endpoint1)在收到数据包后,用Endpoint1将接收到数据包头的IP地址和端口打成一...

【专利技术属性】
技术研发人员:吴海霖
申请(专利权)人:泉州砾鹰石科技有限公司
类型:发明
国别省市:

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

1