DNS、Domainについて解説してみた。

#・初めに
この記事は以下の方を対象としています。また記事の修正など、有識者の方からのコメントもお待ちしております。

+ 初学者の方
+ フロントエンドエンジニア志望の方
+ 基本的なことを復習したい方

#・導入
閲覧ありがとうございます。よかったらLGTMお願いします‼
こちらの記事はPart2になります。最初からご覧になりたいかたは、以下よりどうぞ。

#・記事一覧
[part1: Internet](https://qiita.com/n4suka7/items/ac3c16b3e30ec59fff0d)
・随時更新予定

#・Part2 Internet【DNS, Domain, Hosting】
さて、導入はこの辺にして早速本題に入っていきます。序盤は概要把握ということで、全体を把握出る程度で行きたいと思います。
Part2は下の画像の「Internet」【HTTP,Browsers】についてです。

![Roadmap](https://github.com/kamranahmedse/developer-roadmap/blob/master/img/frontend.png?raw=true)

##DNS and how it works?(DNSとその仕組み)& What is domain name?(ドメインネームとは何か?)
ここで解説するDNSについて理解するためには、ドメインについても理解する必要があるため、同じ流れでまとめていきたいと思います。

###DNSとは何か?
**DNS**とは、Domain Name Systemの略で、インターネット上でドメイン名を管理・運用するために開発されたシステム（サーバー）のことを指します。
例えば、何かのコンピューター（サーバー）にアクセスしたいとき、コンピューターにアドレスがないと特定できないため、特定に使用される固有のアドレス**IPアドレス**を設けました。IPアドレスは4つの数字からなるアドレス（例：192.168．2.10）で表されますが、Web上では利用者にとってはわかりにくいことから、IPアドレスを置き換えた**ドメイン**を使用することが一般的になっています。この時に置き換えを行うのがDNSです。また逆も然りで、ドメイン名からIPアドレスに置き換えるという役割も担っています。

>簡単に考えるならば、電話帳みたいなものと考えるとわかりやすいのではないでしょうか。

###ドメインとは何か
DNSで扱うドメインとは、インターネットワーク上のコンピュータの集まりを表す単位です。代表的な単位名としては「jp,com,org」などがあげられます。このドメインは階層構造（ツリー構造）になっており、頂点に「.」**（ルートドメイン）**が存在します。この「.」（ルートドメイン）の下位に、「jp,com,org」など複数のドメインがあり、このドメインの下位にも複数のドメインが存在します。例にあげたドメインはドメインの中でも**TLD** (トップレベルドメイン)と呼ばれ、最上位ドメインの一つです。

![ドメイン構造](https://lpi.or.jp/lpic_all/linux/images/img_network80.gif)

###DNSの仕組み

1．クライアントのブラウザは入力された「URL」から、対象のドメイン名を抽出する。
2．クライアントは抽出されたドメイン名を、OSの名前解決機能に引き渡す。
3．クライアントの名前解決機能は「ドメイン名」をネットワーク上のDNSに問い合わせを行う。
4．DNSサーバは問い合わせに対する回答を保持している場合、クライアントに回答する。
5．DNSサーバが回答を保持していない場合、さらに上位のDNSに問い合わせを行う。
6．上位DNSサーバがDNSサーバの問い合わせに対して回答する。
7．回答を保持していない場合はさらに上位のDNSへ問い合わせ。
8．DNSサーバは上位DNSサーバから得た回答をクライアントに回答し、自身のキャッシュに回答情報を保存する。
9．クライアントは取得したIPアドレスをブラウザに戻す。
10．クライアントのブラウザはIPアドレスを参照し、サイトにアクセスする。

![DNSの仕組み](https://lpi.or.jp/lpic_all/linux/images/img_network81.gif)

###DNSのキャッシュについて
ここで問題になってくるのが、もし毎回世界中の人がある上位DNSサーバーにリクエストを送った場合、その一つのサーバーにアクセスが集中してしまうという点です。そこで**キャッシュ**という自身のコンピューターにDNS情報を保存する仕組みが編み出されました。そうすることで、一度訪れたことのあるページに対しては何度もDNSサーバーに接続する必要がなくなりました。このキャッシュに保存する仕組みが、DNSサーバの負荷を軽減し、膨大な名前解決の問い合わせの処理を可能にしています。 特定のドメインを管理せず、キャッシュによる回答のみ専用に行うDNSサーバを**キャッシュサーバー**と呼び、ドメイン（ゾーン）を管理するサーバを**ゾーンサーバー**と呼びます。

###DNSの仕組みとドメインまとめ
簡単にまとめると、ホストとIPアドレスを関連付けしたドメインを「.」（ルートドメイン）を頂点とした「ドメイン」単位の階層構造で管理し、各DNS（サーバ）で名前解決(自身ゾーンで管理/上位DNSへの問い合わせ/キャッシュによる回答）を行うというのがDNSの仕組みです。

##What is hosting(ホスティングとはなにか)
**ホスティング**とは、自分のサイトなどを保管する「サーバーを借りること」をいいます。ブログやサイト運営の経験がある方などには、**レンタルサーバー**といったほうがわかりやすいかもしれません。
また、ホスティングは大きく分けて2種類あります。**「共有ホスティング」**と**「専用ホスティング」**です。それぞれ、「バーチャルウェブ」と「インテグラル」と呼ばれることもあります。意味も文字通りそのままで、共有しているか、占有しているかの違いです。近年では、専用サーバーのような機能を持たせた**仮想サーバー**(VPS)と呼ばれる、いわば2種の中間のようなものがホスティングの主流となりつつあります。

###ホスティングまとめ
まとめるまでもないかと思いますが、ホスティングとは自らのサイトなどを保管するサーバーを借りることを言います。ホスティングは2種存在し、共有ホスティングと専用ホスティングがある。というのを覚えておきましょう。

#まとめ
今回はInternet【DNS, Domain, Hosting】についてみてきました。今回はそれぞれにまとめを書かせていただいたので、ここでは割愛させていただきます。
ところで、このような概要をおおまかではありますが把握していることは、エンジニアになるというのに非常に重要であるとだんだん感じてきました。今後もしっかり勉強していきます。

#次回予告
ここまで、インターネットの仕組みについて述べさせていただきました。次回からは技術的な話である、HTMLについて学んでいきましょう。

#参考文献
[LPI japan](https://lpi.or.jp/lpic_all/linux/network/network07.shtml)
[BOXIL](https://boxil.jp/mag/a2442/#2442-3)