TTL

読み:てぃーてぃーえる / 英語表記:Time To Live

IPパケットが、ネットワーク上に存在できる限度を表す値。ルータを1つ通過するごとに1減らされ、0になったパケットは破棄される。IPヘッダーに含まれる。

イマシルちゃんの解説

もしネットワークの中で道が輪っかになっていたら、パケットは永遠にぐるぐる回り続けちゃうよね。

そうならないように、パケットには「あと何回ルータを通っていいか」っていう回数券が付いてるんだ。
ルータを通るたびに回数券を使って、使い切ったらそこでおしまい。
迷子のパケットがネットワークにあふれないようにする、大切な仕組みなんだよ!

より深い解説

定義

TTL(Time To Live:生存時間)は、IPv4ヘッダーにある8ビットのフィールドで、パケットがネットワーク上に存在できる期間を制限する。もともとは秒単位の時間として定義されていたが、実際には、ルータがパケットを転送するたびに1を引く「通過できるルータの数」として使われている。

IPv6では、実態に合わせて、同じ役割のフィールドの名前がホップリミット(Hop Limit)に変わった。

動作

  1. 送信元が、TTLの初期値(OSによって64、128、255など)を設定する
  2. ルータは、パケットを転送する前にTTLを1減らす
  3. TTLが0になったら、ルータはパケットを破棄し、送信元にICMPの時間超過(Time Exceeded、タイプ11)メッセージを返す

TTLが変わるとヘッダーの内容が変わるため、IPv4のルータはヘッダーチェックサムも計算し直す。

traceroute

経路上のルータを調べるtraceroute(Windowsではtracert)は、TTLの仕組みを利用している。

  1. TTLを1にしたパケットを送る → 1台目のルータで0になり、時間超過のICMPが返ってくる
  2. TTLを2にしたパケットを送る → 2台目のルータから返ってくる
  3. TTLを1ずつ増やしながら、宛先に届くまで繰り返す

返ってきたICMPの送信元アドレスを並べると、宛先までの経路がわかる。

TTLが含まれる場所

TTLは、IPヘッダーのフィールドであり、TCPやUDPのヘッダーにはない。

ヘッダーTTLに当たるもの
IPv4TTL
IPv6ホップリミット
TCP、UDPなし
イーサネットなし

イーサネットのフレームにはTTLがないため、レイヤ2でループが起きると、フレームが消えずに回り続ける。これを防ぐのがスパニングツリープロトコルである。

DNSのTTL

DNSのリソースレコードにもTTLがあるが、これは別のもので、キャッシュサーバがその情報を保持してよい時間(秒)を表す。

TTL単位意味
IPのTTLホップ数(実質)パケットが通過できるルータの数
DNSのTTL秒応答をキャッシュしておける時間

DNSのTTLを短くすると、変更がすぐに反映される代わりに、問い合わせの数が増える。サーバの移転の前には、TTLをあらかじめ短くしておくのが一般的である。

実際の試験ではここに出る!

この用語が出てくる記事

↑