WebRTC 协议
实时数据通信意味着用户设备之间的快速连接速度。一个常见的连接每秒传输30到60帧的视频或音频到另一个用户的设备,以达到良好的质量。因此,理解发送最新的数据帧比确保每一帧都传递给另一方更为重要。这就是为什么WebRTC应用可能会丢失某些帧以保持连接速度的良好的原因。
你可能会在现今的任何视频播放应用中看到这种效果。视频游戏和视频流媒体应用可以承受丢失几帧视频的问题,因为我们的大脑会尝试填补这些空白,我们总是能够可视化我们正在观看的内容。如果我们希望我们的应用程序在一秒钟内播放50帧,并且我们错过了第15、25和38帧,大部分时间用户甚至不会注意到。因此,对于视频流媒体应用程序有着不同的要求—
这就是为什么WebRTC应用程序使用UDP(用户数据报协议)作为传输协议。大多数Web应用程序今天都使用TCP(传输控制协议)构建,因为它保证的是:
- 所有发送的数据都将被标记为已接收
-
任何未到达目的地的数据都将被重新发送,其他数据的发送将被暂时终止
-
任何数据在接收端不会有重复
你可以看到为什么TCP是大多数Web应用程序的一个很好的选择。如果你请求一个HTML页面,按照正确的顺序获取所有的数据是有意义的。但是这种技术并不适用于所有的用例。例如,如果是一个多人游戏,用户只能看到最近几秒钟发生的事情,如果数据丢失,这可能会导致严重的瓶颈问题。
WebRTC的音视频连接并不是最可靠的,而是最快速的连接两个用户设备。因此,我们可以承受帧丢失,这意味着UDP是音视频流应用的最佳选择。
UDP被设计成一个不太可靠的传输层。您无法确保:
- 您的数据的顺序
- 您的数据的传递状态
- 每个数据包的状态
如今,WebRTC以最快的方式发送媒体数据包。但是,在涉及大型企业网络时,WebRTC可能是一个复杂的话题。它们的防火墙可能会阻止UDP流量通过。为了让UDP在大众中正常运行,已经做了很多工作。
如今,大部分互联网流量是建立在TCP和UDP上的,不仅仅是网页。您可以在平板电脑、移动设备、智能电视等设备中找到它们。因此,了解这些技术的工作原理非常重要。