Page 311 - Web性能权威指南
P. 311
总之,并不是仅仅把数字化的音频和视频数据转换成 UDP 分组那么简单。所幸
的是,WebRTC 的媒体和网络引擎替我们承担了所有复杂的工作。而适配和改进
SRTP 和 SRTCP 性能仍然是一个有待研究的领域,包括标准和实现层面。
18.5.3 通过SCTP交付应用数据
除了传输音频和视频数据,WebRTC 还支持通过 DataChannel API 在端到端之间传
输任意应用数据。上一节介绍的 SRTP 协议是专门为传输媒体数据而设计的,不适
合传输应用数据。因此,DataChannel 就依赖于 SCTP(Stream Control Transmission
Protocol,流控制传输协议),而 SCTP 在两端之间建立的 DTLS 信道之上运行
(图 18-3)。
别急,在探讨 SCTP 协议之前,我们先了解一下 WebRTC 对 RTCDataChannel 接口
及其传输协议有哪些要求。
• 传输层必须支持多个独立信道的复用:
每个信道必须支持有序或乱序交付;
每个信道必须支持可靠或不可靠交付;
每个信道可以支持应用定义的优先级。
• 传输层必须提供一个面向消息的 API:
每条应用消息都可能在传输层被分段和组装。
• 传输层必须实现流量和拥塞控制机制。
• 传输层必须保证数据的机密性和完整性。
好消息是,DTLS 可以满足最后一条要求:所有应用数据在记录的净荷中都会得到
加密,因此机密性和完整性就落实了。不过,其他要求可没那么容易满足。UDP 提
供的是不可靠、乱序的数据报交付,而除此之外我们还需要 TCP 似的可靠交付、信
道复用、优先级支持、消息分段,等等。这才有了 SCTP。
表18-1:TCP、UDP与SCTP比较
TCP UDP SCTP
可靠性 可靠 不可靠 可配置
交付次序 有序 乱序 可配置
传输方式 面向字节 面向消息 面向消息
流量控制 支持 不支持 支持
拥塞控制 支持 不支持 支持
WebRTC | 301