Fork me on GitHub

WebRTC 协议简介

WebRTC 协议简介

译自 Introduction to WebRTC protocols

ICE

Interactive Connectivity Establishment (ICE) 交互式连接建立 ICE 是一个允许你的 web 浏览器和 peer 进行连接的框架。从 Peer A 到 Peer B 无法直接建立连接的原因有很多。

建立连接需要以下三个条件:

  • bypass(绕过)阻止开放连接的防火墙;
  • 在大多数情形下,如果你的设备没有一个公网 IP 地址,需要给你一个 unique(唯一的)地址;
  • 如果你的 router(路由器)不允许你和其他 peers 直接连接,需要通过一个服务器 relay(中继)数据。

ICE 使用 STUN 和/或 TURN 服务器满足上述条件,如下描述。

STUN

Session Traversal Utilities for NAT (STUN) 网络地址转换会话穿透工具 STUN 协议,用来发现你的公网 IP 地址,确定你路由器中的任意限制,这种限制能阻止和 peer 的直接连接。

Session Traversal Utilities for NAT

traversal 遍历;穿透

STUN is a protocol to discover your public address and determine any restrictions in your router that would prevent a direct connection with a peer.

客户端将发送一个请求(request)到因特网上的 STUN 服务器,这个服务器将回复带有客户端公网地址和客户端在路由器的 NAT(网络地址转换,或者网络遮蔽)之后的是否可获取状态。

NAT

Network Address Translation (NAT) 网络地址转换

用来给你的设备一个公网 IP 地址。一个路由器有一个公网 IP 地址,每个连接到这个路由器上的设备将有一个私有 IP 地址(private IP address)。请求将通过一个唯一端口(unique port)从设备的私有 IP 被转换到路由器的公网 IP。由此,每个设备无需一个唯一的公网 IP ,但仍然可以在因特网上被发现。

一些路由器可以施加限制,决定谁可以连接到此路由网络上的设备。意味着,即使我们有 STUN 服务器发现的公网 IP 地址,不是每个人都可以创建一个连接。在此情况下,我们需要使用 TURN 协议。

TURN

一些路由器使用 NAT 部署名为 “Symmetric NAT” (对称 NAT) 的限制,这种路由器只接受从之前连接过的设备或者 peer 的连接。

Traversal Using Relays around NAT (TURN) 围绕网络地址转换 (NAT) 使用中继穿透

通过和一个 TURN 服务器开启连接,且通过此服务器中继转发所有信息,绕过对称 NAT 限制。你将和一个 TURN 服务器创建连接,且告知所有 peers 发送数据包到服务器,然后这些数据包将被转发给你(which will then be forwarded to you)。显然这将带来一些开销(overhead),所以只有在没有其他可用方案时使用。

SDP

Session Description Protocol (SDP) 会话描述协议

一个标准,用来描述连接的多媒体内容如分辨率,格式,编码,解码等,使所有 peers 可以在数据传输时可以解析对方。本质上是描述内容的 元数据 而不是媒体内容本身。

技术上,SDP 不是一个真正的协议,而是一种数据格式,用来描述分享媒体的设备间的连接。

书写 SDP 是这篇文档之外的内容,但还是有一些值得注意的事项。

Structure

SDP 由一或多行 UTF-8 文本组成,每行由一个 单字母 类型(one-character type)开头,跟着一个等号符号 ("="),后面是 结构化文本,包含一个格式由 type 决定的值或者描述符。这些由给定字母开头的文本行通常被称为 “letter-lines”。例如,提供媒体描述符的文本行类型是 “m”,所以这些行被称为 “m-lines”。

posted @ 2022-07-01 15:24  icewalnut  阅读(669)  评论(0编辑  收藏  举报