ドメインネームとDNS

■ドメインネーム

ドメインネームとはIPアドレスを人間にわかりやすいように
置き換えた文字列のことです。
ドメインネームはアルファベットと数字による
組み合わせで表現されています。

	例:
		182.22.59.229 => yahoo.co.jp

		216.58.197.163 => google.co.jp

インターネットにおいて、コンピュータはIPアドレスで通信相手を特定し、
人間はドメインネームで通信相手を特定しています。

※IPアドレスをブラウザのURLの欄に直接入力すると
 そのIPアドレスにアクセス可能です。
 182.22.59.229 を入力するとYahooのトップページに繋がります。

■DNS(Domain Name System)

DNS(Domain Name System)とはIPアドレスとドメインネームを
相互に変換するシステムのことです。
DNSではIPアドレスとドメインネームの対応表を持っており、
それを利用して変換をおこなっています。
この対応表をもった(DNSが搭載された)コンピュータは
世界中に多数存在し、お互いが連携を取り合って、
情報を管理しています。
このDNSを搭載したコンピュータのことをDNSサーバー呼んでいます。
	
	network_0041

■ドメイン

ドメインとは国や組織を識別するための領域のことです。
一番広い領域は国になり、一番狭い領域は個人になります。
この領域を広い領域から狭い領域へ絞り込むことで
人間が対象をわかりやすくしています。

	network_0042

■名前解決とスタブリゾルバ

ユーザーがドメインネームによるインターネットアクセスを行ったら
以下の図のような流れでwebサーバーへたどり着きます。

	network_0043

上記の手順で「名前解決」と「スタブリゾルバ」という用語が出ていますので、
そちらの説明を行いたいと思います。

●スタブリゾルバ
	スタブリゾルバはPCからDNSサーバーへに問い合わせを行って
	IPアドレスを取得するための検索要求プログラムのことです。
	問い合わせが行われたDNSサーバーは名前解決を行い
	PC側へ結果を送信します。
	
●名前解決
	ドメインネームは対応するIPアドレスがあって初めて意味を持ちます。
	そのドメインネームとIPアドレスを対応させる作業を
	名前解決といいます。

■ドメイン名前空間

DNSサーバーは1台で全ての対応表を持っているわけではなく、
複数のサーバーから構成されており、その構造はツリー構造になっています。
DNSサーバーはツリーの枝分かれの結節点に存在し、
それぞれ枝(ノード)の情報をもっています。
このツリー構造全体をドメイン名前空間といいます。

	ノード:
		ネットワークの結節点のことで、
		ドメイン名前空間ではDNSサーバーのことを指す

以下はドメイン名前空間のイメージ図になります。

	network_0044

●TLD(トップレベルドメイン)
	ドメインはドメイン名の後ろからレベルが設定されています。
	「jp」や「com」などの一番後ろに設定されているドメインを
	TLD(トップレベルドメイン)と呼びます。
	TLDは国を識別するccTLD(Country Code Top Level Domain)と
	国に関係なく使用できるドメインの
	gTLD(Generic Top Level Domain)があります。

		ccTLD:
			jp(日本)、kr(韓国)、uk(英国)

		gTLD:
			com(商業組織)、org(非営利組織)

●SLD(セカンドレベルドメイン)
	TLDの一つ前のドメインをSLD(セカンドレベルドメイン)と呼びます。
	セカンドレベルドメインの一部に意味のあるドメインが存在します。

		意味のあるSLD:
			co(商業組織)、go(政府機関)

●その他のドメインレベル
	SLDの前にドメインが増えていけば3LD(サードレベルドメイン)、
	4LD(フォースレベルドメイン)と呼ばれていますが、
	TLDやSLDのようなドメイン全体で意味があるものはありません。

●ホスト名
	ホスト名はドメイン名の前についている文字列のことで、
	URLの一番先頭にあるのがホスト名になります。
		
		例:
			www.yahoo.co.jp => wwwの部分がホスト名
			sports.yahoo.co.jp => sportsの部分がホスト名

●FQDN(Fully Qualified Domain Name)
	FQDN(Fully Qualified Domain Name)は完全なドメイン名を表しており
	完全なドメイン名とは「ホスト名 + ドメイン名」のことです。
	※TLDの後ろにルートドメイン用の「.」が入りますが、
	 ルートドメインは名前がありませんので、省略されています。

	network_0045

■ドメインの登録

ドメインネームの登録にはドメインネームの管理団体に
申請を行う必要があります。
ドメインネームの統括はICANNが行っています。
そしてその傘下の組織が各国にあり、
日本ではJPRS(日本レジストリサービス)が担当しています。
JPRSのようなドメインネームの管理団体のことをレジストリといいます。
実際に申請する際はドメインネーム代行業者(レジストラ)に
申し込みを行います。
プロバイダやレンタルサーバー業者はレジストラを兼任しています。
ただし、ドメインの申請が必要なのは「組織」のレベルまでです。
組織のレベルというのは「yahoo」や「google」のことです
以下の図はドメインネーム管理のイメージ図になります。
		
	network_0046

■名前解決の流れ(スタブリゾルバとフルサービスリゾルバのやりとり)

スタブリゾルバが実際に名前解決を行うまでの流れを追ってみたいと思います。
例として使用するドメインネームはwww.yahoo.co.jpです。
まずはスタブリゾルバとフルサービスリゾルバについてですが、
スタブリゾルバはPCがドメインネームからIPアドレスを取得するために
実行する検索要求プログラムのことでした。
フルサービスリゾルバの説明は以下の内容になります。

●フルサービスリゾルバ
	フルサービスリゾルバはルートサーバーを含むDNSサーバーと
	スタブリゾルバによる検索要求の橋渡しを行うサーバーのことです。
	フルサービスリゾルバ自身もIPアドレスの対応表を持っているので、
	このサーバー自体もDNSサーバーといえます。
	フルサービスリゾルバの機能は以下の内容になります。

		・自身の持つIPアドレス対応表でIPを返す
			フルサービスリゾルバは一定期間
			IPアドレスを管理しています。(キャッシュ機能)
			要求されたIPアドレスがあれば
			そのIPアドレスを返します。

		・他のDNSサーバーへ問い合わせる
			IPアドレス対応表になかったら、
			他のDNSサーバーへ問い合わせを行います。
			この時に最初に問い合わせるDNSサーバーは
			ルートサーバーになります。

	フルサービスリゾルバはキャッシュ機能を使用していることから
	DNSキャッシュサーバーとも呼ばれています。

	network_0047

■名前解決の流れ(フルサービスリゾルバとDNSサーバーのやりとり)

次はフルサービスリゾルバとDNSサーバーとのやり取りについて
説明をしたいと思います。
	
●反復問い合わせ
	フルサービスリゾルバとDNSサーバーのやり取りは
	以下のような流れで行われています。

	network_0048
		
	①.フルサービスリゾルバがDNSサーバーへ
	  ドメインネームを知らせる

	②.ドメインネームを受け取ったDNSサーバーは
	  対応表からドメインネームと一致している
	  IPアドレスがないか探す

	③.一致しているIPアドレスがあればそれを返し、
	  なければ、自分の枝部分で管理しているドメインと
	  一致しているドメインがあるかを確認して、
	  そのIPアドレスを返します。

	この①~③の流れを繰り返し、最終的に該当するIPアドレスを
	発見するやり方のことを反復問い合わせといいます。

●プライマリDNSサーバーとセカンダリDNSサーバー
	DNSサーバーは人間が効率的にインターネットを
	利用するための仕組みです。
	もし、DNSサーバーに不具合が生じた際に、インターネット自体の
	通信が可能だったとしてもIPアドレスを直接入力する
	必要がありますので実質的には使用は不可能です。
	これを回避するためにDNSサーバーを構築する場合、
	同じ機能を持つバックアップのサーバーを持つことが
	義務づけられています。
	メインで使用するDNSサーバーをプライマリDNSサーバー、
	トラブルが発生した際に代用するためのDNSサーバーを
	セカンダリDNSサーバーといいます。