WebRTC 与单对对称 NAT

WebRTC 与单对对称 NAT

我读了一些关于 WebRTC nat traversal 的文档。我发现如果其中一个对等点位于对称 NAT 之后,则必须使用 TURN 服务器。

我想知道当至少有一个客户端具有公共 IP 或非对称 NAT 时,为什么协议不允许遍历?

据我所知,问题在于建立一方与使用对称 NAT 的一方之间的连接。那么对称 NAT 后面的客户端无法连接到另一方吗?如果无法/不允许共享相同的 UDP 流用于双向媒体,那么为什么对称 NAT 后面的一方不创建 2 个或更多连接,以满足所有媒体流的需要?

答案1

WebRTC 的问题不在于数据包是否到达目的地,而在于如果不使用遍历方法,IP 数据包有效负载中的数据将不正确。例如,SDP 数据具有包含 IP 地址和端口的字段,这些字段仅在本地环境中有效,即在 NAT 后面的 LAN 中有效。NAT 设备能够更改 IP 标头,但通常无法更改应用程序协议的有效负载

这就是为什么 WebRTC 通过标准协议(STUN、TURN 和 ICE 等)支持 NAT 穿越方法。您提到了对称 NAT。当您使用这种类型的 NAT 时,STUN 不起作用,您应该有一个 TURN 服务器。

相关内容