首页 文章

防火墙和NAT后面的P2P消息传输

提问于
浏览
2

我有两个java应用程序在世界上两个不同的地方的两台不同的机器上运行 . 机器可以在NAT后面(或不!) .

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

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

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

我知道我的问题有点模糊,但请不要把我的问题写下来,我只需要朝着正确的方向轻推 . 随着评论/答案的开始,我将尝试更好地解释!

1 回答

  • 2

    我同意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打孔(STUN等)是一种这样的策略,正如塞尔比所说,它是一种常见的策略 . 还有无服务器技术(查看SubEthaEdit使用的机制) .

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

相关问题