68user's page 掲示板

Prev< No. 3159〜3164> Next  [最新発言に戻る] [過去ログ一覧]
No. 3159 # 68user 2003/03/26 (水) 19:59:17
たまに referer 見てみると、知らないところで突っ込まれて
たりするのでおもしろい。

http://dns.qmail.jp/lies.html
> コンテンツサーバとキャッシュサーバの違いを理解していな可能性が高いから。

うっ。勉強しよう。

No. 3160 # saki 2003/03/26 (水) 20:16:43
お世話になります。

gcc(全般)でコンパイルした実行ファイルには
チェックサムは付加されているのでしょうか?

No. 3161 # 68user 2003/03/26 (水) 20:34:52
>>3160 saki
> チェックサム
の意味がわかりません。

ファイル転送などで化けてしまったバイナリを実行しようと
すると、「チェックサムが一致しません」とか言ってくれる、
ような感じですか? もしそうなら、そういう機能は聞いたこと
ありません。

もしかして、そういうのが可能なコンパイラがあるのでしょうか。

No. 3162 # saki 2003/03/26 (水) 21:16:03
>>3161 68user
68userさん ご返答ありがとうございます。

そのチェックサムです。
ファイルをバイナリで開いて、そのファイルの全バイナリ値の合計のこと
だそうです。(すいません私もあまり詳しくないのです。)

あるファイルをコピー(ダウンロード)する時に、
コピー前のファイルとコピー後のファイルのチェックサムを
比較して、あっていればコピーが正常、あっていなければ異常と
するプログラムを作りたいと思っていまして、

> gcc(全般)でコンパイルした実行ファイルには
> チェックサムは付加されているのでしょうか?
とお聞きしたのは、ファイルそのものにチェックサムが付加されていれば
ファイルをオープンしてチェックサムの値を比べるだけで済むのかなぁと
思いまして・・・。

そういう機能がないのであれば、チェックサム自体をプログラムで
作ろうと思い、
ネットで調べたのですが簡単すぎるからなのか情報があまりありません。

参考になるサイトや本などあれば、勉強したいのですが、
ご存知のかたはいますでしょうか?

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()の利用頻度が低いようだったのでやめました。

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

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