无需端口转发即可访问服务器

无需端口转发即可访问服务器

首先我知道这个问题 到过

然而,似乎这些都还没有一个完整的解决方案。我的问题基本上是一样的。我有一个连接到 wifi 网络的设备,也在端口 8080 上设置了一个服务器,但由于 NAT 路由器的工作方式,无法向单个设备发送请求,因为它与许多其他计算机共享一个公共 IP。

被接受的答案提到了许多解决方法,但似乎这种必要的功能需要以某种合法形式存在。(例如,请注意视频游戏。即使客户端仍然需要发送数据包,而且我还没有看到我的游戏在路由器上自行进行任何端口转发。)

事实上,几乎任何与互联网交互的应用程序都需要从互联网接收数据和请求,而无需转发端口。这是如何做到的?

答案1

连接跟踪。

如果设备从 NAT 内部连接到外部,则允许来自外部系统的相关数据包进入。在某些情况下,这可以同时使用 TCP 和 UDP 来完成。

答案2

尽管在启用 NAT 的情况下流量可以双向流动,但重要的区别在于,如果没有端口转发,服务器就无法“监听”来自该网络外部主机的特定端口上的新连接。

以浏览网页为例。这里重点是您的浏览器是客户端;它正在连接正在监听端口 80 的另一个 Web 服务器。一旦建立连接,流量就可以双向流动。但是,如果没有某种形式的端口转发,就不可能反向操作,让网络内运行的 Web 服务器以相同的方式“监听”连接。

一旦建立连接,流量就可以双向流动,这是因为 EEAA 提到的连接跟踪。路由器维护 NAT/PAT 转换表,这使它们能够跟踪“谁在与谁通话”。

因此,总结一下,应用程序必须具备“监听”和“接受”连接的能力,而端口转发则无法实现这一点。如果您无法进行端口转发(即使使用“DMZ 主机”类型的功能),那么恐怕您只能采用变通方法了。

相关内容