什么类型的 NAT 组合需要 TURN 服务器?
Posted
技术标签:
【中文标题】什么类型的 NAT 组合需要 TURN 服务器?【英文标题】:What type of NAT combinations requires a TURN server? 【发布时间】:2015-10-04 04:03:38 【问题描述】:根据:
https://en.wikipedia.org/wiki/Network_address_translation
有 4 种类型的 NAT 配置:
全锥形、地址受限、端口受限和对称。
现在,假设我们在不同的网络上有客户端 A 和客户端 B,并且隐藏在各自独立的 NAT 后面。
如果他们想要 p2p 通信,“客户端 A NAT 类型”+“客户端 B NAT 类型”的哪些组合需要涉及 TURN 服务器(即无法通过 STUN 协议解决)?
例如, 我会怀疑:
" 客户端 A NAT = 对称 + 客户端 B NAT = 对称 " 需要一个 TURN 服务器。
剩下的组合是什么?
【问题讨论】:
【参考方案1】:对称到对称:TURN
对端口限制对称:TURN
对地址限制对称:STUN(但可能不可靠)
圆锥对称:STUN
其他一切都可以通过 STUN。
有一些已知的技术可以猜测对称 NAT 的端口分配算法(通常对称 NAT 只是继续使用下一个增量端口号)。因此,如果您通过 STUN 知道 NAT 是对称的,并通过 STUN 测试观察到两个不同地址的端口映射仅相差一个,则可以猜测下一个端口分配并用作地址候选。
即使对于上面列为 STUN 的 NAT 配对,STUN 也不是 100% 可靠的,而且对于 TCP 的可靠性不如对于 UDP 的可靠性。云中的中继让您更接近 100% 遍历。
【讨论】:
以上是关于什么类型的 NAT 组合需要 TURN 服务器?的主要内容,如果未能解决你的问题,请参考以下文章
STUN(Session Traversal Utilities for NAT) 与 TURN(Traversal Using Relays around NAT)