在开发监听 TCP/IP 端口的应用程序时,应该如何选择默认端口?假设这个应用程序将安装在许多计算机上,并且希望避免端口冲突。
转到 给你并选择一个描述为 Unassigned的端口
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。