六、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工具进行测试。

你可能感兴趣的:(WebRTC,webrtc,服务器,p2p)