リゾルバはどこにある?

福光と申します。『ネットワークはなぜつながるのか』、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関数からリゾルバの実体を呼び出すか,
という違いですから,アプリケーションから見ても違いはわからないので,
どちらも同じようにプログラミングできます。
ということで,この理解でよいと思います。

戸根先生へ

回答ありがとうございました。

>gethostbyname関数の中にリゾルバの実体があり,それを実行するか,
>gethostbyname関数からリゾルバの実体を呼び出すか,
>という違いですから,アプリケーションから見ても違いはわからないので,
>どちらも同じようにプログラミングできます。
>ということで,この理解でよいと思います。

「細かいことを理解していなくてもプログラムは書けてしまう」仕組みを用意してくださった先人の知恵に感謝です。