DNS(Domain Name System)とは、ドメインネームシステムの名の通りドメイン名とIPアドレスを対応関係を管理するシステムのこと。
DNSがないと、例えばWebサイトにアクセスするのに「https://it-biz.online/(=ドメイン名)」と入力するのではなく、「https://192.168.1.1」のようにIPアドレスを入力する必要がでてきます。
このページではDNSって何?どういう仕組みで動いている?なぜDNSが必要なの?という疑問をお持ちの方に、分かりやすく3分でDNSについての基礎知識を解説します。
図解付きでご説明します。
Web系エンジニアを目指す方やネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
DNSとは?わかりやすく解説
DNS(Domain Name System)とは、ドメイン名をIPアドレスに変換する仕組み(=プロトコル)です。
DNSというと難しく考えてしまう人がいますが、基本的には上記の図を理解できればOK。決して難しい内容ではありません。
ただしこのページでは、「なぜドメイン名とIPアドレスを変換する必要があるのか?」「そもそもIPアドレスって何?」「ドメインって何」という部分まで深堀しながら解説します。
IPアドレス=インターネットの世界における「住所」
IPアドレス(Internet Protocol Address)とは、インターネットの世界における住所のようなもので、コンピュータを一意に特定するための識別子です。
このIPアドレスはインターネットに接続する全てのコンピュータに割り振られており、IPアドレスをもとにお互いに通信を行うことでメールの送受信やWebページの閲覧が可能となります。
例えば誰かに手紙を送りたいとき―。その人の住んでいる「住所」を調べて手紙を郵便局に配達しますよね。これと同じようにインターネットの世界でも「IPアドレス」を基に、メールをどこに送れば良いか?動画データを誰のスマートフォンに送れば良いか?などを判断します。
IPアドレスのデメリット→数字の羅列で「わかりづらい」
IPアドレスにもデメリットがあります。
それは、ずばり人間にとって理解しづらいという点です。
https://192.168.115.115 という羅列でWebページを指定する場合、一体これがどんなWebページを表しているのか見当がつきません。また、数字の羅列でメールの宛先を指定するような場合、入力ミスで誤って別の宛先に送ってしまうような場合も考えられます。
そこで考え出されたのがドメイン名です。
人間にとって分かりやすい「お名前」を付けることで、ストレスなくインターネットを利用する方法が考え出されたのです。
「https://www.google.com」や「https://it-biz.online」とした方がどんなページなのか想像つきやすいですよね。
この、IPアドレスとドメイン名の対応関係を管理し、リクエストに応じてIPアドレスとドメイン名を変換する役割を担うのがDNS(Domain Name System)です。
ただし、実際には1つのDNSサーバに全世界のコンピュータのドメイン名とIPアドレスの対応表が保存されているわけではありません。どのように全世界のドメイン名とIPアドレスを管理しているか?次の章ではさらに詳しいDNSの仕組みを解説します。
DNSの仕組みをさらにわかりやすく
ここからは、さらに一歩深くDNS(Domain Name System)の仕組みを解説していきます。
まずは、DNSの仕組みを理解するための前提となるドメイン名の構造について簡単に解説します。
ドメイン名の構造
DNSの仕組みを理解するためにはドメイン名の構造を理解する必要があります。
ドメイン名は以下のように階層構造がとられています。
この階層構造は現実世界の「住所」と同じように考えればOK。
日本という国の下に東京都があり、東京都の下に千代田区、霞が関と続きます。それぞれが階層関係になっているように、ドメイン名も同じように階層構造をとります。
一番右側のドメインをトップレベルドメインと呼び、そこから左に行くにつれ階層が下がっていきます。上位の階層が下位の階層のドメイン名を管理します。
ポイント ドメイン名の仕組み/ルール
- 階層的構造
- ドメイン名は階層的な構造を持つ → 一般的には右から左に読む。
- 最も右側に位置する部分を「トップレベルドメイン(TLD)」と呼ぶ。→代表的なものとして(.com、.org、.net)や国コードTLD(.jp、.uk、.us)などが存在。
- TLDの左側に位置するのが「セカンドレベルドメイン」。これは具体的なWebサイトや組織を指す(例:google.comの「google」部分)。
- これらに続く任意の下位のレベルを「サブドメイン」と呼ぶ(例:mail.google.comの「mail」部分)。
- 命名規則
- ドメイン名は英数字とハイフン(-)を使用可能。ただし、ハイフンはドメイン名の最初や最後には置けない。
- 文字数の制限があり一般的には各レベルで1文字から63文字まで、全体で最大253文字まで。
- 大文字と小文字は区別されず、どちらも同じドメイン名として扱われる。
- ユニークな識別子
- 各ドメイン名は世界で唯一のものであり、重複することはない。
DNSサーバの構造
ドメイン名が階層構造で管理されているため、DNSサーバも階層構造をとります。
1番上の「root」を頂点として、トップレベルドメイン・第2レベルドメイン・・・と各階層が下に続く形です。
上記の図における1つ1つの箱はDNSサーバを表しています。
各DNSサーバは自分の担当するドメイン名についてIPアドレスとドメイン名の対応表を保持しており、同時に自分の配下に存在するドメインのDNSサーバの管理も行っています。
ポイント DNSサーバーの種類
- ルートDNSサーバー
- 最上位に位置し、トップレベルDNSへの問い合わせを案内。
- トップレベルDNSサーバー
- 特定のドメイン(.com、.netなど)の情報を保持
- オーソリティブDNSサーバー
- 特定のドメインに対する正確なIPアドレス情報を保持。
DNSの仕組み―名前解決
さて、上記の前提知識を頭に入れたうえで、実際にどのようにDSNがIPアドレスとドメイン名の変換を行っているかを見ていきます。
例として、Webブラウザ上で「https://www.example.com」と入力した場合の動作を解説します。まず、最初のステップはリゾルバがローカルのDNSサーバーに問い合わせを行うことから始まります。
ローカルDNSサーバとは、リゾルバが最初に問い合わせを行うDNSサーバのことです。これは通常家庭内ネットワークにおいてはルーターがその役割を兼ねています。
このローカルDNSサーバは、最近利用したドメイン名とIPアドレスの対応表を保持しているのが普通で、もし最近アクセスしたドメインであれば対応するIPアドレスをリゾルバに返します。
ただし、初めてアクセスするドメインについてはIPアドレスの対応表を保持していないため、IPアドレスを返すことができません。その場合は、ルートDNSサーバに問い合わせを行います。
ルートDNSサーバとは、DNSにおける最高権威者。ルートDNSサーバは対応するIPアドレスが分かればその結果を返しますが、メインとなる役割は世界中のDSNサーバの元締めです。つまり、ルートDNSサーバからIPアドレスが返ってくることはほとんどなく、実際には「どのDNSサーバであればドメイン名とIPアドレスの対応表を持っているか?」を教えてくれます。
今回の例でいくと、「www.example.co.jp」に対するIPアドレスの問い合わせなので、ルートDNSサーバは、トップレベルドメインの「jp」を管理するDNSサーバを紹介してくれます。
ローカルDNSサーバは、ルートDNSサーバから受け取った返答を確認し「jp」DNNサーバに問い合わせを投げれば良いことを知ります。したがって、そのまま同じ質問を「jp」DNSサーバに問い合わせます。
ここで、「jp」DNSサーバは対応するIPアドレスを知っていれば回答を返します。しかし、対応するIPアドレスがない場合はさらに下の階層のDNSサーバを紹介します。
今回の例でいうと、「jp」ドメインが管理する「co」DNSサーバに問い合わせをすれば良さそうであることが分かりますよね。「jp」DNSサーバは「co」DNSサーバを紹介します。
以降は同様の処理を対象のドメイン名とIPアドレスの対応表を保持するDNSサーバが見つかるまで繰り返します。
最終的に「example」ドメインを管理するDNSサーバから対応するIPアドレスを返してもらい、目的とするIPアドレスを把握することができる仕組みです。
実際にWebブラウザを用いてサイト閲覧を行う際には、取得したIPアドレスを用いられます。
以上がDNSの仕組みの概要です。
DNSキャッシュ
毎回↑のようなフローでドメイン名→IPアドレスの変換を行っていると、通信のスピードも下がってしまいます。ここでは、その問題を解決するDNSキャッシュについてもご説明しておきます。
DNSキャッシュとは、以前にアクセスしたWebサイトのドメイン名とIPアドレスのペアを一時的に保存する仕組み・機能です。このキャッシュは、Webページをロードする際の時間を短縮し、効率を高めるために重要な役割を果たします。
- 定義
- DNSキャッシュは、DNSクエリの結果(ドメイン名とそれに対応するIPアドレス)を一時的に保存するシステム。
- 目的:
- インターネットの速度と効率を向上させるために、DNSリクエストの回数を減らす。
DNSキャッシュの機能
Webサイトにアクセスする際、コンピューターは最初にローカルDNSキャッシュをチェックします。もしそれ以前にそのサイトにアクセスしていてキャッシュがまだ有効な場合、コンピューターは直接そのIPアドレスにアクセスします。これにより外部のDNSサーバーに問い合わせる手間が省かれ、時間が節約されます。
- DNSリクエストの処理
- ユーザーがWebサイトにアクセスするとき、そのデバイスのDNSリゾルバは最初にローカルのDNSキャッシュをチェック。
- キャッシュの確認
- キャッシュに該当するドメイン名の記録があれば、そのIPアドレスを直ちに使用する。
- キャッシュヒットとキャッシュミス
- キャッシュに記録がある場合を「キャッシュヒット」と呼び、ない場合を「キャッシュミス」と呼びます。
DNSキャッシュの更新
キャッシュには有効期限が設定されており、これを「TTL(Time To Live)」と呼ばれます。
この期間が過ぎると、キャッシュされた情報は「期限切れ」となり、次にそのドメイン名にアクセスする際には新たにDNSサーバーに問い合わせが行われます。こうすることで、ドメイン名のIPアドレスが変更されても、最終的には新しい情報に更新されることになります。
- TTL(Time To Live)
- 各DNSレコードにはTTL(=キャッシュに保存される時間)が設定されている。
- キャッシュの期限切れ
- TTLが経過すると、キャッシュは「期限切れ」となり、次回のリクエスト時に新たなDNSクエリが発生。
DNSキャッシュの欠点
キャッシュの情報が最新でない場合、ユーザーは古い or 不正確な情報に基づいたアクセスを行うことになります。例えば、Webサイトが新しいサーバーに移動した場合、TTLが切れるまでの間古いサーバーのIPアドレスがキャッシュされ続ける可能性があります。
また、セキュリティ面では、DNSキャッシュポイズニングのような攻撃がリスクとして存在します。
- 最新情報の遅延
- DNSレコードが更新された後も、TTLが切れるまでは古い情報がキャッシュされたままになることがあります。
- セキュリティリスク
- DNSキャッシュポイズニングなどの攻撃により、不正な情報がキャッシュされるリスクがあります。
このように、DNSキャッシュはインターネットの効率性を高める重要な機能ですが、最新情報の遅延やセキュリティリスクなど、適切な管理が必要な側面もあります。
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門