公共网络服务器与NAT后面的服务器之间的双向通信解决方案

时间:2016-06-21 02:41:07

标签: java nat

我有以下情况,并希望找到一个解决方案:

私有服务器A位于NAT之后,它没有固定的公共IP地址。

公共服务器B具有公共IP。

公共服务器B将需要根据业务需求向私人服务器A发送消息。

我很想知道这种通信是否有任何Java解决方案?

由于私有服务器A没有固定的IP地址,因此必须首先告诉公共服务器B其IP /端口等,或者首先启动像websocket这样的连接。然后保持连接长时间运行,然后公共服务器B可以将数据发送回服务器A.

此场景与UDP打孔相似但不完全相同。由于我是Java的新手,我想知道是否有任何现有的Java lib这样的情况?

限制是:

  1. 我们不允许配置NAT网络,这意味着端口转发不适用。

  2. 会有很多NAT。在每个NAT内部,将有一个与公共服务器通信的服务器(或集群)。因此,websocket解决方案可能不是最佳解决方案,因为它会使公共服务器在内存中保持许多连接。

  3. 由于

1 个答案:

答案 0 :(得分:1)

NAT配置基本上会强制您从位于NAT后面的服务器A到服务器B建立连接。如果您不想保持连接打开,则服务器A需要定期轮询信息,然后断开连接。这显然会引入延迟;服务器A在大部分时间内断开连接,仅在连接后才接收更新。

如果您有这么多服务器而无法保持套接字连接打开,我会感到惊讶。

Java是一个侧面问题。您在Java中打开的任何类型的套接字或websocket都有其他语言的直接类似物。