选择新服务的默认TCP/IP端口应该怎么做?

134

当开发一个将在TCP/IP端口上进行监听的应用程序时,如何选择默认端口?假设这个应用程序将被安装在许多计算机上,并且需要避免端口冲突。


1
这个问题在这里有更好的答案:https://dev59.com/MWkv5IYBdhLWcg3wnCA7 - matt2000
12个回答

60

请到这里选择名称为未分配的端口号。


16
你建议他选择一个小于100的端口? - mpen
4
我该选择哪个? - Owen
2
如果所有开发人员都按照这个逻辑进行,那么意味着所有新服务都聚集在少数未分配的端口周围。相比于未分配的端口,运行在已分配端口上的服务的概率是多少呢?(如果我没有泄露一些商业机密的话,请原谅我 :)) - hultqvist
1
如果您正在寻找用于内部网络的端口,请考虑查看类似问题的此答案:https://dev59.com/xXVC5IYBdhLWcg3wqzHV#38141340 - adrianwadey

35

第一步:查看IANA列表

在列表末尾您会看到:

"动态和/或私有端口是49152到65535之间的端口"

因此,这些可能是更好的选择,但是一旦您选择了一个端口号,您可以通过谷歌搜索来查看是否已经有足够流行的应用程序“声明”它。


10
使用动态端口是否会导致偶发(尽管很少)的端口冲突?也许更安全的做法是使用注册范围内未分配或分配给不常见应用程序的端口。 - Kevin Wong
4
除非您明确向IANA注册您的端口选择,否则使用“未分配”端口选择可能会面临相同的冲突几率。实际上,由于低端存在许多未分配的端口,因此这些可能更有可能发生。 - curtisk
2
始终从未分配的范围开始,可选用户/管理员可配置端口以处理可能的冲突。仅当您的应用程序达到广泛使用(例如BitTorrent或其他大型使用)时,才真正考虑申请已分配的端口。否则,请勿进入已分配的范围。如果这是为了严格内部/个人使用,则只需记录各种服务使用的端口即可,只要人们可以在某个在线位置查找它们。将私有/动态范围视为不可路由IP类似-它们非常适合小型/私人使用。 - jefflunt
3
不要犯一个错误,认为你的应用程序需要一个IANA分配的端口,因为你认为它会在实际使用之前爆炸。 :) - jefflunt
9
关于动态范围,我认为“冲突”的问题可能是在问,如果操作系统正在使用该范围进行短暂端口(正如它应该做的那样),如果操作系统随机决定将该端口用于某些出站连接,那么是否会与您选择的端口产生冲突。 (据我所知,这个范围的随机使用就是短暂端口存在的意义。)请参阅此问题,其中更详细地阐述了这种担忧。 - Garret Wilson
动态范围是个坏主意。我们在该范围内使用了一个端口,并且遇到了太多的dns.exe冲突。 - hultqvist

7

如果您说的是广泛使用,意味着您希望在未来防止其他人使用它,您可以申请将其标记为IANA保留给您的应用程序 这里


5
我知道的最全面的官方IANA端口号和非官方端口号列表是nmap-services

3

您可能要避免使用此列表中的任何端口号(维基百科)。

我建议您只选择一个端口号,一旦应用程序被大众使用,该端口号将变得广为人知,并被包括在此类列表中。


3

正如其他人所提到的,检查IANA。

然后检查您本地系统的/etc/services,看看是否已经使用了一些自定义端口。

请不要硬编码它。确保它是可配置的,以某种方式——如果没有其他原因,你想能够让多个开发人员同时使用他们自己的本地构建。


2

从IANA列表中选择一个未分配的通常是足够的,但如果您正在谈论一个商业发布的产品,您确实应该申请到IANA获取一个分配给您的编号。请注意,这样做的过程很简单但很慢;上次我申请时花了一年的时间。


2
如果这是一个你期望被广泛使用的应用程序,那么请在这里注册一个号码,以免别人使用。
否则,随机选择一个未使用的号码即可。
使用动态范围内的号码的问题在于它可能不可用,因为它可能正在用于动态端口号。

0

嗯,你可以参考这里一些常用的端口号,尽量不要使用别人的。

如果你的意思是在自己的系统上开放端口面向公众,我建议你和系统管理员谈一谈,了解他们对于这个问题感觉舒适的端口号是哪些。


0

选择一个不太常见的数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接