DNSとは?名前解決の仕組み・DNSサーバーの流れを図解で解説

  • URLをコピーしました!

前の記事では、 ARPを使ってIPv4アドレスからMACアドレスを調べる仕組み を学びました。

ネットワーク通信では、 最終的にIPアドレスを使って通信相手を識別します。

しかし、普段Webサイトを見るとき、 私たちは次のようなIPアドレスを直接入力することはほとんどありません。

IP ADDRESS 203.0.113.10

代わりに、

DOMAIN NAME www.example.com

のような、 人間が覚えやすい名前を利用します。

ところが、ネットワーク通信を行うには 最終的にIPアドレスが必要です。

「www.example.com」という名前しか分からないのに、
どうやって通信先のIPアドレスを知るのでしょうか?

この問題を解決する仕組みが DNS(Domain Name System)です。

🌐 NETWORK BEGINNER

この記事はネットワーク初級講座の一部です。 学習順を確認したい場合は講座一覧から確認できます。

ネットワーク初級講座を見る →
LESSON GOAL この記事のゴール

DNSという言葉を覚えるだけではなく、 「ドメイン名を入力するとDNSによってIPアドレスが調べられ、 そのIPアドレスを使って実際の通信が始まる」 という流れを説明できる状態を目指します。

目次

DNSとは?

DNS(Domain Name System)とは、 ドメイン名とIPアドレスなどの情報を対応付ける仕組み です。

Webサイトへのアクセスを例にすると、

HUMAN FRIENDLY www.example.com
→ DNS →
NETWORK 203.0.113.10

というように、 ドメイン名から通信に必要なIPアドレスを調べます。

DNS=名前からIPアドレスなどの情報を調べる仕組み

特に初級では、 「ドメイン名 → IPアドレス」 の名前解決を理解することが重要です。

ARPとDNSは何が違う?

前の記事で学習したARPとDNSは、 どちらも「何かを調べる」仕組みなので混同しやすい部分です。

DNS 名前 → IP
www.example.com 203.0.113.10

通信したいサーバーの IPアドレスなどを調べる。

ARP IP → MAC
192.168.1.20 BB:BB:BB…

IPv4通信で、 同一リンク上の転送に必要なMACを調べる。

DNSとARPをセットで整理しよう

DNS:名前 → IPアドレス
ARP:IPv4アドレス → MACアドレス

と整理すると、それぞれの役割が分かりやすくなります。

DNSによる「名前解決」とは?

ドメイン名などから、 対応するIPアドレスなどの情報を取得する処理を 名前解決と呼びます。

たとえばブラウザへ、

🌐 https://www.example.com/

と入力したとします。

ブラウザやOSは通信を開始するために、 まず www.example.comに対応するIPアドレス を知る必要があります。

URL入力 www.example.com
DNS名前解決 名前 → IP
IPアドレス取得 203.0.113.10
通信開始 TCP/IPで通信

DNS問い合わせの前にキャッシュを確認する

Webサイトへアクセスするたびに、 毎回すべてのDNSサーバーへ問い合わせているわけではありません。

過去に取得した名前解決結果が DNSキャッシュ に残っていれば、その情報を再利用できます。

DNS CACHE www.example.com
203.0.113.10 保存済み

キャッシュを利用することで、 DNSサーバーへの問い合わせ回数を減らし、 名前解決を高速化できます。

まずキャッシュ、なければDNS問い合わせ

実際にはOS・ブラウザ・DNSリゾルバなど、 複数の場所でキャッシュが利用される場合があります。 初級では「以前調べた結果を一定期間再利用できる」と理解すれば十分です。

DNSサーバーに名前解決を依頼する

必要な情報がキャッシュにない場合、 端末は通常、 設定されている DNSサーバーへ問い合わせます。

💻 Client www.example.comは?
🔎 DNS Resolver 名前解決を担当

このように、 クライアントからの問い合わせを受け、 必要に応じて他のDNSサーバーへ問い合わせながら 結果を返すDNSサーバーを DNSリゾルバ(キャッシュDNSサーバー) などと呼びます。

DNSサーバー1台が世界中の情報を持っているわけではない

DNSで重要なのは、 1台のDNSサーバーが世界中すべてのドメイン情報を保持しているわけではない という点です。

DNSは階層構造になっており、 必要な情報を持つDNSサーバーまで順番にたどっていきます。

🌍 ルートDNS 「.comならこちら」
📂 .com TLD DNS 「example.comならこちら」
🗄️ 権威DNS example.comの情報を管理

ルートDNS・TLD DNS・権威DNSとは?

ルートDNSサーバー

DNS階層の最上位に位置するのが ルートDNSサーバーです。

ルートDNSは、 たとえば .com.jpなど、 トップレベルドメインを管理するDNSサーバーへ たどるための情報を持っています。

ROOT www.example.com?

「.comの情報なら、.comを担当するDNSへ問い合わせてください」

TLD DNSサーバー

TLDは Top Level Domain の略です。

.com、.jp、.netなどのトップレベルドメインごとに、 その下位のドメインを管理するDNSサーバーへ たどるための情報があります。

.COM TLD example.com?

「example.comの情報なら、この権威DNSへ問い合わせてください」

権威DNSサーバー

最終的に、 対象ドメインのDNS情報を管理しているのが 権威DNSサーバー(Authoritative DNS Server) です。

AUTHORITATIVE www.example.com

「この名前に対応する情報はこちらです」

DNS名前解決の流れを最初から見てみよう

ここまでを、 www.example.com へアクセスする場合で整理します。

Client www.example.comのIPは?
DNS Resolver キャッシュを確認
Root DNS .com DNSを案内
.com TLD DNS example.comの権威DNSを案内
Authoritative DNS 対応情報を返す
Clientへ回答 IPアドレスを取得
クライアント自身が全部のDNSサーバーへ聞くわけではない

一般的には、クライアントは設定されたDNSリゾルバへ問い合わせます。 そのリゾルバが必要に応じてルートDNSなどへ問い合わせ、 最終的な結果をクライアントへ返します。

「再帰問い合わせ」と「反復問い合わせ」

DNSの学習では、 再帰問い合わせ反復問い合わせ という言葉も登場します。

RECURSIVE 再帰問い合わせ

クライアントがDNSリゾルバへ 「最終的な答えを返してください」 と依頼するイメージです。

ITERATIVE 反復問い合わせ

DNSリゾルバが 「次はどこへ聞けばよいか」 という情報をたどりながら問い合わせます。

初級では、

PC → DNSリゾルバ 「答えを調べてください」 DNSリゾルバ → 各DNS 「次はどこ?」「次はどこ?」

というイメージを持っておけば十分です。

DNSレコードとは?

DNSでは、 ドメイン名に関するさまざまな情報を DNSレコード(リソースレコード) として管理します。

代表的なレコードを確認してみましょう。

レコード 主な役割 イメージ
A 名前とIPv4アドレスを対応付ける www.example.com → IPv4
AAAA 名前とIPv6アドレスを対応付ける www.example.com → IPv6
CNAME 別名を設定する 別名 → 正式名
MX メール配送先を示す メールサーバー
NS そのゾーンを担当するDNSサーバーを示す 権威DNS
最初はAレコードを覚えればOK

Web通信とIPv4の基本を理解する段階では、 Aレコード=名前とIPv4アドレスの対応 をまず押さえてください。

DNSキャッシュは永遠には保存されない

DNSレコードには TTL(Time To Live) という値が設定されます。

TTLは、 DNS情報をどの程度の時間キャッシュとして保持できるかを 判断するために使われます。

DNS RECORD www.example.com
TTL 300 sec
CACHE 一定期間利用

TTLが切れれば、 必要に応じて再度名前解決を行い、 新しい情報を取得します。

DNSは何番ポートを使う?

DNSでは一般に 53番ポート が利用されます。

DNS Port 53
UDP / TCP

一般的なDNS問い合わせではUDPが利用されることが多いですが、 応答サイズや処理内容などに応じてTCPも利用されます。

「DNS=UDPだけ」と覚えない

DNSではUDP 53だけでなくTCP 53も利用されます。 初級では「DNSは53番ポート、UDP/TCPの両方」 と整理しておきましょう。

DNSでIPアドレスが分かった後はどうなる?

DNSの名前解決は、 あくまで 通信先のIPアドレスなどを調べる処理 です。

IPアドレスを取得したら、 これまで学んできたTCP/IPの仕組みを利用して 実際の通信が行われます。

① DNS 名前 → IP www.example.com

203.0.113.10
② L3判断 宛先を確認 同一 / 別Network
③ ARP IP → MAC 次のL2転送先
④ 通信 TCP/IP Web Serverへ

このように、 これまで個別に学習してきた仕組みが 実際のWebアクセスでは組み合わされて動作しています。

ここで実際に動かしてみよう:DNS名前解決シミュレーター

www.example.comのIPアドレスを調べる流れを 順番に確認してみましょう。

INTERACTIVE LAB

DNS Resolution Simulator

DNS
QUERY www.example.com
1 Cache
2 Root
3 TLD
4 Auth
5 Answer
STEP 1

DNSキャッシュを確認

DNSリゾルバはまずwww.example.comの名前解決結果を キャッシュしていないか確認します。 今回はキャッシュがないため、DNS階層への問い合わせを開始します。

Cache:www.example.com → MISS

理解度チェック:どのDNSレコードを使う?

目的を選択すると、 代表的なDNSレコードを確認できます。

DNS RECORD A

Aレコードはドメイン名とIPv4アドレスを対応付けます。 IPv4でWebサーバーなどのアドレスを調べるときに重要です。

DNSの名前解決はコマンドでも確認できる

WindowsやLinuxでは、 実際にDNS名前解決を確認できます。

nslookup

Windows / Linux
nslookup www.example.com

利用しているDNSサーバーや、 名前解決で取得したIPアドレスなどを確認できます。

dig

Linux
dig www.example.com

digでは、 DNSレコードや問い合わせ結果などを より詳しく確認できます。

DNS障害では「IPでは通信できるのに名前では通信できない」ことがある

DNSは実際のトラブルシューティングでも非常に重要です。

たとえば、

IP ADDRESS 203.0.113.10 通信できる
DOMAIN www.example.com 通信できない

という状態であれば、 IP通信そのものではなく DNSによる名前解決に問題がある可能性 を考えることができます。

CASE 01 DNSサーバーへ到達できる?

設定されているDNSサーバーへ 通信可能か確認します。

CASE 02 名前解決できる?

nslookupやdigなどを使い、 DNS応答を確認します。

CASE 03 DNSレコードは正しい?

想定したIPアドレスが DNSから返されているか確認します。

PCはDNSサーバーのIPアドレスをどうやって知る?

DNSを利用するためには、 PC側に 「どのDNSサーバーへ問い合わせるのか」 という設定が必要です。

さらにPCがネットワーク通信するためには、

IP IPアドレス
MASK サブネットマスク
GW デフォルトゲートウェイ
DNS DNSサーバー

など、複数のネットワーク設定が必要になります。

しかし、自宅のスマートフォンやPCをWi-Fiへ接続するたびに、 これらをすべて手入力しているわけではありません。

IPアドレス・サブネットマスク・ゲートウェイ・DNSサーバーは、
どうやってPCへ自動設定されているのでしょうか?

そこで利用されるのが、 次の記事で学ぶ DHCP(Dynamic Host Configuration Protocol) です。

CURRENT DNS 名前 → IP

確認問題:DNSの仕組みを理解できたか確認しよう

最後に3問の確認問題へ挑戦しましょう。

QUESTION 01

DNSの主な役割として適切なものはどれですか?

正解:B

DNSはドメイン名とIPアドレスなどの情報を対応付けます。 Webアクセスでは名前から通信先IPアドレスを調べるために利用されます。

QUESTION 02

ドメイン名とIPv4アドレスを対応付ける代表的なDNSレコードはどれですか?

正解:A

Aレコードはドメイン名とIPv4アドレスを対応付けます。 IPv6アドレスとの対応にはAAAAレコードが利用されます。

QUESTION 03

DNSの階層をたどる順序として適切なものはどれですか?

正解:C

DNSリゾルバは必要に応じて、 ルートDNSからTLD DNS、 さらに対象ドメインの権威DNSへと 情報をたどります。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

今回は、DNSによる名前解決の仕組みについて解説しました。

01

DNSは ドメイン名とIPアドレスなどを対応付ける仕組み

02

Webアクセスでは、 DNSによって名前から通信先IPアドレスを調べる

03

DNSは階層構造になっており、 ルートDNS → TLD DNS → 権威DNS と情報をたどる

04

AレコードはIPv4、AAAAレコードはIPv6 との対応に利用される

05

DNSなどを利用するために必要なネットワーク設定を 自動配布する仕組みとして 次にDHCPを学習する

NEXT LESSON

次は「DHCPとは?IPアドレス自動割り当ての仕組み」を学びましょう

DNSを利用するにはDNSサーバーの情報が必要で、 ネットワーク通信にはIPアドレスやサブネットマスク、 デフォルトゲートウェイなどの設定も必要です。 次は、それらのネットワーク設定を端末へ自動的に配布する DHCPの仕組みを学習します。

次のレッスンへ進む
NETWORK BEGINNER

ネットワーク初級の学習一覧へ戻る

他のレッスンを確認したい場合は、 ネットワーク初級講座の一覧ページへ戻りましょう。

ネットワーク初級講座へ戻る
目次