Skip to content

WebRTC 相关协议

SDP 与 Offer/Answer

SDP(Session Description Protocol)是会话描述文本,包含媒体类型、编解码器、传输参数、媒体方向等协商信息。它不是媒体数据本身,也不负责发现网络路径。

一端生成 offer,远端设置后生成 answer;双方分别通过 setLocalDescription()setRemoteDescription() 应用描述。实际交换方式由信令服务决定。

ICE、STUN 与 TURN

ICE(Interactive Connectivity Establishment)负责收集候选地址、交换候选并选择可用路径。

组件作用是否转发媒体
STUN帮助客户端发现 NAT 映射后的公网地址与端口
TURN无法直连时中继媒体或数据
ICE协调 host、srflx、relay 等候选并进行连通性检查取决于选中的候选
  • host:本机网卡候选。
  • srflx:经 STUN 发现的服务端反射候选。
  • relay:TURN 中继候选。

TURN 不是兜底的可选项:企业网络、对称 NAT 或严格防火墙中,缺少可靠 TURN 往往会导致通话失败。它会转发真实媒体流,应按带宽、区域、鉴权与滥用防护进行容量规划。

传输与安全

  • 音视频通常使用 RTP/RTCP,并以 SRTP 保护媒体内容。
  • RTCDataChannel 使用 SCTP 承载数据,并由 DTLS 保护。
  • DTLS 指纹写入 SDP,用于验证双方协商的传输身份。

不要把 SDP、ICE 候选或 TURN 长期密钥暴露给无关用户;TURN 应使用短期凭证,信令服务应做身份、房间权限与速率控制。

Trickle ICE

浏览器收集到一个 ICE 候选后即可通过 icecandidate 事件逐个发送给远端,称为 Trickle ICE。它比等待全部候选收集完成更快;远端在设置远端描述后调用 addIceCandidate() 加入候选。

icecandidate 事件中出现 candidate === null 表示本端候选收集结束,不是连接已经成功。

参阅

基于 MIT 许可发布