TTL
IPパケットが、ネットワーク上に存在できる限度を表す値。ルータを1つ通過するごとに1減らされ、0になったパケットは破棄される。IPヘッダーに含まれる。
イマシルちゃんの解説
もしネットワークの中で道が輪っかになっていたら、パケットは永遠にぐるぐる回り続けちゃうよね。
そうならないように、パケットには「あと何回ルータを通っていいか」っていう回数券が付いてるんだ。
ルータを通るたびに回数券を使って、使い切ったらそこでおしまい。
迷子のパケットがネットワークにあふれないようにする、大切な仕組みなんだよ!
より深い解説
定義
TTL(Time To Live:生存時間)は、IPv4ヘッダーにある8ビットのフィールドで、パケットがネットワーク上に存在できる期間を制限する。もともとは秒単位の時間として定義されていたが、実際には、ルータがパケットを転送するたびに1を引く「通過できるルータの数」として使われている。
IPv6では、実態に合わせて、同じ役割のフィールドの名前がホップリミット(Hop Limit)に変わった。
動作
- 送信元が、TTLの初期値(OSによって64、128、255など)を設定する
- ルータは、パケットを転送する前にTTLを1減らす
- TTLが0になったら、ルータはパケットを破棄し、送信元にICMPの時間超過(Time Exceeded、タイプ11)メッセージを返す
TTLが変わるとヘッダーの内容が変わるため、IPv4のルータはヘッダーチェックサムも計算し直す。
traceroute
経路上のルータを調べるtraceroute(Windowsではtracert)は、TTLの仕組みを利用している。
- TTLを1にしたパケットを送る → 1台目のルータで0になり、時間超過のICMPが返ってくる
- TTLを2にしたパケットを送る → 2台目のルータから返ってくる
- TTLを1ずつ増やしながら、宛先に届くまで繰り返す
返ってきたICMPの送信元アドレスを並べると、宛先までの経路がわかる。
TTLが含まれる場所
TTLは、IPヘッダーのフィールドであり、TCPやUDPのヘッダーにはない。
| ヘッダー | TTLに当たるもの |
|---|---|
| IPv4 | TTL |
| IPv6 | ホップリミット |
| TCP、UDP | なし |
| イーサネット | なし |
イーサネットのフレームにはTTLがないため、レイヤ2でループが起きると、フレームが消えずに回り続ける。これを防ぐのがスパニングツリープロトコルである。
DNSのTTL
DNSのリソースレコードにもTTLがあるが、これは別のもので、キャッシュサーバがその情報を保持してよい時間(秒)を表す。
| TTL | 単位 | 意味 |
|---|---|---|
| IPのTTL | ホップ数(実質) | パケットが通過できるルータの数 |
| DNSのTTL | 秒 | 応答をキャッシュしておける時間 |
DNSのTTLを短くすると、変更がすぐに反映される代わりに、問い合わせの数が増える。サーバの移転の前には、TTLをあらかじめ短くしておくのが一般的である。
実際の試験ではここに出る!
- ネットワークスペシャリスト 令和7年度 春期 午後Ⅱ 問1
- ネットワークスペシャリスト 令和6年度 春期 午前Ⅱ 問10
- ネットワークスペシャリスト 令和4年度 春期 午前Ⅱ 問6
- ネットワークスペシャリスト 令和4年度 春期 午前Ⅱ 問13
- ネットワークスペシャリスト 令和4年度 春期 午前Ⅱ 問18
- ネットワークスペシャリスト 令和3年度 春期 午前Ⅱ 問13
- ネットワークスペシャリスト 平成30年度 秋期 午前Ⅱ 問11