在开发将侦听 TCP/IP 端口的应用程序时,应该如何选择默认端口?假设此应用程序将安装在多台计算机上,并且需要避免端口冲突。
12 回答
去这里选择一个带有描述的端口Unassigned
第一步:查看IANA 列表:
你会在列表的尾部看到
“动态和/或专用端口是从 49152 到 65535 的端口”
因此,这些将是您更好的选择,但是一旦您选择了一个,您就可以随时在其上进行谷歌搜索,以查看是否有足够受欢迎的应用程序已经“认领”了它
如果通过广泛使用,您的意思是您希望防止其他人在未来使用它,您可以在此处申请将其标记为由 IANA 为您的应用程序保留
我知道的最全面的官方 IANA 端口号和非官方端口号列表是nmap-services。
您可能希望避免使用此列表(维基百科)中的任何端口。
我只会选择一个,一旦该应用程序被大众使用,端口号将被识别并包含在此类列表中。
从 IANA 列表中选择一个未分配的产品通常就足够了,但如果您谈论的是商业发布的产品,您确实应该向 IANA 申请分配给您的产品。请注意,执行此操作的过程简单但缓慢;上次申请,用了一年。
正如其他人提到的,请检查 IANA。
然后检查您的本地系统 /etc/services 以查看是否有一些自定义端口已在使用中。
请不要对其进行硬编码。以某种方式确保它是可配置的——如果没有其他原因,您希望能够让多个开发人员同时使用他们自己的本地化构建。
好吧,你可以在这里参考一些常用的端口号,尽量不要使用别人的。
如果“向广大公众开放”是指您在自己的系统上打开端口,我会与您的系统管理员讨论他们觉得可以使用哪些端口。
选择一个不会干扰最常见的守护进程和服务器的默认端口。还要确保端口号没有被列为某些病毒的攻击媒介——一些公司有严格的政策,无论如何他们都会阻止这些端口。最后但同样重要的是,确保端口号是可配置的。
使用 iana 列表。从以下位置下载 csv 文件:
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;
并输入 2 个数字而不是 N 和 M。