1. DNS クエリプロセス:
www.baidu.com へのクエリを例に挙げます
(1) コンピューターは www.baidu.com を解決するリクエストをローカル ドメイン ネーム サーバーに送信します
(2) ローカル ドメイン ネーム サーバーはリクエストを受信した後、まずローカル キャッシュをクエリします (見つかった場合)。クエリ結果が直接返されます。そのようなレコードがない場合、ローカル ドメイン ネーム サーバーは www.baidu.com へのリクエストをルート ドメイン ネーム サーバーに送信します
(3) リクエストを受信した後、ルート ドメイン ネーム サーバーは.com ドメインのサーバー IP アドレスをローカル ドメイン ネーム サーバーに返します
(4) ローカル ドメイン ネーム サーバーは .com サーバーに接続し、ドメイン名 www.baidu.com を解決するように要求します。サーバーは、baidu.com サーバーの IP アドレスをローカル DNS サーバーに返します
(5) ローカル DNS サーバーは、baidu.com サーバーにリクエストを送信します。ドメイン名解決リクエストを送信すると、baidu.com サーバーはwww.baidu.com の IP アドレスをローカル DNS サーバーに送信
(6) ローカル DNS サーバーは、www.baidu.com の IP アドレスをコンピューターに返します。
2. ドメイン名と IP アドレスの対応:
ドメイン名は複数の IP アドレスに対応できますが、同時に、ドメイン名は 1 つの IP アドレスのみを持つことができ、1 つの IP アドレスは複数のドメイン名に対応できます。
3. DNS のクエリ
Python は、順方向および逆方向の DNS クエリを実装できます。以下は、 前方クエリのコードです:
ドメイン名には複数の IP アドレスを含めることができるため、上記のプログラムを 2 回実行すると結果が異なる場合があります。
プログラムを実行します:
逆クエリ:
プログラムを実行します