发布时间:2025-12-10 11:26:48 浏览次数:7
如果出现 telnet: Unable to connect to remote host: Connection refused,则在 /etc/inetd.conf 增加一句
xxx#: STANDARD: These are standard services.telnetstream tcpnowaittelnetd/usr/sbin/tcpd/usr/sbin/in.telnetdxxx系统至少得安装有 telnet 以及 telnetd
netstat -a | grep telnet
netstat -pant | grep 23,能看到 23号端口被使用了。
典型的unix系统可能存在许多服务器,它们只是等待客户请求的到达,如 FTP、Telnet、Rlogin、TFTP 等。最开始,所有的这些服务都与一个进程相关联,这些进程在系统启动时开始运行,而且执行几乎相同的启动任务:创建一个套接口,把本服务的众所周知的端口捆绑到该套接口,等待一个连接(TCP)或是一个数据报(UDP),然后派生子进程。子进程为客户提供服务,父进程则等待下一个客户请求。这个模型存在两个问题:
inetd 超级服务器使上述的问题得到简化:
inetd.conf 是/usr/sbin/inetd的初始化文件,告诉/usr/sbin/inetd所需要监听的 inet 服务及有关信息。
每行有七个单元,对于socket类的服务各单元依次是:
<服务名称> <协议(tcp或udp)> <标志(wait或 nowait)> <属主> <真实服务程序全路径> <真实服务程序名称及参数
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
表示 /usr/sbin/inetd 监视 ftp 服务(端口21),为此服务创建的socket为流类型的,遵从 tcp协议,当ftp客户请求到来并且与 /usr/sbin/inetd 监视的ftp服务端口连接成功后, /usr/sbin/inetd 就fork一个子进程,该子进程的主人被置为root,同时继承了一个父进程与客户方连接成功而生成的子socket,然后该子进程将该子socket复制(dup2调用) 为文件号0,1, 2(标准输入输出标准出错)并且发 execl("/usr/sbin/in.ftpd", "in.ftpd") 使 in.ftpd 接管标准输入输出的处理,也就是接管父进程连接成功生成的子socket, 父进程不会等待子进程的退出(exit)状态,即 nowait。
https://blog.csdn.net/u012103747/article/details/45338571 ↩︎