使用第三者绕过防火墙建立连接

| 我正在开发一个程序,该程序需要能够雄辩地处理防火墙,同时允许2个客户端之间进行直接通信。 我正在考虑类似于Skype的事情,其中​​使用第三方在两个用户之间建立连接,但是一旦建立连接,实际数据就不会发送到第三方。 我知道几乎所有的防火墙都会阻止所有未经请求的传入流量,但是只要内部程序是第一个进行通信的程序,就可以很容易地让程序建立连接。我不了解的是如何直接在两个客户端之间建立连接。 我如何实现这样的东西?对于这种技术有什么适当的术语?一个客户端必须用Java编写,但是服务器和其他客户端几乎可以使用我想要的任何语言。 如果已经问过这个问题,我先向您道歉,我尝试环顾四周,但是我觉得我可能没有使用正确的关键字来查找它。
已邀请:
我认为您正在寻找的术语是“ NAT遍历”。它与防火墙无关,而与克服到达NAT设备的另一(专用)侧(例如,电缆调制解调器等)特定节点的难度有关,例如,通常为LAN侧分配一些不可路由的地址范围如
192.168.*.*
) UDP打孔是一种可能对您有用的技术。每个端点都可以建立与第三方服务器的传出连接,并且每个端点处的NAT设备将打开端口,以允许通过防火墙的返回流量并将其路由到每一侧的相应LAN节点。端点通过第三方服务器交换端口信息,然后重新使用它们只是通过NAT设备“打孔”的“孔”,从此以后直接相互通信。
就像吉姆说的那样,它是遍历NAT或STUN。有一个Java实现,该项目不再维护,但您可以使用它进行研究。 http://nutss.gforge.cis.cornell.edu/stunt.php
这取决于你想要什么! 如果您只希望约85%的时间可以工作,则可以使用STUN服务器! 这是一些免费的列表: https://gist.github.com/zziuni/3741933 但是对于100%的人,您还需要实现TURN服务器(中继服务器),这确实非常昂贵!因为您所有的流量都将通过您的服务器传递并转发给客户端,所以您可以查看https://www.twilio.com/stun-turn以了解它的价格,您也可以自行部署对我来说最好的https ://code.google.com/p/rfc5766-turn-server/ 但这只是冰山一角!!!!! 现在您知道了如何在客户端之间发送交换数据!但是您要使用信令服务器来创建通信会话,因为当我想打电话给您时,您必须收到一条通知,说我正在尝试给您打电话。 然后,如果我们接听电话,我们仍然需要交换通话方式!为什么,因为也许我可以p2p但您不能,所以我们必须使用中继服务器。下一步是说我们将要发送的内容,在所有这些之后,我们就开始正常交流了…… 阅读有关webrtc的信息,以更好地了解这一点 我希望它有所帮助

要回复问题请先登录注册