WebRTC - 协议

实时数据通信意味着两个用户设备之间的快速连接速度。为了获得良好的质量,常见的连接需要每秒 30 到 60 次将一帧视频或音频传输到另一个用户的设备。因此,重要的是要明白,发送最新的数据帧比确保每一帧都到达另一端更为重要。这就是为什么 WebRTC 应用程序可能会错过某些帧以保持良好的连接速度。

如今,几乎在任何视频播放应用程序中都可以看到这种效果。视频游戏和视频流应用程序可以承受丢失几帧视频的后果,因为我们的大脑会试图填补这些空白,因为我们总是在想象我们正在观看的内容。如果我们希望我们的应用程序在一秒钟内播放 50 帧,而我们错过了第 15、25 和 38 帧,大多数情况下,用户甚至不会注意到它。因此,对于视频流应用程序,存在一组不同的要求 −

UDP 模型

这就是 WebRTC 应用程序使用 UDP(用户数据报协议)作为传输协议的原因。当今大多数 Web 应用程序都是使用 TCP(传输控制协议)构建的,因为它可以保证 −

  • 任何发送的数据都将被标记为已接收

  • 任何未到达另一端的数据都将被重新发送,其他数据的发送将暂时终止

  • 任何数据都将是唯一的,在另一端没有重复

您可能会看到为什么 TCP 是当今大多数 Web 应用程序的绝佳选择。如果您正在请求 HTML 页面,则以正确的顺序获取所有数据是有意义的。但这项技术并不适用于所有用例。以多人游戏为例,用户只能看到过去几秒发生的事情,而看不到其他内容,当数据丢失时,这可能会导致很大的瓶颈 −

TCP Model

音频和视频 WebRTC 连接并不意味着最可靠,而是两个用户设备之间最快的连接。因此,我们可以承受丢失帧,这意味着 UDP 是音频和视频流应用程序的最佳选择。

UDP 被构建为可靠性较低的传输层。您无法确定 −

  • 数据的顺序
  • 数据的传递状态
  • 每个数据包的状态

如今,WebRTC 以最快的方式发送媒体数据包。当涉及大型企业网络时,WebRTC 可能是一个复杂的话题。它们的防火墙可以阻止跨它们的 UDP 流量。已经做了很多工作来使 UDP 能够为广大受众正常工作。

当今大多数互联网流量都是基于 TCP 和 UDP 构建的,而不仅仅是网页。您可以在平板电脑、移动设备、智能电视等中找到它们。因此,了解这些技术的工作原理非常重要。

webrtc_environment.html