如何解决使用第三者绕过防火墙建立连接
| 我正在开发一个程序,该程序需要能够雄辩地处理防火墙,同时允许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的信息,以更好地了解这一点
我希望它有所帮助版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。