WebRTC中的协议

1 前言

掐指一算,貌似快两年没写博客了。最近在看有关音频视频直播相关的东西,其中就包括WebRTC。WebRTC并不是一个协议,而是一项实时通讯技术,其中使用了许多的协议,这篇文章就来总结一下WebRTC中的各种协议。这篇文章需要读者对WebRTC有一定的了解。

2 传输层协议

开门见山的说,WebRTC使用UDP作为传输层协议。使用TCP作为传输层协议的话,如果中间出现丢包的情况,由于TCP需要保证传输的可靠性,会反复向发送端索取丢失的包,已经获取的包会被缓冲起来。而UDP则不保证传输的可靠性,适合WebRTC实时性大于可靠性的需求。

3 RTCPeerConnection相关协议

在WebRTC中,RTCPeerConnetcion API负责把获取到的媒体流传输到另外一台视频播放设备,其中涉及到了多种协议。

3.1 P2P内网穿透

3.1.1 NAT协议

网络地址转换协议(Network Address Translator),其作用是将内网IP映射为外网IP,也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中,NAT协议减缓IPv4地址的消耗。
值得一提的是,NAT协议的功能是由几个层共同完成的,一般认为NAT协议工作在网络层但是要结合传输层共同来实现。后续将计划单独写一篇博客来介绍NAT协议相关知识。

3.2 流媒体协议

WebRTC采用SRTPSRTCP作为其流媒体协议,用于传输音视频,但SRTP和SRTCP与另外两个协议——RTP和RTCP关系比较密切,这里也一并介绍了。

3.2.1 RTP

实时传输协议 (Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式,RTP协议是建立在UDP协议上的。
RTP 由两个紧密链接部分组成: RTP ― 传送具有实时属性的数据;RTP 控制协议(RTCP) ― 监控服务质量并传送正在进行的会话参与者的相关信息。

3.2.2 RTCP

实时传输控制协议(Real-time Transport Control Protocol或RTP Control Protocol或RTCP)是RTP的一个姐妹协议。RTCP为RTP媒体流提供信道外控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送。RTCP定期在会话参加者之间传输控制数据。RTCP的主要功能是为RTP所提供的服务质量提供反馈。
RTCP收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,jitter,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息试图提高服务质量,比如限制信息流量或改用压缩比较小的编解码器。RTCP本身不提供数据加密或身份认证。SRTCP可以用于此类用途。

3.2.3 SRTP

安全实时传输协议(Secure Real-time Transport Protocol) ,是在实时传输协议(Real-time Transport Protocol或RTP)基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。

3.2.4 SRTCP

安全实时传输控制协议(Secure RTCP或SRTCP),类似于RTP和RTCP之间的关系,SRTP同样也有一个伴生协议,即为SRTCP协议。

3.3 数据协议

3.3.1 DTLS

数据包传输层安全性协议(Datagram Transport Layer Security) UDP是不安全的,但是WebRTC要求所有传输的数据(音频、视频和自定义应用数据)都必须加密,所以这里就要引入一个DTLS协议的概念。
DTLS就是因为TLS无法保证UDP上传输的数据的安全,所以在现存的TLS协议架构上提出了扩展,用来支持UDP。

3.3.2 TLS

安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性,是SSL 3.0的后续版本。

4 DataChannel相关协议

除了传输音频和视频数据,WebRTC 还支持通过 DataChannel API 在端到端之间传 输任意应用数据。DataChannel 依赖于 SCTP,而 SCTP 在两端之间建立的 DTLS 信道之上运行的.

4.1 STCP

流控制传输协议(Stream Control Transmission Protocol),是一种在网络连接两端之间同时传输多个数据流的协议。
SCTP同时具备了TCP和UDP中最好的功能:

  • 面向消息的 API
  • 可配置的可靠性及交付语义
  • 内置流量和拥塞控制机制

TCP与SCTP对比如下:

  • TCP是单流有序传输,SCTP是多流可配置传输
  • TCP是单路径传输,SCTP是多路径传输
  • SCTP两端之间的连接可以绑定多条IP,只要有一条连接是通的,那么就是通的
  • TCP连接建立是三次握手,SCTP则需要四次握手
  • TCP以字节为单位传输,SCTP以数据块为单位传输

5. 参考资料

WebRTC实时通信协议详解
流媒体协议介绍
WebRTC:数据传输相关协议简介

你可能感兴趣的:(音频视频)