首页 文章

保留的TCP / IP端口

提问于
浏览
2

保留的TCP / IP端口是否要求程序正在运行并绑定到端口?如果没有这样的程序正在运行或存在,另一个程序可以使用此端口吗?例如,在Linux上,端口7保留用于echo服务器 . 我假设有一些程序正在运行并且绑定到机器的端口7 . 该程序基本上回应了输入 . 如果该程序停止,端口7将被释放吗?

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

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

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

3 回答

  • 0

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

    没有 .

    如果没有这样的程序正在运行或存在,另一个程序可以使用此端口吗?

    没有什么可以阻止你,但它仍然保留,如果你滥用为其他东西保留的端口,用户有权向你抱怨 .

    例如,在Linux上,端口7保留用于echo服务器 . 我假设有一些程序正在运行并且绑定到机器的端口7 . 该程序基本上回应了输入 . 如果该程序停止,端口7将被释放吗?

    是 .

    如果我编写了自己的echo服务器并将其绑定到其他端口,那么一旦我的自定义echo服务器程序被杀死,是否会释放此端口?

    是 .

    保留端口是否会发生同样的事情?

    当然是 .

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

    是 .

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

    他们正在运行或他们没有运行 . 你在同一时间询问这两种情况 . 如果你的意思是'执行',即消耗CPU,答案是否定的,它们在没有连接的情况下被阻塞等待连接 .

  • 2

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

    并且您的系统中也会存在短暂的端口范围,可以通过以下方式找到:

    sysctl -A | grep ip_local_port_range
    

    外围端口范围适用于所有客户端套接字 .

    当有服务器时,客户端通信大多数时候使用套接字进行通信 . 套接字只不过是一对IP地址和端口号 . 通常配置的所有端口都是服务器端口配置,客户端端口是从Epeheral端口范围动态选择的 . 在外围端口的情况下,系统可能无法释放端口,直到该范围耗尽 .

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

    netstat -a | grep <port number>
    
  • 0

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

    不要求将特定进程绑定到任何端口 . 端口只是一种系统资源 . 通常,主 inetd 在系统引导序列的早期启动,绑定到一些低编号的端口,并处理诸如echo本身之类的简单服务 . 这些算法非常简单,并且在实践中很少使用,因此消耗的资源非常少 . 那个's why you'll找不到单独的"echo server"进程 . 如果您阅读inetd.conf手册页:

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

    inetd实用程序还通过在其自身内部使用例程来提供其他几个“普通”服务 . 这些服务是'echo','discard','chargen'(字符发生器),'daytime'(人类可读时间)和'time'(机器可读时间,以午夜以来的秒数形式, 1900年1月1日) .

相关问题