【问题标题】:Reserved TCP/IP ports保留的 TCP/IP 端口
【发布时间】:2015-03-06 19:55:49
【问题描述】:

保留的 TCP/IP 端口是否要求程序正在运行并绑定到该端口?如果没有此类程序正在运行或不存在,其他程序可以使用此端口吗?例如,在 Linux 上,端口 7 是为回显服务器保留的。我假设有一些程序正在运行并且绑定到机器的端口 7。该程序基本上回显输入。如果停止这个程序,7号端口会被释放吗?

如果我编写自己的回显服务器并将其绑定到某个其他端口,那么一旦我的自定义回显服务器程序被杀死,该端口不会被释放吗?

保留端口也会发生同样的情况吗?

另外,如果所有这些程序都在保留端口上运行,即使它们被阻止侦听连接,它们不会消耗系统资源吗?这些程序是否一直在运行?

【问题讨论】:

    标签: c linux sockets tcp


    【解决方案1】:

    保留的 TCP/IP 端口是否要求程序正在运行并绑定到该端口?

    没有。

    如果没有此类程序正在运行或不存在,其他程序可以使用此端口吗?

    没有什么可以阻止你,但它仍然是保留的,如果你滥用为其他目的保留的端口,用户有权向你投诉。

    例如,在 Linux 上,端口 7 是为回显服务器保留的。我假设有一些程序正在运行并且绑定到机器的端口 7。该程序基本上回显输入。如果停止这个程序,7号端口会被释放吗?

    是的。

    如果我编写自己的回显服务器并将其绑定到其他端口,那么一旦我的自定义回显服务器程序被杀死,这个端口不会被释放吗?

    是的。

    保留端口也会发生同样的事情吗?

    是的,当然。

    另外,如果所有这些程序都在保留端口上运行,即使它们被阻止侦听连接,它们不会消耗系统资源吗?

    是的。

    这些程序是否一直在运行?

    它们要么在运行,要么不运行。您同时询问这两种情况。如果您的意思是“执行”,即消耗 CPU,答案是否定的,它们在没有连接时被阻塞等待连接。

    【讨论】:

      【解决方案2】:

      端口 1-65535 可用,1-1023 范围内的端口是特权端口,用于标准应用程序。

      并且您的系统中也存在临时端口范围,可以找到如下:

      sysctl -A | grep ip_local_port_range 
      

      Epeheral 端口范围可用于您的所有客户端套接字。

      当有服务器时,客户端通信大部分时间都是使用套接字进行的。 Socket不过是一对IP地址和一个端口号。通常与配置有关的所有端口都是服务器端口配置,客户端端口是从 Epeheral 端口范围中动态选择的。如果是临时端口,系统可能不会释放该端口,直到此范围用完。

      您可以使用以下命令检查端口可用性:

      netstat -a | grep <port number>
      

      【讨论】:

        【解决方案3】:

        [编辑] 保留端口的想法是,您编写的任何自定义软件都应注意避免绑定到它们,以避免干扰已建立的服务。此外,非 root 用户无论如何都不能绑定任何低于 1024 的端口,其中许多端口是在 IANA 注册的(又名保留)。

        不要求将特定进程绑定到任何端口。端口只是系统资源。通常,主控inetd 在系统引导序列的早期启动,绑定到一些低编号端口,并处理诸如回显本身之类的琐碎服务。这些算法非常简单,并且在实践中很少使用,因此消耗的资源很少。这就是为什么您找不到单独的“回声服务器”进程的原因。如果您阅读 inetd.conf 手册页:

        http://www.freebsd.org/cgi/man.cgi?query=inetd.conf&sektion=5&manpath=FreeBSD%209.2-RELEASE

        inetd 实用程序还提供了其他几个“微不足道”的服务。 最后通过使用自身内部的例程。这些服务是“回声”, 'discard'、'chargen'(字符生成器)、'daytime'(人类阅读- 时间)和“时间”(机器可读时间,形式为自 1900 年 1 月 1 日午夜以来的秒数)。

        【讨论】:

        • 保留端口的想法是它在 IANA 的列表中,因此只有一个服务可以使用它。端口 1-1023 的想法是只有 root 用户可以绑定到它们。这些不是一回事。 1023以上的预留端口很多。
        • "知名端口列表 端口号范围从 0 到 65536,但只有端口号 0 到 1024 为特权服务保留并指定为知名端口。这个众所周知的端口号列表将服务器进程使用的端口指定为其联系端口。” webopedia.com/quick_ref/portnumbers.asp
        • Exacfly。为特权用户保留。任意网站不是规范性参考,也不能“指定”任何内容。只有 IANA 可以做到这一点。如果您接受链接的建议并参考 RFC 1700,您会发现截至该日期的实际列表远远超出 1023,并且 RFC 1700 本身在很多年前就已经过时了。
        • 不要对非代码文本使用代码格式。
        猜你喜欢
        • 2011-07-12
        • 1970-01-01
        • 2010-10-19
        • 2020-11-05
        相关资源
        最近更新 更多