ICE vs STUN vs TURN

ICE vs STUN vs TURN

我读到 ICE 是 WebRTC 服务器上的代理,它将用户的 SDP 信息发送到 STUN 或 TURN 服务器。
STUN 和 TURN 服务器提供此 SDP 信息并为用户建立 P2P 连接。

这是真的吗?
那么,STUN 和 TURN 服务器之间的确切区别是什么?
如果 ICE 代理配置了 TURN 服务器,数据流会发生什么情况?在这种情况下,TURN 仅充当数据报转发器?

TURN 是一个中继——两个客户端都将数据发送到 TURN 服务器,TURN 服务器将数据转发给另一个客户端。

STUN 不是中继——STUN 服务器帮助 "make the connection" 客户端之间(通过发现和交换它们的外部 host:port 对),之后它们直接相互发送数据。但是,STUN 不适用于所有 NAT/firewall 设置,因此当 STUN 失败时使用 TURN。

这个答案是给 Webrtc 新手的

在我们深入研究 STUN(Session Traversal Utilities for NAT) and TURN(Traversal Using relays around NAT), 我们需要了解两个 deceives/peers 如何通过 [ 进行通信=11=](网络地址转换)及其不同的方法:

  • 全锥 NAT,也称为一对一 NAT,安全性较低,任何人都可以连接到您并发送数据。
  • (Address)-restricted-cone NAT,发件人 IP 地址必须与您的 NAT table 访问者地址之一匹配。
  • Port-restricted cone NAT,类似Address-restricted-cone NAT,但限制包括端口号。
  • 对称 NAT,只允许全对匹配,最安全但不推荐。

眩晕:

  • 适用于 全锥 NAT,
  • 适用于 (地址)-restricted-cone NAT
  • 适用于端口受限锥形 NAT
  • 不适用于对称 NAT
  • 使用和维护便宜。

  • 适用于对称 NAT
  • 就是server/channel那个forwards/relays之间的数据包devices/peers就像一个4层的反向代理
  • 使用和维护成本高

ICE(Interactive Connectivity Establishment) 是一种允许两个设备使用中介交换提议和答案的协议,即使两个设备被 NAT 分开。它是一种收集描述对等点之间连接的最佳路径的信息的方法,这些信息被放入一个名为 ICE candidate.

的对象中

ICE candidates 是由本地 IP 地址、安全和路由协议组成的对象,如自反地址 (STUN) 和中继地址(TURN)、支持的格式等...以及所有 ICE candidates/collected 信息都通过 SDP.

SDP(Session Description Protocol)是WebRTC的重要组成部分。它是大多数人认为的一种协议或格式,用于描述 ICE 候选者、各种音频和视频编解码器、网络拓扑、带宽和其他设备信息的对等方之间的协商。剩下的唯一问题是我们如何将此 SDP 发送给其他对等方?好吧,正确的答案取决于你,我们称之为 SDP SIGNALING.

SIGNALLING:指中间的信令服务或信道,可以是任何东西(email, WhatsApp, postman, WebSockets, HTTP, pizza delivery guy). 将以某种方式设法将 SDP 信息发送给另一个对等方。

简单来说就是一个STUN服务器用来获取外网地址,TURN 服务器用于在直接(对等)连接失败时中继流量,TURN 服务器是一个 STUN 服务器,具有额外的内置中继功能。而 Signaling 服务器用于让对等点共享服务信息以启动点对点流的传输

帮助您了解 webRTC、NAT 和网络的其他资源: