- ベストアンサー
名前解決について
OSはWindows 2000Serverを使ってます。 この環境で名前解決を行う方法として幾つかあると思うんですが (DNS, WINS, hosts etc...) 順番みたいなものってあるのでしょうか? 一応Webで調査してみたのですが、いまいちこれ!!ってのが なくて、困ってます。また、WindowsNTと2000(Pro,Server)では 名前解決の順番は違うのでしょうか? それとも、OSの設定(lmhostsファイルを参照する等の設定) によって決まるものなのでしょうか? 回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
名前解決とはいっても、DNSとWINSでは解決する名前が違います。 どちらを使うかは、使うアプリケーション、サービス、プロトコルで決まっています。 DNSホスト名と、NetBIOS名のどちらでしょう? とりあえず、NetBIOS名だと仮定します。 順序は、以下のとおりです。 1.名前が15字以内かどうかを確認する(それ以上はDNS名として扱われなければなりません) 2.NetBIOSネームキャッシュを調べる 3.ブロードキャスト、もしくはWINSサーバに紹介します(ここの順序については後述) 4.LMHOSTSファイルを参照する(NT、2000、XPでは、参照しないよう設定できる) 5.Windows名前解決にDNSを使う設定の場合、hostsファイルを参照する 6.Windows名前解決にDNSを使う設定の場合、DNSサーバに問い合わせる 3の部分は、大きく4つのモードがあり、それによって異なります。 Hノード(Hybrid)0x8 WINSサーバに問い合わせ、失敗したら、ブロードキャスト Pノード(Peer-to-Peer)0x4 WINSサーバにのみ問い合わせ、ブロードキャストはしない Mノード(Mixed)0x2 ブロードキャストし、失敗したらWINSに問い合わせる Bノード(Broadcast)0x1 ブロードキャストのみ デフォルトはBノードです。 2000の場合、若干修正された、マイクロソフト拡張Bノードですが、順序は同じです。 WINSサーバのIPアドレスを指定してWINSクライアントになると、自動的にHノードになります。 レジストリでこれらの設定を書き換えられます。0xで始まる16進数はレジストリで指定する数値です。 現在のノードは、ipconfig /all で確認できます。 NetBIOSネームキャッシュは、nbtstat -c で確認できます。 キャッシュさせるエントリ数もレジストリで指定可能で、デフォルトは100です。 Windows名前解決にDNSを使う設定では思わぬネットワークトラフィックにつながる可能性があるので、 使わないように設定することをお勧めします。 DNSホスト名の解決順序は、 1.DNSネームキャッシュ 2.hostsファイル 3.DNSサーバに問い合わせ(サーバ側で見つかるまでルートから再帰的に問い合わされる) なお、非完全修飾ドメイン名の場合、順にDNSサフィックスを追加して解決を試みます。
その他の回答 (2)
- retr
- ベストアンサー率75% (30/40)
yostyさんが書かれているように、 DNSとWINSのどちらを使うかは、使うアプリケーション、サービス、プロトコルで決まっています。 WINSやLMHOSTSの話が出ていますが、これらは、NetBIOSで通信するのに特に必要というわけではありません。 yostyさんの回答にBノードがデフォルトとあるように、基本的には、ブロードキャストできさえすればいいのです。 これは、今では、NetBEUIと呼ばれ、区別されるようになった技術ですね。 (実際に使われていたのは、Windowsなどという名前になる前のMicrosoft製品の話です。) ただ、違うネットワークセグメントに属するマシンと通信するためには、ブロードキャストは届きませんので、TCP/IPを使うしかありません。 そこで、NetBIOSホスト名を、一度IPアドレスに変換して、これを使って通信するしくみが必要になります。 これが、NetBIOS over TCP/IP といわれ、Windows95の頃から通常はこちらを使っています。 LMHOSTSはこの対応を記述するために生まれ、さらに、変更があるたびに手動で書き換えなくてもいいように、WINSが開発されたのです。 もしLMHOSTSもWINSも使わず、ブロードキャストを利用したとしても、そのブロードキャストに対する応答で一度IPアドレスを取得して通信します。 NetBIOSというと、TCP/IPを使わないと勘違いしている方もいますが、ドメイン名を使わないろいうだけで、もともとはNetBIOS名からTCP/IPを利用するための技術なのです。 (厳密にはTCP/IPのかわりにIPX/SPXなども使えます。) さて、o_tooruさんの、Windwos2000では、TCP/IPのプロトコルを用いたDNSを名前解決の中心においたという話ですが、ここではあまり関係ない話です。 これは、単純に、Windows2000からは、ドメインの管理(アカウント等のシステム全般の管理)などOSの大部分で、、DNSを利用するようになったというだけです。 最初に書いたように、どちらを使うかは、アプリケーション、サービス、プロトコルで決まっています。 OSの機能の大部分がDNSを利用するようになったからといって、他のNetBIOSを使っていたアプリケーションが、突然DNSを使うようになったりしません。 NetBIOS名の名前解決の手順、しくみは、従来どおりです。 もちろん、今ではDNSを使うのが主流ですし、NetBIOSを使っていたアプリケーションも、DNSを使うように変更されていくでしょう。 そうなれば、最終的にWindowsがNetBIOSをサポートしなくなる可能性は高いです。
お礼
回答ありがとうございます。
- o_tooru
- ベストアンサー率37% (915/2412)
こんばんわ、疑問は尽きませんね。 さてご質問の件ですが、私もそこいらへんの所勉強中です。すでにご専門の方から、詳細なリプライがついています、ちょっと私の理解の及ばないところもあります。 私なりに知っているところをもうします。たぶん間違っているところが多いと思います。yostyさん指摘してください WindwosNTの名前の解決は、マイクロソフトが長年使ってきたNetBIOSを使ったWindows名前解決を中心においていたと聞いています。このNetBIOSの名前を解決するためにWINSサーバーを立てたり、LMHOSTSを用意したと聞いています。 一方Windwos2000では、従来のNetBIOSとの互換性を残しながらも、TCP/IPのプロトコルを用いたDNSを名前解決の中心においたと聞いています。こちらですと、広くインターネットで使われている、UNIX系のBINDなどの様にDSN・ドメインを利用し名前の解決をすることができます。小規模なLANなどですとHOSTSなどで名前解決をすることも可能だと思います。 ここいらへんのことは、下記のサイトをあちこち読んでいると勉強になります。(ひょっとすると無料の会員登録が必要かもしれません)
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。