您如何决定使用哪个端口?


72

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

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


6
+1回答您自己的问题
fupsduck 2010年

2
谢谢-我想告诉大家我的想法,以便别人在我错了的情况下打电话给我。
尼克·博尔顿

Answers:


37

我认为您已经尽可能地回答了您的问题;除了您所说的以外,这里没有严格的规定。但通常:

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

(如果您想选择一个难忘的端口号,我曾经和一位根据同事的电话分机来记住端口号的人一起工作。)


“查看IANA列表并选择一个未使用的端口”或仅选择一个较大的端口
Patrick

8
很明显,在49152以下有很多人,我知道我确实做到了
Patrick

19

一些容易记住并且适当讨厌的未分配端口(每个IANA):

27182(e)

31415(pi)

60221(avagadro's)



1

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



1

我更喜欢这种方式:(以下是python代码)

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

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



0

我建议不要使用像5位数字这样的大端口,因为它可能会影响其他操作系统进程并分配临时端口。由于其局限性,您将开始出现“已使用错误”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.