端口转发和隧道之间有区别吗?

Ash*_*pin 4 networking

我有点困惑端口转发和隧道之间是否有区别。我得出的结论是,端口转发器将应用程序数据转发到可能位于远程主机上的另一个端口。另一方面,隧道不直接承载应用程序数据,而是承载另一个 IP 协议的 PDU。那么可以说隧道是一种特殊类型的转发器,其中与中介服务器直接连接到最终目的地并将数据转发到目的地的普通转发器不同,隧道将协议数据注入其操作系统网络堆栈要路由到最终目的地?

但这似乎并不总是正确的。例如,SSH 隧道通常称为安全隧道。但它们真的是隧道吗?在这些安全通道中传输的数据是应用程序数据而不是 IP 协议数据。

也许我过度分析了这一点,他们都指的是同一件事。

因此,对于我有一个应用程序 A、B、C 的以下场景。A 是连接到 B 的客户端应用程序。B 只是将数据转发到应用程序 C。B 是否会被视为端口转发,因为没有额外的“值” " 被添加到数据流中?如果是这样,那么相同的场景如何,但假设 A 和 B 之间的连接未加密,而 B 和 C 之间的连接已加密。在这种情况下,B 现在是否会隧道传输数据而不是端口转发,因为现在存在加密的“增值”?

Ber*_*ert 9

隧道允许您通过数据封装在另一种形式的数据中来做一些不同的事情:

  • 安全性 - 您可以使用加密隧道通过不受信任的网络(例如未加密的 wifi 网络或公共互联网)安全地传输数据
  • 隐匿性 - 您可以在一个端口上使用隧道传输通常会在另一个端口上传输的数据,绕过网络安全性,同时对客户端和服务器都是透明的
  • 多功能性 - 您可以使用隧道连接两个设备或网络,使用其他传输网络的本地协议。例如,您可以通过 MPLS 运行 TCP/IP

端口转发要简单得多,它只是转发和可能路由网络上的连接。


rol*_*lfl 5

@Bert 给出了一个很好的答案(+1),但我认为两者之间最大的两个区别是:

  1. 端口转发可以仅使用网络数据包信封中可用的数据来执行。隧道需要检查数据包内的数据(至少要建立隧道)。
  2. 从转发所有匹配规则的数据的意义上说,端口转发是“无状态的”。隧道是有状态的,并从网络协议外部进行控制,一个数据包中的数据与另一个数据包中的数据相关/依赖。

因此,端口转发可以由低规格的网络设备执行,它所做的只是检查传入的端口/主机组合,并重写信封,并将数据包重定向到其他地方。隧道需要在流中添加逻辑,意味着更重的负载,以及更强大的系统来实现它。


Law*_*ceC 2

端口转发不会将一种协议的 PDU 包装在另一种协议中,因此它与隧道不是同义词。端口转发通常是 NAT 设施的一部分,它接受来自允许端口的流量,然后将目标地址修改为配置的映射 IP 地址,并记录这一点,以便可以正确路由传出流量。

一般来说,您想要将一种协议的 PDU 封装到另一种协议中的唯一原因是隐藏或保护它,通常是出于安全原因。(PPP 可能是一个值得注意的例外)。因此,绝大多数(如果不是全部)现实世界的隧道场景将涉及用户隧道到服务器,然后该服务器可以将流量转发到其他地方,如果没有其他方法的话,可以转发到该系统上的本地主机以到达另一种类型的服务器(HTTP 等)通常,执行此操作的是某种隧道或访问服务器,即 SSH 服务器、VPN 服务器等。