Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >WebRTC 成为 W3C 和 IETF 正式标准

WebRTC 成为 W3C 和 IETF 正式标准

作者头像
Tinywan
发布于 2021-02-25 08:26:26
发布于 2021-02-25 08:26:26
1.2K0
举报
文章被收录于专栏:开源技术小栈开源技术小栈

2021年1月26日,W3C(万维网联盟)和 IETF (互联网工程任务组)同时宣布 WebRTC(Web Real-Time Communications,Web 实时通信)现发布为正式标准,将音视频通信带到 Web 上任何地方。

WebRTC 由用于 Web 实时通信的 JavaScript API 和一组通信协议构成,支持网络上的任何已连接设备成为 Web 上潜在的通信端点。WebRTC 已成为线上通信及协作服务的基石。

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

它并不是单一的协议,包含了媒体、加密、传输层等在内的多个协议标准以及一套基于 JavaScript 的 API。通过简单易用的 JavaScript API ,在不安装任何插件的情况下,让浏览器拥有了 P2P音视频和数据分享的能力。同时WebRTC 并不是一个孤立的协议,它拥有灵活的信令,可以便捷的对接现有的SIP 和电话网络的系统。

WebRTC 内部结构

架构图颜色标识说明:

  • 紫色部分是Web开发者API层
  • 蓝色实线部分是面向浏览器厂商的API层
  • 蓝色虚线部分浏览器厂商可以自定义实现

WebRTC有三个模块:

  • Voice Engine(音频引擎)
    • Voice Engine包含iSAC/iLBC Codec(音频编解码器,前者是针对宽带和超宽带,后者是针对窄带)
    • NetEQ for voice(处理网络抖动和语音包丢失)
    • Echo Canceler(回声消除器)/ Noise Reduction(噪声抑制)
  • Video Engine(视频引擎)
    • VP8 Codec(视频图像编解码器)
    • Video jitter buffer(视频抖动缓冲器,处理视频抖动和视频信息包丢失)
    • Image enhancements(图像质量增强)
  • Transport
    • SRTP(安全的实时传输协议,用以音视频流传输)
    • Multiplexing(多路复用)
    • P2P,STUN+TURN+ICE(用于NAT网络和防火墙穿越的)
    • 除此之外,安全传输可能还会用到DTLS(数据报安全传输),用于加密传输和密钥协商
    • 整个WebRTC通信是基于UDP

WebRTC 的核心组件

  • 音视频引擎:OPUS、VP8 / VP9、H264
  • 传输层协议:底层传输协议为 UDP
  • 媒体协议:SRTP / SRTCP
  • 数据协议:DTLS / SCTP
  • P2P 内网穿透:STUN / TURN / ICE / Trickle ICE
  • 信令与 SDP 协商:HTTP / WebSocket / SIP、 Offer Answer 模型

WebRTC 音频和视频引擎

  • 最底层是硬件设备,上面是音频捕获模块和视频捕获模块
  • 中间部分为音视频引擎。音频引擎负责音频采集和传输,具有降噪、回声消除等功能。视频引擎负责网络抖动优化,互联网传输编解码优化
  • 在音视频引擎之上是 一套 C++ API,在 C++ 的 API 之上是提供给浏览器的Javascript API

WebRTC 协议栈

  • WebRTC 核心的协议都是在右侧基于 UDP 基础上搭建起来的
  • 其中,ICE、STUN、TURN 用于内网穿透, 解决了获取与绑定外网映射地址,以及 keep alive 机制
  • DTLS 用于对传输内容进行加密,可以看做是 UDP 版的 TLS。由于 WebRTC 对安全比较重视,这一层是必须的。所有WebRTC组件都必须加密,并且其JavaScript API只能用于安全源(HTTPS或本地主机)。信令机制并不是由WebRTC标准定义的,所以您必须确保使用安全协议。
  • SRTP 与 SRTCP 是对媒体数据的封装与传输控制协议
  • SCTP 是流控制传输协议,提供类似 TCP 的特性,SCTP 可以基于 UDP 上构建,在 WebRTC 里是在 DTLS 协议之上
  • RTCPeerConnection 用来建立和维护端到端连接,并提供高效的音视频流传输
  • RTCDataChannel 用来支持端到端的任意二进制数据传输
  • WebRTC 协议栈解释
    • ICE:互动式连接建立(RFC 5245)
    • STUN:用于NAT的会话遍历实用程序(RFC 5389)
    • TURN:在NAT周围使用继电器进行遍历(RFC 5766)
    • SDP:会话描述协议(RFC 4566)
    • DTLS:数据报传输层安全性(RFC 6347)
    • SCTP:流控制传输协议(RFC 4960)
    • SRTP:安全实时传输协议(RFC 3711)

COVID-19 疫情

目前全球都面临着 COVID-19 疫情,WebRTC 让数十亿人无论其设备或地域如何,在 COVID-19 疫情期间也能保持联络。WebRTC 的使用已经超越了最初的核心设计,即在浏览器和其他生态(例如本地应用)中支持视频会议和协作系统。现在需要更多的特性和优化。

IETF WebTransport (WEBTRANS) 和 WebRTC Ingest Signaling over HTTPS (WISH) 工作组已经在开展工作,在 IETF 其他工作组的基础上进一步协调、拓展相关工作。其中包括 QUIC(定义支持 WebTransport API 开发的新协议)和 HTTPBIS(指定简单、可扩展的、基于 HTTPS 的信令协议),以在广播工具和实时媒体广播网之间建立基于 WebRTC 的单向视听会话。

WebRTC 的未来

W3C WebRTC 工作组已经开始研究 WebRTC Next Version Use Cases,规划 WebRTC 的未来,特别是:

  • 服务器介导的视频会议中的端到端加密
  • 即时处理音视频材料,包括通过机器学习
  • 物联网(例如 IoT 传感器维持长期连接并寻求最小功耗) WebRTC 工作组正对现有及新的用例进行迭代,重点理解全部需求及其优先级。W3C 近期开始的 WebTransport 和 Web Codecs 工作预计将低延迟流媒体的优势引入更广大的媒体和娱乐生态系统。

WebRTC 成为 W3C 为应用程序开发定义开放 Web 平台的众多标准之一,具有前所未有的潜力。其让开发人员能够构建丰富的交互体验,由巨大的数据存储提供动力,可用于任何设备以及环境。

标准文档

WebRTC 标准文档:https://www.w3.org/TR/webrtc/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 万少波的播客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
http协议的get和post方法的区别
相信许多人都或多或少知道get和post区别,大家最常说的几个区别无非是一下几个:
全栈程序员站长
2022/09/12
5590
深入解析HTTP请求:了解请求特征与报文格式的关键秘密
在上一章节中,我们详细探讨了超文本传输协议(HTTP)的基本概念,并且延伸讨论了HTTP请求响应的基本流程。在这个过程中,浏览器首先通过DNS解析来确定要访问的服务器的IP地址,然后与服务器建立起HTTP连接。接下来,浏览器会向服务器发送HTTP请求报文,而服务器则会解析该请求报文,并返回包含所请求资源的HTTP响应报文。
努力的小雨
2023/11/28
4670
51 张图助你彻底掌握 HTTP 协议
如果说 TCP/IP 协议是互联网通信的根基,那么 HTTP 就是其中当之无愧的王者,小到日常生活中的游戏,新闻,大到双十一秒杀等都能看到它的身影,据 NetCraft 统计,目前全球至少有 16 亿个网站、2 亿多个独立域名,而这个庞大网络世界的底层运转机制就是 HTTP,可以毫不夸张的说,无 HTTP 不通信!
kunge
2021/01/13
6520
图解 HTTP 常见面试题
在面试过程中,HTTP 被提问的概率还是比较高的。 本文搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP。
李林LiLin
2023/03/12
5350
炸裂!万字长文拿下HTTP 我在字节跳动等你!
HTTP(hypertext transport protocol)翻译过来为"超文本传输协议",文本可以理解为简单的字符文字组合,也可以理解为更为复杂的音频或者图像等。那么将这个词语拆分为三个部分。
我是程序员小贱
2020/06/05
7200
web开发快餐式入门指南 1.1 http
由于web应用大多数都在浏览器中进行操作,所以我们有必要先了解一下浏览器里面到底发生了什么。简而言之,当你在浏览器的地址栏中输入网址并按下回车,或者点击了网页上的某个链接时,浏览器就会按照网址给目标服务器发送请求。浏览器和服务器之间的请求遵循http协议,协议规定了所使用的格式,只有按照这种格式组织的数据才能相互识别。
ApacheCN_飞龙
2019/02/15
4290
面试必备:GET和POST 的区别详细解说
最近一些小伙伴面试都会被问到 get 和 post 的区别,很多都只能简单的说几点,今天我们就来把弄的明明白白,彻彻底底。
Javanx
2019/09/04
12.9K0
面试必备:GET和POST 的区别详细解说
都2019年了,还问GET和POST的区别【深度好文】
最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 get 和 post 的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的区别。
孟船长
2019/03/19
5580
都2019年了,还问GET和POST的区别【深度好文】
面试必考 | GET和POST区别
最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 GET 和 POST 请求的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的区别。
用户3946442
2022/04/11
7860
面试必考 | GET和POST区别
都9102年了,还问GET和POST的区别
本篇文章只纯属于转载,转载内容只是部分内容并且格式未进行排版,只是为了给读者推荐而已,详情请点击文末左下角的阅读原文。
兔云小新LM
2019/07/24
3440
Python接口自动化-接口基础(二)
它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
可可的测试小栈
2020/02/25
7640
深入【Get】与【Post】区别
其实吧,GET和POST在本质上没有区别,都是HTTP协议中的两种发送请求的方法。而HTTP呢,是基于TCP/IP的关于数据如何在万维网中如何通信的协议。 
红目香薰
2022/11/28
4130
HTTP请求报文和响应报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
10JQKA
2019/10/23
2.3K0
HTTP请求报文和响应报文
面试官:GET 和 POST 到底有什么区别?
大家好,我是二哥呀。这个问题虽然看上去很初级,但实际上却涉及到方方面面,这也就是为啥面试里老爱问这个的原因之一。
沉默王二
2022/04/14
6050
面试官:GET 和 POST 到底有什么区别?
【黄啊码】什么是HTTP?HTTP是如何演变的?
超文本传输协议。HTTP是在计算机中用于两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
黄啊码
2022/06/10
1.5K0
HTTP协议和静态Web服务器
超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片、音乐、视频、超链接等等都属于超文本。
用户9399690
2022/01/20
7030
HTTP协议和静态Web服务器
【前端 · 面试 】HTTP 总结(五)—— GET 和 POST
在前后端交互的过程中,使用频率最高的莫过于 GET 和 POST 这两个方法,并且这也是面试中被问到频率很高的知识点。
编程三昧
2021/08/05
3290
【前端 · 面试 】HTTP 总结(五)——  GET 和 POST
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
本文对于计算机面试、笔试过程中经常被问到的计算机网络类问题,做一个梳理总结,方便自己查看学习,同时也希望为其他找工作、学习的伙伴提供一个参考。
寻求出路的程序媛
2024/11/07
1630
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺
有一次面试的时候也被问到了这个问题,下面我会以面试的形式呈现给大家,那么就让我把大家拉到面试的现场吧!
狼王编程
2021/05/31
3990
听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺
【面试题】HTTP知识点整理(附答案)
HTTP/1 的几种优化可以弃用: 合并文件、内联资源、雪碧图、域名分片对于 HTTP/2 来说是不必要的,使用 h2 尽可能将资源细粒化,文件分解地尽可能散,不用担心请求数多
木子星兮
2020/07/17
1.4K0
【面试题】HTTP知识点整理(附答案)
推荐阅读
相关推荐
http协议的get和post方法的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文