ドメインネームシステム
ドメインネームシステムは、インターネットの分散型ディレクトリであり、人間が読めるドメイン名を、委任された権威サーバーの階層と広範なキャッシングを通じて、ネットワークが必要とするIPアドレスに変換します。
Definition
ドメインネームシステムは、ドメイン名をIPアドレスやその他のレコードにマッピングする、階層的で分散型の命名サービスであり、委任された権威ネームサーバーとキャッシングリゾルバーのネットワークによって実装されています。
Scope
このトピックでは、DNSについて、その階層的な名前空間とゾーン、ルート、トップレベルドメイン、権威ネームサーバーの役割、再帰的および反復的解決、リソースレコード(A、AAAA、NS、MX、CNAMEなど)、システムの拡張性を高めるキャッシングとTTL(time-to-live)値、およびほとんどのクエリにおけるUDPへの依存について説明します。また、単純なルックアップを超えたDNSの役割、例えば負荷分散やCDNリダイレクションにおける役割についても言及します。ただし、DNSに依存するアプリケーションプロトコルやコンテンツ配信システムは対象外とします。
Core questions
- なぜインターネットはIPアドレスとは別の命名システムを必要とするのでしょうか?
- DNSの名前空間はどのように階層的にゾーンと委任に組織されているのでしょうか?
- 再帰的クエリと反復的クエリはどのようにして名前をアドレスに解決するのでしょうか?
- キャッシングとTTL(time-to-live)値はどのようにしてDNSをスケーラブルかつ高速にしているのでしょうか?
- DNSが使用するリソースレコードのタイプは何であり、それぞれは何を表しているのでしょうか?
Key concepts
- ドメイン名階層
- ゾーンと委任
- ルート、TLD、および権威サーバー
- 再帰的および反復的解決
- リソースレコード(A、AAAA、NS、MX、CNAME)
- キャッシングとTTL(time-to-live)
- UDP上のDNS
- DNSベースの負荷分散
Key theories
- 階層的で委任された命名
- DNSは名前空間をドメインのツリーに分割し、サブツリーの権限を異なる組織のネームサーバーに委任することで、単一のエンティティがすべての名前を知る必要がなく、管理が分散されます。
- 解決とキャッシング
- リゾルバーは、ルートから権威サーバーへの階層をたどってクエリに回答し、その結果をTTL(time-to-live)期間キャッシュします。積極的なキャッシングにより、ほとんどのルックアップは権威サーバーに到達せず、これはDNSのスケーラビリティにとって不可欠です。
Clinical relevance
DNSは、ウェブブラウジング、電子メール、アプリケーション接続など、ほとんどすべてのオンラインインタラクションにおいて不可欠な要素です。これらの接続は名前解決から始まるため、DNSのパフォーマンスと可用性はユーザーエクスペリエンスを形成し、DNSの障害はサービス全体に波及します。また、DNSはコンテンツ配信や負荷分散のためにユーザーを近くのサーバーに誘導するためにも使用され、そのセキュリティ(DNSSECおよび暗号化DNSを介して)は活発な懸念事項となっています。
History
DNSが登場する以前は、ホスト名は単一の共有ファイルによってアドレスにマッピングされていましたが、これはスケーラブルではありませんでした。ポール・モカペトリスは、1980年代半ばに(RFC 1034および1035、1987年)分散型で階層的な代替手段としてドメインネームシステムを設計しました。以来、DNSは記録タイプ、国際化ドメイン名、セキュリティ拡張(DNSSEC)、暗号化された転送などを追加しながら、その元の設計に忠実であり続け、大きく成長しました。
Debates
- 暗号化DNSと運用上の可視性
- DNSクエリの暗号化(DNS over HTTPS/TLS)は、経路上の監視者からユーザーのプライバシーを保護しますが、フィルタリングやトラブルシューティングに使用されるネットワークオペレーターの可視性を低下させ、少数の大規模プロバイダーに解決を集中させる可能性があります。プライバシーと制御の間のトレードオフが議論されています。
Key figures
- Paul Mockapetris
- James F. Kurose
- Keith W. Ross
Related topics
Seminal works
- rfc1034
- rfc1035
- kurose2021
Frequently asked questions
- DNSは何をしますか?
- DNSは、example.comのような人間が読みやすい名前を、ネットワークがパケットを適切なサーバーにルーティングするために必要なIPアドレスに変換します。これはインターネットの電話帳であり、分散されたサーバーの階層と強力なキャッシングを通じてこのルックアップを行い、インターネット全体にスケーラブルに対応します。
- なぜDNSは1つの大きなサーバーではなく分散されているのですか?
- 単一のサーバーでは、クエリの量を処理できず、単一障害点となり、世界中のすべての組織によって管理されることはできません。DNSは代わりに、名前空間の一部に対する権限を多くのサーバーに委任し、結果を広くキャッシュすることで、負荷と制御が分散され、システムが回復力を持つようになっています。