テクノロジー
2022年7月22日ドメイン / DNSサーバとは
ドメインとはなにかを理解する / DNSサーバのはたらきを理解する
目次
1. Webとは
2. Webを支えるクライアント / サーバとは
3. HTTPとは
4. URL / HTTPメソッドとは
5. Webアプリケーションとは
6. IPアドレスとは
7. TCP/IPとは
8. ドメイン / DNSサーバとは
9. ポート番号とは
10. 代表的なプロトコル
11. Webアプリケーションを支えるサーバの種類
*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。
ゴール
- ドメインとはなにかを理解する
- DNSサーバのはたらきを理解する
ドメインとはなにか
ドメインとは、インターネット上のサーバの住所であるIPアドレスを 人間にわかりやすい言葉(文字列) で表現したものです。
172.217.175.4
と書いても、どこのアドレスかわかりませんが google.com
または、www.google.com
と書くことでどこのアドレスかが認識できるようになります。
ドメイン名は、国際非営利組織であるICANN(Internet Corporation for Assigned Names and Numbers)に認定された民間組織のレジストラに申請して登録する必要があります。
この登録名は、ICANNによって調整され、世界中で重複することのない名前になります。
ドメインについてGoogleのURLを例に、もう少し詳しくみていきましょう。
www.google.com
というURLのことを、正式には 完全修飾のドメイン名(FQDN) といいます。
FQDNは、一つのホスト(サーバ)を認識するのに使用します。
また、FQDNは、次のように分けることができます。
www
:ホスト名(サーバの種類別に指定する名前(省略することも可能))google.com
:ドメイン名(サーバグループ(ゾーン)を表現する名前、または標準サーバ名(ホスト省略時))
一般的に www(World Wide Web)
は、標準的なWebサーバのホスト名として使用されます。
FQDNは、サーバの目的に応じて次のように設定できます。このとき、同じドメインのFQDNは、ドメインのゾーン情報として管理されます。
それぞれのFQDNに対して、住所であるIPアドレスをそれぞれ対応付けることで、ドメイン名はIPアドレスに変換できるようになります。
[google.comゾーン]
FQDN名 | 目的 | IPアドレス |
---|---|---|
google.com | Google検索サイトの標準サーバ用 | 142.251.42.142 |
www.google.com | Google検索サイトの標準サーバ用 | 172.217.175.68 |
news.google.com | Googleニュースサーバ用 | 172.217.175.46 |
smtp.google.com | Googleメールサーバ用 | 74.125.204.27 |
DNSサーバが存在する理由
URLでドメイン名(例えば www.google.com
)を指定して、目的のWebサーバへHTTPのリクエストを行うとき、ドメイン名のままではサーバに情報を送ることはできません。
なぜなら、国際郵便システムのTCP/IPは、ドメイン名を理解できないためです。
したがって、TCP/IPが認識できるようIPアドレスに変換してあげる必要があります。
つまり、ドメイン名とIPアドレスを紐づけて変換する仕組みが必要です。これを DNS(Domain Name System) といいます。
DNSは、クライアントコンピュータのリゾルバ(DNSクライアントアプリケーション)の要求に基づいて、ドメイン名をIPアドレスに変換する(名前解決する)役割を果たします。
このサーバ側のアプリケーションのサービスを行うのが DNSサーバになります。
DNSサーバの問い合わせの流れ
しかし、IPアドレスの数は途方もなく多いため、1台のDNSサーバですべての対応づけを記憶しておくことは不可能です。
そのため、DNSサーバは階層構造でドメインを管理することにより、複数のホストに分散して管理しています。
たとえば、DIVE INTO CODEのWebサイトにアクセスすることを例に考えます。
DIVE INTO CODEのWebサイトのURLはhttps://diveintocode.jp/
です。
DIVE INTO CODEのWebサイトのURL構成を説明します。
ドメイン名は、「.」(ドット)で区切って、右側からの階層構造になっています。
この階層構造の名前は、そのままDNSサーバの階層構造と同期します。
トップレベルドメインを管理するDNSサーバをルートDNSサーバといいます。
ルートDNSサーバは、アメリカを中心に世界中に13台設置されています。
このルートDNSサーバを最上位にして、階層的なDNSサーバの仕組みが作られています。
DNSサーバを使った処理の流れを説明します。
ブラウザのアドレス欄に上記のURLを入力してエンターキーを押すと、以下のようなやりとりが発生します。
- クライアントは、ローカルのDNSサーバに問い合わせします(①の流れ)。
- ローカルのDNSサーバに該当のゾーン情報が見つからないとき、ルートDNSサーバから順に問い合わせを行います。⑦で目的のゾーン情報が見つかり、該当のIPアドレスを取得します(②~⑦の流れ)。
- ローカルのDNSサーバは、取得したIPアドレスをクライアントに返し、クライアントは、それで目的のWebサーバにリクエストできます(⑧~⑩の流れ)。
Chromeのデベロッパーツールを使うと、DNSサーバとのやりとりにかかった時間が確認できます。
(Networkタブ > Timing)
DNSサーバに問い合わせをしてみよう
ここまでのテキストですでに体験済みですが、実際にDNSサーバにGoogleのサーバのIPアドレスを問い合わせしてみましょう。
ターミナルで以下のコマンドを実行してください。
$ nslookup www.google.com
すると、以下のような画面になるはずです。赤線部分がサーバのIPアドレスです。
Macの場合
Windowsの場合
なお、nslookup
コマンドで実行したIPアドレスの結果が上記と異なることがありますが問題ありません。Googleの利用者が多く、負荷を分散させるためにサーバを複数設置しているのです。その結果、割り振られているIPアドレスも複数になります。
www.google.com
に対応しているIPアドレスは172.217.31.132
であることがわかりました。
その証拠に、ChromeのアドレスバーにIPアドレスを入力してエンターキーを押してもGoogleにつながるはずです。
ブラウザでwww.google.com
にアクセスすると、DNSサーバがIPアドレスに変換してくれて、無事に目的のサーバにたどりつく、という仕組みになっているのです。
また、補足ですが、今後学習を進めていく中で、localhost
という名前をよく使用します。
これは、自分自身のコンピュータをあらわすドメイン名(FQDN)にあたります。
実際に、localhost
に対して、次のようにnslookup
コマンドを実施してみてください。
$ nslookup localhost
すると、127.0.0.1
というIPアドレスが返ってきます。
この127.0.0.1
というIPアドレスは、自分自身のコンピュータを指すループバックアドレス(127.0.0.1
~127.255.255.254
)というものです。
localhost
を指定すると、TCP/IPは、自分自身のコンピュータにループバックする(戻す)住所を送信します。
まとめ
- IPアドレスを人間がわかりやすいようにしたものがドメインである。
- DNSサーバは、IPアドレスとドメインの対応づけをするために存在している。
- DNSサーバは階層構造になっており、ドメインの階層ごとに問い合わせが発生する。
関連記事
次回:9. ポート番号とは
前回:7. TCP/IPとは
*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。