对网络协议来讲,须要作的一般就两件事情:一、创建链接,二、传输数据,WebRTC也不例外。html
假设WebRTC应用的两端已经创建了链接,那么,剩下就是如何传输数据的问题了。git
WebRTC同时支持传输音视频数据、自定义应用数据。这其中,涉及多种协议,包括UDP、RTP/SRTP、RTCP/SRTCP、DTLS、SCTP。github
这些协议名字比较类似,很容易让人混淆,简单总结下:安全
下面就简单介绍下,这些协议是作什么的,有什么区别,存在什么联系。markdown
对WebRTC应用来讲,无论是音视频数据,仍是自定义应用数据,都要求基于加密的信道进行传输。DTLS 有点相似 TLS,在UDP的基础上,实现信道的加密。网络
DTLS的主要用途,就是让通讯双方协商密钥,用来对数据进行加解密。oop
首先,咱们先来看下RTP、RTCP的大概用途:加密
也就是说:spa
至于SRTP、SRTCP,分别在RTP、RTCP的基础上加了个S(Secure),表示安全的意思,这个就是DTLS作的事情了。设计
结合前面内容,总结一下音视频数据的发送过程:
备注:SRTP/SRTCP包中,除了加密数据,还有其余信息,这里不展开细节。
SCTP(Stream Control Transmission Protocol):流控制传输协议。
以前介绍过,RTP/RTCP主要用来传输音视频,是为了流媒体设计的。而对于自定义应用数据的传输,WebRTC中使用了SCTP协议。
一样的,SCTP依赖DTLS创建的加密信道,对于自定义应用数据的发送,流程以下:
为了便于讲解,跳过了不少协议的细节,有些地方可能会不够严谨,感兴趣的同窗能够进行进一步研究,好比如下问题:
RTP: A Transport Protocol for Real-Time Applications
tools.ietf.org/html/rfc355…
Stream Control Transmission Protocol
tools.ietf.org/html/rfc496…
Datagram Transport Layer Security
tools.ietf.org/html/rfc434…
github博客:github.com/chyingp/blo…
新浪微博:weibo.com/chyingp
站酷主页:www.zcool.com.cn/u/346408/