如果我们可以自己连接到端口,为什么我们需要“端口转发”?

网络工程 网络
2022-02-27 19:54:26

我刚刚听说了这个叫做“端口转发”的东西。现在,据我所知,这意味着我可以将我的 IP 地址附加到路由器上的某个端口。但是,如果我计算机上的软件自动(当然是通过代码)可以将自己附加到路由器上的某个端口(即“bind()”函数),我为什么要这样做呢?

2个回答

端口转发通常不会在真正的企业环境中找到,但当路由器 IP 是唯一使用的公共 IP 时,可能会在 SOHO 网络中使用。它允许将传入路由器上某个端口的流量转发到定义的 IP 和端口(不一定是相同的端口)。

您 PC 上的软件无法直接绑定到路由器上的端口,但即使这样也可能发生冲突,因此您必须相应地选择您的端口。

端口转发通常是一种用于网络地址转换,特别是 DNAT 的技术。

假设有一家企业有 2 台服务器 1 接受 SSH 连接(端口 22),一台充当 Web 浏览器(端口 80)。

该企业使用单个公共 IP,并进一步为其 2 台服务器使用 NAT。

现在,一台从未联系过此服务器的主机尝试与 Web 服务器进行通信。

互联网中的路由始终通过公共 IP,因此使用企业 IP 数据包将到达网关路由器。

现在想象一下网关路由器的路由表。它已收到具有自己接口的目标 IP 的数据包。它现在在哪里发送数据包,或者更确切地说,它如何知道它需要将数据包发送到其在 NAT 后面定义的 Web 服务器。

为此,我们需要端口转发。这基本上是说每当您收到带有 Dport 80 的数据包时,只需将其从该接口发送出去。

请注意,我们现在无法根据 IP 地址区分主机,所以现在我们使用端口来区分它们。