- WebRTC 教程
- WebRTC - 首页
- WebRTC - 概述
- WebRTC - 架构
- WebRTC - 环境
- WebRTC - MediaStream APIs
- WebRTC - RTCPeerConnection APIs
- WebRTC - RTCDataChannel APIs
- WebRTC - 发送消息
- WebRTC - 信令
- WebRTC - 浏览器支持
- WebRTC - 移动端支持
- WebRTC - 视频演示
- WebRTC - 语音演示
- WebRTC - 文本演示
- WebRTC - 安全性
- WebRTC 资源
- WebRTC - 快速指南
- WebRTC - 有用资源
- WebRTC - 讨论
WebRTC - 协议
实时数据通信意味着用户设备之间具有快速的连接速度。常见的连接会获取视频或音频帧,并以每秒 30 到 60 次的速度将其传输到另一个用户的设备,以达到良好的质量。因此,重要的是要理解,发送最新的数据帧比确保每个帧都到达另一端更为关键。这就是为什么 WebRTC 应用程序可能会丢失某些帧以保持良好的连接速度。
您几乎可以在当今任何视频播放应用程序中看到这种效果。视频游戏和视频流应用程序可以承受丢失一些视频帧,因为我们的思维会尝试填充这些空白,因为我们总是会想象我们正在观看的内容。如果我们希望我们的应用程序在一秒钟内播放 50 帧,而我们错过了第 15、25 和 38 帧,大多数情况下,用户甚至不会注意到。
这就是为什么 WebRTC 应用程序使用 UDP(用户数据报协议)作为传输协议。当今大多数 Web 应用程序都是使用 TCP(传输控制协议)构建的,因为它保证了:
发送的任何数据都会被标记为已接收
任何未到达另一端的数据都会被重新发送,并且其他数据的发送将被暂时终止
任何数据在另一端都不会出现重复
您可以了解为什么 TCP 是当今大多数 Web 应用程序的绝佳选择。如果您正在请求一个 HTML 页面,那么按正确的顺序获取所有数据是有意义的。但是这项技术并不适用于所有用例。例如,如果我们以多人游戏为例,用户将只能看到几秒钟前发生的事情,而不会看到更多内容,这可能会导致数据丢失时出现很大的瓶颈。
音频和视频 WebRTC 连接并非旨在最可靠,而是旨在成为两个用户设备之间最快的连接。因此,我们可以承受丢失帧,这意味着 UDP 是音频和视频流应用程序的最佳选择。
UDP 的设计初衷就是作为一种不太可靠的传输层。您无法确定:
- 数据的顺序
- 数据的投递状态
- 每个数据包的状态
如今,WebRTC 以尽可能快的速度发送媒体数据包。在涉及大型企业网络时,WebRTC 可能是一个复杂的话题。它们的防火墙可能会阻止其间的 UDP 流量。已经做了大量工作来使 UDP 能够正常地为广大用户服务。
当今大多数互联网流量都是基于 TCP 和 UDP 建立的,而不仅仅是网页。您可以在平板电脑、移动设备、智能电视等设备中找到它们。因此,了解这些技术如何工作非常重要。