DNSとは何ですか?ドメインネームシステム入門 – システム設計 06

システム設計-システム設計 06-システム設計コンポーネント-DNS とは-hogantech-hoganblab

DNSの起源

まず、例として携帯電話を使用します。各連絡先は一意の携帯電話番号を持っています。今日友達に電話する必要がある場合は、電話番号を入力するだけで電話をかけることができます。しかし、連絡先の数が増えると、すべての電話番号を覚えておくことは不可能になるため、電話をかける必要があるときは、該当する連絡先情報を見つけるだけで済むように、携帯電話にアドレス帳を保存します。 . 電話をかけることができます。

情報分野では、コンピューターは IP アドレスを連絡先番号として使用します (例: 140.112.0.0)。 それはただのIPアドレスです。私たちは IP アドレスを使用して、コンピューター上でホストされている Web サイトにアクセスできます。ただし、前の例と同様に、数字で構成される IP アドレスが多数あると人間が識別するのは不便なので、ドメイン名が使用されます。例えば:Google COM これは Google の Web サイトであり、対応する IP は 142.250.191.78 です。 IP アドレスとドメイン名を記録するアドレス帳のような場所も必要です。

DNSとは何ですか?

ドメイン ネーム システム (DNS) は、人間が判読できるドメイン名を機械が判読できる IP アドレスにマッピングするインターネット ネーム サービス (ドメイン ネーム システム) です。Google COM 対応する IP は 142.250.191.78 です。ユーザーがブラウザにドメイン名を入力すると、ブラウザは DNS を通じてドメイン名を IP アドレスに変換する必要があります。必要な IP アドレスが取得されると、ユーザーのリクエストがターゲット サーバーに転送されます。

知っておくべきDNS用語

ネームサーバー

実際、DNS は単一のサーバーではなく、多数のサーバーで構成されるブロックであり、ユーザーのクエリに応答する DNS サーバーはネームサーバーと呼ばれます。

リソースレコード

DNS データベースには、ドメイン名と IP アドレスのマッピングがリソース レコードの形式で保存されます。 RR は、ユーザーがネームサーバーに要求する情報の最小単位であり、さまざまな種類のリソース レコードがあります。ここでは、読者に参照を提供するために、次のさまざまなリソース レコードを提供します。

システムデザイン06テーブル

キャッシュ(キャッシング

DNS は、さまざまなキャッシュ層を使用して、ユーザー要求の待ち時間を短縮します。キャッシュは、グローバル インターネット全体からのクエリに対応する必要があるため、DNS の負担を軽減する上で重要な役割を果たします。

階層

DNS ネーム サーバーは階層構造になっています。サイズとクエリ負荷が増加し続けるにつれて、階層構造により DNS は高度にスケーラブルになります。

DNSはどのように機能するのでしょうか?

AWS の図と説明

最初に提供される AWS 次にイラストと原文の説明を固有名詞とともに説明します。

システムデザイン-06-DNSとは
  1. ユーザーが Web ブラウザを開き、アドレス バーに入力します。 www.example.comを選択し、Enter キーを押します。
  2. www.example.com 要求は DNS リゾルバーにルーティングされます。DNS リゾルバーは通常、ケーブル インターネット プロバイダー、DSL ブロードバンド プロバイダー、企業ネットワークなどのユーザーのインターネット サービス プロバイダー (ISP) によって管理されます。
  3. ISP の DNS リゾルバーは、 www.example.com リクエストは DNS ルート ネーム サーバーに転送されます。
  4. ISP の DNS リゾルバーが再び転送する www.example.com 今度は、リクエストは .com ドメインの TLD ネーム サーバーの 1 つに転送されます。 .com ドメインのネーム サーバーは同じものを使用します 例.com ドメインに関連付けられた 4 つの Amazon Route 53 ネームサーバーの名前がリクエストに応答します。
  5. ISP の DNS リゾルバーは Amazon Route 53 ネームサーバーを選択し、 www.example.com リクエストはこのネームサーバーに転送されます。
  6. Amazon Route 53 ネームサーバーは次の場所にあります。 例.com ホスティングエリアで検索 www.example.com レコードを取得し、関連する値 (たとえば、Web サーバー 192.0.2.44 の IP アドレス) を取得し、その IP アドレスを DNS リゾルバーに返します。
  7. ISP の DNS リゾルバーは、最終的にユーザーが必要とする IP アドレスを取得します。パーサーはこの値を Web ブラウザーに返します。 DNS リゾルバーも 例.com IP アドレスは、次回誰かが表示するときのために指定した期間キャッシュ (保存) されます。 例.com より速く応答できます。詳細については、「生存時間 (TTL)」を参照してください。
  8. Web ブラウザは、DNS リゾルバーから取得した IP アドレスにリクエストを送信します。 www.example.com リクエスト。たとえば、コンテンツは、Amazon EC2 インスタンス上で実行されている Web サーバー、または Web サイトのエンドポイントとして構成された Amazon S3 バケットである可能性があります。
  9. 192.0.2.44 にある Web サーバーまたはその他のリソースは、 www.example.com Web ページは Web ブラウザに返され、Web ブラウザはそのページを表示します。

DNS階層

前述したように、DNS はリクエストを受け入れ、ユーザーのクエリに応答する単一のサーバーではなく、さまざまな階層のネーム サーバーを持つ大規模なシステムに結合された多数のサーバーで構成されています。

DNS階層4種類のサーバー

DNSリゾルバー(Rソルバー)

パーサーは、クエリ文字列をクエリ シーケンスに変換し、リクエストを他の DNS ネーム サーバーに転送するために使用されます。通常、DNS リゾルバー自体はユーザーのネットワーク上に存在します。

ルートレベルのネームサーバー (ルートレベルのネームサーバー)

これらのサーバーはローカル サーバーからリクエストを受け取ります。ルート ネーム サーバーは、トップレベル ドメインに基づいてネーム サーバーを維持します。たとえば.com、.edu、.us などたとえば、ユーザーがリクエストしたとき、 教育.io 、ルート ネーム サーバーは、.io ドメインの IP アドレスを保持するトップレベル ドメイン (TLD) サーバーのリストを返します。

トップレベルのドメインサーバー

これらのサーバーには、権威ネーム サーバーの IP アドレスが保存されます。クエリを行う当事者には、組織の権威サーバーに属する IP アドレスのリストが提供されます。

権威ネームサーバー (権威ネームサーバー

これらは、Web サーバーまたはアプリケーション サーバーの IP アドレスを提供する、いくつかの大企業の DNS ネーム サーバーです。

反復的および再帰的なクエリ

DNS クエリを実行するには 2 つの方法があります。CloudFlare の簡略化された DNS フローチャートもここに添付されています。よく見ると、AWS のチャートと非常に似ていることがわかります。

反復クエリ

ローカル サーバーは、ルート サーバー、トップレベル ドメイン ネーム サーバー (TLD)、および権威ネーム サーバー (権威ネーム サーバー) に IP アドレスを要求します。

再帰クエリ

エンドユーザーがローカルサーバーを要求します。ローカル サーバーはさらに、ルートレベルのネーム サーバーを要求します。ルートレベルのネームサーバーはリクエストを他のネームサーバーに転送します。

システム設計-06-DNSの仕組み

キャッシュ

キャッシュとは何ですか?キャッシュとは、頻繁に要求されるデータを特定の場所に保存し、必要なときにすぐに取得できるようにすることを指します。

DNS にもキャッシュが存在します。キャッシュを使用すると、ユーザーの応答時間が大幅に短縮され、ネットワーク トラフィックが軽減され、DNS インフラストラクチャに対する大規模なクエリの負担も軽減されます。キャッシュは、ブラウザ、オペレーティング システム、ユーザーのネットワーク内のローカル ネーム サーバー、または ISP の DNS リゾルバーでも確認できます。

分散型システムのDNS

前回の記事では、分散システムの概念を紹介し、優れたソフトウェア システムの特徴も紹介しました。それでは、抽象化、機能、要件に関連する DNS の部分について話しましょう。

実際、DNS 自体は分散システムであり、これらの分散機能には次の利点があります。

  1. これにより、単一障害点 (SPOF) になることが回避されます。
  2. クエリの待ち時間が短くなるため、ユーザーは近くのサーバーから応答を取得できます。
  3. メンテナンスやアップデートまたはアップグレードの際に、より高い柔軟性を実現します。たとえば、1 つの DNS サーバーに障害が発生したり過負荷になった場合、別の DNS サーバーがユーザーのクエリに応答できます。

ここでは、DNS がスケーラビリティ (Scalability)、信頼性 (Reliability)、一貫性 (Consistency) をどのように向上させるのかについても説明します。

スケーラビリティ

DNS は拡張性の高いシステムです。によると クラウドフレア この記事によると、現在世界には 13 のルートレベルのネーム サーバーがあり、これらのルート サーバーからコピーされた追加のインスタンスがユーザーのクエリを処理するために世界中に分散されています。これらのリクエストは、TLD サーバーとルート サーバーに分散されてクエリが処理され、最終的には大企業自体が管理する権限のあるサーバーに分散されて、システム全体が適切に機能するように維持されます。

信頼性

キャッシュ

キャッシュはブラウザ、オペレーティング システム、ローカル ネーム サーバーで行われ、ISP DNS リゾルバーも頻繁にアクセスされるサービスの豊富なキャッシュを維持します。一部の DNS サーバーが一時的にダウンした場合でも、キャッシュ レコードが提供されるため、DNS は信頼できるシステムになります。

サーバーレプリケーション

DNS は、世界中の各レプリカ サーバーを体系的に複製して、ユーザー要求の処理における遅延を削減し、システム全体の信頼性を向上させます。

一貫性

DNS はさまざまなプロトコルを使用して、階層内の複製されたサーバー間で情報を更新および転送します。 DNS は、高いパフォーマンスを実現するために一貫性を犠牲にします。 DNS データベースからのデータの読み取りは、書き込みよりも頻繁に行われるためです。ただし、DNS は結果整合性を提供し、複製されたサーバー上のレコードの更新を遅らせます。

一貫性は、前述のキャッシュ メカニズムによっても影響を受けます。権限サーバーは組織内に配置されているため、組織内でサーバー障害が発生した場合、権限サーバー上の一部のリソース レコードが更新される可能性があります。その結果、デフォルト/ローカルおよび ISP サーバー上のキャッシュ レコードが古くなる可能性があります。この問題を軽減するために、各キャッシュ レコードには有効期限 (TTL) と呼ばれる有効期限が設定されています。

追記

この記事は前の記事とは大きく異なります システム設計コンポーネントの構成要素の概要 – システム設計 05 時間がかかりましたが、これは主に DNS の原理を理解するのに多くの時間を費やしたためです。また、DNS は面接でも日常業務でも知っておく必要がある必須の知識であると考えているため、多くのスペースを費やして説明しました。深さ。

将来的により大きなトピックになる場合は、多くの紙面を割いて説明するつもりです。読んでいただきありがとうございます。

引用

DNS 設計: スケーラビリティ、パフォーマンス、堅牢性

Cloudflare: DNS ルートサーバーとは何ですか?

AWS: DNS とは何ですか?

IBM: DNS プロトコルとは何ですか?

関連記事

システム設計コンポーネントの構成要素の概要 – システム設計 05

封筒の裏の計算 – システム設計 04

ソフトウェア設計の非機能的特徴 – システム設計 03

システム設計における抽象化の適用 – システム設計 02

最新システム設計入門 - システム設計 01

ja日本語