什么类型的 NAT 组合需要 TURN 服务器?

What type of NAT combinations requires a TURN server?

根据:

https://en.wikipedia.org/wiki/Network_address_translation

有 4 种类型的 NAT 配置:

全锥、地址受限、端口受限和对称。

现在,假设我们的客户端 A 和客户端 B 在不同的网络上,并且隐藏在它们自己的独立 NAT 后面。

"client A NAT type" + "client B NAT type" 的哪些组合需要 TURN 服务器参与(即 STUN 协议无法解决)如果他们想进行 p2p 通信?

例如, 我会怀疑:

” 客户端 A NAT = 对称 + 客户端 B NAT = 对称 “ 需要 TURN 服务器。

剩下的组合是什么?

对称到对称:TURN

与受限端口对称:TURN

与受限地址对称:STUN(但可能不可靠)

与圆锥体对称:STUN

其他一切都可以通过 STUN。

有一些已知技术可以猜测对称 NAT 的端口分配算法(通常对称 NAT 只是继续使用下一个增量端口号)。因此,如果通过 STUN 知道 NAT 是对称的,并且通过 STUN 测试观察到两个不同地址的端口映射仅相差一个,那么下一个端口分配就可以被猜测并用作地址候选。

即使对于上面列为 STUN 的 NAT 配对,STUN 也不是 100% 可靠的,并且对于 TCP 的可靠性不如 UDP。云端中继让您更接近 100% 遍历。