= tcpserver = http://cr.yp.to/ucspi-tcp/tcpserver.html {{{ D. J. Bernstein [Translated into Japanese by MAENO Toshinori] TCP/IP ucspi-tcp tcpserverプログラム }}} tcpserver は TCP 接続を受けいれる。 == 使い方 == {{{ tcpserver opts host port prog }}} opts は getopt風のオプションの並びである。 host は一つの引数である。 port は一つの引数である。 prog は 一つ以上の引数からなる。 tcpserver は TCP クライアントからの接続を待つ。 接続毎に progを実行する。 記述子 0 はネットワークから読むのに使われ、 記述子 1 はネットワークに書くのに使われる。 また、いろいろの 環境変数が設定される。 サーバのアドレスは hostと portで与える。 port は /etc/services にある名前または数である。 0を指定した場合、 tcpserver が使われていない TCP portを選ぶ。 host は 0でもよいが、 このときは任意のローカル IP アドレス への接続を許す; ドットつき10進 IP アドレス ならそのアドレスへの接続だけを許す; ホスト名を指定すると、そのホストのfirst IP アドレスへの接続を許す。 Host names are fed through qualification using dns_ip4_qualify. tcpserver は SIGTERM を受けとると終了する。 == オプション == 共通のオプション: . -q: Quiet. エラーメッセージも出力しない。 . -Q: (Default.) . -v: Verbose. エラーメッセージと状態メッセージを出力する。 接続関連オプション: . -c n: n を越えた同時接続は扱わない。 n 個の progが実行されているとき、 どれかが終了するまで新しい接続は受けつけられない。 n は正整数でなければならない。 Default: 40. . -x cdb: tcprulesによりcdbに変換された ルールに従うこと。 ルールには環境変数を設定することや 指定した相手からの接続を拒否するよう書ける。 tcpserver を実行中でも tcprulesを実行して、 ルールを変更することが可能である。 . -X: -x cdb とともに指定するもので、 cdb が存在しない場合にも接続を許すためにある。 通常は cdb が存在しない場合、tcpserver は接続を拒否する。 . -B banner: 接続されたら直ちにネットワークへ bannerを送りだす。 tcpserver は $TCPREMOTEHOST や $TCPREMOTEINFOを設定する前に、またcdbを検査する前にbannerを書く。 この機能はサーバからの開始メッセージをクライアントが待つようなプロトコルで 遅延を小さくするために利用できる。 . -g gid: 接続を受けつける準備をしたあと、 グループ ID を gid に切りかえる。 gid は正整数でなければならない。 . -u uid: 接続を受けつける準備をしたあと、 ユーザ ID を uid に切りかえる。 uid は正整数でなければならない。 . -U: -g $GID -u $UIDを意味する。 普通は $GID と $UID は envuidgid によって設定されている。 . -1: 接続を受けつける準備をしたあと、ローカルポート番号を標準出力に書く。 . -b n: 約 n 個の TCP SYN のバックログを許す。 システムによっては なにもいわずに n を 5 としているものもある。 SYN クッキーをサポートしているシステムでは バックログを気にすることはない。 . -o: IP オプションを有効にする。 クラアントが IP source route つきのパケットを送ってきたら、 同じ経路を通ってパケットを送り返す。 . -O: (Default.)IP オプションを無効にする。 クラアントは 接続と送信に IP source route 指定を使えるが、 パケットは常にデフォルト経路にそって送り返す。 . -d: リモートホストの応答が遅れ気味の場合、 データの送信を一秒以下で遅らせる。 この機能は現在デフォルトであるが、将来は変更されるかもしれない; 使う場合には明示的に指定するように。 . -D: データ送信を遅らせない; TCP_NODELAYを有効にする。 データ収集のためのオプション : . -h: (Default.) IP アドレスからリモートホスト名へのDNS検索をする; 環境変数 $TCPREMOTEHOSTを設定する。 . -H: リモートホスト名のDNS検索をしない; 環境変数 $TCPREMOTEHOSTを取り除く。 ループを避けるために、 TCP port 53のサーバではこのオプションを指定しなけばならない。 . -p: Paranoid. リモートホスト名のDNS検索をしたあと、そのホスト名で IP アドレスをDNS検索する。 結果がクライアントの IP アドレスのどれかに一致しない場合、 環境変数 $TCPREMOTEHOSTを取り除く。 . -P: (Default.) Not paranoid. . -l localname: ローカルホスト名のDNS検索をしない; localname を 環境変数 $TCPLOCALHOSTに設定する。 localname には普通 0を使う。 ループを避けるために、 TCP port 53のサーバではこのオプションを指定しなけばならない。 . -r: (Default.) リモートホストから$TCPREMOTEINFOを取得するよう試みる。 . -R: リモートホストから$TCPREMOTEINFOを取得しない。 ループを避けるために、 TCP port 53 と 113 のサーバではこのオプションを指定しなけばならない。 . -t n: n 秒後に$TCPREMOTEINFO 取得のための接続を打ちきる。 Default: 26. ---- 2000-11-14 訳: 前野年紀 moin 整形 -- ToshinoriMaeno <>