WebRTC - 协议



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

您几乎可以在当今任何视频播放应用程序中看到这种效果。视频游戏和视频流应用程序可以承受丢失一些视频帧,因为我们的思维会尝试填充这些空白,因为我们总是会想象我们正在观看的内容。如果我们希望我们的应用程序在一秒钟内播放 50 帧,而我们错过了第 15、25 和 38 帧,大多数情况下,用户甚至不会注意到。

UDP Model

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

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

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

  • 任何数据在另一端都不会出现重复

您可以了解为什么 TCP 是当今大多数 Web 应用程序的绝佳选择。如果您正在请求一个 HTML 页面,那么按正确的顺序获取所有数据是有意义的。但是这项技术并不适用于所有用例。例如,如果我们以多人游戏为例,用户将只能看到几秒钟前发生的事情,而不会看到更多内容,这可能会导致数据丢失时出现很大的瓶颈。

TCP Model

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

UDP 的设计初衷就是作为一种不太可靠的传输层。您无法确定:

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

如今,WebRTC 以尽可能快的速度发送媒体数据包。在涉及大型企业网络时,WebRTC 可能是一个复杂的话题。它们的防火墙可能会阻止其间的 UDP 流量。已经做了大量工作来使 UDP 能够正常地为广大用户服务。

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

webrtc_environment.htm
广告
© . All rights reserved.