zoukankan      html  css  js  c++  java
  • Unix/Linux inet守护进程

    1. 服务器模型存在的问题

    典型Unix系统可能存在许多服务器, 都只是等待客户请求的到达, 如FTP, Telnet, Rlogin, TFTP等. 4.3BSD之前, 这些服务都有一个进程与之关联. 这些进程在系统自举阶段(bootstrap), 从/etc/rc文件中启动, 且每个进程执行几乎相同的启动任务: 创建一个socket, 捆绑知名端口号, 等待一个连接(for TCP)或一个数据报(for UDP), 然后派生子进程. 子进程为客户提供服务, 父进程则继续等待下一个客户请求.
    模型存在2个问题:

    1. 所有这些守护进程包含几乎相同的启动代码, 既表现在创建socket上, 也表现在演变成守护进程上.

    2. 每个守护进程在进程表中占据一个表项, 然而它们大部分时间处于休眠状态.


    2. inetd守护进程

    2.1 Unix如何解决原来服务器模型问题?

    4.3BSD通过提供inetd守护进程(因特网超级服务器), 解决上述问题. 基于TCP/UDP的服务器都可以使用该守护进程.
    具体解决办法:

    1. 通过inetd处理普通守护进程的大部分启动细节, 以简化守护程序的编写 => 每个服务器不再调用daemon_init;

    2. 单个inetd进程就能为多个服务等待外来的客户请求(select), 以此取代每个服务一个进程的做法 => 减少了系统中的进程总数;

    注意: Linux中, 没有inetd, 取而代之的是xinetd守护进程, 不过需要专门下载、安装. 详见 xinetd和inetd安装和使用 | CSDN.
    xinetd在inetd基础上扩展了一些特性, 包括根据客户的地址登记、接受或拒绝连接的选项, 每个服务一个配置文件的做法, 等待. 不过, 背后的超级服务器概念和inetd是一样的, 下文以讲解inetd为主.


    2.2 inetd的启动


    2.3 /etc/inetd.conf配置文件

    /etc/inetd.conf配置文件指定inted守护进程处理哪些服务, 以及当一个服务请求达到时该怎么做. 文件中每行包含字段:

    字段 说明
    service-name 必须在/etc/services文件中定义
    socket-type stream(for TCP), or dgram(for UDP)
    protocol 必须在/etc/protocols文件中定义: tcp/udp
    wait-flag nowait(for TCP), or wait(for UDP)
    login-name 来自/etc/passwd的用户名, 一般为root
    server-program 调用exec指定的完整路径名
    server-program-arguments 调用exec指定的命令行参数

    inetd.conf文件中部分行的例子:

    ftp    stream  tcp  nowait  root   /usr/bin/ftpd    ftpd  -1
    telnet stream  tcp  nowait  root   /usr/bin/telnetd telnetd
    login  stream  tcp  nowait  root   /usr/bin/rlogind rlogind -s
    tftp   dgram   udp  wait    nobody /usr/bin/tftpd   tftpd -s /tftpboot
    
  • 相关阅读:
    动态开点线段树
    Codeforces Round #524 (Div. 2) F. Katya and Segments Sets(主席树)
    Codeforces Round #524 (Div. 2) E. Sonya and Matrix Beauty(字符串哈希,马拉车)
    Codeforces Round #523 (Div. 2) E. Politics(最小费+思维建图)
    UVA12118 Inspector's Dilemma(欧拉路径)
    UVA
    UVA-127 "Accordian" Patience(模拟)
    UVA-1599 Ideal Path(双向BFS)
    UVA-1572 Self-Assembly(拓扑排序判断有向环)
    UVA-122 Trees on the level(树的遍历)
  • 原文地址:https://www.cnblogs.com/fortunely/p/14882805.html
Copyright © 2011-2022 走看看