gpt4 book ai didi

go - NAT 后面的两个节点之间如何通信?

转载 作者:数据小太阳 更新时间:2023-10-29 03:02:58 28 4
gpt4 key购买 nike

我有一些节点。每个节点都属于其他网络。每个节点都有私有(private) IP,如 192.168.0.2 并位于 NAT 之后。

有没有可能在节点之间进行通信?实际上,我需要在这些独立的节点之间传输文件。

我尝试使用这个项目 - https://github.com/libp2p/go-libp2p .但是 libp2p 有一些限制:

  1. 两个节点都有私有(private)IP地址(同一网络)
  2. 其中至少有一个拥有公共(public) IP 地址。

但是我的节点有私有(private)IP地址,它们属于不同的网络。


更新。

有这样的解决方案:

最佳答案

想法是您有一个会合服务器,节点 1 和 2 连接到该服务器。为此,他们必须知道会合服务器的 IP。

内容如下:1)1和2都向RS发送UDP包。 N1(节点 1 的 NAT 框)和 N2 在转换表中创建一个条目,它将节点的 IP 映射到 RS 的 IP/端口。2) RS 将 (EIP1,EP1) 传递给节点 2。这是包含 NAT 框的公共(public) IP 和公共(public)端口的 Tulpe。 RS 将 (EIP2,EP2) 发送到节点 1。3) 节点1在转换表中创建一个映射:(IP1,EP1,EIP2,EP2)。4) 节点 2 做同样的事情,但使用 (IP2,EP2,EIP1,EP1)。

注意:第 3 步和第 4 步发生了,因为每个节点都会向刚刚收到的元组 (IP,Port) 发送一个 UDP 数据包,因此 NAT 框会添加一个新条目。在最坏的情况下,这些消息必须发送多次。

这个技巧使两个节点都能获得公共(public) IP 并拥有正确的端口。

这提供了一种建立点对点连接的好方法,例如。 Skype。

希望对您有所帮助。

关于go - NAT 后面的两个节点之间如何通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51004291/

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