DNSを使用すると、ユーザーがIPアドレスではなく、ドメイン名を使用して、Webサイトに接続できるようになります。DNSの仕組みを学習します。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
Domain Name System(DNS)は、いわばインターネットの電話帳のようなものです。ユーザーは、オンラインで情報にアクセスする時に、「nytimes.com」や「espn.com」のようなドメイン名を使用します。Webブラウザーは、 インターネットプロトコル(IP)で通信を行います。DNSは、ブラウザがインターネットリソースを読み込めるように、ドメイン名をIPアドレスに変換します。
インターネットに接続された個々のデバイスに一意のIPアドレスがあり、このIPアドレスを使用して、ほかのマシンがそのデバイスを検出します。DNSサーバーの登場で、192.168.1.1などのIPアドレス(IPv4の場合)や、さらに複雑な2400:cb00:2048:1:c629:d7a2のような新しい英数字のIPアドレス(IPv6の場合)を覚える必要がなくなりました。
DNS解決のプロセスには、ホスト名(www.example.comなど)をコンピューターに優しいIPアドレス(192.168.1.1など)に変換することが含まれます。IPアドレスはインターネット上の各デバイスに与えられ、そのアドレスは適切なインターネットデバイスを見つけるために必要です。特定の家を見つけるために番地が使用されるのと同様です。ユーザーがWebページを読み込む場合、ユーザーがWebブラウザに入力したもの(example.com)を、example.com のWebページを見つけるために必要な機械が読み取れるアドレスに変換する必要があります。
DNS解決のプロセスを理解するには、DNSクエリを処理するさまざまなハードウェア構成部品に関して学習することが重要です。Webブラウザーの場合、DNSルックアップは「舞台裏で」行われ、ユーザーのコンピューターからは最初のリクエスト以外のやりとりは一切必要ありません。
どちらの概念も、DNSインフラストラクチャに不可欠なサーバー(サーバーグループ)を指します。しかし、それぞれ異なる役割を果たし、DNSクエリのパイプライン内部で異なる場所に位置しています。違う点といえば、再帰リゾルバーは、DNSクエリの始めにあり、権威ネームサーバーはクエリの最後にあることです。
再帰リゾルバーは、クライアントからの再帰リクエストに応答し、DNSレコードを追跡するために時間をかけるコンピュータープログラムです。これは要求されたレコードのある権威DNSネームサーバーに達するまで、一連のリクエストを行います(あるいはレコードが見つからない場合は、タイムアウトするか、エラーを返します)。幸い、再帰DNSリゾルバーは、クライアントに応答するレコードを見つけるために、必ずしも何度もリクエストを送信する必要はありません。キャッシュは、DNSルックアップから以前要求されたことがあるリソースレコードを提供することで、必要なリクエスト応答を素早く送信するデータ永続化プロセスです。
簡単に言えば、権威DNSサーバーは、DNSリソースレコードを実際に保持し、その責任を負うサーバーです。これは、問い合わせされたリソースレコードで応答するDNSルックアップチェーンの一番下にあるサーバーであり、最終的に、リクエストしているWebブラウザがWebサイトその他のWebリソースにアクセスするために必要なIPアドレスに到達するようにします。権威ネームサーバーは、特定のDNSレコードの信頼できる唯一の情報源であるため、別のソースを照会する必要なく、自身のデータからのクエリを満たすことができます。
foo.example.comや blog.cloudflare.comなどのサブドメインに対するクエリの場合、権威ネームサーバーの後にシーケンスに追加のネームサーバーが追加されることに注意してください。このネームサーバーはサブドメインのCNAMEレコードの保存します。
多くのDNSサービスとCloudflareが提供するDNSサービスには大きな違いがあります。Google DNS、OpenDNS、Comcastなどのプロバイダーなど、さまざまなDNS再帰リゾルバーはすべて、DNS再帰リゾルバーのデータセンターインストールを保持しています。これらのリゾルバーは、DNSに最適化されたコンピューターシステムの最適化されたクラスターを介した迅速かつ簡単なクエリを可能にしますが、Cloudflareがホストするネームサーバーとは根本的に異なります。
Cloudflareは、インターネットの機能に不可欠なインフラストラクチャレベルのネームサーバーを維持しています。重要な例として、Cloudflareがホスティングを部分的に担当する f-rootサーバーネットワークがあります。Fルートは、1日に数十億のインターネットリクエストを処理するルートレベルのDNSネームサーバーインフラストラクチャコンポーネントの1つです。Anycast Networkにより、当社はサービスを中断することなく、大量のDNSトラフィックを処理することが可能です。
ほとんどの場合、DNSは適切なIPアドレスに変換されるドメイン名に関係しています。このプロセスがどのように機能するかを学習するには、DNSルックアップが、WebブラウザからDNSルックアッププロセスを通過し、再び戻ってくるパスをたどることが役立ちます。ステップを見てみましょう。
注:多くの場合、DNSルックアップ情報は、クエリを行っているコンピューター内でローカルにキャッシュされるか、DNSインフラストラクチャでリモートにキャッシュされます。通常、DNSルックアップには8つのステップがあります。DNS情報がキャッシュされると、DNSルックアッププロセスから手順がスキップされ、より迅速になります。以下の例は、何もキャッシュされていない場合の8つのステップすべてを概説しています。
DNSルックアップの8ステップを完了し、example.comのIPアドレスを取得すると、ブラウザはWebページにリクエストを送信することができるようになります。
DNSリゾルバーは、DNSルックアップの最初の目的地であり、最初の要求を行ったクライアントの対応を担当します。リゾルバーは一連のクエリを開始し、最終的にURLが必要なIPアドレスに変換されます。
注:一般的な非キャッシュDNSルックアップには、再帰クエリと反復クエリの両方が含まれます。
再帰DNSクエリと、再帰DNSリゾルバーを区別することは重要です。クエリは、クエリの解決を必要とするDNSリゾルバーに対して行われるリクエストを指します。DNS再帰リゾルバーは、再帰クエリを受信し、必要なリクエストを送信して応答を処理するコンピュータープログラムです。
一般的なDNSルックアップでは、3種類のクエリが発生します。これらのクエリを組み合わせて使用することにより、DNS解決のための最適化されたプロセスにより、移動距離が短縮されます。理想的な状況では、キャッシュされたレコードデータが利用でき、DNSネームサーバーが非再帰クエリを返すことができます。
キャッシュ保存の目的は、データを一時的に保存し、データリクエストのパフォーマンスおよび信頼性を改善することです。DNS Cachingは、リクエストを行ったクライアントに近いデータを保存してDNSクエリを迅速に解決するため、DNSルックアップチェーンのそれ以上のクエリが不要となります。これによって読み込み時間が改善し、帯域幅/CPU消費が削減します。DNSデータはキャッシュとして様々な場所に保存することができます。それぞれの場所にDNSレコードを一定時間保存し、保存時間は、Time to Live (TTL)によって決まります。
最新のWebブラウザは、デフォルトでDNSレコードを一定時間キャッシュするように設計されています。ここでの目的は明らかです。DNSキャッシュがWebブラウザに近いほど、キャッシュをチェックしてIPアドレスに正しいリクエストを行うために必要な処理ステップが少なくなります。 DNSレコードの要求が行われると、要求されたレコードを最初にチェックする場所はブラウザのキャッシュになります。
Chromeでは、chrome://net-internals/#dnsから、DNSキャッシュのステータスを見ることができます。
オペレーティングシステムレベルのDNSリゾルバーは、DNSクエリがマシンを離れる前の2番目で最後のローカルの目的地です。このクエリを処理するように設計されたオペレーティングシステム内のプロセスは、一般に「スタブリゾルバー」またはDNSクライアントと呼ばれます。スタブリゾルバーは、アプリケーションからリクエストを取得すると、まず自身のキャッシュをチェックして、レコードがあるかどうかを確認します。もしない場合は、ローカルネットワークの外側で、インターネットサービスプロバイダー(ISP)内のDNS再帰リゾルバーにDNSクエリ(再帰フラグを設定)を送信します。
ISP内部の再帰リゾルバーが、DNSクエリを受け取ると、前のすべてのステップと同様に、要求されたホストからIPアドレスに変換したものがローカルの永続層内部に既にあるかどうかをチェックします。
再帰リゾルバーにはキャッシュされたレコードのタイプに応じた追加機能もあります。
Cloudflare DNSと他のDNSプロバイダーとの違いを詳しく説明します。