WebRTC - The technology that powers Google Meet/Hangout, Facebook Messenger and Discord History of Real-time Communication Overview Why do developers & companies love Web RTC? What happens during the P2P connection Signaling Network Address Translations (NATs) and ICE STUN Servers Limitations - Symmetric NAT Why STUN servers are useful TURN Servers VP9 Video Codec JavaScript APIs Security Applications that use WebRTC

2025-06-04

WebRTC - 支持 Google Meet/Hangout、Facebook Messenger 和 Discord 的技术

实时通信的历史

概述

为什么开发人员和公司喜欢 Web RTC?

P2P 连接期间会发生什么

信号

网络地址转换 (NAT) 和 ICE

STUN服务器

限制 - 对称 NAT

为什么 STUN 服务器很有用

TURN 服务器

VP9 视频编解码器

JavaScript API

安全

使用 WebRTC 的应用程序

以下是 P2P 连接期间发生的情况,以及您需要了解的有关 Web 实时通信的所有信息

9 分钟了解 Web RTC 的一切

实时通信的历史

  • 大约在 2010 年代,只有使用附加软件、插件或 Adob​​e Flash 才能实现实时通信。
  • 2013 年,Chrome 和 Firefox 之间首次推出跨浏览器视频通话。
  • 2014年,首次跨浏览器数据传输发生,开启了客户端实时通信的新趋势。

如今,它被称为我们每天在 Chrome、Mozilla Firefox、Opera、Safari、Edge、iOS 和 Android 中使用的 Web RTC。

概述

WebRTC 代表 Web 实时通信,这是 Google 于 2011 年推出的一种网络技术,可实现跨网络和本机浏览器的实时音频、视频和数据传输。

“它的使命是为浏览器、移动平台和物联网设备开发丰富、高质量的 RTC 应用程序,并允许它们通过一组通用协议进行通信。”

WebRTC 允许 Web 应用创建点对点通信。WebRTC 是一个庞大的话题,因此在本文中,我们将重点讨论 WebRTC 的以下问题:

  1. 为什么开发人员和公司喜欢 Web RTC?
  2. P2P 连接期间会发生什么

    • 信号
    • NAT 和 ICE
    • STUN&TURN服务器
    • VP9 视频编解码器
  3. WebRTC API

  4. 安全


为什么开发人员和公司喜欢 Web RTC?

  1. 免费开源

    • 它为浏览器提供端到端的直接通信,并允许开发人员轻松地实现这种连接。
  2. 速度提升

    • 不再需要通过服务器进行路由;它减少了延迟和带宽消耗。
    • 直接通信提高了数据传输和文件共享的速度。
  3. 无需第三方应用程序

    • 不需要额外的软件、插件或持续的服务器参与(嗯,确实需要,但只是在开始时,你稍后就会知道为什么)
    • 轻松嵌入任何网站并通过互联网连接同行。
  4. 易于实施

    • 花费更少的时间和精力来促进点对点(P2P)连接。
    • 所有功能都可以通过客户端实现。开发者只需下载兼容 WebRTC 的浏览器并使用
  5. 兼容的

    • 大多数流行浏览器支持:Microsoft Edge、Google Chrome、Mozilla Firefox、Safari、Safari、Opera、Vivaldi。
    • 支持 Android、Chrome OS、Firefox OS、BlackBerry 10、iOS、Tizen。
  6. 提供跨多种浏览器的安全连接

    • 所有 WebRTC 组件都必须加密。
    • 由于它不是一个插件,它在浏览器的沙箱内运行而无需创建新进程,因此没有恶意软件可以进入用户的系统。
    • 无需跟踪更新。浏览器版本自动更新,用户可在补丁发布后立即获取。

P2P 连接期间会发生什么

图片来自 PubNub 要连接两个浏览器,Web RTC 需要执行五个步骤来建立 P2P 连接。

  1. 信号处理可消除音频或视频中的环境噪音。
  2. 编解码器处理以压缩和解压缩音频或视频。
  3. 通过防火墙 (NAT) 和中继从一个对等点路由到另一个对等点,以创建交互式连接建立 (ICE)
  4. 用户数据在通过连接传输之前会被加密。
  5. 管理每个对等体必须向用户提供的带宽

信号

  • 浏览器中的 P2P 连接由服务器建立,以确保所有对等方都同意该会话。
  • 会话密钥、错误消息、媒体元数据、编解码器、带宽以及公共 IP 地址和端口等信息在对等方之间共享以创建连接。
  • 服务器向两个对等体发出信号,以确定使用什么媒体格式以及每个对等体想要向对方发送什么内容。

替代文本

网络地址转换 (NAT) 和 ICE

NAT 会将家用路由器等设备上的私有 IP 地址转换为公有 IP 地址。防火墙和 NAT 会通过阻止特定协议或端口来减慢这一过程。WebRTC 使用的解决方案是名为 ICE 的框架。ICE
通过并行尝试所有连接并选择最高效的路径来建立互联网上的 P2P 连接。连接类型有两种:STUN 和 TURN

STUN服务器

它首先通过 STUN(NAT 会话遍历实用程序)服务器连接,以通过网络地址获取直接链接。

STUN 服务器为请求者提供一个公网 IP 地址,以便与他人通信。其目的是帮助请求者回答“我的 IP 地址是多少?”这个问题。

STUN 服务器的工作原理

替代文本

为了与其他对等点建立连接,端点需要知道其公共 IP 以便与其他人共享。

  1. 当一个端点(Calvin)位于 NAT/防火墙后面时,它只能识别其本地 IP 地址,而另一个端点(Elana)由于防火墙安全而无法连接到本地 IP。
  2. 该端点将请求 STUN 服务器提供其公共 IP 地址和 NAT 类型。
  3. 另一个端点(Elana)可以使用 STUN 服务器给出的公共 IP 地址尝试建立两者之间的连接。
  4. 如果成功,媒体将直接流向每个端点,无需第三方或其他服务器。
  5. 为了安全起见,所有 STUN 服务器都将被丢弃并等待下一个查询。

限制 - 对称 NAT

但上述情况有时会失败,并且PORT和IP号码会发生变化。

这种情况称为“对称 NAT”,因为 STUN 服务器的公共 IP 地址没有足够的能力在这里建立连接,因为端口也需要转换。

一些路由器使用对称 NAT,这种技术旨在为终端添加另一层安全保护,或避免许多陌生人连接到您的设备。对称 NAT 不仅会将 IP 地址从私有地址转换为公有地址,还会转换端口。

换句话说,路由器只会接受用户之前连接过的已知对等体的连接。因此,另一种确保两个对等体之间连接成功的解决方案是通过 TURN 服务器。

为什么 STUN 服务器很有用

作为一种协议,STUN 速度超快、轻量级且简单易用。它允许媒体在短时间内直接传输。STUN 有助于加快连接速度并更快地实时获取结果。

用户使用局域网下载数据时,情况类似,但比通过 Wi-Fi 下载速度更快。最重要的是,它允许媒体在两个端点之间直接传输。STUN 可以公开免费使用。

TURN 服务器

TURN(使用中继绕过 NAT)服务器在点对点连接中断时充当中继服务器。虽然使用 STUN 服务器建立连接,但 TURN 服务器在整个连接过程中始终保持活动状态。

TURN 服务器持续在 WebRTC 对等体之间中继媒体。因此,我们使用“中继”一词来定义 TURN。

TURN 服务器的工作原理

替代文本

该中继服务器用于在STUN服务器发生故障时中继流量,并且还具有STUN的功能。

TURN 服务器是一个内置传输功能的 STUN 服务器。更具体地说,TURN 用于在对等体之间中继音频/视频/数据流,而不是信令数据。

  1. 按照 STUN 服务器的步骤操作
  2. 如果 STUN 失败,最终用户将与 TURN 服务器建立连接,通知所有对等方将数据发送到服务器,该服务器负责将数据传输给第一个最终用户。

总是首先使用 STUN 服务器的一个主要原因是 TURN 服务器太昂贵,并且如果在线播放高清视频则需要占用大量带宽。

VP9 视频编解码器

许多人开始使用 WebRTC 的一个主要原因是视频流传输。随着直播视频越来越主流,画质也越来越高,它需要更快的数据传输速度或更小的数据包,以便于传输。

此时,VP9 视频编解码器会压缩和解压音频或视频。它有助于更​​快、更清晰地播放视频。通过支持 VP8,Safari 12.1 可以与其他用户交换实时视频。

替代文本

VP9 是 VP8 的改进版,是 Google 旗下的视频压缩格式,由 On2 Technologies 创建。

主要功能是掩盖数据包丢失和清理噪声图像,以及跨多个平台的捕获和回放功能。

借助 VP9,用户可以使用 WebRTC 流畅地传输 720p 视频,而不会出现丢包或延迟。它还能在相同带宽下支持 1080p 视频通话,并有助于减少网络连接不良和数据流量消耗,从而避免用户支付高昂的费用。


JavaScript API

有三个主要的 Javascript API 可以处理音频捕获、视频会议和数据传输:

媒体流

  • 利用用户的摄像头和麦克风捕捉并传输音频和视频。使用此 API,您可以访问麦克风和网络摄像头等输入设备。
  • 当开发者将 WebRTC 集成到他们的网站时,他们可以对音频和视频的流式传输方式进行限制,例如帧速率、视频帧的大小、分辨率等等。
  • 此 API 作为 HTML 5 的一部分提供,而其他两个 API 则明确为 WebRTC 提供。

RTCPeerConnection

  • 将捕获的音频和视频流通过互联网实时发送到另一个 WebRTC 端点。使用这些 API,用户可以将 getUserMedia 捕获的音频和视频传输给其他端点。
  • 具有连接到远程对等点、维护和监视连接以及完成后关闭连接的功能。

RTC数据通道

  • 传输任意数据。每个数据通道都与一个 RTCPeerConnection 关联。
  • 内置安全性(DTLS)和拥塞控制。

安全

任何实时通信应用程序中的安全风险之一都可能在数据传输过程中出现。最终,加密是 WebRTC 的强制功能,并在所有组件上强制执行。

WebRTC 使用两种标准化加密协议:

数据报传输层安全性 (DTLS)

  • 浏览器内置的标准化协议,用于加密数据流。它基于传输层协议 (TLP)。
  • 由于 DTLS 使用用户数据协议 (UDP),因此保留了传输的语义。
  • 它是安全套接字层 (SSL) 的扩展;任何 SSL 协议都可以用于保护 WebRTC 数据,从而实现端到端加密。

安全实时传输协议 (SRTP)

  • 用于加密媒体流。
  • 它是实时传输协议 (RTP) 的扩展,RTP 本身没有任何内置的安全机制。它为 RTP 添加了保护、完整性和消息认证。
  • 缺点:虽然它为 RTP 数据包提供加密,但它不加密标头。

确保两个对等体之间链接安全的步骤

  1. 启动信令过程,在两个对等体之间交换元数据。
  2. 进行ICE检查,ICE在双方之间建立通道。
  3. 执行 DTLS 握手。如果有媒体传输,SRTP 将使用在 DTLS 握手步骤中导出的密钥。
  4. 所有对等方都拥有安全通道,且其密钥不为公众所知。
  5. 在对等体之间交换密钥。

使用 WebRTC 的应用程序

  1. 谷歌会议/谷歌环聊
  2. Facebook Messenger
  3. 不和谐
  4. 亚马逊 Chime
  5. ....

欲了解更多信息,您可以查看此链接以获取使用 WebRTC 的应用程序列表
http://www.webrtcworld.com/webrtc-list.aspx

关注获取最新博客文章

文章来源:https://dev.to/calvinqc/webrtc-the-technology-that-powers-google-meet-hangout-facebook-messenger-and-discord-4j67
PREV
使用 TypeScript、Node、Express 和 Vue 构建 Instagram - 第一部分
NEXT
使用 Jest 和 TypeORM 进行测试