端口转发和端口绑定有什么区别

端口转发和端口绑定有什么区别

我在该链接中看到了答案:

什么是端口转发以及它有什么用途?

我问自己——如果“端口转发”是通过特定端口将特定包传递到特定计算机,那么为什么不能通过将软件绑定到端口来实现同样的事情?

例如。为什么 Python 中的以下代码:

 soc = socket.socket()
 soc.bind(('0.0.0.0', 80))
 soc.listen(1)
 client_soc, address = soc.accept()

这跟对我局域网上的电脑进行 80 端口转发不一样吗?

答案1

将进程绑定到端口是在主机内部发生的事情,以便该进程将接收通过该端口发送到主机的数据。

端口转发与到达主机的路径中的中间节点有关。如果数据包的地址由于 NAPT 而被中间节点更改,则中间节点之外的主机无法直接将数据包发送到执行 NAPT 的节点另一端的主机。中间节点必须知道,任何发往其具有特定端口的地址的流量都必须发送到目标主机。这就是端口转发,它实际上只是在 NAT 表中创建永久条目的一种方法。

答案2

这和在局域网上将我的电脑的端口转发到 80 不一样

绝对地不是一回事。

您提供的代码会绑定本地计算机上的端口。此操作与将端口上的所有流量转发到特定客户端无关。您可以在网络上的每个客户端上绑定端口,但只能将该端口上的流量转发到网络上的单个客户端。

绑定端口发生在客户端,但当您将端口转发到特定客户端时,您不一定在客户端上绑定该端口。客户端仍必须安装并配置应用程序或服务才能执行此操作。

相关内容