ICE vs STUN vs TURN

M. *_*ami 5 stun webrtc turn

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

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

小智 36

这个答案是针对 Webrtc 新手的

在我们深入研究STUN(NAT会话遍历实用程序)和TURN(使用NAT周围中继进行遍历)之间的区别之前,我们需要了解两个欺骗者/对等方如何通过NAT(网络地址转换)及其不同方法进行通信:

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

眩晕:

  • 与全锥 NAT配合使用,
  • 与(Address)-restricted-cone NAT配合使用。
  • 与端口限制锥形 NAT配合使用
  • 不适用于对称 NAT
  • 使用和维护便宜。

转动

  • 与对称 NAT 配合使用
  • 是在设备/对等点之间转发/中继数据包的服务器/通道,就像第 4 层的反向代理一样
  • 使用和维护费用昂贵

ICE(交互式连接建立)是一种协议,即使两个设备被NAT分开,也可以让两个设备使用中介来交换报价和​​答案。它是一种收集描述对等点之间连接的最佳路径的信息的方法,并且该信息被放入名为ICE候选的对象中。

ICE 候选对象是由本地 IP 地址、安全和路由协议(例如自反地址 ( STUN ) 和中继地址 ( TURN )、支持的格式等组成的对象...并且所有 ICE 候选对象/收集的信息都通过SDP发送到对等方。

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

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

信令、STUN 和 TURN 服务器

简而言之,STUN服务器用于获取外部网络地址,TURN服务器用于在直接(点对点)连接失败时中继流量,TURN服务器是带有附加内置中继的STUN服务器功能。而信令服务器用于让对等点共享服务信息以开始点对点流的传输

交换流程图

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


hob*_*bbs 21

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

STUN 不是中继——STUN 服务器帮助客户端之间“建立连接”(通过发现和交换它们的外部主机:端口对),之后它们直接相互发送数据。但是,STUN 不适用于所有 NAT/防火墙设置,因此当 STUN 失败时使用 TURN。

  • https://www.html5rocks.com/en/tutorials/webrtc/infrastruct/ 仍然是对此的最佳介绍之一 (3认同)
  • STUN 绝对会协助 NAT。这就是它的目的。只是它并不能解决所有的遍历。 (2认同)
  • @nerkn STUN 就提供商的带宽成本而言要便宜得多,并且通常对用户来说具有较低的端到端延迟,因此通常是首选。 (2认同)