gpt4 book ai didi

webrtc - 单个 TURN 服务器是否足以支持受限 NAT 配置后面的两个设备?

转载 作者:行者123 更新时间:2023-12-05 02:40:42 25 4
gpt4 key购买 nike

假设两个设备位于对称 NAT 之后。

  1. Device_1 仅收集 HOST 和 REFLEXIVE 候选项。它在 SDP OFFER 中将它们发送到 Device_2。

  2. Device_2 收集 HOST、REFLEXIVE 和 RELAY 候选项。它在 SDP ANSWER 中将它们发送到 Device_1。

  3. 在 ICE 连接检查期间,Device_2 将在其 TURN 服务器中安装权限。这将是 Device_1 的自反候选者。

  4. 在某个时候,STUN 指示将从 Device_1(自反)发送到 Device_2(中继)。如果 Device_2 已经创建了 Device_1 的反身地址许可,UDP 数据包应该到达 TURN 服务器,包装在 STUN 消息中,然后到达 Device_2。此连接检查应该通过,因此双向流量应该流动。

这种理解是否正确?

          RESTRICTED_NAT                         RESTRICTED_NAT
| |
Device_1 <----> | <--UDP--> [Device_2_TURN] <--SEND--> | <----> Device_2
Peer | | Client

Host Host
Reflexive Reflexive
Relay

我刚才问过类似的问题Will ICE negotiations between peers behind two symmetric NAT's result in requiring two TURN servers? ,但现在我怀疑对称 NAT 后面的两个对等点需要两个 TURN 服务器。原因是,在 TURN 服务器上创建的权限仅包含一个 IP 地址。

https://datatracker.ietf.org/doc/html/rfc5766#section-9.1

   When forming a CreatePermission request, the client MUST include at
least one XOR-PEER-ADDRESS attribute, and MAY include more than one
such attribute. The IP address portion of each XOR-PEER-ADDRESS
attribute contains the IP address for which a permission should be
installed or refreshed. The port portion of each XOR-PEER-ADDRESS
attribute will be ignored and can be any arbitrary value. The
various XOR-PEER-ADDRESS attributes can appear in any order.

这意味着只要同一个服务器自反IP向中继的传输地址发送一个UDP报文,它就应该通过。意思是,应该只使用一个 TURN 服务器。

最佳答案

是的,Philipp 是对的,这取决于实现细节。

但您未指定的其他标准是您的假设列表是 Device_1 和 Device_2 前面的 NAT 是否允许 UDP 通过。

最邪恶/最有问题的情况是 Device_1 和 Device_2 无法使用 UDP 连接到 Internet。在那种情况下,他们都必须使用 TCP 连接到他们的每个 TURN 中继。由于今天大多数(?)TURN 服务器仅在这种情况下提供我们的 UDP 候选者 Device_1 使用 TCP 连接 Device_1_TURN。这同样适用于 Device_2。但是由于两者都分发了 UDP 候选人,现在 TURN 服务器需要连接到 TURN 服务器。

Device_1 <--TCP--> Device_1_TURN <--UDP--> Device_2_TURN <--TCP--> Device_2

在这种情况下,您无法只使用一个 TURN 中继,因为 Device_1 无法通过 UDP 连接到 Device_2 的基于 UDP 的中继候选者。

如果 TURN 服务器和 Device_2 都实现了对 TURN TCP 候选者的支持,您可以再次将这种情况减少到一个 TURN 服务器。然后 Device_1 需要支持 ICE TCP 并通过 TCP 连接到 TURN 服务器:

Device_1 <--TCP--> Device_2_TURN <--TCP--> Device_2

关于webrtc - 单个 TURN 服务器是否足以支持受限 NAT 配置后面的两个设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68400729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com