ICE vs STUN vs TURN
Posted
技术标签:
【中文标题】ICE vs STUN vs TURN【英文标题】: 【发布时间】:2020-04-16 11:34:58 【问题描述】:我读到ICE是WebRTC服务器上的一个代理,它将用户的SDP信息发送到STUN或TURN服务器。 STUN 和 TURN 服务器提供此 SDP 信息并为用户建立 P2P 连接。
这是真的吗? 那么,STUN 和 TURN 服务器的确切区别是什么? 如果 ICE 代理配置了 TURN 服务器,数据流会发生什么?在这种情况下,TURN 只是充当数据报转发器?
【问题讨论】:
请注意,STUN 和 TURN 服务器都不处理 SDP。这就是信令服务器的工作。 @PhilippHancke “这是信号服务器的工作”是什么意思?信令服务器的哪一部分? 您的问题听起来像是在混淆 STUN 和信令服务器(这是很常见的混淆)。 STUN 服务器帮助发现公共 ip,信令服务器交换 SDP 和 ice 候选者(后者是从 STUN 和/或 TURN 服务器收集的) 【参考方案1】:TURN 是一个中继 - 两个客户端都将数据发送到 TURN 服务器,然后再将其转发给另一个客户端。
STUN 不是中继——STUN 服务器帮助客户端之间“建立连接”(通过发现和交换它们的外部主机:端口对),然后它们直接相互发送数据。但是,STUN 不适用于所有 NAT/防火墙设置,因此当 STUN 失败时使用 TURN。
【讨论】:
如何“直接相互发送数据”?我的意思是,他们如何理解 P2P 连接的目的端口? 我知道了,但我需要更多详细信息。 STUN 绝对会协助 NAT。这就是它的意图。只是它不能解决所有的遍历。 html5rocks.com/en/tutorials/webrtc/infrastructure 仍然是对此的最佳介绍之一 @nerkn STUN 就提供商的带宽成本而言要便宜得多,而且通常对用户而言端到端延迟较低,因此通常是首选。【参考方案2】:此答案适用于 Webrtc 新手
在我们深入探讨STUN(Session Traversal Utilities for NAT之间的区别之前em>) 和 TURN(Traversal Using relays 围绕 NAT),我们需要了解两个欺骗/对等方如何通过 NAT(网络地址转换)及其不同方法进行通信:
全锥形 NAT,也称为一对一 NAT,在任何人都可以连接到您并发送数据的情况下,安全性较低。 (地址)-restricted-cone NAT,发件人 IP 地址必须与您的 NAT 表访问者地址之一匹配。 端口限制锥形 NAT,类似于地址限制锥形 NAT,但限制包括端口号。 对称 NAT,仅允许全对匹配,最安全但不推荐。眩晕:
适用于全锥形 NAT, 适用于(地址)-restricted-cone NAT。 适用于端口受限的锥形 NAT 不适用于 对称 NAT 使用和维护成本低。转身
适用于 对称 NAT 扩展性维护 是在设备/对等体之间转发/中继数据包的服务器/通道,就像第 4 层的反向代理一样 广泛使用和维护ICE(交互式连接建立) 是一种协议,即使两个设备被 NAT 隔开,它也允许两个设备使用中介来交换报价和答案。它是一种收集描述对等点之间的最佳连接路径的信息的方法,并将这些信息放入一个名为ICE Candidate的对象中。
ICE 候选对象是由本地 IP 地址、安全和路由协议组成的对象,例如反射地址 (STUN) 和中继地址 (TURN) >)、支持的格式等...以及所有 ICE 候选/收集的信息都通过 SDP 发送给对等方。
SDP(Session Description Protocol)是WebRTC的重要组成部分。它是大多数人认为的一种协议或格式,用于描述 ICE 候选者、各种音频和视频编解码器、网络拓扑、带宽和其他设备信息的对等方之间的协商。剩下的唯一问题是我们如何将此 SDP 发送给其他对等方?好吧,正确答案取决于您,我们称之为 SDP SIGNALING。
SIGNALLING:指中间的信令服务或通道,可以是任何(email, WhatsApp, postman, WebSockets, HTTP, pizza delivery guy).
,以某种方式设法获得SDP 信息给其他对等方。
简而言之,STUN服务器用于获取外网地址,TURN服务器用于在直接(点对点)连接失败时中继流量,TURN 服务器是 STUN em> 服务器具有额外的内置中继功能。而 Signaling 服务器用于让对等方共享服务信息以启动对等流的传输
其他可帮助您了解 webRTC、NAT 和网络的资源:
subnetting NAT and IPV4 & IPV6 webRTC crash course STUN VS TRUN SERVERS STUN, TURN, and signaling Quick start with webRTC【讨论】:
以上是关于ICE vs STUN vs TURN的主要内容,如果未能解决你的问题,请参考以下文章
什么会在没有指定 STUN 服务器的本地 webRTC 应用程序上生成 ICE 候选?