应该如何为新服务select默认的TCP / IP端口?

在开发将在TCP / IP端口上侦听的应用程序时,应该如何select默认端口? 假设这个应用程序将安装在许多计算机上,并且避免端口冲突是需要的。

去这里 ,select一个描述为Unassigned的端口

第一步:查看IANA列表 :

在那里你会看到在列表的尾部

“dynamic和/或私人港口是从49152到65535”

所以这些将是你更好的赌注,但一旦你select一个,你可以随时谷歌,看看是否有一个stream行的应用程序已经“声称”它

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

如果通过广泛使用,你的意思是你想要保护未来使用它的其他人,你可以申请在这里申请它为你的应用程序保留标记

您可能要避免使用此列表中的任何端口(Wikipedia)。

我只是select一个,一旦这个应用程序被群众使用,端口号将被识别并包含在这些列表中。

其他人提到,请查看IANA。

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

请,不要硬编码。 确保它是可configuration的,无论如何,如果没有其他原因,你想能够让多个开发者同时使用他们自己的本地化版本。

从IANA列表中select未分配的一个通常就足够了,但是如果您正在讨论一个商业发布的产品,那么您应该向IANA申请一个分配给您的产品。 请注意,这样做的过程很简单,但速度很慢。 我上次申请一个,花了一年时间。

如果这是一个你期望被广泛使用的应用程序,那么在这里注册一个数字,这样别人就不用它了。

否则,随便挑一个未使用的。

在dynamic范围内使用它的问题是,它可能不可用,因为它可能被用于dynamic端口号。

使用iana清单。 从以下url下载csv文件:

https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv

并使用此shell脚本search未注册的端口:

 for port in {N..M}; do if ! grep -q $port service-names-port-numbers.csv; then echo $port;fi; done; 

并把2个数字,而不是N和M.

那么,你可以在这里引用一些常用的端口号,并尽量不要使用其他人的。

如果“向公众开放”意味着你在自己的系统上打开了端口,那么我会和你的系统pipe理员聊聊他们觉得用哪个端口来做这件事情的感觉。

select一个不常见的数字

select一个不影响最常见守护进程和服务器的默认端口。 还要确保端口号不被列为某种病毒的攻击媒介 – 有些公司有严格的策略,无论如何阻塞端口。 最后但并非最不重要,确保端口号是可configuration的。