リゾルバはどこにある?
福光と申します。『ネットワークはなぜつながるのか』、2年前に購入し、折に触れ読み返しています。
質問なのですが、
「OSの種類によっては、Socketライブラリの中にリゾルバを埋め込むのではなく、OSの中核部分にリゾルバを埋め込み、Socketライブラリの中からリゾルバを呼び出すものもあります。(Windows2000/XPがその例)」
(『ネットワークはなぜつながるのか』p.24 より。)
とありますが、Windows2000やXPのどの辺りにあるのでしょうか?
(Socket=Winsock.dll というような理解の仕方をしています)。
また、ほかのバージョンのWindows(95/98/Me)ではSocketライブラリの中に埋め込まれているのでしょうか?
実際にプログラムを書くときは
「gethostbyname関数の引数に渡してしまえば、結果としてIPアドレスがわかる」という理解でプログラムは書けてしまいますが...
ご教授いただければ幸いです。
日時:
04/10/09 20:42
コメント
アプリケーションから見ればどちらも同じ
福光さん,はじめまして。
>とありますが、Windows2000やXPのどの辺りにあるのでしょうか?
>(Socket=Winsock.dll というような理解の仕方をしています)。
DLLの名前までは調べていません。ゴメンナサイ。
WindowsはDNS問い合わせのキャッシュを持っており,
ipconfig /flushdns
でキャッシュをクリアできますから,
リゾルバの実体はライブラリとしてアプリケーションに組み込まれるのではなく,
OSの方に組み込まれている,と考えた方がよいということなんです。
>また、ほかのバージョンのWindows(95/98/Me)ではSocketライブラリの中に埋め込まれているのでしょうか?
これも調べていません。ゴメンナサイ。
>実際にプログラムを書くときは
>「gethostbyname関数の引数に渡してしまえば、結果としてIPアドレスがわかる」という理解でプログラムは書けてしまいますが...
gethostbyname関数の中にリゾルバの実体があり,それを実行するか,
gethostbyname関数からリゾルバの実体を呼び出すか,
という違いですから,アプリケーションから見ても違いはわからないので,
どちらも同じようにプログラミングできます。
ということで,この理解でよいと思います。
Re アプリケーションから見ればどちらも同じ
戸根先生へ
回答ありがとうございました。
>gethostbyname関数の中にリゾルバの実体があり,それを実行するか,
>gethostbyname関数からリゾルバの実体を呼び出すか,
>という違いですから,アプリケーションから見ても違いはわからないので,
>どちらも同じようにプログラミングできます。
>ということで,この理解でよいと思います。
「細かいことを理解していなくてもプログラムは書けてしまう」仕組みを用意してくださった先人の知恵に感謝です。