ngrok如何在防火墙后面工作?

Ngrok( https://ngrok.com/ )应该允许您通过转发将本地端口和服务展示给万维网。 但是,如果我打开我的本地机器上的端口80,如下所示:

ngrok 80 

我回来了:

 Tunnel Status online Version 1.3/1.3 Forwarding http://3a4bfceb.ngrok.com -> 127.0.0.1:80 Forwarding https://3a4bfceb.ngrok.com -> 127.0.0.1:80 Web Interface http://127.0.0.1:4040 # Conn 0 Avg Conn Time 0.00ms 

据我所知,任何对http://3a4bfceb.ngrok.com的请求都将通过端口80发送到本地计算机,但如果我坐在阻止传入通信的NAT /防火墙之后(这是一种非常常见的情况)。 ngrok是否会启动轮询请求以确定何时收到数据?

Solutions Collecting From Web of "ngrok如何在防火墙后面工作?"

因为ngrok隧道总是首先在客户端启动 ,这就是它如何与服务器协商安全通道的方式。 绕过传统的防火墙配置是一个非常漂亮的解决方案。

这由客户端在内部完成,打开一个单一的长期tcp连接,在一个物理套接字连接中创建了许多逻辑套接字。 这种技术被称为流复用 。 通过这种设置,不需要任何种类的轮询,因为客户端和服务器仍然具有完全双向的通信。

然后,客户端和服务器保持活跃的心跳机制,确保连接打开并正常工作,甚至在错误或丢失/关闭连接时重新连接。

有关更多信息,请参阅: github.com上的开发人员指南