【问题标题】:How do you decide what port to use?你如何决定使用哪个端口?
【发布时间】:2011-01-13 02:23:43
【问题描述】:

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

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

【问题讨论】:

  • +1 回答您自己的问题
  • 谢谢 - 我想告诉大家我的想法,如果我错了,其他人可以打电话给我。

标签: port-number


【解决方案1】:

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

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

(如果你想知道如何选择令人难忘的端口号,我曾经与一个根据同事的电话分机记住端口号的人一起工作。)

【讨论】:

  • "查看 IANA 列表并选择一个未使用的端口" 或者只是选择一个较大的数字
  • 显然是49152以下的大数,我知道,真的我做到了
【解决方案2】:

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

27182 (e)

31415 (pi)

60221(阿瓦加德罗的)

【讨论】:

    【解决方案3】:

    在测试期间...总是端口 #666 ;)

    【讨论】:

    • 我认为你总是以 root 身份运行?
    • 它是为 Doom 游戏保留的!你应该尊重它
    【解决方案4】:

    怎么样:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • int.from_bytes(hashlib.sha256(b"my application name").digest()[:4], "little") & 0xFFFF
        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-10-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-28
            • 2011-10-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多