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
   306   307   308   309   310   311   312   313   314   315   316