DNSとCDNとは何か?
DNSとは何ですか?
ドメインネームシステム(DNS)は、人間が読めるドメイン名(例:www.example.com)を機械が読めるIPアドレス(例:192.0.2.1)に変換するための重要なインターネットの要素です。この変換はネットワーク上のデバイス間のコミュニケーションに不可欠です。DNSは分散型データベースであり、名前付けシステムとして機能し、ドメイン名とそれに対応するIPアドレスを関連付ける方法を提供します。
さらに詳しいDNSの様々な側面について説明します:
-
階層構造: DNSは反転木に似た階層構造で組織されています。この木の根にあたるのが「ルートドメイン」で、ドット(.)で表されます。ルートの下には、.com、.org、.netのようなトップレベルドメイン(TLD)や、.us、.ukなどの国コードTLDがあります。これらのTLDはドメインレジストリと呼ばれる特定の組織によって管理されています。
-
ドメイン名: ドメイン名はインターネット上のリソースを識別するために使われる人間が読めるラベルです。ドメイン名はドットで区切られた複数の部分、ラベルやセグメントと呼ばれるもので構成されています。最右のラベルがトップレベルドメイン(TLD)、その左がセカンドレベルドメイン(SLD)で、オプションでさらにサブドメインがあります。例えばwww.example.comでは、「www」がサブドメイン、「example」がセカンドレベルドメイン、「.com」がトップレベルドメインです。
-
ネームサーバー: DNSは、ドメイン名とIPアドレスをマッピングするDNSレコードを保存および配布するサーバーであるネームサーバーのネットワークを通じて機能します。ネームサーバーには、権威ネームサーバー、再帰ネームサーバー、キャッシュネームサーバーといった異なるタイプがあります。
-
権威ネームサーバー: これらのサーバーは特定のドメインに対する公式のDNSレコードを保有しています。各ドメインにはそのドメインについての情報を保存し提供する責任を持つ権威ネームサーバーがセットされています。ドメインのDNSレコードに対するクエリがなされる場合、最新の情報を求めて権威ネームサーバーに問い合わせがあります。
-
再帰ネームサーバー: リゾルバとしても知られるこれらのサーバーは、クライアント(たとえばあなたのコンピューターやスマートフォン)からのDNSクエリを処理します。再帰ネームサーバーがドメインのIPアドレスに関するクエリを受け取ると、権威ネームサーバーに連絡を取って必要なDNSレコードを取得することによってクエリを解決するプロセスを開始します。
-
キャッシュネームサーバー: キャッシュネームサーバーは一時的にDNSレコードを保存することで、権威ネームサーバーの負荷を減らし、同じドメインへの後続のクエリを高速化します。キャッシュネームサーバーがクエリを受け取ると、必要なDNSレコードがキャッシュにあるかどうかをチェックします。
-
DNSレコード: DNSレコードは、DNSデータベースに実際に格納されているデータです。これらにはIPアドレスやメールサーバーアドレス、テキストレコード(TXT)、サービス位置レコード(SRV)などの情報が含まれます。一般的なDNSレコードのタイプには以下のものがあります:
- Aレコード:ドメイン名をIPv4アドレスにマッピングします。
- AAAAレコード:ドメイン名をIPv6アドレスにマッピングします。
- MXレコード:メール受信に責任を持つメールサーバーを指定します。
- CNAMEレコード:ドメインに対するエイリアス(正規名)を作成します。
- TXTレコード:任意のテキストデータを保持し、
-
DNS解決プロセス: ブラウザーやアプリケーションにドメイン名を入力すると、DNS解決のために次のステップが発生します:
- あなたのデバイスがローカルの再帰ネームサーバーに問い合わせます。
- ローカルサーバーに答えがキャッシュされていると、IPアドレスが返されます。
- そうでなければ、ローカルサーバーはリゾルバとして機能し、ドメインに責任を持つ権威名サーバーに連絡してIPアドレスを提供します。
- 権威サーバーがIPアドレスをローカルサーバーに提供します。
- ローカルサーバーが結果をキャッシュしてあなたのデバイスにIPアドレスを返します。
-
DNSSEC(ドメインネームシステムセキュリティ拡張機能): DNSSECは、DNSデータに暗号化の完全性と認証を追加するDNSへの一連の拡張です。DNSSECは、受け取るDNSレコードが本物であり、改ざんされていないことを保証することによって、DNSのスプーフィングやキャッシュポイズニングなどのさまざまな攻撃から保護するのに役立ちます。
-
アニキャストDNS: アニキャストは、複数のDNSサーバーが同じIPアドレスを共有してクエリに応答し、近接性に基づいてクエリを最も近い利用可能なサーバーに転送する技術です。これによって応答時間が改善され、ネットワークの遅延が減少します。
ドメインネームシステムは、人間が読めるドメイン名をIPアドレスに変換し、インターネット上でのシームレスなコミュニケーションを支援する重要なインフラストラクチャです。DNSはサーバーの階層構造を通じて機能し、様々な種類のDNSレコードを使用し、効率的なデータ取得のためのキャッシングメカニズムを使用します。DNSのセキュリティ、階層、および分散性はすべて、このシステムの信頼性と機能性に寄与する重要な要素です。
CDNとは何ですか?
コンテンツ配信ネットワーク(CDN)は、世界中に分散したサーバーのネットワークであり、ユーザーの位置に基づいてウェブコンテンツ(画像、動画、スクリプト、スタイルシート、その他のアセットなど)を最適化して配信するよう設計されています。CDNは、ウェブサイトのパフォーマンスを向上させたり、待ち時間を短縮したり、拡張性を高めたり、より優れたユーザー体験を提供したりするために利用されます。以下は、CDNの機能とその利点を詳しく説明しています:
CDNの仕組み:
-
コンテンツの複製: ウェブサイトがCDNと統合されると、CDNプロバイダーはそのウェブサイトの静的コンテンツのコピーを世界中の様々な場所(ポイント・オブ・プレゼンスまたはPoPs)にある複数のサーバーに複製して保存します。これらのサーバーは、エンドユーザーに近い場所に戦略的に配置されており、データが移動する距離を減らします。
-
ドメイン名の解決: CDNは「アニキャスト」という技術を使用して、ユーザーのリクエストを最も近いCDNサーバーにルーティングします。ユーザーがブラウザーにURLを入力すると、DNS解決プロセスはネットワークの近接性やサーバーの健康状態などを考慮して最適なPoPを選択し、近いCDNサーバーを特定します。
-
キャッシング: CDNサーバーは、画像や動画などの静的コンテンツを特定の期間キャッシュします。ユーザーが特定のコンテンツをリクエストすると、CDNサーバーはキャッシュされたコピーがあるかどうかを確認します。もしキャッシュされている場合は、サーバーはウェブサイトのオリジナルサーバーからそれを取り出す必要なく直接コンテンツをユーザーに配信します。
Pull CDNの概要:
Pull CDN、別名「Pull Content Delivery Network」とは、コンテンツをリクエストしているユーザーに応じて動作するコンテントデリバリーネットワークのタイプです。事前にエッジサーバーにコンテンツを積極的に配布するPush CDNとは異なり、Pull CDNはユーザーのリクエストがあった時にのみコンテンツをキャッシュして配信します。以下は、Pull CDNの機能とその利点についての詳細な説明です:
Pull CDNの仕組み:
-
ユーザーのリクエスト: ユーザーがウェブサイトにアクセスすると、ブラウザーやデバイスからPull CDNのネットワークに特定のコンテンツ(画像、動画、スクリプト等)のリクエストが送信されます。
-
DNS解決: ユーザーのリクエストによりDNSのルックアップがトリガされ、ユーザーの位置に最も近いエッジサーバーが特定されます。DNSサーバーは最も近いエッジサーバーのIPアドレスで応答し、ユーザーのリクエストをそのサーバーに向けます。
-
エッジサーバーの応答: ユーザーのリクエストはPull CDNネットワーク内の選択されたエッジサーバーに到着します。エッジサーバーにリクエストされたコンテンツのキャッシュが存在する場合、それを直接ユーザーのデバイスに配信します。
-
オリジンサーバーとのやりとり: エッジサーバーにキャッシュされたコンテンツが存在しない、またはキャッシュされたコンテンツの有効期限が切れている場合、エッジサーバーはオリジナルコンテンツをホストしているオリジンサーバーにリクエストを送信します。
-
コンテンツの取得: オリジンサーバーはエッジサーバーのリクエストに応答し、リクエストされたコンテンツを提供します。エッジサーバーはコンテンツを一定期間キャッシュして、同じコンテンツについてオリジンサーバーに再度連絡することなく後続のリクエストを処理できますようにします。
-
コンテンツの配信: 一度エッジサーバーがコンテンツをキャッシュすると、それをユーザーのデバイスに配信します。同じ地域内の他のユーザーからの同じコンテンツの後続のリクエストもエッジサーバーのキャッシュされたコピーから直接供給されることができるようになります。
Pull CDNの利点:
-
効率的なリソース活用: 需要に基づいてのみコンテンツをキャッシュして配布することで、Pull CDNはリソースを節約します。これによって、CDNは最も関連性が高くよくアクセスされるコンテンツの配信に集中できます。
-
人気コンテンツの遅延低減: 頻繁にリクエストされる人気コンテンツは、エッジサーバー上にキャッシュされることで恩恵を受け、コンテンツが旅する距離が短くなり
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/rajrathod/what-is-dns-and-cdn--3o38