WebRTC 的工作原理
本文档对 WebRTC 进行了快速而抽象的介绍。要获得有关 WebRTC 的更多信息,请查看本文档末尾的进一步阅读部分。
网络RTC
WebRTC(Web Real-Time Communication)是为浏览器之间的点对点双工实时通信而开发的一组技术。顾名思义,它与 Web 兼容,并且是W3C 中的标准WebRTC 的一个重要特性是它甚至可以在 NAT 地址后面工作。
WebRTC 使用多种技术在浏览器之间提供实时对等通信。这些技术是
还有一件事是运行 WebRTC 需要Signaling Server 。但是,在实现信令服务器方面并没有明确的标准。每个实现都创建自己的样式。本节稍后将提供有关 Signaling Server 的更多信息。
让我们快速了解一下上述技术。
SDP(会话描述协议)
SDP 是一个简单的协议,它用于浏览器支持的编解码器。例如,假设有两个对等点(客户端 A和客户端 B)将通过 WebRTC 连接。客户端 A和客户端 B创建定义它们支持的编解码器的 SDP 字符串。例如,客户端 A可能支持视频的 H264、VP8 和 VP9 编解码器,音频的 Opus 和 PCM 编解码器。客户端 B可能仅支持视频的 H264 和音频的仅 Opus 编解码器。对于这种情况,客户端 A和客户端 B之间将使用的编解码器是 H264 和 Opus。如果对等体之间没有通用编解码器,则无法建立对等通信。
您可能对这些 SDP 字符串如何在彼此之间发送有疑问。这是 Signaling Server 发生的地方。
ICE(交互连接建立)
ICE 是在对等点之间建立连接的魔法,即使它们位于 NAT 之后。让我们再次假设客户端 A和客户端 B将连接起来,并看看 ICE 是如何用于此的。
在上图中,有两台服务器。其中一个是 STUN,另一个是 TURN 服务器。
STUN 服务器用于让客户端 A了解其所有地址。举个例子,我们的电脑一般在 192.168.0.0 网络中有一个本地地址,我们连接到www.whatismyip.com时看到的还有第二个地址,这个IP地址实际上是我们的公共IP地址互联网网关(调制解调器、路由器等)所以让我们定义 STUN 服务器;STUN 服务器让对等方知道他们的公共和本地 IP 地址。顺便说一句,谷歌提供免费的 STUN 服务器(stun.l.google.com:19302)。
图中还有一个服务器,TURN Server。当对等点之间无法建立对等连接时,使用 TURN Server。TURN 服务器只是在对等点之间中继数据。
RTP(实时协议)
RTP 是一种成熟的传输实时数据的协议。它基于UDP。音频和视频在 WebRTC 中使用 RTP 传输。RTP 有一个姊妹协议,名为 RTCP(实时控制协议),它在 RTP 通信中提供 QoS。RTP 也用于 RTSP(实时流协议)
信令服务器
最后一部分是未在 WebRTC 中定义的信令服务器。如上所述,Signaling Server 用于在Client A和Client B之间发送 SDP 字符串和 ICE Candidates 。信令服务器还决定哪些对等方相互连接。WebSocket 技术一般用于 Signaling Server 进行通信。
兼容性
在过去的一年里,包括 Safari、Edge 在内的所有浏览器都发布了支持 WebRTC 的新版本。Chrome、Firefox 和 Opera 已经支持 WebRTC 有一段时间了。浏览器常用的视频编解码器是 H264。对于音频,Opus 在浏览器中很常见。PCM 也可用于音频编解码器,但由于许可问题,即使所有浏览器都支持 AAC,也不使用 AAC。IP 摄像机通常支持 H264 视频编解码器和 PCM 或 AAC 音频编解码器。
进一步阅读和参考
顺便说一句,我是Ant Media Server的开发人员,它支持可扩展的一对多 WebRTC 和对等 WebRTC 连接