DNSプロトコル解析原理

0. 序文

Web サイトへの正常なアクセスを保証するために、ドメイン名解決プロトコル (DNS) はその背後で実際に多くの努力を払っています。この記事では、DNS プロトコルの原理を徹底的に説明し、私たちが毎日アクセスする Web サイトがどのように機能するかを理解します。 。

ここに画像の説明を挿入

1.DNSプロトコルとは何ですか

DNS プロトコルを学ぶ前に、ドメイン名と IP アドレスの 2 つの概念を区別してみましょう。

  • IP アドレス: ネットワーク上のコンピュータを一意に識別する長い数字の文字列
  • ドメイン名: ネットワーク ドメインとも呼ばれる、インターネット上の特定のコンピュータまたはコンピュータ グループの名前で、ドットで区切られた名前の文字列で構成されます。

www.baidu.com など、データ送信中のコンピュータの位置識別 (地理的な位置を指す場合もあります)

ドメイン名と URL の概念を混同する学生がいるかどうかはわかりませんが、URL にはドメイン名が含まれていると理解できます。例: www.gitee.com/veal98 は URL、www.gitee.com はドメイン名です。

IP アドレスには、覚えるのが不便で、アドレス組織の名前や性質を表示できないという欠点があるため、人々はドメイン名を設計し、ドメイン名解決プロトコル (DNS) を通じてドメイン名と IP アドレスを相互にマッピングしてきました。 、ドメイン ネーム システム)、人々にとってより便利になります。マシンが直接読み取ることができる IP アドレスの文字列を覚えていなくても、インターネットにアクセスできます。ドメイン名を IP アドレスにマッピングすることを順方向解決と呼び、IP アドレスをドメイン名にマッピングすることを逆方向解決と呼びます。

DNS プロトコルは送信に UDP または TCP を使用でき、使用されるポート番号は 53 です。ただし、ほとんどの場合、DNS は UDP を使用して転送されます。

2. ドメイン名の詳細

❓ では、ドメイン名の定義と管理は誰が担当するのでしょうか? 気軽に書けないの?

ドメイン名の世界最高管理機関は、米国カリフォルニア州に本部を置く ICANN (Internet Corporation for Assigned Names and Numbers) という組織です。ICANN は、世界中のドメイン名システムの運用を管理しています。

ここに画像の説明を挿入

実際のドメイン名は、上から下へ、ルート ドメイン名、トップ レベル ドメイン名 (トップ レベル ドメイン、TLD)、第 2 レベル ドメイン名、(サード レベル ドメイン名) という階層構造を持っています。

ここに画像の説明を挿入

①トップレベルドメイン名

最上位のドメイン名であるトップレベル ドメイン (TLD) から始めましょう。簡単に言えば、URL の最後の部分です。たとえば、Web サイト www.baidu.com のトップレベル ドメイン名は .com です。ICANN の仕事の主要な部分は、どの文字列をトップレベル ドメインとみなせるかを定義することです。2015 年 7 月の時点で、トップレベル ドメインは 1058 あり、大きく 2 つのカテゴリに分類できます。

  • 1 つのカテゴリは、.c​​om、.net、.edu、.org、.xxx などの汎用トップレベル ドメイン (gTLD) です。合計で 700 以上あります。
  • もう 1 つは国のトップレベル ドメイン名 (ccTLD) で、.cn (中国)、.io (英領インド洋準州)、.cc (ココス諸島)、.tv (ツバル) など、さまざまな国と地域を表します。など、合計300以上。

もちろん、これらのトップレベル ドメインを管理する方法がないため、ICANN が単独で管理することはありません。考えてみると、トップレベルドメイン名は1,000以上あり、それぞれのトップレベルドメイン名の下にはたくさんの卸業者が存在し、それぞれを管理しなければならないとなると大変です。ICANN のポリシーでは、各トップレベル ドメインには、そのドメインのあらゆる側面に責任を負うホスティング担当者がいます。ICANN は管理者のみに連絡するため、管理が非常に簡単になります。たとえば、.cn ccTLD の管理者は中国インターネット ネットワーク インフォメーション センター (CNNIC) であり、.cn ドメイン名のさまざまなポリシーを決定します。

②セカンドレベルドメイン名

セカンド レベル ドメイン名 (セカンド レベル ドメイン、SLD) は、一般的なトップレベル ドメイン名または国のトップレベル ドメイン名では異なる意味を持ちます。

  • gTLD に基づく第 2 レベルのドメイン名は、通常、yahoo.com などのドメイン名登録者が選択したオンライン名を指します (商業組織は通常、独自の商標、商号、またはその他の商業標識を独自のオンライン名として使用します。 baidu.com として)
  • 国内トップレベルドメイン名の下にあるセカンドレベルドメイン名:一般に、登録者のカテゴリーや機能を示す、一般のトップレベルドメイン名と同様の記号を指します。たとえば、.com.cn ドメイン名構造では、.com は国のトップレベル ドメイン名 .cn の下に配置される第 2 レベル ドメイン名になり、中国の営利組織などを表します。

第 3 レベル ドメイン名は、www.baidu.com のような第 2 レベル ドメイン名のサブドメイン名とみなせるドメイン名で、ドメイン名に が 2 つ含まれるのが特徴です。ドメイン名の所有者/ユーザーにとって、第 3 レベルのドメイン名は、別料金なしで第 2 レベルのドメイン名の付属物となります。第 3 レベルのドメイン名はドメイン名とも言えず、一般にドメイン名の下にある「第 2 レベルのディレクトリ」と呼ばれます。

③ルートドメイン名

❓ では、ルート ドメイン名はどこにあるのでしょうか? ルートドメイン名は階層の最上位ではないでしょうか? ドメイン名にそれが表示されないのはなぜですか?

ICANN はすべてのトップレベル ドメイン名を管理するため、最上位のドメイン名ノードであり、ルート ドメイン名 (ルート ドメイン) と呼ばれます。場合によっては、www.xxx.com が www.xxx.com. と書かれることがあります。つまり、最後に余分なドットが追加されます。この点がルート ドメイン名です。

ここに画像の説明を挿入

理論上、すべてのドメイン名クエリでは、最初にルート ドメイン名をクエリする必要があります。これは、特定のトップレベル ドメイン名がどのサーバーによって管理されているかを知ることができるのはルート ドメイン名だけであるためです。実際、ICANN がトップレベル ドメイン名と対応するホスティング プロバイダーを記録するリスト (ルート ドメイン名リスト) を維持しているのは事実です。

ここに画像の説明を挿入

たとえば、abc.xyz にアクセスしたい場合は、まずルート ドメイン名のリストを尋ねる必要があります。そうすると、.xyz ドメイン名が CentralNic 社によってホストされていることがわかります。ルート ドメイン リストには、.google が Google によってホストされている、.apple が Apple によってホストされている、なども記録されます。

ルート ドメイン名のリストはめったに変更されないため、ほとんどの DNS サービス プロバイダーはそのキャッシュを提供するため、ルート ドメイン名のクエリは実際にはそれほど頻繁ではありません。

3. ドメインネームサーバーの詳細

ドメイン ネーム サーバーは、ドメイン名を管理するホストおよび対応するソフトウェアを指し、サーバーが配置されているドメインに関する情報を管理できます。ドメイン ネーム サーバーが担当する層はゾーン (ZONE) と呼ばれます。ドメイン名の各層にはネーム サーバーがあります。

  • ルートネームサーバー
  • TLDサーバー
  • 権威ネームサーバー

次の図は非常に直感的です。

ここに画像の説明を挿入

上記の 3 つの DNS サーバーに加えて、DNS 階層には含まれていませんが、非常に重要なもう 1 つの DNS サーバー、つまりローカル ドメイン ネーム サーバーがあります。これら 4 つのサーバーが何に使用されるかを説明しましょう。

①ルートドメインネームサーバー

上で述べたように、ICANN はトップレベル ドメイン名と対応するホスティング プロバイダーを記録するルート ドメイン名リストを管理しています。実際、ルート ドメイン名リストの正式名称は DNS ルート ゾーン (DNS ルート ゾーン) です。 DNS ルート ゾーン ファイルを保存するサーバーであり、DNS ルート ドメイン ネーム サーバー (ルート ネーム サーバー) と呼ばれます。ルート ドメイン ネーム サーバーは、すべてのトップレベル ドメイン ネーム サーバーのアドレスを保持します。

以前の DNS クエリの結果は 512 バイトの UDP パケットであるため。このパッケージには最大 13 台のサーバーのアドレスを含めることができるため、世界中に 13 台のルート ドメイン ネーム サーバーがあり、a.root-servers.net から m.root-servers.net までの番号が付けられることが規定されています。このうち 10 か所は米国にあり、オランダ、スウェーデン、日本に 1 か所ずつあります。

前に述べたように、理論上、すべてのドメイン名クエリは最初にルート ドメイン名をクエリする必要があるため、一般的に言えば、すべてのドメイン ネーム サーバーはルート ドメイン ネーム サーバーの IP アドレスのキャッシュを登録し、必要に応じてルート ドメイン ネーム サーバーにリクエストを送信します。

②トップレベルドメインネームサーバー

トップレベル ドメイン名を管理するルート ドメイン ネーム サーバーのロジックによれば、トップレベル ドメイン ネーム サーバーは、トップレベル ドメイン名の下に登録されているすべてのセカンド レベル ドメイン名を管理し、IP アドレスを記録するために使用されることは明らかです。これらの第 2 レベルのドメイン名のアドレス。

③ 権威ドメインネームサーバー

上記のロジックによれば、権威ドメイン ネーム サーバーは、第 2 レベルのドメイン名の下に登録されているすべての第 3/第 4 レベルのドメイン名を管理する必要がありますが、これは当てはまりません。第 4 レベルのドメイン名はドメイン ネーム サーバーに対応します。ドメイン名には多数のサーバーが存在するため、この問題を解決するにはパーティショニングを使用する必要があります。この場合、権限のあるドメイン ネーム サーバーは、「ゾーン」の管理を担当するドメイン ネーム サーバーになります。

❓ 地区とは何ですか? エリアをどう分けるか?

地区とドメインは実際には異なり、地区はさまざまな方法で分割できます。Baidu を例に挙げると、fanyi.baidu.com、ai.baidu.com、tieba.baidu.com の 3 つの第 3 レベル ドメイン名があると仮定します。このように分割できます。fanyi.baidu.com とtieba.baidu.com は baidu.com 認定ドメイン ネーム サーバーに配置され、ai.baidu.com は ai.baidu.com 認定ドメイン ネーム サーバーに配置されます。また、baidu.com 権威ドメイン ネーム サーバーと ai.baidu.com 権威ドメイン ネーム サーバーは同じステータスを持ち、具体的な区分はドメイン名の数と訪問数に応じて Baidu によって決定されます。

直感的に理解できるように絵を描きます。

ここに画像の説明を挿入

④ ローカルドメインネームサーバー

上記の 3 つの DNS サーバーに加えて、DNS 階層には含まれていませんが、非常に重要なもう 1 つの DNS サーバーがあります。それは、ローカル ドメイン ネーム サーバー (権威ドメイン ネーム サーバーとも呼ばれます) です。ローカル ドメイン ネーム サーバーは、コンピュータ解決のための既定のドメイン ネーム サーバー、つまりコンピュータに設定されている優先 DNS サーバーと代替 DNS サーバーです。一般的なものは、China Telecom、China Unicom、Google、Ali などのローカル DNS サービスです。

ここに画像の説明を挿入

各インターネット サービス プロバイダーや大学、さらには大学の各学部がローカル ドメイン ネーム サーバーを持つことができます。ホストが DNS クエリ要求を送信すると、クエリ要求メッセージはホストのローカル ドメイン ネーム サーバーに送信されます。ローカル ドメイン ネーム サーバーは、ローカル ドメイン名の解決とマッピングを管理し、上位レベルのドメイン ネーム サーバーに問い合わせることができます。

では、特定のローカル ドメイン ネーム サーバーはどのようにしてクエリ要求を上位レベルのドメイン ネーム サーバーに転送するのでしょうか?

4.DNSクエリ方式

2 つの具体的な DNS クエリ方法があります。

  • 再帰クエリ
  • 反復クエリ

いわゆる反復とは、リクエストの受信者がリクエストされたコンテンツを知らない場合、受信者がリクエスタとして機能し、必要なコンテンツが取得されるまで関連リクエストを発行し、その後コンテンツを元のリクエスタに返すことを意味します。

平たく言えば、再帰的クエリでは、A が B を要求した場合、要求の受信者である B は A に望む回答を提供する必要がありますが、反復クエリでは、受信者 B が要求者が要求した正確な回答を持っていない場合を意味します。 A コンテンツの場合、受信者 B は要求者 A にこのコンテンツの取得方法を伝えますが、要求者自身は要求を送信しません。

一般に、ドメイン ネーム サーバー間のクエリでは、ルート ドメイン ネーム サーバーへの過剰な負荷を避けるために反復クエリ方式が使用されます。次の2つの図を見るとよくわかります

1) 再帰クエリ:
ここに画像の説明を挿入

2) 反復クエリ:
ここに画像の説明を挿入

5. ドメインのキャッシュ

上記はドメインネームサーバー間のDNSクエリ要求プロセスですが、実際には、いつでもインターネットをサーフィンしたいネットユーザーは無数に存在するため、毎回ローカルドメインネームサーバーにアクセスしてIPアドレスを取得するのは明らかに非現実的です。 。解決策は、キャッシュを使用してドメイン名と IP アドレスのマッピングを保持することです。

コンピューター内の DNS レコードには、ブラウザー キャッシュとオペレーティング システム キャッシュという 2 つのローカル キャッシュ方法があります。

1) ブラウザのキャッシュ: ブラウザは Web サイトのドメイン名の実際の IP アドレスを取得した後、ネットワーク リクエストの損失を減らすためにそれをキャッシュします。各ブラウザには固定の DNS キャッシュ時間があり、Chrome の有効期限は 1 分であり、この期間内に DNS は再リクエストされません。

2) オペレーティング システム キャッシュ: オペレーティング システム キャッシュは、実際にはユーザーが構成したホスト ファイルです。たとえば、Windows 10 のホスト ファイルは C:\Windows\System32\drivers\etc\hosts に保存されます。

ここに画像の説明を挿入

Windows システムでは、デフォルトで DNS キャッシュ サービスが有効になっており、サービス名は DNSClient で、一般的に使用されるドメイン名をキャッシュできます。

ここに画像の説明を挿入

コマンド ipconfig/displaydns を使用して、コンピューターにキャッシュされているドメイン名を確認します。

ここに画像の説明を挿入

⭐ ブラウザでアクセスする場合、最初にブラウザのキャッシュが照会されます。ミスがある場合は、引き続きオペレーティング システムのキャッシュが照会され、最後にローカル ドメイン ネーム サーバーが照会されます。その後、ローカル ドメイン ネーム サーバーが再帰的に照会されます。ドメイン名レコードを検索し、最終的に結果を返します。ホストとローカル ドメイン ネーム サーバー間のクエリ方法は再帰的クエリです。つまり、ホストがローカル ドメイン ネーム サーバーを要求すると、ローカル ドメイン ネーム サーバーは要求の受信者としてホストにそれが望む答え。

6. ドメイン名解決プロセスを完了する

ドメイン名サーバー間の DNS クエリ要求プロセスと、上で説明したドメイン名キャッシュを組み合わせることで、ドメイン名解決プロセス用の完全な DNS プロトコルが完成します。ここでは例として前方解決を取り上げます (ドメイン名が IP アドレスに解決されます)。

1) まずブラウザの DNS キャッシュを検索し、キャッシュ内にドメイン名と IP アドレスの対応表を保持します。

2) ヒットがない場合は、オペレーティング システムの DNS キャッシュの検索を続けます。

3) それでもヒットしない場合、オペレーティング システムはドメイン名をローカル ドメイン ネーム サーバーに送信し、ローカル ドメイン ネーム サーバーは独自の DNS キャッシュにクエリを実行し、検索が成功した場合は結果を返します (注:ホストとローカル ドメイン ネーム サーバー間のクエリ方法は再帰クエリです)。

4) ローカル ドメイン ネーム サーバーの DNS キャッシュがヒットしない場合、ローカル ドメイン ネーム サーバーは上位のドメイン ネーム サーバーにクエリを実行し、次の方法で反復クエリを実行します (注: ローカル ドメイン ネーム サーバー間のクエリ方法他のドメイン ネーム サーバーは、ルート ネームサーバーに負荷がかかるのを防ぐための反復クエリです)。

まず、ローカル ドメイン ネーム サーバーがルート ドメイン ネーム サーバーへの要求を開始します。ルート ドメイン ネーム サーバーは最上位です。ドメイン名に対応する IP アドレスを直接示すのではなく、最上位のアドレスを返します。ドメイン ネーム サーバー。答えを見つけるためにここに行かせてください。ローカル ドメイン ネーム サーバーは、トップレベル ドメイン ネーム サーバーのアドレスを取得した後、権限のあるドメイン ネーム サーバーの
アドレスを取得するためのリクエストを開始します。
ドメイン名に対応する IP アドレス
4) ローカルドメインネームサーバーは取得した IP アドレスをオペレーティングシステムに返すと同時に、自身で IP アドレスをキャッシュします

5) オペレーティング システムは IP アドレスをブラウザに返し、同時に IP アドレス自体をキャッシュします。

6) ここまでで、ブラウザはドメイン名に対応する IP アドレスを取得し、その IP アドレスをキャッシュしました。

次の図を見ると直感的に理解できます。

ここに画像の説明を挿入

7. パブリックドメインの名前解決資格

パブリックネットワークのドメイン名解決にはドメイン名登録事業者の許可が必要です。関連法規制については「インターネットドメイン名管理対策」を参照してください。

おすすめ

転載: blog.csdn.net/qq_32907491/article/details/131715986