如何为新服务选择默认的 TCP/IP 端口?

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

62582 次浏览

转到 给你并选择一个描述为 Unassigned的端口

第一步: 看看 IANA 上市:

你会在列表的尾部看到

动态和/或私有端口是从49152到65535的那些

所以这些将是你更好的赌注,但一旦你选择了一个,你总是可以谷歌上看看是否有一个足够流行的应用程序已经“声称”它

那么,您可以引用一些常用的端口号 给你,并尽量不使用其他任何人的端口号。

如果“向公众开放”是指在自己的系统上打开端口,那么我会与系统管理员讨论一下他们觉得可以使用哪些端口。

您可能希望避免使用 这份名单(Wikipedia)中的任何端口。

我只会选择一个,一旦应用程序被大众使用,端口号将会被识别并包含在这样的列表中。

选择一个不是 非常 很普通的数字

据我所知,IANA 官方港口号和非官方港口号的最全面清单是 Nmap-services

如果你说的广泛使用是指你想防止其他人在将来使用它,你可以申请将它标记为 IANA 给你为你的应用程序保留

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

如果这是针对您希望广泛使用的应用程序,那么请注册一个数字 在这里 ,因此没有其他人使用它。

否则,就随便挑一个没用过的。

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

选择一个不会干扰最常见的守护进程和服务器的默认端口。还要确保端口号没有被列为某些病毒的攻击载体——一些公司有严格的政策,无论如何都要封锁这些端口。最后但并非最不重要的是,确保端口号是可配置的。

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

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

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

使用 iana 列表:

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

并使用这个 shell 脚本搜索未注册端口:

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

用两个数字代替 N 和 M。