为什么要为一个应用程序开放多个端口?

为什么要为一个应用程序开放多个端口?

一些 Web 应用程序需要打开多个(范围)端口。

例如 Torrents、freeswitch、skype 等等。

我看不出有什么好的理由。

如果把3000和3001都打通,一半的流量走前者,一半走后者,是不是路由器处理网络数据的速率会更快呢?

或者尽管 3001 端口关闭,应用程序仍可运行?

答案1

在某些情况下,跨多个端口分配流量可以提高性能。

在主干网上,两个端点之间通常会有多条不同的路径。例如,如果路径上的每跳实际上是一对冗余路由器,则每个路由器都会有两个同样好的选择,可以选择下一个将数据包发送到哪个路由器。使用一种称为等价多路径 (ECMP) 的技术,该技术通常通过计算源/目标 IP/端口号的哈希值并使用该哈希值来选择将流量发送到哪个路由来实现。

如果您的所有流量都使用相同的源和目标 IP 和端口号,那么它们将全部沿着相同的路径发送,因此您无法从主干网上的其他可用路径中受益。

另一方面,由于 torrent 协议已经与许多不同的 IP 地址进行通信,并且您的流量只是通过这些主干链路发送的流量的一小部分,因此您可以预期它已经相当均匀地分布。因此,在您的特定情况下,使用不同的端口号不会带来太多吞吐量优势。因此,他们使用多个端口的原因可能完全不同。

答案2

这是一个非常基本的问题,通常最好通过阅读特定应用程序的产品文档来回答。这应该解释需要打开哪些端口、在哪个方向以及需要允许哪些协议。

大多数客户端都经过硬编码以连接到特定(默认)端口上的服务器来访问服务。当该端口被防火墙阻止时,它们将失败。

当您需要在防火墙中打开多个端口来支持应用程序时,这意味着,根据需要打开的方向,应用程序要么提供多种服务和/或应用程序依赖于多种远程服务,并且每个服务在不同的端口号上运行特定的协议。

除了 TCP 上的 HTTP 和 HTTPS 之外,还有其他协议......

相关内容