WebRTC协议学习之一(WebRTC简介)

什么WebRTCWebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。谷歌2011年6月3日宣布向开发人员开放WebRTC架构的源代码。这个源代码将根据没有专利费的BSD(伯克利软件发布)式的许可证向用户提供。开发人员可访问并获取WebRTC的源代码、规格说明和工具等。WebRTC使用安全实时传输协议(Secure Real-time Transport Protocol,SRTP)对RTP数据进行加密,消息认证和完整性以及重播攻击保护。它是一个安全框架,通过加密RTP负载和支持原始认证来提供机密性。WebRTC的安全特性是其可靠性的重要组成部分,其基础全部围绕实时传输协议(Real-time Transport Protocol)进行。详情参看:WebRTC

要学习WebRTC需要先理解一些基本概念

  • 什么是实时传输协议?

实时传输协议(RTP)是专为多媒体电话(VoIP,视频会议,远程呈现系统),多媒体流(视频点播,直播)和多媒体广播而设计的网络协议。它最初由RFC1889中的IETF指定。RTC最初是为了协助IETF音频-视频传输工作组涉及寄给地理上分散的成员的视频会议而创建的。目前,RFC3550中指定的v2是过去15年中一直在使用的v2。

  1. RTP的设计基于应用层框架和集成层处理的基本原理。它提供源和负载类型标识,流同步,丢包和重新排序以及媒体流监控。
  2. RTP使用RTP控制协议(RTCP)报告媒体流的性能。
  3. 在这个过程中,媒体发送端发送封装在RTP中的编码媒体。它还发送RTCP发送端报告,这有助于不同媒体流的额播放同步。接收端维护一个抖动缓冲区,对媒体数据包进行重新排序,并根据数据包中编码的定时信息进行播放。如果数据包丢失,接收端进行数据包恢复或者隐藏错误。最后,在RTCP接收端报告中接收机粗略或详细地对统计数据进行报告,使媒体发送端能够调整其媒体编码速率,变成更好的编解码器或改变前向纠错量。
  • RTP数据包报头格式

RTP包报头格式分为四个部分:同步源标识符(synchronization source identifier),贡献源标识符(contributing source identifier),时间戳(timestamp),序列号(sequence number),以及负载类型(payload type)。

  1. 同步源:同步源协助确定源端点。 当端点发送需要同步的多个媒体流时很有用。
  2. RTP时间戳:RTP时间戳有助于在适当的时间播放接收到的数据包,并从RTP数据包中重组媒体帧。
  3. RTP序列号:RTP序列号帮助识别丢失的数据包并且在数据包不按顺序到达的情况下重新排序数据包。
  4. 负载类型:负载类型描述了它所携带的媒体数据的编码。每个编解码器必须指定其相应的负载类型。
  • RTCP报告

RTCP报告有三种:发送端报告,接收端报告和扩展报告。

  1. RTCP发送端报告发送端使用RTCP发送端报告来帮助同步媒体流。为了实现这一点,它将各个媒体流的RTP时间戳与时钟时间相关联,并通知接收端当前的分组速率和比特率。
  2. RTCP接收端报告接收端测量输入流并在RTCP接收端报告中报告粗粒度的传输统计。此报告包括当前的丢包比例,接收到的最高序列号,并有助于计算往返时间。
  3. RTCP扩展报告RTCP扩展报告由端点用来描述复杂的度量标准,而不是RTCP接收端报告中所公开的。这包括相关的性能监控和拥塞控制指标,如抖动缓冲之后表,数据包延时变化,延时指标,丢弃数据包数量,体验质量等。新的度量标准也可以定义,只要它们涉及测量的内容,测量方式以及向其他端点报告的方式。
  • RTP负载格式是什么样的?

定义负载格式

你可能感兴趣的:(webrtc,学习,网络)