RTCPeerConnection P2P

· 版本发布

sgcWebSockets 2022.8.0 起,sgcWebSockets 库新增了 TsgcRTCPeerConnection 组件。

TsgcRTCPeerConnection 是一个客户端组件,允许通过 UDP 以 P2P 方式连接对等节点。流程分为 4 个步骤:




为实现上述步骤,客户端使用以下协议:

信令 

客户端启动时不知道将与谁通信,也不知道通信内容。信令使用 SDP(会话描述协议),包含如下详情:

信令使用 WebSocket 协议交换数据,通过子协议实现,在服务器端由 TsgcWSPServer_RTCPeerConnection 组件实现。

TsgcRTCPeerConnection 内部已创建绑定了 TsgcWSPClient_RTCPeerConnection 的 WebSocket 客户端。

为获取 IP 和端口,客户端使用 STUN/TURN 协议获取此信息。因此也需要 STUN/TURN 服务器。

相关链接:

连接 

当两个对等节点获知候选者和 SDP 后,客户端使用另一种标准协议 ICE。

ICE(交互式连接建立)允许在两个对等节点之间建立连接。对等节点可在同一网络或 NAT 之后……ICE 是无需中央服务器即可建立直接连接的解决方案。若无法建立 P2P 连接,ICE 将使用 TURN 服务器中继数据。

ICE 找到可连接两个对等节点的有效候选者后,下一步是加密通信。

相关链接:

加密 

 对等节点连接后,通信必须是安全的。这通过 DTLS 实现,DTLS 是用于保护 UDP 上通信的加密协议。

DTLS 握手成功处理后,使用另一种协议 SRTP(安全实时传输协议),目前 SRTP 尚未实现。

相关链接:

通信 

两个对等节点使用安全协议后,通信通过 2 种协议进行:

这些协议目前尚未实现,但您可以通过 UDP 上的 DTLS 发送/接收数据。