1: 2011-07-15 (金) 09:03:29 yuji ソース 現: 2020-12-26 (土) 16:07:33 yuji ソース
Attached file: 名前解決.png
Line 31: Line 31:
コンピュータ名とホスト名を表すNetBIOS名であるが,当初IBMが規格を定めた時点では16バイト以内という規定のみであった。~ コンピュータ名とホスト名を表すNetBIOS名であるが,当初IBMが規格を定めた時点では16バイト以内という規定のみであった。~
-しかしMicrosoftは,最終の16バイト目を機能を表すような識別子に利用する事にし,「名前」を15バイト以内に変更した。この時,名前が15バイトに満たない場合は,15バイト目までスペース(0x20)で埋められる。なお通常は,MODULEDESIGN<00>のようにして名前と識別子を表示することが多い。+しかしMicrosoftは,最終の16バイト目を機能を表すような識別子に利用する事にし,「名前」を15バイト以内に変更した。この時,名前が15バイトに満たない場合は,15バイト目までスペース(0x20)で埋められる。なお通常は,XXXXXYYYYY<00>のようにして名前と識別子を表示することが多い。
-MODULEDESIGN<00>+XXXXXYYYYY<00>
- ,M,O,D,U,L,E,D,E,S,I,G,N, , , ,0x00, <-- 16バイト目が0x00+ ,X,X,X,X,X,Y,Y,Y,Y,Y, , , , , ,0x00, <-- 16バイト目が0x00
NetBIOS名の16バイト目識別子の主な種類 NetBIOS名の16バイト目識別子の主な種類
Line 41: Line 41:
|>|種別|内容|h |>|種別|内容|h
|00|ユニーク|ワークステーションサービス名| |00|ユニーク|ワークステーションサービス名|
 +|03|ユニーク|メッセンジャーサービス名|
 +|06|ユニーク|RASサーバサービス名|
|1B|ユニーク|ドメインマスタブラウザ名| |1B|ユニーク|ドメインマスタブラウザ名|
|1D|ユニーク|マスタブラウザ名| |1D|ユニーク|マスタブラウザ名|
-|20|ユニーク|サーバサービス名|+|20|ユニーク|ファイルサーバサービス名| 
 +|21|ユニーク|RASクライアントサービス名| 
 +|22|ユニーク|Microsoft Exchange Interchange (MSMailコネクタ)| 
 +|23|ユニーク|Microsoft Exchangeストア| 
 +|24|ユニーク|Microsoft Exchange Directory| 
 +|30|ユニーク|モデム共有サーバサービス名| 
 +|31|ユニーク|モデム共有クライアントサービス名| 
 +|42|ユニーク|MccAffeeのウイルス対策プログラム| 
 +|43|ユニーク|SMSクライアントのリモートコントロール| 
 +|44|ユニーク|SMS管理者のリモートコントロールツール| 
 +|45|ユニーク|SMSクライアントリモートチャット| 
 +|46|ユニーク|SMSクライアントリモート間転送| 
 +|4C|ユニーク|Windows NT上のDEC Pathworks TCP/IPサービス| 
 +|52|ユニーク|Windows NT上のDEC Pathworks TCP/IPサービス| 
 +|6A|ユニーク|Microsoft Exchange IMC| 
 +|87|ユニーク|Microsoft Exchange MTA| 
 +|BE|ユニーク|ネットワークモニタエージェント| 
 +|BF|ユニーク|ネットワークモニタアプリケーション|
|00|グループ|ドメイン/ワークグループ名| |00|グループ|ドメイン/ワークグループ名|
 +|01|グループ|マスタブラウザ|
|1C|グループ|ドメインコントローラ| |1C|グループ|ドメインコントローラ|
|1E|グループ|セグメント内のポテンシャルブラウザ| |1E|グループ|セグメント内のポテンシャルブラウザ|
Line 54: Line 74:
NBTの場合,NetBIOS名の登録や解放といった動作は,UDP/137 を用いたローカルサブネットへのブロードキャストで行う。NetBEUIとやっていることは同じ事である。 NBTの場合,NetBIOS名の登録や解放といった動作は,UDP/137 を用いたローカルサブネットへのブロードキャストで行う。NetBEUIとやっていることは同じ事である。
-同一物理ネットワーク内に通信相手がいる場合の名前解決はNetBEUIとほとんど同様で,ローカルサブネットへのIPブロードキャストパケットで,例えばMODULEDESIGN<20>という名前の問い合わせが行われ,それに対して名前を登録しているMODULEDESIGNがユニキャストで聞いた相手に対して,Successというステータスで応答する。~+同一物理ネットワーク内に通信相手がいる場合の名前解決はNetBEUIとほとんど同様で,ローカルサブネットへのIPブロードキャストパケットで,例えばXXXXXYYYYY<20>という名前の問い合わせが行われ,それに対して名前を登録しているXXXXXYYYYYがユニキャストで聞いた相手に対して,Successというステータスで応答する。~
あるマシンが,NBTレベルで登録した名前は あるマシンが,NBTレベルで登録した名前は
Line 67: Line 87:
 > nbtstat -c  > nbtstat -c
で確認できる。なおキャッシュの有効時間は600秒。 で確認できる。なおキャッシュの有効時間は600秒。
 +
 +なんらかの問題があってNetBIOS名キャッシュをクリヤーしたい場合は,
 + > nbtstat -R
 +でキャッシュを削除出来る。
**Common Internet File System [#f39226e9] **Common Internet File System [#f39226e9]
Line 91: Line 115:
LMHOSTSを見に行くタイミングだが,最初にローカルサブネットにブロードキャストを行った後に名前解決できなかった場合に参照される。おそらく,当時はサブネット越えの通信を行うのはあまりない状況だったと思わる。 LMHOSTSを見に行くタイミングだが,最初にローカルサブネットにブロードキャストを行った後に名前解決できなかった場合に参照される。おそらく,当時はサブネット越えの通信を行うのはあまりない状況だったと思わる。
 + 
LMHOSTSでサブネットを超えた名前解決をする場合,各マシンごとにLMHOSTSを用意しなければならないため,小規模ネットワークでの対応になる。ただWINS拡張を使っていて何らかの理由により名前解決に時間がかかるようなときに,LMHOSTSを使うとすこし速くアクセスできるようにすることが出来ます。 LMHOSTSでサブネットを超えた名前解決をする場合,各マシンごとにLMHOSTSを用意しなければならないため,小規模ネットワークでの対応になる。ただWINS拡張を使っていて何らかの理由により名前解決に時間がかかるようなときに,LMHOSTSを使うとすこし速くアクセスできるようにすることが出来ます。
Line 121: Line 145:
|ノードタイプ|意味|内容|h |ノードタイプ|意味|内容|h
-|B|Broadcastノード|ブロードキャストのみを用いて名前を解決+|B|Broadcastノード|ブロードキャストのみを用いて名前を解決。普通ルーターはブロードキャストをフォワードしないので,ローカルネットワーク上のNetBIOS名だけしか変換できない。
-|P|Point-to-Pointノード|NetBIOSネームサーバ(WINS)のみを用いて名前を解決|+|P|Point-to-Pointノード|NetBIOSネームサーバ(WINS)のみを用いて名前を解決。Pノードはブロードキャストを使わない。&br;ネームサーバーが止まってしまったときは,ローカルのネットワークであっても通信できなくなってしまう。|
|M|Mixed modeノード|Bノード -> Pノードの順に名前を解決| |M|Mixed modeノード|Bノード -> Pノードの順に名前を解決|
|H|Hybrid modeノード|Pノード -> Bノードの順に名前を解決| |H|Hybrid modeノード|Pノード -> Bノードの順に名前を解決|
LAN Manager時代に,Bノード失敗後にLMHOSTSファイルを参照する実装を「拡張Bノード」と称していたんだけど,現在は,上記4つすべてのノードにおいて名前解決に失敗した場合,LMHOSTSを参照するように変更されている。 LAN Manager時代に,Bノード失敗後にLMHOSTSファイルを参照する実装を「拡張Bノード」と称していたんだけど,現在は,上記4つすべてのノードにおいて名前解決に失敗した場合,LMHOSTSを参照するように変更されている。
 +
 +どのノードでも,最初にNetBIOS名キャッシュ,最後にLMHOSTファイルを参照する。Windowsのネットワークでは,BノードとHノードがよく使用される。~
 +デフォルトでは,WINSを使用するように設定されているコンピュータでは,''Hノード''が,それ以外では''Bノード''が採用される。
 +
 +自分のPCのノードタイプを調べるには,コマンドプロンプトからipconfig /allを使用する。
 + D:\home\ueno>ipconfig /all
 + 
 + Windows IP Configuration
 + 
 +         Host Name . . . . . . . . . . . . : y7
 +         Primary Dns Suffix  . . . . . . . : yueno.homeip.net
 +         Node Type . . . . . . . . . . . . : Hybrid
 +         IP Routing Enabled. . . . . . . . : No
 +         WINS Proxy Enabled. . . . . . . . : No
 +         DNS Suffix Search List. . . . . . : yueno.homeip.net
 +                                             yueno.homeip.net
 +     :
 +     :
 +この例では,Node TypeがHybridになっているので,最初はPノード(WINS)で名前解決しようとし,解決できなかった場合はブロードキャストを使用することになる。
 +
 +DHCPを使用している場合には,どのノードタイプを使用するかをDHCPサーバー側から指定することができる。DHCPを使用していない場合でも,レジストリを変更することによりノードタイプを自由に設定することが可能である。
 + HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters
 + NodeType
 + 値の種類 : REG_DWORD - 数値
 + 有効な範囲 : 1,2,4,8(Bノード,Pノード,Mノード,Hノード)
 +
 +**LLMR [#v6011313]
 +これまでは,NetBIOSでの名前解決を説明してきたが,インターネットワーキング技術を用いたWinsock(Windows Socket)と関係があるので,その部分について確認してみる。
 +
 +どうもMSでは,DNSやWINSでの名前解決方法として,LLMR(Link-local Multicast Name Resolution)をWindows Vista以降に搭載しているようだ。 LLMRは,IPv6とIPv4ホストの両方が,DNSサーバーまたはDNS クライアントの構成を必要とせずに,近隣のコンピュータの名前解決をすることが出来るシステム。 Vistaでは,LLMNRメッセージはDNSメッセージとは異なるポートのUDPポート5355を使っているようだ。Note
 +
 +IPv6の場合は,クエリを行っているホスト (リクエスタ) はLLMNR名前クエリ要求メッセージをFF02::1:3のリンクローカルスコープIPv6マルチキャストアドレスに送信する。 IPv4の場合は,クエリを行っているホストは,LLMNR名前クエリ要求メッセージを224.0.0.252のIPv4マルチキャストアドレスに送信する。 両方とも,マルチキャストアドレスがスコープされていて,マルチキャスト対応のルータがクエリメッセージを最初に送信されたサブネットを越えて転送することを防ぐようにできている。
 +
 +IPv6ベースのLLMNRホストは,IPv6マルチキャストアドレスFF02::1:3をリッスンしていて,そのネットワークアダプタが宛先マルチキャストアドレス33-33-00-01-00-03を持つイーサネットフレームを,リッスンするよう指示している。 IPv4ベースのLLMNRホストは,IPv4マルチキャスト アドレス224.0.0.252をリッスンしていて,そのイーサネットネットワークアダプタに宛先マルチキャストアドレス01-00-5E-00-00-FCを持つイーサネット フレームを,リッスンするよう指示している。
 +
 +注意すべきは,
 +
 + Windows Vistaでは,xxxxx.localの名前を問い合わせしようとする場合,xxxxx.localという名前をxxxxxに変換し,LLMNRを使用して単一ラベルの名前を解決しようとすること。~
 +.localの取り扱いは,あきらかに特別扱いしている。~
 +つまり,「ping yyyyyyyyyy.xxxxx.local」を実行すると,LLMNRを使い「yyyyyyyyyy.xxxxx」を問い合わせするということ。しかしここでNetBIOS名は15バイト以内という制限があるので,結果名前の問い合わせをしなくなってしまう。&oh;
 +利便性を提供する目的でこんな仕様にしたんだろうが,副作用が出てしまっていますね。
 +
 +***DNS・LLMNR・NBTの挙動 [#def3cb9d]
 +名前の指定方法と,試みる名前解決方法の順番を確認。
 +|コマンド\DNSサフィックス|なし|local|dom.local|
 +|ping host1|LLMNR>NBT|DNS>LLMNR>NBT|DNS>LLMNR>NBT|
 +|ping hsot1.local|DNS>LLMNR>NBT|DNS>LLMNR>NBT|DNS>LLMNR>NBT|
 +|ping host1.dummy|DNS>NBT|DNS>NBT|DNS>NBT|
 +|ping host1.dom.local|DNS>NBT|DNS>NBT|DNS>NBT|
*ブラウジング機能 [#rf7dbe1d] *ブラウジング機能 [#rf7dbe1d]
Line 136: Line 209:
使ってみると機能的にはネットワーク上にいるマシンをリストアップして表示するだけのことだが,実際には非常に複雑な手順を使って実現しており,しばしば動作がおかしくなることも珍しくはない。 使ってみると機能的にはネットワーク上にいるマシンをリストアップして表示するだけのことだが,実際には非常に複雑な手順を使って実現しており,しばしば動作がおかしくなることも珍しくはない。
 + 
**ブラウジングとマスターブラウザ [#p6794b8e] **ブラウジングとマスターブラウザ [#p6794b8e]
物理セグメントが1つしかない場合のブラウジング機能を考えてみる。まず最初にネットワークで接続されたマシンが電源ONされると, 物理セグメントが1つしかない場合のブラウジング機能を考えてみる。まず最初にネットワークで接続されたマシンが電源ONされると,
Line 185: Line 258:
**ブラウジング出来るようにするには [#w82c9b73] **ブラウジング出来るようにするには [#w82c9b73]
-ブラウジングされるようにするには,接続するWindowsマシンにLMBになってもらう必要がある。WindowsNT系なら「ComputerBrowserサービス」を,Windows9x/Meなら「Microsoft ネットワーク共有サービス」をインストールして,また参加するワークグループをこのサーバーと同じ「NALUX」にします。+ブラウジングされるようにするには,接続するWindowsマシンにLMBになってもらう必要がある。WindowsNT系なら「ComputerBrowserサービス」を,Windows9x/Meなら「Microsoft ネットワーク共有サービス」をインストールして,また参加するワークグループをこのサーバーと同じ「XXXXX」にします。
-~こうすると接続されたWindowsマシンがLMBになります。これでそのセグメントに接続されたマシンがブラウジングされるようになります。接続するマシンは,ワークグループ名をサーバー設定と同じ「NALUX」にして下さい。~+~こうすると接続されたWindowsマシンがLMBになります。これでそのセグメントに接続されたマシンがブラウジングされるようになります。接続するマシンは,ワークグループ名をサーバー設定と同じ「XXXXX」にして下さい。~
~ただし,この場合でもセグメントを超えたブラウジングは出来ません。セグメントを超えたブラウジングを可能にするためには,各セグメントにDMBがいなければなりません。Windowsネットワークをワークグループ構成の場合はDMBが存在しないので,結果セグメントを越えるブラウジングは出来ないことになります。 ~ただし,この場合でもセグメントを超えたブラウジングは出来ません。セグメントを超えたブラウジングを可能にするためには,各セグメントにDMBがいなければなりません。Windowsネットワークをワークグループ構成の場合はDMBが存在しないので,結果セグメントを越えるブラウジングは出来ないことになります。


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1531, today: 1, yesterday: 0