我想知道,通过数据通道发送数据时 WebRTC 会产生多少开销。我知道 Websockets 每帧有 2 - 14 字节的开销。WebRTC 是否使用更多开销?我在网上找不到一些有用的信息。对我来说很清楚,Datachannels 目前不能使用。媒体流使用了多少开销?
谢谢
我想知道,通过数据通道发送数据时 WebRTC 会产生多少开销。我知道 Websockets 每帧有 2 - 14 字节的开销。WebRTC 是否使用更多开销?我在网上找不到一些有用的信息。对我来说很清楚,Datachannels 目前不能使用。媒体流使用了多少开销?
谢谢
在应用层,您可以将 DataChannel 视为通过 SCTP 发送和接收。在 SCTP 标头的 PPID(有效负载协议标识符)字段中,Datachannel 设置值 0x51 表示它正在发送 UTF-8 数据,并设置值 0x52 表示二进制数据。
是的你是对的。RTCDataChannel 使用 SCTP over DTLS 和 UDP。DTLS 用于安全性。但是,SCTP 在穿越大多数 NAT/防火墙设置时存在问题。因此,为了克服这个问题,SCTP 通过 UDP 建立隧道。因此,发送数据的总开销将是:
SCTP + DTLS + UDP + IP
那就是:
28 bytes + 20-40 bytes + 8 bytes + 20 - 40 bytes
因此,开销大约为120 字节。WebRTC 客户端可以发送的最大 SCTP 数据包大小为 1280 字节。因此,最多可以为每个 SCTP 数据包发送大约 1160 字节的数据。
WebRTC 使用 RTP 发送其媒体。RTP 在 UDP 上运行。
除了通常的 IP 和 UDP 标头外,还有两个附加标头:
RTP 的设计目的是使其有效负载的开销尽可能小,因为您希望获得更好的媒体质量,这意味着将尽可能多的位专用于媒体本身。