01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
マルチプロセスを利用する際、folk した後の子プロセスは、wait を実行することで、終了時のリソースの解放が行なわれる。
wait が実行されなかった時は、その子プロセスはゾンビ状態で残り続ける。
waitpid は子プロセスの状態変化をハンドルすることが可能。オプションによっていろいろと使い分けがきく。
- WAIT
これらのシステムコールはいずれも、呼び出し元プロセスの子プロセスの状態変化を待ち、状態が変化したその子プロセスの情報を取得するのに使用される。状態変化とは以下のいずれかである: 子プロセスの終了、シグナルによる子プロセスの停止、シグナルによる子プロセスの再開。子プロセスが終了した場合は、wait を実行することで、システムがその子プロセスに関連するリソースを解放できるようになる。 wait が実行されなかった場合には、終了した子プロセスは「ゾンビ」状態で残り続ける
とある c のプログラム。
自宅の Mac で手を入れようと思ったら、
*** malloc[xxx]: Deallocation of a pointer not malloced
とワーニングがでる。
double free ということだが、そのようなことはしていない。
- Mac OS X関連な場所
- zlib の脆弱性と Mac OS X
この際、気にせずにおこうかと思ったが、結果にも影響しているんだよね・・・
Solaris, Linux では問題ないのだけど。
clock() を使えばいいのだが、clock() は対象となるその処理で CPU が使用される処理でのみ計測されている模様。
今回取得したい時間は、C/S でクライアントからデータを send して、recv するまでの時間。
この時、クライアント側の send 前で clock(), recv 後に clock() して差分を見てみると、どうも通信にかかっている時間が入ってきていない。
速度計測には他にどのようなものが使えるのか。
- gettimeofday
マイクロ秒単位で取れる模様。
- gettimeofday 現在の時刻を求める
- GETTIMEOFDAY
- http://members.at.infoseek.co.jp/shiroikumo/linux/time/sleep.html
sleep についての話題だが、gettimeofday についてもふれている。
# netstat -i
インターフェイス毎に MTU が調べられる。
- 同一ホスト内では 15000 - 100000 byte
- リモートホストで 1500 byte
通常こんなもの?
- NULLに関するパターン
「NULL」、「数値のゼロ」、「'\0'」、「""」の違いは?
- プログラミングの禁じ手Web版 C言語編
- NULLポインタ (空ポインタ)
言語では,数値 0 が重要な意味を持ちます。特に,後に見るように,繰り返し制御などでの条件判断に使われます。int 型や float 型変数には元々数値 0 が,char 型変数ではナル文字('\0')が数値 0 と等しいです。int * 型変数や char * 型変数,すなわち,ポインタにおいて数値 0 に等しいのが NULLポインタです。(C99 によれば,数値 0 自体が NULLポインタ定数です。)
- 証明書ポリシー(Certificate Policies)
証明書ポリシーは、少なくとも 1 つの証明書ポリシーOID を含めなければならない。これは認証局の CPS を反映したものでなければならない。この拡張はクリティカルとして良い。
- 第4章 セキュリティを考慮した運用要件(HTML版)
- 第4章 セキュリティを考慮した運用要件(PDF版)
- [[http://www.openssl.org/docs/apps/x509v3_config.html#CRL_distribution_points]]
- certificatePolicies の値がうまく設定できない。
Win 版のインストールを行う。
RAA - rdtool にて、
HOWTO install RDtool on Windows NT
が紹介されていたので、ここの記述に従う。
- Racc というものを取ってきて、上記サイトの 1.8 系手順に従ってインストール
racc-1.4.4-all-i386-mswin32-1.8.zip
- ちょっとルール違反だが、RDtool の setup.rb を叩く。
- setup.rb 自体は正常終了。
- RD2 の起動バッチを準備
@echo off
"$ruby_home\bin\ruby.exe" "$ruby_home\bin\rd2" %1 %2 %3 %4 %5 %6 %7 %8 %9
- 起動してみる。
rd2 test.rd > test.html
C:/Program Files/ruby-1.8/bin/rd2:75:in `load': No such file to load -- rd/dot.r
d2rc (LoadError)
from C:/Program Files/ruby-1.8/bin/rd2:75
dot.rd2rc が無いとのこと。
インストールディレクトリを見ると、確かに存在する。
手で、そのファイルを
C:\Program Files\ruby-1.8\lib\ruby\site_ruby\1.8\rd
にコピーする。
かなりいい加減だが、うまく動くようになった。
スタイルシートを組み込むにはどうするのだろう?
- Rd2 用のフォーマットファイル
rd2 -r rd/rd2html-lib --with-css=style/default.css hogehoge.rd > hogehoge.html
RD の head line の目次を作りたいのだけど・・・
- RDのHeadLineの目次を作る
→ ソースがない。。
- rdhtml-toc.rb: RD HTMLの目次・節番号の生成
→ HTML にリンク貼られないかな・・・
- http://www.gfd-dennou.org/arch/cc-env/cvs/SIGEN.htm]]
→ CVS 関連の話のはずだが、RD を使った文書の作成に参考になる資料が。
ライブラリなどもまとめてある。
■ 参考 URL
- [[RAA - rdtool
- RD事始め
- るびきち版RDコンバータ
- RD記法
■ 関数利用時のメモ
- send()
- 戻り値は送信バイト数 or error(-1)
- 終了文字('\0') は送信しない。
- recv()
- 戻り値は受信バイト数 or error(-1)
- TCP はストリーム型のサービスを提供するプロトコルなので、
send() で送信するデータの境界が保持されない。
よって、送信側では1回の send() の呼び出しで送信されたバイトデータが
受信側でも1回の recv() の呼び出しで全て受け取られるとは限らない。
- 戻り値が 0 であれば、通信先のアプリケーションプログラムが TCP
コネクションをクローズしていることを意味する。
■ サーバ
1. socket() の作成
2. bind() を実行してソケットにポートに割り当てる
3. listen() を実行して、割り当てたポートへ接続を作成できることをシステムに通知
4. クライアントからの要求に応える
- クライアントからの要求の度に accept() を呼び出し、ソケットを新しく取得。
- send(), recv() を実行し、ソケットを通してクライアントとやり取りを行なう。
- close() を実行してクライアントとの接続をクローズする。
■ メッセージ送信時の注意点
sprintf(msgBuffer, "%s %s ", fname, lname);
send(s, msgBuffer, strlen(msgBuffer), 0)
- msgBuffer のサイズに注意。
- 上記の場合の msgBuffer には、フォーマットで指定しているスペース分と、
fname, lname のサイズと、終了を表す NULL 文字を足したサイズが必要となる。
下手するとサイズ溢れが考慮されるため、snprintf を使う方が安全。
- send() の第3引数には、文字列の末尾の NULL 文字、
メッセージ長を超える msgBuffer の余分なバイト数を送信しない。
- ネットワークバイト順の標準はビッグエンディアン。
- バイト順の変換は、データを送る前の最後の処理として、
# hton*()関数
データを受け取った最初の処理として実行するのが一般的。
# n*toh()関数
■ ノンブロッキングI/O
ソケットの呼び出しは、要求されたアクションが完了するまでプログラムの実行をブロックする。
- recv() の動作は、受信するデータがなければブロックされる。
- send() の動作は、データ転送に必要なバッファスペースが不足すればブロックされる。
- TCP ソケットの接続関連の関数は、接続が確立するまではブロックされる。
望ましくないブロッキングを解決する手だてが必要。
- ブロッキングのデフォルト動作は、fcntl() を使用して変更可能。
- connect() の呼び出しが完了するまでは、ソケットはノンブロッキングに設定しない方がよい。
■ TcpDump を入れておく
- tcpdump/libpcap
$ wget http://www.tcpdump.org/beta/tcpdump-3.9.1-096.tar.gz
$ tar xzvf tcpdump-3.9.1-096.tar.gz
$ cd tcpdump-3.9.1
$ ./configure
とやったが、libpcap が無いと怒られる。
確かに INSTALL にそう書いてある。。
取ってきてインストール。
$ wget http://www.tcpdump.org/beta/libpcap-0.9.1-096.tar.gz
$ tar xzvf libpcap-0.9.1-096.tar.gz
$ cd libpcap-0.9.1
$ ./configure
$ make
$ make install
で、もう一度 tcpdump の configure。
今度はうまくいく。
続けて、
$ make
$ make install
/usr/local/sbin にインストールされた。
■ ssldump をいれておく
tcpdump 同様、libpcap に依存する。
./configure --libdir=/usr/local/lib --includedir=/usr/local/include --with-pcap-include
この configure オプションでうまくいったが、--with-pcap-lib を入れておくと何故かうまく行かない・・・
しかし、この後の make でこける・・・・
何なんでしょうね・・・
[taka@seatle ssldump-0.9b3]$ make
gcc -g -O2 -DHAVE_LIBM=1 -DHAVE_SYS_TIME_H=1 -DSTDC_HEADERS=1 -DTIME_WITH_SYS_TIME=1 -DSIZEOF_UNSIGNED_SHORT=2 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=4 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DRETSIGTYPE=void -DHAVE_VPRINTF=1 -DHAVE_STRDUP=1 -c -o pcap-snoop.o ./base/pcap-snoop.c -DOPENSSL -D_BSD_SOURCE=1 -DLINUX -I./base/ -I./null/ -I./ssl/ -Icommon/include/ -I./null/ -I./ssl/ -I/usr/include -I/usr/local/include
base/pcap-snoop.c:52:21: net/bpf.h:
base/pcap-snoop.c: `main' :
base/pcap-snoop.c:207: : 2 `signal'
base/pcap-snoop.c:329: : 3 `pcap_loop'
make: *** [pcap-snoop.o] 1
■ インストール
http://cr.yp.to/qmail.html からダウンロードできるのだが、
本日試したところ、このサイトリンク先のほとんどが接続できない。
とりあえず Columbus, OH, にて qmail-1.03.tar.gz 取得できたので、
これを利用する。
qmail-date-localtime.patch パッチは、これまた
- qmailのインストール
などで紹介されているリンク先からは取得できず、
http://mirror.averse.net/pub/FreeBSD/ports/local-distfiles/sada/
からもってくる。
だが、これは 1.01 用であっため、今回パッチは当てずに使うこととする。
(送信日時に影響)
■ pop の設定
- checkpassword
から checkpassword-0.90.tar.gz を取ってくる。
解凍して、
$ make
# make setup check
でいける。
/bin/checkpassword にインストールされている。
確認
# /var/qmail/bin/qmail-popup server_FQDN /bin/checkpassword pwd
+oK <...@server_FQDN>
user tnisimur
+OK
pass password
/export/home/tnisimur
#
ユーザのホームディレクトリが見えれば OK。
■ 参考 URL
- qmaillのインストールとセットアップ on Solaris
- @IT::qmailのインストールと設定
- qmailのインストールと設定
- qmailの設定方法
- メールサーバの設定2
TL6.1 Server 用に書かれたもののようだが、仕組みを詳しく書いているので、理解しやすい。
- /etc/nodename
マシン名
- /etc/hostname.network_interface_name
ネットワークインターフェイス
- /etc/hosts
- /etc/defaultrouter
static なルーティングの場合はここに記述。
- /etc/netmasks
ネットマスクの記述
- /etc/resolv.conf
名前解決の設定。ドメイン名とネームサーバ名
- /etc/nsswitch.conf
各種データベースの検索順序
■ 参考 URL
- Solaris の Network 設定
各レコードについて
- SOA (Start Of Authority)
SOAはそのDNSサーバーが管理責任を持つゾーンの範囲を示しているほか、更新チェックの間隔や、情報寿命なんかも記述する
- NS (ネームサーバ)
name server の登録
- A (アドレス)
IP アドレスと FQDN の関係
- CNAME (正規名)
alias
- MX (Mail eXchanger)
ドメインとそのドメイン宛てに届くメールを処理するサーバとの対応
■ 参考 URL
- 手取り足取りDNS::DNSレコードあれこれ
ACE のビルド
ACE_wrappers/ACE-INSTALL.html#msvc
を参考に行う。
Create a file called config.h in the ACE_ROOT\ace directory that contains:
#include "ace/config-win32.h"
ということで、用意する。
で、ACE のみをビルドしてみる。
リンクしています...
ライブラリ .\..\lib/ACE.lib とオブジェクト .\..\lib/ACE.exp を作成中
ということで、無事ビルドされた模様。
■ URL
- ACE
本家
- Adding Service to Open Source Software
- ACEを使ったネットワークプログラミング
- C++で開発
- ACEインストール
- ACEプログラミング(その1)
- FIPS (Federal Information Processing Standard)
(連邦情報処理規格)
NIST(National Institute of Standards and Technology:国立標準技術研究所)という商務省が管轄する研究所があり、ここで他の技術同様、暗号技術を標準化するための調査や研究が行われている。NIST が標準技術として採用する暗号技術は、商務省の承認を得た上で、「FIPS」として公表される。
- CMVPについて:「FIPS 140-2」とは? より
- FIPS 140-1
1994 年に米国で発表された「暗号モジュールのセキュリティ要件」に関する規格。
「FIPS 140-1」は、政府と民間ワーキンググループによって開発されました。
その対象は、コンピューターや通信システムにおいて、機密情報を保護するセキュリティシステムの中で使用されるハードウエア、ソフトウエア、ファームウエアなどの暗号モジュールに特化しています。
- FIPS 140-2
2001 年に FIPS 140-1 の改訂版として発表。
暗号アルゴリズムはもちろんのこと、実装方法を含んだ暗号モジュールの全体的な安全性が規定されている。
■ 参考URL
- FIPS 140-2認定がもたらすユーザーへの恩恵
- Using OCSP in your applications
OCSP を使うために
- OpenSSL
- Mozilla
- Microsoft CryptoAPI
■ OCSP サポート環境
- iPlanet
- iPlanet Web Server は Online Certificate Status Protocol (OCSP) をサポートしていますか?
iPlanet Web Server 4.0 と 4.1 には、Valicert Validator プラグインが組み込まれています。このプラグインは、証明書取消しリストをチェックします。
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2009-01-02 23:56