【てぃーてぃーえる】

TTL とは?

💡 パケットに設定された「有効期限」、通過できるルータの数を制限する
📌 このページのポイント
TTL(Time To Live) — データの生存時間 DNS キャッシュのTTL ブラウザ キャッシュ TTL:300秒 DNS 残り210秒 → キャッシュ有効 TTL切れ → DNSに再問合せ パケットのTTL(ホップ数) 送信元 TTL=64 ルーター 1 TTL=63 ルーター 2 TTL=62 ... TTL=0 → パケット破棄(無限ループ防止) TTLの役割 古いデータや迷子のパケットが永遠に残らないよう「寿命」を設定する キャッシュ・DNS・ネットワークパケットなど幅広く使われる概念
TTL(生存時間)の概念イメージ
ひよこ ひよこ

TTLって何のためにあるの?

ペンギン先生 ペンギン先生

パケットが宛先を見つけられずにルータ間を永遠にぐるぐる回り続けるのを防ぐためだよ。TTLがあれば一定回数を超えたら自動廃棄される。

ひよこ ひよこ

最初の値はどう決まるの?

ペンギン先生 ペンギン先生

OSによって違うんだけど、WindowsはTTL=128、LinuxはTTL=64でパケットを送り出すことが多い。pingコマンドで確認できるよ。

ひよこ ひよこ

DNSのTTLとは違うの?

ペンギン先生 ペンギン先生

名前は同じだけど別物。DNSのTTLは「このDNSレコードを何秒間キャッシュしていいか」という意味。例えばTTL=3600なら1時間有効ということ。

ひよこ ひよこ

DNSのTTLを短くしすぎるとどうなるの?

ペンギン先生 ペンギン先生

DNSサーバーへの問い合わせ回数が増えて負荷が上がるし、名前解決の遅延でWebサイトの表示も遅くなる。逆に長すぎると、IPアドレスを変更したときに旧アドレスにアクセスし続けるユーザーが出る。通常は300〜3600秒(5分〜1時間)に設定して、サーバー移行の前にだけ60秒に下げるのが定石だよ。

ひよこ ひよこ

tracerouteコマンドってTTLを使っているって本当?

ペンギン先生 ペンギン先生

そうだよ。tracerouteはTTL=1, 2, 3...と段階的に増やしてパケットを送る。TTL=1だと最初のルータで「TTL切れ」のICMPエラーが返ってくるので、そのルータのIPがわかる。TTL=2だと2番目のルータから返ってくる。これを繰り返して宛先までの経路と各ルータの応答時間を表示するんだ。ネットワーク障害の切り分けで非常に便利なコマンドだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
TTLって出てきたら「パケットが無限ループしないよう、通過できるルータ数を制限する仕組み」と思えばOK!
📖 おまけ:英語の意味
「Time To Live」 = 生存時間
💬 DNSのTTLは「何秒間キャッシュしてよいか」を意味し、ネットワークのTTLとは別の概念
← 用語集にもどる