DNSとは何ですか? ドメインネームシステムの概要
公開: 2022-04-11あなたがあなたのコンピュータの前に座っているとき、インターネットは単純に見えます。 ブラウザを開き、ドメイン名を入力すると、画面にWebサイトが表示されます。 ただし、グラフィカルユーザーインターフェイス(GUI)の下には、ドメインネームシステム(DNS)と呼ばれるソフトウェアとサーバーの広範なネットワークがあります。 ただし、DNSとは何ですか。また、DNSはデバイスでWebを表示するのにどのように役立ちますか。
非常に多くの可動部品が関係しているため、これに対する答えは複雑です。 チェーン内のほぼすべてのリンクがサーバーを利用していることがわかります。 さらに、ページの高速読み込み速度を損なう可能性のあるボトルネックを削減するのに役立つテクニックがあります。
この投稿では、可能な限り最も簡単な方法でDNSを理解できるように支援します。 この記事で取り上げる内容を要約してみましょう。
目次
- インターネットがサーバーからブラウザにWebページを取得する方法
- Webページをフェッチしてロードする4つのDNSサーバー
- DNSリカーサーと権威ネームサーバーの違い
- DNSルックアップのしくみ
- DNSルックアップで見つかるクエリ
- DNSキャッシングの入門書
- DNSレコードに変更を加える:「伝播」
- 結論
インターネットがサーバーからブラウザにWebページを取得する方法
要約すると、DNSは、読み取り可能なドメイン名を、それが表す結果のインターネットプロトコル(IP)アドレスに変換する方法です。 これは一見簡単な作業のように見えますが、実際にはほど遠いです。
各Webサイトはサーバー上にあり、各サーバー(および実際にはコンピューター)にはIPアドレスがあります。 DNSはIPアドレスをドメイン名にマッピングするシステムであるため、ユーザーフレンドリーなブラウジングを楽しむことができます。 例えとして、通りの名前と家の住所が実際にマップ座標のセットであると考えてください。 住所を使用して、場所の経度と緯度を単純化します。

IPアドレスをドメイン名に(またはその逆に)変換する場合、これは「DNS解決」です。 このチェーンには多くのハードウェアコンポーネントがあり、具体的には4つの異なるタイプのサーバーです。 次に、これらについて説明しましょう。
Webページをフェッチしてロードする4つのDNSサーバー
すべてのDNS要求と解決は、4つのサーバーを経由します。 一言で言えば、ここにあります:
- DNSリカーサー。 これは、DNS全体の「水運搬人」です。 ブラウザからWebサイトを要求するときは、DNSでサイトを検索(または「ルックアップ」)するように再帰者に指示します。
- ルートネームサーバー。 多くのサイトを含むWebサーバーを検討する場合、ルートネームサーバーは全体を表します。 これは、IPアドレスの一般的な場所です。
- トップレベルドメイン(TLD)ネームサーバー。 Webサイトはルートネームサーバー内に存在しますが、TLDネームサーバーはIPアドレスの最後の部分であるホスト名の最後の部分を掘り起こします。 これは、.com、.net、またはその他の無数の可能性があります。
- 権威あるネームサーバー。 この複雑なサーバーを単純にするために、これはIPアドレスの参照ライブラリです。 このサーバーは完全なIPアドレスをリカーサーに送り返し、リカーサーはブラウザーにサイトを表示します。
DNSクエリは、クエリが解決される前に、これらすべての手順を複数回実行します。 そのため、チェーンにはクエリが失敗する原因となる可能性のあるポイントがたくさんあります。そのため、HTTPエラーが発生するのはなぜですか。
ただし、このチェーンの前面と背面を詳しく調べる価値はあります。 次にこれをしましょう。
DNSリカーサーと権威ネームサーバーの違い
リカーサーがクエリの結果をフェッチし、DNSプロセス全体の開始であることが理解できます。 次に、権限のあるネームサーバーがこのプロセスの結果を再帰者に返すこともわかります。 ただし、どちらにも、知っておく必要のある違いがあります。
- DNSリカーサー。 このサーバーは、DNSクエリ要求に応答します。 チェーンに沿ってDNSレコードを追跡するという点でアクティブです。 リカーサーの一般的なアプローチは他のサーバーに複数のリクエストを行うことですが、キャッシングはこの時間を削減できます。 これについては後で詳しく説明します。
- 権威あるネームサーバー。 このサーバーは、すべてのDNSレコードを保持します。 仕事は、リカーサーを含むチェーン内の他のサーバーから受信した情報に基づいて要求に応答することです。 ブラウザにウェブサイトを表示させるのはこのサーバーです。 信頼できるため、他の情報源に問い合わせてクエリを検証する必要はありません。これは真実の情報源です。
ただし、権限のあるネームサーバーはDNS要求のエンドポイントですが、常にこのようになるとは限りません。 リクエストに応じて、この時点以降に追加のネームサーバーも見つかります。
DNSクエリがサブドメイン(shop.example.comなど)に対するものである場合、信頼できるものの後に追加のネームサーバーがあることがわかります。 これにより、問題のサブドメインのCNAMEレコードが保存されます。

理論的には、クエリが要求する追加のネームサーバーの数に制限はありません。 ただし、ほとんどの場合、追加のネームサーバーは1つだけです。
DNSルックアップのしくみ
DNSルックアップとクエリを処理するサーバーは4つありますが、チェーンにはクエリを渡して結果をフェッチするステップがたくさんあります。 ルックアッププロセスの仕組みは次のとおりです。
- ブラウザにドメイン名を入力します。 [ Enter ]をクリックすると、ブラウザとオペレーティングシステム(OS)からDNSリカーサが受信するインターネットにクエリが送信されます。
- リカーサーはこのクエリをルートネームサーバーに渡し、独自のクエリを実行します。
- このクエリの結果はTLDネームサーバーになり、これがリカーサーに戻ります。
- 今回、リカーサーはTLDネームサーバーにクエリを実行します。TLDネームサーバーは、ドメインの権限のあるネームサーバーのIPアドレスで応答します。
- 再帰者は別のクエリを権限のあるネームサーバーに送信し、権限のあるネームサーバーは最初のドメインリクエストのIPアドレスで応答します。
ここから、リカーサーは作業の結果をWebブラウザーに送り返します。 これでDNSプロセスが完了し、リカーサーは数ミリ秒休止できます。 次に、ブラウザは、ブラウザにサイトを表示するためにHTTPリクエストを処理します。

(サーバーが達成できることと比較して)複雑で労働集約的なステップがたくさんあり、これは世界中で1秒間に数十億回発生します。 それでも、ルックアップ内で発生するクエリは3つだけです。
DNSルックアップで見つかるクエリ
DNSクライアントとサーバーの間には、これらの各クエリ内に関係があります。 これらは一般的な用語ですが、説明の中で詳細に注意します。
- 再帰クエリ。 このクエリでは、クライアントはDNSリカーサーが要求されたDNSレコードまたはエラーメッセージのいずれかで応答することを要求します。
- 反復クエリ。 このクエリは、再帰者に、返されるものを「最良の推測」にするための無料ライセンスを提供します。 クエリに一致するものがない場合、この「パス」がなくなるまで、結果は下位レベルの権限のあるサーバーへの参照になります。
- 非再帰的クエリ。 このクエリは、DNSレコードがキャッシュに存在する場合、または再帰者がレコードへの権限のあるアクセス権を持っている場合に発生します。 記事の終わりに向かってキャッシュについて説明します。
多くの場合、再帰クエリと非再帰クエリが最も一般的であることがわかります。 これが、エラーメッセージが表示される理由であり、ルックアッププロセスが複雑になる可能性がある理由です。
DNSキャッシングの入門書
非再帰的なクエリを処理する場合、レコードはDNSレコード専用のキャッシュに存在する可能性があります。 キャッシュについて知っている場合は、定期的にアクセスするファイルがキャッシュに含まれていることを理解できます。 ローカルアプリはこれを行うことができますが、サイトのキャッシュが最良の例です。

これにより、サイトのファイルのレコードが保持されるため、HTTPリクエストの数を抑えることができます。 DNSレコードについても同じことが可能です。 これにより、関連するレコードがコンピューターの場所に近くなり、通常よりも速くIPアドレスを取得できるようになります。
Web開発者にとって、 GET
リクエストはブラウザが発行するものです。 キャッシュを使用すると、リカーサーはチェーン内の他のサーバーを切り取り、権限のあるネームサーバーに直接移動するか、それ以上のクエリを必要とせずにサーバーを呼び出します。 これは、作成できる最も一般的な非再帰的なクエリです。
実際、インターネットサービスプロバイダー(ISP)、ルーター、ローカルコンピューターなど、複数のテクノロジにまたがるDNSキャッシュがあります。

ブラウザのキャッシュは、DNSレコードを探すリカーサの最初の呼び出しポートであることがわかります。そのため、ブラウザは多くの場合、デフォルト設定としてレコードをキャッシュします。 OSにはDNSリゾルバーもあり、これによりキャッシュのDNSレコードもチェックされます。
この場合も、OSのキャッシュ内にレコードが含まれていない場合、OSはクエリをISPリカーサーに送信して処理します。 これらのリカーサーは両方とも、完全なルックアッププロセスが実行される前に、ドメインのAレコードとNSレコードを処理して、クエリを解決しようとします。
DNSレコードに変更を加える:「伝播」
そういえば、レジストラを使用してA 、 NS 、またはCNAMEレコードに変更を加えることができます。 多くの場合、これらの変更がすべて登録されるまでに、合計で最大72時間かかります。
これはDNS伝播であり、完了するまでにかかる時間は、いくつかの要因、つまり、関連付けられたレコードの存続時間(TTL)値によって異なります。

つまり、これにより、特定のDNSレコードに対して変更が有効になる速度が決まります。 通常のTTLは約4時間で、値が高いほど、この伝播にかかる時間が長くなります。
レジストラは多くの場合、ネームサーバーのTTLを設定するため、あなたや他の人は変更を加えることができません。 これが、伝播が完了するのを待たなければならないことが多い理由であり、What's My DNS?などのサイトを常にチェックする理由です。 その進捗状況を測定するには:

解決策は、DNSレコードを変更する前に、可能な限りTTLを設定することです。 もちろん、レジストラがネームサーバーの責任を負いますが、伝播時間を短縮するためにできる限りのことを行っています。
結論
Webページへのアクセスが簡単だと思う場合は、もう一度考えてみてください。 エンドユーザーにとって、プロセスは基本的に単純です。 ただし、内部的にははるかに複雑であり、多数の追加サーバーが必要になります。
この投稿では、インターネットがドメイン名を取得してIPアドレスに解決する方法であるDNSについて説明しました。 そこから、ブラウザに戻ってWebページとしてレンダリングできます。 ただし、伝播やキャッシュなど、他の多くのプロセスも発生することがわかります。 これらを組み合わせると、高速で(ほとんど)問題のないブラウジングが可能になります。
この記事は「DNSとは何ですか?」という質問に答えると思いますか?そうでない場合は、さらに質問がありますか? もしそうなら、下のコメントセクションで質問してください!