【问题标题】:P2P message transfer behind firewalls and NAT防火墙和 NAT 后的 P2P 消息传输
【发布时间】:2014-02-25 09:42:19
【问题描述】:

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

应用程序应该传输一些数据(

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

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

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

【问题讨论】:

  • 首先学习带有 STUN 和 TURN 的 ICE (RFC 5245)。 WebRTC 主要基于这些技术。

标签: java p2p upnp jxta


【解决方案1】:

我同意上面评论中 selbie 的建议。

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

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

如果对等点位于 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 遍历堆栈可能需要采用多种方法来最大程度地兼容不同的路由器/防火墙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    相关资源
    最近更新 更多