はじめに
タイトルにもなっている「ネットワークはなぜつながるのか」を説明することができるようになるために、本書を読みました。
本記事では、その中でもデータ送信前の準備であるDNSについてピックアップし、自分なりに整理しながらまとめていきます。
DNSサーバー
DNSサーバーとは、ドメイン名とIPアドレスの対応関係を管理するサーバーです。
Webページにアクセスする際などに、ドメイン名から対応するIPアドレスを取得するために利用されます。
Webページ表示までの流れ
ここでは、Webページ表示するまでの流れを簡単に整理し、その中でDNSサーバーが果たす役割について見ていきます。
- ユーザーがURLを入力する
- ブラウザが入力されたURLからドメイン名を抽出する
- 例:
https://example.com/page1
の場合、ドメイン名であるexample.com
を抽出する
- 例:
- ブラウザがDNSサーバーに対して、ドメイン名の名前解決(IPアドレスの問い合わせ)を行う
- DNSサーバーからIPアドレスの応答を受け取る
- ブラウザが取得したIPアドレスを使ってWebサーバーに接続する
- ブラウザがWebページのデータを取得し、画面に表示する
ドメインの階層化
ドメイン名の数が膨大であるため、すべてのドメイン情報を1台のDNSサーバーに登録することは現実的ではありません。
そのため、DNSでは複数のDNSサーバーが階層構造を成し、それぞれの役割を分担しながら連携しています。
DNSは以下のような階層で構成されています:
- ルートDNSサーバー:すべてのドメイン名解決の起点となる最上位のDNSサーバー
- TLD DNSサーバー:トップレベルドメインを管理するDNSサーバー
- 権威DNSサーバー:特定のドメインに関する最終的な情報を持つDNSサーバー
ドメイン名とIPアドレスとの対応の管理方法
DNSでは、あるドメインの情報を管理しているDNSサーバーの場所(IPアドレス)は、そのドメインの1つ上の階層にあたるDNSサーバーに登録されています。
例えば、.com
のDNSサーバーには、sample1.com
の情報を管理しているDNSサーバーのIPアドレスが登録されており、そこに問い合わせることで www.sample1.com
のIPアドレスを取得できます。
登録のルールとして、以下の2点があります:
- 1つのドメインの情報は、1つのDNSサーバーにまとめて登録する(分割は不可)
- 例:
sample1.com
の情報(Webサーバーwww.sample1.com
やメールサーバーmail.sample1.com
など)は、sample1.com
のDNSサーバーにまとめて登録される -
www.sample1.com
だけを別のDNSサーバーに分けて登録することはできない
- 例:
- 1つのDNSサーバーには、複数のドメインを登録できる
- 例:
.com
のDNSサーバーはsample1.com
だけでなく、sample2.com
など複数のドメインを管理している -
.jp
のDNSサーバーも同様に、example1.jp
やexample2.jp
など複数のドメインを管理できる
- 例:
ルートDNS
├── .comのDNS
│ ├── sample1.comのDNS
│ │ ├── www.sample1.com(Webサーバー)
│ │ ├── mail.sample1.com(メールサーバー)
│ │ └── sub.sample1.comのDNS
│ │ ├── www.sub.sample1.com
│ │ └── mail.sub.sample1.com
│ └── sample2.comのDNS
│ ├── www.sample2.com
│ └── mail.sample2.com
│
└── .jpのDNS
├── example1.jpのDNS
│ ├── www.example1.jp
│ └── mail.example1.jp
└── example2.jpのDNS
├── www.example2.jp
└── mail.example2.jp
DNSの検索プロセス
- 最寄りのDNSサーバーへの問い合わせ
- ユーザーがドメイン名を入力すると、まず最寄りのDNSサーバーに問い合わせが行われる
- ルートDNSサーバーへの問い合わせ
- 最寄りのDNSサーバーは、ルートDNSサーバーに問い合わせを行う
- これらのルートDNSサーバーの情報は、DNSサーバーソフトをインストールした時点であらかじめ登録されている
- ルートDNSサーバーは、TLD(例:
.com
や.jp
)を管理するDNSサーバーのIPアドレスを返す
- 最寄りのDNSサーバーは、ルートDNSサーバーに問い合わせを行う
- TLDのDNSサーバーへの問い合わせ
- 最寄りのDNSサーバーは、ルートDNSサーバーから返された情報を基に、TLDのDNSサーバー(例:
.com
や.jp
)に問い合わせを行う - 該当ドメインを管理している次の階層のDNSサーバー(権威DNSサーバーなど)のIPアドレスを取得する
- 最寄りのDNSサーバーは、ルートDNSサーバーから返された情報を基に、TLDのDNSサーバー(例:
- 権威DNSサーバーへの問い合わせ
- 最寄りのDNSサーバーは、TLDからの応答に基づいて、該当ドメインのDNSサーバーに順に問い合わせを行い、最終的に目的のドメイン(例:
www.sample1.com
)のIPアドレスを取得する
- 最寄りのDNSサーバーは、TLDからの応答に基づいて、該当ドメインのDNSサーバーに順に問い合わせを行い、最終的に目的のドメイン(例:
感想
- 前回の記事では、既にIPアドレスが分かっている前提で、どのようにデータが相手に届くのかを学びましたが、今回は、そのIPアドレスを「どのように取得するのか」を理解できました。
- 一冊を通して学習には時間がかかりましたが、ネットワークの全体像を把握でき、以前よりも自信を持って説明できるようになったと感じています。