ICMPの場合、TTLってどういうときに使われていますか?

flyd-OLRXnzXFBjo-unsplash.jpg


ICMPの場合、TTLってどういうときに使われていますか?


バッファロー WSR-3000AX4P-BK Wi-Fi 6対応 無線ルーター AirStation ブラック WSR3000AX4PBK

価格:10404円
(2026/8/8 13:12時点)
感想(86件)


解答

とても良い質問です。
実は、TTLはICMP専用のものではなく、IPパケット全体に付いているフィールドです。そのため、ICMPパケットにも当然TTLが付きます。

TTLの役割

TTL(Time To Live)は、パケットがループして永遠にネットワーク内を回り続けることを防ぐための仕組みです。

例えばICMP Echo Request(ping)は、IPパケットの中にICMPメッセージが入っています。

+----------------------+| IPヘッダー           ||  TTL = 64            |+----------------------+| ICMP Echo Request    |+----------------------+

ルータを1台通過するごとにTTLは1ずつ減ります。

例えば、

PC → R1 → R2 → R3 → ServerTTL=64 ↓TTL=63 ↓TTL=62 ↓TTL=61

となります。


ICMPでTTLが重要になる場面

1. ping

普段のpingでもTTLは使われています。

例えばWindowsでは

ping 8.8.8.8

とすると

Reply from 8.8.8.8:TTL=117

のように表示されます。

これは返信パケットがこちらに届いた時点のTTLです。

送信元(8.8.8.8)は例えばTTL=128で送信し、

128↓127↓126...117

となって届いたという意味です。


2. traceroute(tracert)

TTLが最も活躍するのがこれです。

例えば

TTL=1

で送ると

PC → R1

R1でTTLが0になります。

するとR1は

ICMP Time Exceeded

を返します。

次は

TTL=2

で送ると

PC → R1 → R2

R2でTTLが0になります。

また

ICMP Time Exceeded

が返ってきます。

これを繰り返すことで

1 192.168.1.12 10.0.0.13 172.16.0.14 8.8.8.8

のように経路が分かります。

つまりTTLがあるからtracerouteが実現できるわけです。


3. ループ防止

もしTTLがなければ、

R1 ↑ ↓R2

のようなルーティングループが起きたとき、

ICMPパケットもTCPパケットもUDPパケットも永遠に回り続けてしまいます。

TTLがあるので、

646362...10

となった時点で破棄されます。


TTLが0になったらどうなる?

TTLが0になると、そのルータはパケットを破棄し、送信元に ICMP Time Exceeded(Type 11) を返します。

つまり、

  • TTLはIPヘッダーの機能

  • ICMPはTTLが0になったことを知らせる役割も持つ

という関係です。

まとめ

ICMPではTTLは特に次の場面で重要です。

  • ping:返信パケットのTTLから、おおよその経路の長さや送信元OSの初期TTLを推測できることがあります。

  • traceroute:TTLを意図的に1ずつ増やし、各ルータから返るICMP Time Exceededを利用して経路を調べます。

  • ループ防止:ICMPを含むすべてのIPパケットが無限にネットワーク内を巡回するのを防ぎます。

つまり、TTLはICMP専用ではありませんが、ICMPはTTLの変化や失効を利用・通知するプロトコルでもあるため、両者は非常に密接な関係にあります。







 



この記事へのコメント