82

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

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

4

8 回答 8

42

我认为您已经尽可能多地回答了您的问题;除了您所说的之外,您在这里并没有真正可以遵循的严格规则。但一般来说:

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

(And if you want a tip for picking memorable port numbers, I once worked with someone who remembered port numbers based around the telephone extensions of his co-workers.)

于 2010-02-04T14:23:57.987 回答
22

Some easy to remember and appropriately nerdy unassigned (per IANA) ports:

27182 (e)

31415 (pi)

60221 (avagadro's)

于 2010-02-04T14:38:59.810 回答
12

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

于 2010-02-04T14:16:37.330 回答
2

How about:

defaultPort = (new Random()).Next(48620, 49150);
于 2010-02-05T15:38:49.000 回答
1

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

于 2010-02-04T14:13:58.947 回答
1

I prefer this way: (python code following)

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

And then I pick the number which I like the most. Or course, change the range if you have some stricter limits of what are acceptable numbers.

于 2015-08-26T17:59:30.493 回答
0

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

于 2010-02-04T14:13:03.907 回答
0

I'd suggest never use a port that is a big number like 5 digits, as it might hit some other operation system processes and assigns the Ephemeral ports. You would start to get 'Already in use errors' due to its limitations.

于 2016-07-15T09:19:19.807 回答