如何在防火墙后面连接两个客户端?

时间:2009-08-19 15:51:02

标签: networking firewall data-transfer

使用Live Messenger等即时消息应用程序或Google Talk桌面客户端时,计算机可以相互之间传输文件。我不能肯定地说,但我相当确定在计算机之间传输的数据不通过Microsoft或Google的IM服务器,而是使用IM软件的两台计算机直接相互通信。我想知道是否或如何建立客户端之间的直接连接以及我将如何实现类似的东西。

我有使用个人网络的经验,但我只了解客户端 - 服务器关系,服务器始终在监听(端口不被防火墙阻止),客户端在需要数据时向服务器发出请求

5 个答案:

答案 0 :(得分:6)

许多客户使用的方法称为“针孔”:

我发送了一个UDP数据包,它在我的防火墙上打了一个洞(允许UDP数据包,假设是我的防火墙的响应,由你发送并由我接收)。该数据包被防火墙丢弃。

您向我发送UDP数据包,在防火墙上戳了一个洞。该数据包应该到达我,此时我可以发送另一个数据包到达您,我们可以通过我们的防火墙通过UDP进行通信。

答案 1 :(得分:5)

我使用了一个名为Hamachi的程序,它有点像点对点的VPN(虚拟网络到网络)。然后我按原样编写了客户端服务器应用程序。这是一种快速获取互联网连接功能的方法,无需处理NAT路由器所需的技巧。

如果你需要'正确',其中一种常见的方法是udp hole punching。当您发送Web请求时,您的防火墙会知道希望返回数据作为响应。诀窍是客户端A和客户端B都联系Internet上的服务器。服务器将请求客户端A的详细信息传递给客户端B,反之亦然。一旦建立了初始连接,即使主服务器不再存在,它们也可以继续通信。

答案 2 :(得分:0)

如果我实施这个,我会看几个选项。

  1. 让防火墙将给定端口转发到网络内的PC。这将允许您从外部世界连接到服务器。

  2. 让防火墙后面的客户端连接到防火墙外的可见服务器。

  3. 简而言之,对话中至少有一方需要(对照其他人)可见(服务器),以便他们可以连接到对方。无论如何,一旦建立连接,客户端和服务器就能够毫无问题地来回通信。

答案 3 :(得分:0)

如果两个客户端都在防火墙后面没有被钉住并且没有使用VPN软件,那么他们正在通过第三方服务器进行通信。周期。

答案 4 :(得分:-2)

做大多数特洛伊木马做的事情:

  

反向连接

编辑:

  

防火墙后面有两台机器,你需要某种第三种“代理”