【初心者用】DNSにおける名前解決とは?正引き・逆引きも解説!

個人でブログを始めよう!と思い、意気揚々とサーバーを借りて出会った「DNS」という用語。「ドメインとサーバーを紐づける」ということは知っているという人も多いのではないでしょうか。しっかりと理解ができるよう会話帳で分かりやすく解説していきます。


テク博士!遂に僕もブログを始めようと思いまして、今日はそのご相談を。


そうかい、そうかい。自分で色々とやってみることはいいことじゃの。一体何を相談したいんじゃ?


実際に始めてから、何を書こうかなとかは思いつくのですが、ブログを解説するまでがあんまりイメージ湧かず・・・


なるほどのぉ。ブログサービスは色々とあるが、自分でレンタルサーバーを借りて、ドメインを取得して、DNSで名前解決し、ワードプレスのテーマを買って、カスタマイズしてみる、という一連の流れをやってみるのはいいかもしれんのお。


な、なるほど・・・!なんか分かりそうで分からないような。DNSってあれですよね?ドメインとサーバーを結びつける感じの・・・


まぁざっくりそうじゃな。これを機にまずはDNSについて勉強してみるかの。


そうですね!ぜひよろしくお願いいたします!

DNSを理解!するその前に。

まず、DNSとはDomain Name Systemの略称です。その名の通り、「システムなんだな」ということを理解をしましょう。

そして、DNSをしっかりと理解するために以下の3つのキーワードから説明していきます!

  1. ドメイン
  2. クライアントとサーバー
  3. IPアドレス

ドメインとは?

ドメインとは、他の様々なサイトでも説明がされている通り、「インターネットにおける住所」のことで、唯一無二なものになります。例えば、あなたが見ているこのワカテクのドメインは「wakatech.jp」になります。

ちなみに、「https」はHyper Text Transfer Protcolの略称で、ブラウザ(ChromeやIEなど)に対して、「このサイトはハイパーテキストで表示してね!」と命令をしているものです。「ハイパーテキスト」という厨二感満載の言葉は「HTML」というプログラミング言語であると捉えてもらえればいいと思います。

そして、「wakatech.jp」というドメインの末尾にある「.jp」はトップレベルドメイン(TLD)と呼ばれるもので、大まかにgTLD、ccTLDの種類があります。

gTLDはgeneric Top Level Domainの略称で商用であれば「.com」、インターネット事業者であれば「.net」など、ネットを見ている際に、よく目にするものが多いです。2012年には新設が原則自由化され、一時期AKB48がCMでもプロモーションしていた「.tokyo」や「.biz」「.info」なども目にするようになりました。

一方、ccTLDはCountry Code Top Level Domainの略称で世界の国や地域に割り当てられている2文字の国別コードで表されます。日本であれば「.jp」、米国であれば「.us」などです。ちなみに、最近では「.io」というイギリス領インド洋地域のccTLDをドメインハックしている企業もあり、調べてみると勉強になるかもしれません。

クライアントとサーバーとは?

続いて、クライアントとサーバーに関してです。「インターネットはクライアントとサーバーにより成り立っている」と言っても過言ではありません。

まず、インターネットにはクライアントとサーバーの二者がいると考えてください。ここでは「クライアント」は「インターネットをしようとしているあなた」と考えましょう。

初めに、インターネットがサーバーに対して「このページを見せて!」と要求することを「リクエスト」と言います。

次に、クライアントのリクエストに対して「このページだね!」と情報を返すことを「レスポンス」と言います。

したがって、このリクエストとレスポンスのやりとりによってクライアント(あなた)はいつもインターネットを楽しむことができています。

IPアドレスとは?

最後に、IPアドレスです。IPアドレスはInternet Protcolアドレスの略称で、「インターネットにおける住所」のことです。

既にお気付きの方もいるかもしれませんが、ドメインも「インターネットにおける住所」であると説明しました。

ドメインとIPアドレスは両方とも「インターネットにおける住所」で間違いなく、その違いとしては、「誰に向けたものであるか」です。

具体的に、

  • IPアドレスは、コンピュータが分かりやすい住所
  • ドメインは、人間が分かりやすい住所

ということです。

例えば、このサイト(ワカテク)である場合、

  • IPアドレスは、183.90.240.32
  • ドメインは、wakatech.jp

になります。どちらが人間にとって分かりやすいかは一目瞭然ではないでしょうか。



ドメイン、クライアントとサーバー、IPアドレスに関してなんとなく理解できました!


そりゃ、良かったわい。これが分かるだけでも大分進歩じゃな。


はい!続いてDNSについてもお願いします!


ガッテン!

本題であるDNSとは?

上記の通り、DNSとはDomain Name Systemの略称で、その名の通りシステムです。

具体的に、どんなシステムなのかというと「ドメインとDNSサーバーの紐付けを行うシステム」で、より正確には「ドメインとDNSサーバーが持っているIPアドレスを紐づけるシステム」のことです。

早速、図解で解説していきます。

まず、クライアント・サーバー・DNSサーバーの三者がいます。

クライアントがDNSサーバーに対して「wakatech.jpのIPアドレスを教えて!」とリクエストを出します。

すると、DNSサーバーはサーバーに対して「これだよ!」と「wakatech.jp」のIPアドレスである「183.90.240.32」を教えてくれます。

「wakatech.jp」のIPアドレスである「183.90.240.32」を手に入れたクライアントは、サーバーにIPアドレスを伝えます。

最後に、サーバーからのレスポンスによってクライアントは「wakatech.jp」のサイトを見ることができるのです。



そういうことなのですね!ということは、サーバーはIPアドレスが分からないということですね。


そうじゃ。IPアドレスを知っているのは、あくまでDNSサーバーじゃ。だから、ドメインとDNSサーバーを紐づける必要があるのじゃ。


なるほど!DNSの仕組みが分かりました!


ちなみに、人間とコンピュータ双方がDNSによりスムーズにリクエストとレスポンスを行うことを「名前解決」と言うのじゃ。


確かに、ドメインとIPアドレスの名前の違いを解決していますね。そういえば、なんで「wakatech.jp」というドメインのIPアドレスが「183.90.240.32」であると分かるんですか?


よしよし。それについてもちょっと説明するぞい。

DNSの正引き・逆引きとは?

それぞれの意味としては、

  • 正引きとは、ドメイン→IPアドレスを調べること
  • 逆引きとは、IPアドレス→ドメインを調べること

上記で説明した手順では、クライアントはドメインによりサイトを見ようとしていました。そのため、ドメイン起点であるため、正引きであることが分かります。

一方で、逆引きはどのような時に使うのでしょうか。以下の記事が詳しいので、引用をさせていただきました。

  1. tracerouteコマンドなどを使うときに逆引きが可能なドメイン名が表示されるので、デバッグに役立てることができる。例えば、telnetdやsshdのように逆引きを調べるプログラムが存在する(*1)
  2. どの組織がどのIPアドレスを持っているかがある程度分かる
  3. Apacheのログなどでは記録がIPアドレスで取られるが、このログを解析するときなどドメイン名で扱えた方が結果をより分かりやすく整理することができる
  4. サーバ側で逆引きできないとアクセスをさせない設定をしているところがある

(*1)逆引きを調べて登録されているかどうかのチェックをするプログラムがあった場合、DNSの応答待ち状態が発生し、その間応答が返ってこないということも起こります。

引用:逆引きが使われるのはどんな時か



以上で説明は終わりじゃ!


ありがとうございました!最後の逆引きのところがまだ実感湧かないのですが、DNSについては理解できたような気がします。


そうかいそうかい。必要性を感じることができるほど、チャレンジをしてみるんじゃな。


はい!ブログの開設も頑張ってみます!


楽しみにしてるぞい。少年よ大志を抱け!!!