What

WebRTC API 是一项实时通信技术,能够在网站或站点之间建立点对点链接(Perr-to-Perr),实现视频流或者音频流和其他任意数据的传输。
它即是 API 也是协议,WebRTC 协议是两个 WebRTC Agent 协商双向安全实时通信的一种规则。可以通过 WebRTC API 使用 WebRTC 协议。目前 WebRTC API 只有JavaScript 版本。

术语

关于 WebRTC 的一些概念和术语

  • 开放标准
  • 多种实现
  • 在浏览器中使用
  • 强制加密
  • NAT 穿透
  • 复用现有技术
  • 拥塞控制
  • 亚秒级延迟

实现步骤

  1. 信令Signaling
  2. 链接 Connecting
  3. 安全加密 Securing
  4. 通信 Communicating

信令

WebRTC 用来显示点对点链接(Perr-to-Peer),链接两个点是建立通信的第一步。信令用于 Peer 在 WebRTC 服务中,找对与其相对应的 Perr。
信令用于引导呼叫,当 WebRTC Agent 启动时,帮助其找到与其通信的对方和要通信的内容。
信令使用一种现有的协议:SDP协议,两个 WebRTC Agent 交换的 SDP 所包含的信息有:

  • Agent 可供外部访问的 IP 和端口
  • Agent 希望发送多少路音频和视频流。
  • Agent 支持哪些音频和视频编解码器。
  • 连接时需要用到的值 uFrag/uPwd
  • 加密传输时需要用到的值(证书指纹)

应用通常是不使用 WebRTC 本身来交换信令信息,在链接的 Peer 中,任何适合发送消息的架构均可被用于传递 SDP 信息,例如WebSocketREST 或身份验证代理来解决客户端之间的 SDP 传递问题

协议

WebRTC 是一系列协议的集合,除了上面信令使用到 SDP 协议之外,还使用了其他的许多协议

  • ICE协议:双向通信,交互式连接建立协议,ICE 允许在两个 Agent 之间建立链接,这些链接可以在同一网络上,也可以在世界的另端。ICE 是无需中央服务器即可建立直接连接的解决方案。
  • DTLS协议: 基于 UDP 的 TLS 加密协议,用于保护基于 HTTPS 的安全通信
  • SRTP协议:安全实时传输协议
  • RTP协议:实时传输协议,进行音频/视频的数据传输,使用 SRTP 保护 RTP 数据包,从协商的 DTLS 会话中提取密钥,用来初始化 SRTP 会话。
  • SCTP协议:流控制传输协议,使用 RTP 来哦交互用 SRTP 加密过的媒体数据,使用 SCTP 发送和接收那些用 DTLS 加密过的 DataChannel 消息。

从另一个角度看 WebRTC Agent,它只是许多不同协议的协调器

image.png

WebRTC Agent 协议

检测设备对 Trickle ICE 功能的支持

WebRTC P2P 穿透一般流程:

  1. 尝试直连
  2. 通过 STUN 服务器进行穿透
  3. 无法穿透则通过 TURN 服务器中转

检测设备对 Trickle ICE 功能的支持