你如何决定使用什么端口?

时间:2010-02-04 14:09:27

标签: port-number

这有点主观,因为没有规则可以这么说。每当我创建一个服务器时,我都会想,“什么是最好的端口?”我猜 答案是“Any,只要用户可以更改它”。那么,其他人如何决定如何选择默认端口?就个人而言,我喜欢使用像8000这样的东西,如果它与HTTP相关,我注意到这是一个非常普遍的趋势。但是如果8000已经在使用呢?使用8001?它似乎有点特别,我想它是。

显然,我不是第一个提出这个问题的人; IANA维护port numbers列表...这导致我进入未分配的范围(48620-49150)。我想我们应该真的使用这些,但为什么没有更多的程序员这样做呢?你如何决定使用哪个;如果每个人都从#1开始,那么我们都将使用48620。

8 个答案:

答案 0 :(得分:28)

我认为你已经尽可能多地回答了你的问题;没有一个严格的规则,你可以在这里超越你所说的。但一般来说:

  • 查看IANA列表并选择一个未使用的端口。
  • 选择一个易于记忆的端口号。
  • 不要在代码中修复端口号。其他一些产品可能选择了与您相同的端口,您永远不知道何时必须在服务器上共存,因此将端口号放在某个配置文件中,以便在必要时可以更改它而无需重新编译。更改端口号的功能也有助于通过防火墙而无需重新配置它们。 (如果配置文件不存在,您可以始终默认为您选择的值。)
  • 有一种说法是你不想选择太高的东西,因为你可能会与ephemeral ports的范围发生冲突。你不会受到这种打击,但是当它发生时调试是个难题。

(如果你想要一个提取令人难忘的端口号码的提示,我曾经和那些根据同事的电话分机记住端口号的人一起工作。)

答案 1 :(得分:14)

一些易于记忆和适当的书呆子未分配(每个IANA)端口:

27182(e)

31415(pi)

60221(avagadro's)

答案 2 :(得分:7)

在测试期间......始终端口#666;)

答案 3 :(得分:1)

怎么样:

defaultPort = (new Random()).Next(48620, 49150);

答案 4 :(得分:1)

我更喜欢这种方式:( python code following)

#!/usr/bin/env python3
import random as R
r = R.SystemRandom()
print([r.randrange(1024, 65535) for x in range(4)])

然后我选择我最喜欢的号码。 或者,如果您对可接受的数字有一些更严格的限制,请更改范围。

答案 5 :(得分:0)

经过快速谷歌搜索以确保清楚,我通常只选择一些个人意义。

答案 6 :(得分:0)

你回答了自己的问题?选择任何未分配的端口并允许用户更改它。

答案 7 :(得分:0)

我建议永远不要使用像5位数这样大的端口,因为它可能会触及其他一些操作系统进程并分配临时端口。由于其局限性,你会开始得到“已经在使用中的错误”。