DNSクエリ(ディエヌエスクエリ)とは | 意味や読み方など丁寧でわかりやすい用語解説
DNSクエリ(ディエヌエスクエリ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
DNSクエリ (ディーエヌエス クエリ)
英語表記
DNS query (ディーエヌエス クエリ)
用語解説
DNSクエリとは、インターネット上で人間が認識しやすいドメイン名(例: example.com)を、コンピューターが通信に利用するIPアドレス(例: 192.0.2.1)に変換するために行われる問い合わせ全般を指す。この変換処理は名前解決と呼ばれ、インターネットの基盤技術であるDNS(Domain Name System)が担う主要な機能である。ユーザーがWebサイトを閲覧したり、メールを送信したりする際に、背後で必ずDNSクエリが実行され、適切なIPアドレスが特定されることで通信が可能となる。つまり、DNSクエリは、ドメイン名を用いてインターネット上の特定のリソースにアクセスするために不可欠なプロセスである。
DNSクエリの詳細な動作を理解するには、まずDNSの基本的な構成要素を知る必要がある。DNSは、世界中に分散配置されたDNSサーバーの階層構造によって成り立っている。クライアントからの名前解決の要求を受け付けるリゾルバ(多くの場合、インターネットサービスプロバイダが提供するDNSサーバーや、Google Public DNSのようなパブリックDNSサービス)が存在し、さらにその上位には、インターネットの最上位ドメイン(ルートドメイン)の情報を持つルートDNSサーバー、.comや.orgのようなトップレベルドメイン(TLD)の情報を持つTLD DNSサーバー、そして特定のドメイン(例: example.com)の正式な情報を持つ権威DNSサーバーが存在する。
DNSクエリには主に二つの種類がある。一つは再帰クエリ(Recursive Query)であり、もう一つは反復クエリ(Iterative Query)である。再帰クエリは、クライアントがDNSサーバーに対して「指定されたドメイン名のIPアドレスを教えてほしい。もし自分で知らなければ、責任を持って探し出して最終的な答えを返してほしい」と要求する形式である。これに対し、反復クエリは、DNSサーバーが「自分は最終的な答えを知らないが、次に問い合わせるべきDNSサーバーの情報を教えるので、そちらに問い合わせてみてほしい」と、段階的に次の参照先を示す形式である。通常、クライアントのOSが設定しているDNSサーバー(リゾルバ)へは再帰クエリが送られ、リゾルバがその先のDNSサーバー群に対しては反復クエリを使って名前解決を進めていく。
具体的なDNSクエリの流れは以下のようになる。まず、ユーザーがWebブラウザに「www.example.com」のようなドメイン名を入力すると、そのリクエストはOS内部に存在するスタブリゾルバと呼ばれる機能によって処理される。スタブリゾルバは、コンピューターのネットワーク設定で指定されているDNSサーバー、例えばプロバイダのDNSサーバーやGoogle Public DNSなどに対して、再帰クエリを送信し、「www.example.com」のIPアドレスを問い合わせる。
次に、この問い合わせを受け取ったDNSサーバー(リゾルバ)は、まず自身のキャッシュに「www.example.com」のIPアドレスが保存されていないかを確認する。もしキャッシュに情報があれば、そのIPアドレスをスタブリゾルバに直接返答し、名前解決は終了する。キャッシュに情報がない場合、リゾルバは「www.example.com」のIPアドレスを特定するために、反復クエリを開始する。
最初に、リゾルバはインターネットの最上位であるルートDNSサーバーに反復クエリを送信し、「.com」ドメインのDNSサーバーの情報を問い合わせる。ルートDNSサーバーは、「.com」のTLD DNSサーバーのアドレスをリゾルバに返答する。
次に、リゾルバは受け取った「.com」のTLD DNSサーバーに反復クエリを送信し、「example.com」ドメインのDNSサーバーの情報を問い合わせる。TLD DNSサーバーは、「example.com」の権威DNSサーバーのアドレスをリゾルバに返答する。
さらに、リゾルバは「example.com」の権威DNSサーバーに反復クエリを送信し、「www.example.com」のIPアドレスを問い合わせる。権威DNSサーバーは、そのドメインに対する正式な情報を持つサーバーであり、「www.example.com」に対応するIPアドレス(AレコードやAAAAレコード)をリゾルバに返答する。
最終的にIPアドレスを取得したリゾルバは、その情報を自身のキャッシュに一定期間保存し、同時に最初の問い合わせ元であるスタブリゾルバにIPアドレスを返答する。スタブリゾルバはそのIPアドレスをWebブラウザに渡し、WebブラウザはそのIPアドレスを用いて「www.example.com」がホストされているサーバーとのHTTP通信を開始する。この一連の問い合わせと応答のプロセスがDNSクエリの具体的な実行経路である。
DNSクエリで取得される情報は、IPアドレスだけではない。DNSにはさまざまな種類のレコードが存在し、それらもDNSクエリによって取得される。例えば、AレコードはIPv4アドレス、AAAAレコードはIPv6アドレスを示す。CNAMEレコードは、あるドメイン名が別のドメイン名の別名であることを示す。MXレコードは、そのドメイン宛のメールを受け取るメールサーバーの情報を指定する。NSレコードは、そのドメインの権威DNSサーバーを示す。DNSクエリはこれらのレコード情報を目的に応じて要求し、受け取る。このように、DNSクエリはインターネットの円滑な動作を支える不可欠なメカニズムであり、その理解はシステムエンジニアにとって基礎となる知識である。