有两台计算机通过互联网进行通信的选项,无需打开端口

时间:2016-10-01 22:13:55

标签: web-services email communication irc

允许两台计算机通过互联网进行通信而无需打开端口或运行服务器的服务是什么。我发现的两个选项是电子邮件(有点延迟)和irc,但我想知道还有哪些其他选项或服务可用。

2 个答案:

答案 0 :(得分:0)

我认为这个问题有点误导。从本质上讲,您要求的是如何绕过防火墙。这是它的工作原理:你有两个主机,A和B:

A --- A防火墙---互联网--- B防火墙--- B

当A向B发送消息时,B&#39防火墙会检查端口是否打开。如果没有,它会阻止它。

A - 80 - > AF - 80 - >互联网--80 - > X BF(端口80关闭)

防火墙的工作方式大致相同:

(港口80关闭)AF X< - 80--互联网< - 80-- BF< - 80-- B

如果它是开放式的,B&B的防火墙允许它通过:

A ---> AF --->互联网---> BF --->乙

A在此担任客户。现在,A&防火墙知道有连接,所以当B发回消息时:

A< === AF< ===互联网< === BF< === B

他们可以根据需要交换消息,直到其中一个关闭连接。当发生这种情况时,A防火墙(没有打开端口的防火墙)将停止允许数据包通过。

因此,为了使连接不需要在任何一端更改防火墙规则,您可以执行以下操作之一:

  1. 中间有一台服务器。这就是大多数电子邮件所做的事情 - A和B都作为客户端连接到电子邮件服务器(其防火墙设置正确以允许这样做)。您可以运行自己的服务器,也可以使用ngrok等服务。

  2. 在每个防火墙中找到零日。

答案 1 :(得分:0)

原则上UDP hole punching符合您的要求,但不能保证能够正常工作,我甚至会说它不太可行(我尝试了一些,但找不到两个它可以工作的网络)。这是NAT traversal的一个特例,请查看其他选项。

可用于单向通信的另一个选项是ngrok:它允许您将本地主机公开给外部世界,就好像它是公共服务器一样。通过查看他们的网站,我猜他们将其作为服务公开,并提供您可以在自己的服务器上使用的源代码。