发信人: cpu (奔腾的心), 信区: Solaris
标 题: Re: 请教CPU大虾
发信站: 华南网木棉站 (Fri Aug 7 16:10:01 1998), 转信
【 在 node (节点) 的大作中提到: 】
: /etc下的三个文件:inetd.conf,protocols,services,netconfig
: 之间有什么关系?
: 是不是互相调用的?或者在调用过程中,还有什么其他的文件?
: 多谢!
inet.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。
你如果对fork和exec族的调用有比较清楚的了解一看就会明白的,我前面的捉鬼记系列
中的防火墙程序正是利用了/usr/sbin/inetd和/etc/inetd.conf这一特性。
至于/etc/protocol和/etc/services则是系统正式登记的协议和服务名称,协议有协议
号,服务有端口号,但是这些协议号和端口号有自己的登记名字,就体现在上述两个
文件中,这两个文件会被许多应用程序查询的,即调用getprotobyname和getservbyname.
netconfig是系统的网络设置?这个说法比较模糊呵呵我也不知道怎么表达;)
跟getnetconfig等调用有关,应该是比较底层的东东,涉及网络名,设备名
动态库等等,呵呵越说越没底泥man netconfig好了呵呵;)
(http://www.fanqiang.com)
进入【UNIX论坛】
|