六、WebRTC中ICE的实现

一、Candidate种类&优先级

高到底:host、srflx、prflx、relay.

同一局域网内通过host类型的Candidate在内网建立连接。

非同一局域网,隔断从STUN、TURN服务器中收集srflx和relay类型的Candidate。收集srflx类型Candidate时,ICE会尝试NAT打洞。如果打洞成功则使用P2P传输,否则使用TURN服务器中转数据。

二、ICE策略

RTCPeerConnection对象,输入参数RTCconfiguration是json格式。

三、P2P连接

1、NAT穿越原理

NAT就是一种地址映射技术,在内网地址和外网地址之间建立映射关系。内网主机向外网主机发送消息是。数据经过NAT层时,NAT会将数据爆头中源IP地址和源端口号替换为映射后的IP地址和端口号。反之亦然。

2、NAT类型

完全锥形、IP限制锥型、端口限制锥型、对称型。

穿越难度一次增大。

(1)完全锥型NAT

NAT打洞成功,所有知道该洞的主机均可通过该洞与内网主机通信。

NAT穿越多数使用UDP

(2)IP限制锥型NAT

NAT打洞成功,只有与之打洞成功的主机才能通过该洞与内网主机通信,其他外网主机即使知道洞口也不能与之通信。(要求同一IP主机,不区分端口)

(3)端口限制锥型NAT

同IP限制锥型NAT。(要求同一IP主机,并且要求是同一端口)

(4)对称型NAT

内网主机每次访问外网不同主机时,都会生成一个新洞。打洞成功率非常低。

3、NAT类型检测

需要两台STUN服务器,每台STUN服务器又需要两块网卡,每块网卡需要配置公网IP地址。

4、如何进行NAT穿越

四、网络中继

1、TURN协议中转数据

TURN协议底层依赖于STUN协议

TURN协议采用CS模式。

流程:

主机X TurnClient向TurnServer 3478端口发送Allocate指令。TurnServer分配对应的relay地址。

indication

指令Send indication(XOR-PEER-ADDRESS、DATA)

指令Data indication

tunnel机制

只需要在开始发送数据之前,发送ChannelBind指令将channel number与目标地址绑定一次即可。后面统一使用channel number就能找到发往的目的地。

2、WebRTC使用TURN协议

WebRTC收集到的Relay类型Candidate,只得就是通过TURN协议的Allocation指令分配的地址

3、STUN/TURN服务器的部署

云主机

STUN/TURN服务器是Google开源的coturn服务器。

使用trickle-ice工具进行测试。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gdliweibing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值