仕事でTTLについて学ぶ機会があったので、記載する。
ネットワークのTime to Live(TTL)とは?
Time to Live(TTL)とは、ルーターによって破棄される前にネットワーク内にパケットが存在するように設定されている時間または「ホップ」のこと。
TTLは、CDNキャッシュやDNSキャッシュなどの他のコンテキストでも使用される。
TTLの仕組みとは?
情報のパケットが作成され、インターネットを介して送信される場合、ルーターからルーターへ無期限に通過し続けるリスクあり。
この可能性を軽減するために、有効期限またはホップ制限と呼ばれる有効期限でパケットが設計されています。
パケットTTLは、パケットが循環している時間を判断するのにも役立ち、送信者がインターネットを介したパケットのパスに関する情報を受信できるようにします。
それぞれのパケットには、ネットワーク内を移動し続ける時間を決定する数値を格納する場所があります。
ルーターは、パケットを受信するたびに、TTLカウントから1を引き、それをネットワーク内の次の場所に渡します。
減算後、TTLカウントがゼロに等しい場合、ルーターはパケットを破棄し、ICMPメッセージを送信元ホストに送り返します。
よく使用されるネットワークコマンドpingとtracerouteは両方ともTTLを使用します。 tracerouteコマンドを使用すると、順次TTLがますます高くなるパケットのストリームがインターネット経由で宛先に送信されます。
接続に沿ったそれぞれのステップはいずれかのパケットの最後の終点であるため、それぞれの場所はパケットを破棄した後にICMPメッセージを送信者に返します。
ICMPメッセージが送信者に戻るまでにかかる時間を使用して、ネットワーク上の連続するそれぞれのホップに到達するのにかかる時間を決定します。
IPネットワークにおけるIPデータグラムのTTLは、ネットワーク上での最大転送回数を表す。最大255までの整数が設定され、ルータなどの機器(ホップ/hop)を一回通過するごとに値が1減少する。
TTLが0になったパケットはその場で破棄され、破棄通知が送信元に送られる。
宛先までの転送回数に上限を設けることで誤設定などによるパケットの無限ループを防止することができる。
値は送信元ホストが自由に設定できるが、ネットワーク上の距離が遠い場合はある程度大きい値を設定しないと先方にたどり着く前に破棄されてしまうことがある。
当初は秒単位など実時間による記述を意図していたため、このような名称になっているが、実用上、経過時間を測定・記録することは困難なことから、代替の目安としてルータの通過回数を用いることになった。IPv6では同様の設定値を実態に即して「ホップリミット」(hop limit/ホップ制限)と呼んでいる。
今回はここまで