videocalling
Illustration of SCTP(流控制传输协议) in video calling

SCTP(流控制传输协议)

协议

WebRTC 数据通道中用于发送非媒体数据的协议。

什么是 SCTP?

流控制传输协议(SCTP)是一种计算机网络协议,结合了 TCP 的可靠性和 UDP 的面向消息特性。在 WebRTC 中,它专门用于数据通道——允许开发者在对等端之间直接发送任意数据(如聊天消息、文件传输或游戏状态)。

为什么 WebRTC 选择 SCTP?

WebRTC 需要一种比单独使用 TCP 或 UDP 更灵活的数据发送方式。SCTP 提供了非常适合点对点数据的独特特性:

  • 可配置的可靠性:你可以选择让数据通道可靠传输(像 TCP 一样重传丢失的数据包)或不可靠传输(像 UDP 一样,用于实时游戏),且可以按通道单独配置。
  • 面向消息:与 TCP 的字节流不同,SCTP 保持各个消息的独立性。
  • 多路复用:你可以在单个 SCTP 关联上拥有多个独立的数据通道。如果一个通道被阻塞(队头阻塞),其他通道仍然可以自由传输。

SCTP over DTLS

由于大多数消费级路由器(NAT)不原生支持 SCTP,WebRTC 将 SCTP 数据包封装在 DTLS 数据包中,而 DTLS 运行在 UDP 之上。这使得 SCTP 可以安全地穿越防火墙,同时保留其所有强大的特性。