ネットワークやDNSの設定を調べていると、「TTL」という言葉を見かけることがあります。
TTLは「生存時間」や「有効期限」と訳されますが、「何の有効期限なの?」「期限があると何が便利なの?」と疑問に思う方もいるのではないでしょうか。
この記事では「TTL」について、以下の内容をわかりやすく説明します。
- TTLの意味
- IPパケットで使われるTTLの仕組み
- DNSで使われるTTLの仕組み
TTLとは?

TTLとは、データや情報をいつまでも残したり、使い続けたりしないように、寿命や有効期間の上限を決める値です。
英語の「Time to Live(タイム・トゥ・リブ)」の略で、日本語では「生存時間」や「有効期限」と訳されます。
TTLは主に「ネットワークを流れるIPパケット」と「DNSから取得した情報」で使われますが、それぞれ制限するものが異なります。
| 使われる場面 | TTLが表すもの | 主な目的 |
| IPパケット | 主に、ルーターを経由できる回数の上限 | パケットがネットワーク内を回り続けることを防ぐ |
| DNS | 取得した情報を一時保存して再利用できる時間 | 問い合わせを減らしながら、古い情報を使い続けることを防ぐ |
どちらも、データや情報を無制限に残したり、使い続けたりしないための仕組みです。まずは、「IPパケットでは回数、DNSでは時間」と分けて考えると理解しやすくなります。
ネットワークのTTLとは?

IPパケットのTTLとは、ネットワーク上を流れるパケットが、ルーターを経由して転送され続けることを防ぐための値です。ここでは、IPv4のTTLについて説明します。
インターネットでやり取りするデータは、「パケット」という小さな単位に分けて送られます。パケットは、通信を中継する「ルーター」を経由して、目的の相手へ届けられます。
例えば、自分のパソコンからWebサーバーへデータを送るとき、途中で複数のルーターを経由することがあります。
通常は自分のパソコンからWebサーバーに向かってデータが送られますが、経路の設定ミスなどにより、同じルーターの間をぐるぐる回ってしまうことがあります。例えば、「ルーターA → ルーターB → ルーターC → ルーターA」と、同じ経路を繰り返すような状態です。
そのまま回り続けると、通信回線や機器に余計な負担がかかります。
そこで、パケットにTTLという値を持たせ、転送を続けられる回数を制限します。
ネットワークのTTLの仕組み
TTLは通常、ルーターが転送するたびに1ずつ減り、転送時に0になると、そのパケットは破棄されます。
例えば、TTLが「3」のパケットが送られ、各ルーターで1ずつ減る場合を考えてみましょう。
- 送信元が、TTL「3」のパケットを送る。
- ルーターAが、TTLを「2」にして次へ転送する。
- ルーターBが、TTLを「1」にして次へ転送する。
- ルーターCが、さらに転送しようとするとTTLが「0」になるため、パケットを破棄する。
このように、転送時にTTLが0になったパケットは、次のルーターへ転送されません。 そのため、経路に問題があっても無限に回り続けることを防げます。
補足
IPv4のTTLは、もともと秒単位の生存時間として定義されましたが、現在の一般的な通信では、主に中継回数の上限として働きます。そのため、TTLが「64」でも「64秒間使える」という意味ではありません。
DNSのTTLとは?

DNSのTTLとは、DNSから取得した情報を、キャッシュに保存して再利用できる時間の目安となる値です。基本的な単位は「秒」です。
DNSは、example.comのようなドメイン名に対応するIPアドレスなどを調べる仕組みです。
例えば、Webサイトにアクセスする際、DNSを使って「example.comのIPアドレスは192.0.2.10」という情報を取得します。
この情報を毎回最初から調べるのは効率がよくありません。そこで、問い合わせを代行するDNSサーバーなどは、調べた結果を一時保存します。この一時保存を「キャッシュ」といいます。
ただし、Webサイトの移転などにより、ドメイン名に対応するIPアドレスが変わることがあります。保存した情報をいつまでも使っていると、古い接続先を案内してしまうかもしれません。
そこでTTLを使い、「調べた情報を、どのくらいの間使ってよいか」を決めます。
TTLが3600の場合の例
例えば、TTLが「3600」なら、3600秒、つまり1時間キャッシュして利用できることを表します。
ここでは、キャッシュDNSサーバーが午前10時に情報を取得し、TTLに従って1時間保存する例を考えます。
| 時刻 | キャッシュの状態 | 問い合わせが来たときの動作 |
| 午前10時 | 情報を取得して保存する | 取得した情報を返す |
| 午前10時30分 | 有効期間が残っている | 保存してある情報を使って回答できる |
| 午前11時以降 | 有効期間が切れている | 通常は、必要になった時点で情報を調べ直す |
キャッシュを使って回答したからといって、通常、そのキャッシュの残り時間が毎回1時間に戻るわけではありません。
また、TTLが切れるたびに、必ず自動で問い合わせるわけでもありません。 基本的には、その情報が必要になったときに、あらためて問い合わせます。
DNSのTTLは一時保存した情報を、そのまま再利用してよい期間を表します。
TTLが切れたときに有効期限を迎えるのは、この一時保存した情報です。TTLが1時間でも、1時間後にドメインが使えなくなったり、管理元のDNSサーバーから設定が削除されたりするわけではありません。
あわせて読みたい
キャッシュDNSサーバーは、利用者に代わってDNSの情報を調べ、結果を一時保存するサーバーです。「フルサービスリゾルバ」とも呼ばれます。
「フルサービスリゾルバ」については、以下の記事で詳しく説明していますので、興味のある方は下記のリンクからぜひチェックをしてみてください。
DNSのTTLが短い場合・長い場合のメリットとデメリット
DNSのTTLを短くするか長くするかで、保存した情報を使い続ける時間が変わります。
| TTLが短い場合 | TTLが長い場合 | |
| メリット | DNS情報を変更したとき、古い情報が残る時間を短くしやすい | キャッシュを長く使えるため、繰り返し問い合わせる回数を減らしやすい |
| デメリット | 継続して利用する情報について、問い合わせが増えやすい | DNS情報を変更しても、古い情報が長く残ることがある |
例えば、Webサイトを新しいサーバーへ移転し、DNSに登録しているIPアドレスを変更したとします。
このとき、すでに古いIPアドレスをキャッシュしているDNSサーバーは、通常、そのキャッシュの有効期間が切れるまで古い情報を返すことがあります。
これが、「DNSの設定を変更しても、利用者によって新しい接続先に切り替わるタイミングが違う」理由の1つです。
また、変更の直前にTTLを短くしても、すでに保存されているキャッシュの有効期間は短くなりません。移転に備えてTTLを短くする場合は、変更前のTTLも考慮して、余裕を持って設定する必要があります。
本記事のまとめ
この記事では「TTL」について、以下の内容を説明しました。
- TTLは「Time to Live」の略で、データや情報の寿命・有効期間に上限を設けるための値である。
- IPv4のTTLは、現在の一般的な通信では主に中継回数の上限として働き、パケットが回り続けることを防ぐ。
- DNSのTTLは秒単位で、取得した情報をキャッシュして再利用できる時間を表す。
- DNSのTTLが切れても、管理元のDNS情報やドメイン自体が削除されるわけではない。
- DNSのTTLを短くすると古い情報が残る時間を短くしやすいが、すでにあるキャッシュの期限は変わらない。
お読みいただきありがとうございました。
