WebRTC 协议简介

本文介绍了 WebRTC API 所构建的基础协议。

ICE

交互式连接建立 (ICE) 是一种框架,允许您的 Web 浏览器与对等节点连接。直接从对等节点 A 连接到对等节点 B 无法工作的理由有很多。它需要绕过阻止打开连接的防火墙,如果像大多数情况一样您的设备没有公共 IP 地址,则需要为您提供唯一的地址,如果您的路由器不允许您直接连接到对等节点,则需要通过服务器中继数据。ICE 使用 STUN 和/或 TURN 服务器来实现这一点,如下所述。

STUN

用于 NAT 的会话遍历实用程序 (STUN) 是一种协议,用于发现您的公共地址并确定路由器中任何阻止与对等节点直接连接的限制。

客户端将向互联网上的 STUN 服务器发送请求,服务器将回复客户端的公共地址以及客户端是否可以通过路由器的 NAT 访问。

An interaction between two users of a WebRTC application involving a STUN server.

NAT

网络地址转换 (NAT) 用于为您的设备提供公共 IP 地址。路由器将具有公共 IP 地址,连接到路由器的每个设备将具有私有 IP 地址。请求将从设备的私有 IP 转换为路由器的公共 IP 以及唯一的端口。这样,您就不需要为每个设备提供唯一的公共 IP,但仍然可以在互联网上被发现。

某些路由器将限制谁可以连接到网络上的设备。这意味着即使我们拥有 STUN 服务器找到的公共 IP 地址,也不是任何人都可以创建连接。在这种情况下,我们需要使用 TURN。

TURN

一些使用 NAT 的路由器会使用称为“对称 NAT”的限制。这意味着路由器只会接受来自您之前连接的对等节点的连接。

通过 NAT 周围的中继进行遍历 (TURN) 的目的是通过与 TURN 服务器建立连接并通过该服务器中继所有信息来绕过对称 NAT 限制。您将与 TURN 服务器建立连接,并告诉所有对等节点将数据包发送到服务器,然后服务器将转发给您。这显然会带来一些开销,因此仅在没有其他替代方案时才使用。

An interaction between two users of a WebRTC application involving STUN and TURN servers.

SDP

会话描述协议 (SDP) 是一种用于描述连接的多媒体内容(如分辨率、格式、编解码器、加密等)的标准,以便一旦数据传输,两个对等节点都能相互理解。从本质上讲,这是描述内容的元数据,而不是媒体内容本身。

从技术上讲,SDP 并非真正的协议,而是一种用于描述在设备之间共享媒体的连接的数据格式。

记录 SDP 远超本文档的范围;但是,这里有几点值得注意。

结构

SDP 由一个或多个 UTF-8 文本行组成,每行以一个字符类型开头,后跟等号 ("="),后跟结构化文本,包含值或描述,其格式取决于类型。以给定字母开头的文本行通常称为“字母行”。例如,提供媒体描述的行类型为 "m",因此这些行称为“m 行”。

更多信息

要了解有关 SDP 的更多信息,请参阅以下有用资源