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

Networking 内部应用程序的最佳TCP端口号范围,networking,tomcat,Networking,Tomcat,我在一个地方工作,我们的每个内部应用程序都在一个单独的Tomcat实例上运行,并使用一个特定的TCP端口为了避免端口号与服务器上的任何其他进程发生冲突,这些应用程序使用的最佳IANA端口范围是什么? 基于,以下是我目前看到的选项: 系统端口(0-1023):我不想使用这些端口中的任何一个 因为服务器可能正在该服务器的标准端口上运行服务 射程 用户端口(1024-49151):鉴于应用程序是内部的,我不打算要求IANA为我们的任何应用程序保留一个号码。但是,我希望降低同一端口被另一进程使用的可能

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

基于,以下是我目前看到的选项:

  • 系统端口(0-1023):我不想使用这些端口中的任何一个 因为服务器可能正在该服务器的标准端口上运行服务 射程
  • 用户端口(1024-49151):鉴于应用程序是内部的,我不打算要求IANA为我们的任何应用程序保留一个号码。但是,我希望降低同一端口被另一进程使用的可能性,例如1521上的Oracle Net Listener
  • 动态和/或专用端口(49152-65535):此范围非常适合自定义端口号。我唯一担心的是如果发生这种情况:

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

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

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

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

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

    您的网络就是您的网络,如果您希望您的服务器位于端口1234(甚至是TELNET或FTP端口),这就是您的业务。举个例子,在我们的大型机开发区,端口23用于3270终端服务器,它与telnet截然不同。如果要远程登录到大型机的UNIX端,请使用端口1023。如果您在使用telnet客户端时未指定端口1023,这有时会令人恼火,因为它会将您连接到一台对telnet协议一无所知的服务器上-我们必须打破telnet客户端并正确执行:

    telnet big_honking_mainframe_box.com 1023
    

    如果您真的无法配置客户端,请选择第二个范围中的一个,如48042,然后使用它,声明这些框中的任何其他软件(包括将来添加的任何软件)必须远离您。

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

    超越者的答案-选择并部署资源发现解决方案。让服务器动态选择专用端口。让客户端使用资源发现

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

    通过避免动态分发给客户机的专用端口,您几乎可以完全降低客户机的风险

    如果您使用用户端口,则从另一个服务获取数据的风险最小。未分配端口的风险只是另一个服务碰巧被配置(或动态地)使用该端口。但至少这可能在你的控制之下


    包含所有端口分配(包括用户端口)的巨大文档在这里:查找未分配的令牌。

    我决定从IANA下载分配的端口号,过滤掉使用的端口,并按大多数可用端口的顺序对每个“未分配”范围进行排序,降序排列这不起作用,因为csv文件标记为“未分配”的范围与其他端口号保留重叠。我手动扩展了分配端口号的范围,留下了所有分配端口号的列表。然后,我对该列表进行排序,并生成我自己的未分配范围列表

    由于这个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下载按钮):


    谢谢。在阅读了你的答案并仔细考虑之后,我决定选择在第二个范围内使用端口。我们选择46xxx,因为IANA目前在此子范围内分配的端口很少。我们之所以没有选择第三个范围,是因为我所描述的理论上可能(尽管可能性很小)的情况。对于网络上永远不会使用的协议,使用分配的端口不是更好吗?一个未分配的端口可能会在任何时候被分配,并给您带来问题。如中所示,“它既是tcp又是udp”-我可以打开所有这些端口,比如说
    44100-44199
    看起来很容易记住,因为udp和tcp上的音频44100采样安全吗?udp 44100-44199和tcp 44100-44199都是免费的?不幸的是没有。自从我发布后,已经有额外的预订了。现在您的范围内有一个端口。“z-wave-tunnel 44123 tcp z-wave安全隧道”幸运的是,我不认为我会在开发服务器lol上安装z-wave智能家居安全系统