DNS、ネームサーバとは

DNS、ネームサーバとは

DNS、ネームサーバとは

DNSとは、ドメイン名とIPアドレスの紐付けを行うシステムです。

 

 

 

※DNSサーバ(BIND9)の設定方法とレジストリへのネームサーバ変更依頼等
については以下のページに記載しました。

 

色々なホームページへアクセスする時に、IPアドレスのように数字の羅列では
覚えにくいですね。そういう流れから、ドメイン名でアクセス出来るようになりました。
なのでドメイン名が仮名で、本名がIPアドレスという感じです。

 

ドメイン名の一番最後の箇所である.comや.netなどは「トップレベルドメイン」と
言います。また、トップレベルドメインの中には種類が有り、馴染みのあるものは
以下あたりかと思います。詳細は以下のページに記載しました。
トップレベルドメインの種類について

・gTLD(ジェネリックトップレベルドメイン)

.com、.net、.org、.infoなど

 

・ccTLD(国別のコード)

.jp(日本)、.us(アメリカ)など

 

※.tv(ツバル)、.cc、.toなどはその国以外でも、どこからでも登録できます。
.tvはテレビを想起させ、.cc、.toはメールを想起させるため民間から見て
利用価値が有ると判断されました。そのため例えばツバルは.tvの使用権を
売却し、その利益で国際連合へ加盟しました。

 

・sTLD(スポンサーつきトップレベルドメイン)

.asia(アジア太平洋地域の企業)、.mobi(モバイル関連) など

 

これらトップレベルドメインの名前解決を行うDNSサーバ(トップレベルドメイン
のDNSサーバ、TLDサーバ
)へはレジストリ(トップレベルドメインの運用など
を行う業者、.jpであればJPRS、.comであればベリサイン)経由で登録します。
ドメインの登録自体はレジストラ(ドメインの登録代行業者)も行えます。

 

またTLDサーバの情報を案内するのは、ルートサーバというDNSサーバです。
世界にある13のサーバがルートサーバとしてDNSに登録されています。

 

DNSの動作

 

パソコンのDNSクライアント機能からDNSサーバへ再帰的な問い合わせ

パソコンからWEBブラウザでb.a.comへアクセスする。
=パソコンのDNSクライアント機能からDNSサーバへ、「途中の.comのIPアドレス
とかの情報は要らないから、最終的なb.a.comのIPアドレスのみ教えて欲しい」
という要求が行きます。

 

※これを再帰的(recursive)な検索要求と言います。

 

担当のDNSサーバによる反復の問い合わせ、まずはルートサーバへ

それを聞いた担当のDNSサーバは最終的にb.a.comのIPアドレスが分かるまで
色々なサーバに聞きに行きます。涙ぐましいですね。それとも仕事と割りきって
いるのでしょうか。一回一回各サーバに問い合わせに行くことを反復の(iterative)、
非再帰のno-recursive)の問い合わせと言います。

 

まずはルートサーバに「.com」の情報を聞き、結果「.com」DNSサーバ
のIPアドレスを教えてもらいます。ルートサーバのIPアドレスについては、DNSサーバ
をインストールした瞬間にテキストとして保有しています。

 

※担当のDNSサーバが既にb.a.comのIPアドレスを知っていた場合は
すぐにそれをパソコンへ回答します。

 

 

担当のDNSサーバが「.com」DNSサーバへ聞きに行く

 

担当のDNSサーバが「.com」DNSサーバに「a.com」の情報を聞き、
結果「a.com」DNSサーバのIPアドレスを教えてもらいます。

 

 

担当のDNSサーバが「a.com」DNSサーバへ聞きに行く

担当のDNSサーバが「a.com」DNSサーバに「b.a.com」の情報を聞き、
結果「b.a.com」DNSサーバのIPアドレスを教えてもらいます。

 

※上記は「a.com」DNSサーバが、「b.a.com」についてNSというDNS
レコードを使用して「b.a.com」の情報を知っているDNSサーバのIP
アドレスを教えたということです。

 

「a.com」DNSサーバの設定次第ですがその他の回答になる場合も有ります。

 

例1 「b.a.com」について、AというDNSレコードを使用して「b.a.com」の
IPアドレスを直接教えた。上記のように「b.a.com」DNSサーバのIPアドレス
を教えた訳ではなく直接「b.a.com」のIPアドレスを教えたというパターンです。

 

例2 「b.a.com」について、CNAMEというDNSレコードを使用して「b.a.com」の
別名は「c.b.a.net」と答えた。この場合、担当のDNSサーバは「.net」DNSサーバの
IPアドレスをルートサーバへ聞きに行きます。

 

 

担当のDNSサーバが「b.a.com」DNSサーバへ聞きに行く

担当のDNSサーバが「b.a.com」DNSサーバに「b.a.com」の情報を聞き、
やっと「b.a.com」のIPアドレスが分かりました。
上記の例1のように、AというDNSレコードを使用して「b.a.com」のIPアドレスを
直接教えた。というパターンですね。

 

 

担当のDNSサーバがパソコンへ回答する

で、最終的に担当のDNSサーバがパソコンのへ「b.a.com」のIPアドレスを回答します。
(=再帰的(recursive)な検索の結果を回答する。)

 

 

 

パソコンからDNSサーバへ問い合わせた時のデータ

 

以下の1行目がパソコンのWEBブラウザからグーグルへアクセスした瞬間に
発生したデータです。DNSサーバにグーグルのIPアドレスを聞きに行っています。
2行目がDNSサーバからパソコンへ、グーグルのIPアドレスを教えているところです。

 

 

 

試しに、IPアドレスでアクセスしてもアクセス出来ました。

 

 

1つのIPアドレスに複数のドメイン名を設定している場合

共用タイプのレンタルサーバで作成したホームページにアクセスする場合、
1つのIPアドレスに複数のユーザーのドメインが設定されているために
URL欄にIPアドレスを入力しても、アクセス出来ない場合が多いです。
1つのサーバに多数の独自ドメインやサブドメインを設定している場合も同じですね。

 

このようなサーバでは、WEBブラウザでアクセスした際に発生する通信内容
(HTTPリクエストのホストヘッダに記載されているドメイン名)をapacheなどの
WEBサービスが読んで理解して振分処理をしています。
この機能のことを(nameベースの)バーチャルホストと呼んでいます。

 

簡単に言うと以下の流れです。

 

1.パソコンはDNSサーバに教えてもらった「b.a.comのIPアドレスは1.1.1.1」という情報
をもとに1.1.1.1のWEBサーバへアクセス。

 

2.WEBサーバはパソコンからの通信の中身の「b.a.comを見たい」という情報を読んで
理解して「b.a.com」を置いているフォルダ内容またはそこのindexファイルを表示する。

 

 

以上で、「DNS、ネームサーバとは」の説明終了です。
DNSをより理解するには以下のサイトが分かりやすいです。
JPNIC DNSキャッシュ DNSのおさらい