保留的TCP / IP端口

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

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

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

另外,如果所有这些程序都在保留端口上运行,那么即使它们被阻止监听连接,它们也不会占用系统资源吗? 这些程序是否始终运行?

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

没有。

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

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

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

是。

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

是。

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

当然是。

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

是。

这些程序是否始终运行?

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

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

而且在你的系统中也会有短暂的端口范围,它可以被找到如下:

sysctl -A | grep ip_local_port_range 

外设端口范围可用于所有客户端套接字。

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

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

 netstat -a | grep <port number> 

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

没有要求特定的进程绑定到任何端口。 一个端口只是一个系统资源。 通常情况下,一个主inetd在系统启动序列的早期启动,绑定到一些低编号的端口,并处理像echo一样的微不足道的服务。 这些算法非常简单,在实践中很少使用,只消耗很少的资源。 这就是为什么你不会找到一个单独的“回声服务器”进程。 如果您阅读了inetd.conf手册页:

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

inetd实用程序还在内部通过使用例程来提供其他一些“简单”的服务。 这些服务是“回声”,“丢弃”,“收费”(字符发生器),“白天”(人类可读时间)和“时间”(机器可读时间,以午夜以来的秒数, 1900年1月1日)。