(四)ucspi-tcp的原理和设置。
作者:peng
论坛ID:peng www.chinaunix.net
QQ: 螃蟹 16360544
Qmail的开发者dan Bernstein 开发了ucspi-tcp(UNIX客户-服务器程序端口)包来取代inetd程序。Ucspi格式定义了一种程序来交换数据的方法,主要体现出三个优点:
1、 ucspi端口独立于底层的通讯介质。
2、 ucspi允许shell脚本程序利用网络的互联。
3、 ucspi程序建立了unix环境变量,这些变量定义了可以被程序和用户使用的网络信息。
Ucspi-tcp使用称为tool的程序在应用程序之间建立连接。有两种类型的ucspi tool ---客户tool(tcpclient)和服务器tool(tcpserver)。
Ucspi-tcp的tcpserver程序就是替代unix的inetd程序的,有如下优点:
1、他能够把来自服务器端的所有输入和输出都记到一个文件中。
2、他能提供访问控制特征,拒绝或者允许来自客户端的连接。
3、它包含了并发限制,防止使unix系统过载。
Tcpserver程序通过使用管理员配置的一个hash规则库提供对访问的控制。
Tcpserver 命令行的格式是:
tcpserver options host port application
host和prot参数制定了将要运行应用程序的本地服务器的主机名和端口号。Host参数可以是localhos、主机ip address、或者是主机的完整域名。Port参数可以是一个数字或者是/etc/services文件中的一个tcp端口的名字,例如:smtp。Application是连接建立后要传输给的应用程序。
Options参数定义了tcpserver程序的行为。有三种类型的选项:
常规选项------定义用于ucspi tool的选项。
连接选项-----处理到达的连接请求。
数据收集选项-----如何获得在传给应用程序的unix环境变量中使用信息。
Tcpserver连接选项(1)
---------------------------------------------------------------------------
选项 描述
-------------------------------------------------------------------------
-b n 允许n个连接请求的存储
-B banner 在连接建立后将banner写到网络连接上
-c n 不接受多于n个同时连接
-d 当主机相应较慢时延迟向远程主机发送数据
-D 从不延迟向远程主机发送数据
-g gid 当接受连接准备完成后改变活动组ID为gid
-l 打印本地端口号到stdout
-o 在连接的分组中不改变ip选项
-u uid 当接受连接准备完成后改变活动用户ID为uid
-O 删除ip选项为分组寻找路径
-U 相当于-g $GID –u UID
-x db 使用hash数据库db中的规则来接受或拒绝远程客户端的访问
-X 当由-x选项指定的数据库不存在时允许连接
-------------------------------------------------------------------
tcpserver程序可以使用的数据收集选项(2)
----------------------------------------------------------------
选项 描述
--------------------------------------------------------------------
-h 使用dns查找远程主机
-H 不使用dns查找远程主机名。你必须对端口53使用此选项
-l localhost 不使用dns查找本地服务器主机名,而使用localhost
-p 怀疑。使用反向dns 查找远程主机ip地址,将其与主机名相比较。如果不匹配,删除环境变量$tcpremotehost
-r 试图从远程主机获得$tcpremoteinfi (默认)
-R 不试图从远程主机获得$tcpremoteinfo数据。你必须为端口53和端口113使用这一选项
-t n 在n秒之后停止试图连接到$tcpremoteinfo数据。默认26
------------------------------------------------------------------------------
有几个unix环境变量tcpserver试图为其接受数据。这些环境变量帮助应用程序处理有关的网络间接信息。
Tcpserver的unix环境变量(3)
------------------------------------------------------------------------------
变量 描述
----------------------------------------------------------------------------
$PROTO 使用的协议(默认为TCP)
$TCPLOCALIP 本机的IP地址