内部应用程序的最佳 TCP 端口号范围

我工作的地方是,我们的每个内部应用程序都运行在单独的 Tomcat 实例上,并使用特定的 TCP 端口。为了避免与服务器上任何其他进程的端口号冲突,对于这些应用程序,IANA 端口范围的最佳选择是什么?

基于 http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml,以下是我目前看到的选项:

  1. 系统端口(0-1023) : 我不想使用这些端口中的任何一个 因为服务器可能在此 射程
  2. 用户端口(1024-49151) : 鉴于应用程序是内部的,我不打算要求 IANA 为我们的任何应用程序保留一个号码。但是,我想减少另一个进程使用相同端口的可能性,例如 Oracle Net Listener on 1521。
  3. 动态和/或私有端口(49152-65535) : 这个范围是自定义端口号的理想选择。我唯一担心的是这种情况是否会发生:

    我将我的一个应用程序配置为使用端口 X
    B.应用程序关闭几分钟或几个小时(取决于应用程序的性质) ,让端口未使用一段时间,
    C.操作系统将端口号 X 分配给另一个进程,例如,当该进程作为客户端需要到另一个服务器的 TCP 连接时。这是成功的,因为它处于动态范围之内,而且就操作系统而言,X 目前是未使用的,而且
    应用程序启动失败,因为端口 X 已经在使用中

166634 次浏览

我不明白你为什么在乎。除了“不要使用低于1024的端口”特权规则之外,您应该能够使用任何端口,因为 您的客户端应该可以配置为与任何 IP 地址和端口通话!

如果它们不是,那么它们就没有做得很好。回去好好做它们: -)

换句话说,在 IP 地址 X和端口 Y运行服务器,然后用该信息配置客户机。然后,如果发现 必须的X上运行与 Y冲突的不同服务器,只需重新配置服务器和客户端以使用新端口。无论您的客户端是代码还是人们在浏览器中键入 URL,这都是正确的。

我和您一样,不会尝试获取 IANA 分配的号码,因为这应该是针对很多 很多环境(比如 SSH、 FTP 或 TELNET)都会使用的常见服务。

你的网络是 你的网络,如果你想要你的服务器端口1234(或甚至 TELNET 或 FTP 端口为此事) ,这是你的业务。例如,在我们的大型机开发领域,端口23用于3270终端服务器,这是一个与 telnet 截然不同的怪兽。如果希望 telnet 到大型机的 UNIX 端,可以使用端口1023。如果你使用 telnet 客户端而没有指定端口1023,这有时会很烦人,因为它将你连接到一个对 telnet 协议一无所知的服务器上——我们必须跳出 telnet 客户端并正确地进行操作:

telnet big_honking_mainframe_box.com 1023

如果 不行真的让客户端可配置,那么在第二个范围内选择一个,比如48042,然后直接使用它,声明这些机顶盒上的任何其他软件(包括将来添加的任何软件)都不能挡你的路。

简短的回答: 使用未分配的用户端口

优胜者的答案——选择并部署一个资源发现解决方案。让服务器动态选择一个私有端口。让客户使用资源发现。

服务器由于它想侦听的端口不可用而失败的风险是真实存在的; 至少在我身上发生过这种情况。另一个服务或客户可能会先到达那里。

通过避免动态分发给客户端的私有端口,几乎可以完全降低来自客户端的风险。

如果使用用户端口,来自其他服务的风险是最小的。未分配端口的风险仅在于其他服务碰巧被配置(或动态地)使用该端口。但至少那可能在你的控制之下。

包括用户端口在内的所有端口分配的巨大文档在这里: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt查找未分配的令牌。

我决定从 IANA 下载分配的端口号,过滤掉用过的端口,并按照大多数可用端口的顺序对每个“未分配”的范围进行排序。我手动扩展了 分配端口号的范围,留给我一个所有分配端口号的列表。然后对该列表进行排序,并生成自己的未分配范围列表。

由于这个 stackoverflow.com 在我的搜索中排名很高,我想我可以在这里为其他感兴趣的人发布最大范围的内容。这些都是 TCP 和 UDP,其中端口数量在范围内至少为500。

Total   Start   End
829     29170   29998
815     38866   39680
710     41798   42507
681     43442   44122
661     46337   46997
643     35358   36000
609     36866   37474
596     38204   38799
592     33657   34248
571     30261   30831
563     41231   41793
542     21011   21552
528     28590   29117
521     14415   14935
510     26490   26999

来源(通过 CSV 下载按钮) :

Http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml