一尘不染

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

tomcat

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

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

  1. 系统端口(0-1023):我不想使用任何这些端口,因为服务器可能正在此范围内的标准端口上运行服务
  2. 用户端口(1024-49151):鉴于这些应用程序是内部的,因此我无意要求IANA为我们的任何应用程序保留一个号码。但是,我想减少另一个进程使用同一端口的可能性,例如1521年的Oracle Net Listener。
  3. 动态和/或专用端口(49152-65535):此范围是自定义端口号的理想选择。我唯一关心的是这是否会发生:

一个。我将我的一个应用程序配置为使用端口X
b。该应用程序关闭了几分钟或几小时(取决于应用程序的性质),使端口闲置了一会儿,

c。操作系统将端口号X分配给另一个进程,例如,当该进程充当需要与另一个服务器建立TCP连接的客户端时。如果它处于动态范围内,并且就操作系统而言,X当前未使用,则成功
。该应用程序无法启动,因为端口X已在使用中


阅读 1462

收藏
2020-06-16

共1个答案

一尘不染

我不明白你为什么会在乎。除了“请勿使用1024以下的端口”特权规则外,您应该可以使用任何端口,因为 您的客户端应该可以配置为与任何IP地址和端口通信!

如果不是,那么他们就不会做得很好。回去正确地做它们:-)

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

我和您一样,不会尝试获取IANA分配的号码,因为这应该是针对如此普遍的服务,以至于 许多 环境会使用它们(例如SSH或FTP或TELNET)。

您的网络就是 您的
网络,如果您希望服务器位于端口1234(或者甚至是TELNET或FTP端口)上,那就是您的事。例如,在我们的大型机开发区域中,端口23用于3270终端服务器,这与telnet完全不同。如果要telnet到大型机的UNIX端,则使用端口1023。如果不指定端口1023使用telnet客户端,这有时会很烦人,因为它会将您连接到对telnet协议一无所知的服务器-
我们必须中断退出telnet客户端并正确执行以下操作:

telnet big_honking_mainframe_box.com 1023

如果您真的 _无法_使客户端可配置,请在第二个范围中选择一个,例如48042,然后使用它,声明这些包装盒上的任何其他软件(包括将来添加的任何软件)都必须避免使用。

2020-06-16