DNS(ドメインネームシステム):キャッシュと浸透

キャッシュとは

ドメインネームはドットで区切られたラベルという単位で構成されており、右端のラベルから順に名前解決が行われます。DNSは相互に連携する階層的な「分散型データベース」となっているため、名前解決が常に上位階層(右端のラベル)から行われると、上位階層にあるDNSほど大量の問い合わせを受けることになり莫大な負荷がかかります。
また、問い合わせる側も何台ものDNSと通信する必要があるため、最終的な名前解決までに時間がかかることになります。
これを解決するための仕組みが「キャッシュ(cache)」です。

「キャッシュ」とは問い合わせの結果を一定期間保存しておく仕組みのことで、同じ問い合わせへの返答は、過去に問い合わせた際の情報を保存し、その情報の中から同じ結果を返します。
「キャッシュ」を利用することで手順が省略され、毎回、上位から問い合わせを行う必要がなくなり、以下の図のように効率的に名前解決が行われます。

キャッシュがある場合の流れ

一方、「キャッシュ」が永久に存在すると問い合わせが行われないため、権威サーバーでドメインに対するIPアドレス等の変更があっても反映されないことになります。
そのためキャッシュには有効期間が設けられており、これを「TTL(Time To Live)」といいます。
例えば、TTLが「86,400(秒)」となっている場合、キャッシュは24時間後に破棄されます。

Webサーバーの移転などでIPアドレスが変更される場合に、DNSの変更で「浸透に時間がかかる」という表現をする場合があります。
「浸透」はDNSの概念として正確には存在しませんが、キャッシュDNSサーバーにキャッシュが残っている間は、権威サーバーに問い合わせを行うことはないため、このような表現をしています。

DNSとは〜名前解決の仕組み