2

我有两个 Java 应用程序在世界上两个不同地区的两台不同机器上运行。这些机器可以在 NAT 之后(或不在!)。

应用程序应该传输一些数据(<500kb)。

我们确实有一个服务器,它可以做任何事情(比如提供对等点的 IP 地址),但来自应用程序的数据必须始终以点对点的方式传输。数据无法通过服务器路由。

我必须处理防火墙混乱吗?
我必须设置端口转发吗?
我需要 JXTA 或 JGroups 吗?UPNP 是我需要研究的吗?UDP打孔是我应该研究的吗?

我知道我的问题有点含糊,但请不要拒绝我的问题,我只需要朝着正确的方向轻推。随着评论/答案的出现,我将尝试更好地解释!

4

1 回答 1

2

我同意塞尔比在上述评论中的建议。

简短的回答是,要进行点对点网络,您应该对您提到的所有技术有基本的了解。

我必须处理防火墙混乱吗?

如果对等点位于 NAT 之后,您将需要处理 NAT 穿越。

我必须设置端口转发吗?

你一定要吗”?不,但是您可以将其视为解决问题的方法。端口转发是一种配置防火墙的方法,以便您的对等方有效地进行通信,就好像他们不在防火墙后面一样。这意味着您可以像没有防火墙一样编写软件。NAT 打孔是手动端口转发的替代方案。您可以将其视为“自动端口转发”。

我需要 JXTA 或 JGroups 吗?

对不起。我不知道这些是什么。

UPNP 是我需要研究的吗?

UPnP 是一种可能的 NAT 穿越策略:

http://en.wikipedia.org/wiki/Universal_Plug_and_Play#NAT_traversal

请注意,已知 UPnP 是不安全的,可能不应启用,请参见例如:

http://www.zdnet.com/how-to-fix-the-upnp-security-holes-7000010584/

我的印象是,UPnP 不是最重要的 NAT 穿越技术,但它可能是一种有用的技术,可以实现更高的兼容性(即作为 STUN 失败的后备)。

UDP打孔是我应该研究的吗?

您将需要一个 NAT 遍历策略。UDP Hole Punching(STUN 等)就是这样一种策略,正如 selbie 所说,这是一种常见的策略。还有无服务器技术(查看 SubEthaEdit 使用的机制)。

完整的 NAT 遍历堆栈可能需要采用多种方法来最大程度地兼容不同的路由器/防火墙。

于 2014-02-28T01:59:08.963 回答