对网络协议来说,需要做的通常就两件事情:1、建立连接,2、传输数据,WebRTC也不例外。
假设WebRTC应用的两端已经建立了连接,那么,剩下就是如何传输数据的问题了。
WebRTC同时支持传输音视频数据、自定义应用数据。这其中,涉及多种协议,包括UDP、RTP/SRTP、RTCP/SRTCP、DTLS、SCTP。
这些协议名字比较相似,很容易让人混淆,简单总结下:
-
传输音视频数据相关协议:UDP、DTLS、RTP/SRTCP;
-
传输自定义应用数据相关协议:UDP、DTLS、SCTP;
下面就简单介绍下,这些协议是做什么的,有什么区别,存在什么联系。
加密信道建立:UDP、DTLS
对WebRTC应用来说,不管是音视频数据,还是自定义应用数据,都要求基于加密的信道进行传输。DTLS 有点类似 TLS,在UDP的基础上,实现信道的加密。
DTLS的主要用途,就是让通信双方协商密钥,用来对数据进行加解密。
-
通信双方:通过DTLS握手,协商生成一对密钥;
-
发送方:对数据进行加密;
-
发送方:通过UDP传输加密数据;
-
接收方:对加密数据进行解密;
音视频数据传输:RTP/SRTP、RTCP/SRTCP
首先,我们先来看下RTP、RT