68user's page 掲示板

Prev< No. 3163〜3168> Next  [最新発言に戻る] [過去ログ一覧]
No. 3163 # 68user 2003/03/27 (木) 02:40:54
>>3162 saki
チェックしたいのがバイナリだけでいいのか、データファイルも
含むファイル一般なのかわかりませんが、前者であれば gzexe
      http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=gzexe&dir=jpman-5.0.0%2Fman
を使うのが簡単でしょう。gzexe は実行ファイルを圧縮しておく
ためのコマンドですが、実行時に gzip で展開するので、結果的に
gzip の誤り検出機能をそのまま利用できます。gzexe も 圧縮した
実行ファイルも、いずれも sh スクリプトですので、改造も簡単
でしょう。

後者であれば、単に gzip を使う手もありますし、あるいは
cksum や md5 などのコマンドを利用するのもいいでしょう。
    http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman
    http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=md5&dir=jpman-5.0.0%2Fman
    http://www3.cds.ne.jp/~marimo/data/rfc/rfc1321-jp.txt

なお、誤り検出のアルゴリズムとしては、
> ファイルをバイナリで開いて、そのファイルの全バイナリ値の
> 合計のことだそうです。
は単純すぎます。言っちゃ悪いですが、この程度の認識しか持っていない
のであれば、cksum や md5 などのコマンドを利用した方がよいです。

No. 3164 # has 2003/03/27 (木) 03:19:01
>>3153 68user
なんかわざわざ書いてもらったようで恐縮です。
なんでもそうですが、自分が必要と思う部分を理解するには
その周りの事情全てを勉強しておけ、というのが世間の常識なので、
俺みたくよこしまな考えでDNS関連の本やらWEBやらRFCやらを
眺めている輩にはなかなかハードルが高かったのですが、
おかげでDNS関連の資料に目を通すのにも少し抵抗が和らぎました。

ところで例の話の続きなんですが、うちのlinux(kernel-2.4.18+
glibc-2.2.4)では、bind-8.3.4-RELのdig8.3で名前解決できません。
straceしてみると、どうもpoll()で受信を検出できていないようです。
glibcの名前解決も同様のコーディングだったので、poll()を試しに
select(),pselect()に変えてみましたがダメでした。
一方でbind9.1.3付属のdigでは名前解決ができました。
というわけで、そのコードをglibcに移植してしまえ、と思ったのですが、
iscライブラリというのが理解できず、結局移植はできていません。
一時はgethostbyname()内部を、正常に動作するdig9.1.3をsystem()で
呼び出し、その結果を拾ってくるように書き換えようと思いましたが、
どうやらgethostbyname()の利用頻度が低いようだったのでやめました。

今後についてはどうするか未定ですが、また調査しつつ改修しつつで
行きたいと思います。

No. 3165 # へにか [URL] 2003/03/27 (木) 08:10:23
かなりお久しぶりです。

>>3163 68user
実は私も、チェックサム=合計と思っていました。cksumのように
CRC演算するものもチェックサムと呼ばれるようになった経緯を何
かご存知でしたら、教えていただけませんか?

#少なくとも、CRC演算は合計(=サム)ではないです・・・

No. 3166 # 68user 2003/03/27 (木) 08:26:35
>>3165 へにか
> 実は私も、チェックサム=合計と思っていました。
広義のチェックサムと狭義のチェックサムがあって、狭義の
チェックサムは
      http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman#sect2
で言うところのアルゴリズム 1 なのだろうとわたしは思って
います。このマニュアルではアルゴリズム 2・3 も「チェックサム」
と呼んでますね (それが一般的なのかどうかはわかりませんが)。

>>3163 68user
を書いたときは、わたしの中では「チェックサム=広義のチェックサム」
だったので、あのような書き方をしましたが、
> ファイルをバイナリで開いて、そのファイルの全バイナリ値の
> 合計のことだそうです。
は正しいですね。失礼しました。

No. 3167 # 68user 2003/03/27 (木) 08:30:37
>>3166 68user
> チェックサムは
> http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman#sect2
> で言うところのアルゴリズム 1 なのだろう
あ、加算のたびに右ローテートって書いてあるので、アルゴリズム 1 も
「狭義のチェックサム」とは異なるんですね。

No. 3168 # saki 2003/03/27 (木) 11:54:48
68userさん、へにかさん
ご返答ありがとうございます。

大変、勉強になりました。
チェックサムといっても、いろいろなやり方があるのですね。

>cksum や md5 などのコマンドを利用した方がよいです。
組込のLinuxだったので上記のようなコマンドがなく、
自作しました。
全バイナリ値を合計して、16bit桁あふれしたら、
あふれた分を削除するという簡単なものです。
こんなのでもいいのかなと不安になりますが、
貴重な情報をありがとうございました。

Prev< No. 3163〜3168> Next  [最新発言に戻る] [過去ログ一覧]