0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

実例で説明:ICMPメッセージのTTL値はなぜ二つあるの?

0
Last updated at Posted at 2026-09-20

Wiresharkでエラーパケット(特にICMPメッセージ)を解析していると、「同じパケットを見ているはずなのに、画面上のTTL値が1だったり128だったりして混乱する」という現象によく遭遇します。

この記事では、Wiresharkにおける「ICMPエラーパケットの二重構造」の仕組みと、それぞれのTTL値(1と128)が何を意味しているのかを分かりやすく解説します。


1. 結論:パケットの中に「もう1つのパケット」が入っている!

WiresharkでICMPの「Time to Live Exceeded(TTL超過)」エラーを見るとき、パケットはマトリョーシカのように二重構造になっています。

  • 外側のパケット(手紙の封筒): エラーを教えてくれたルーター(NVA)からの「通知メッセージ」
  • 内側のパケット(手紙の中身): 途中で破棄された「元々の通信データ」
見ている場所 送信元 ➔ 宛先 プロトコル 表示されるTTL 意味
① 外側のヘッダー ルーター ➔ 送信元VM ICMP 128 (または14など) エラー通知パケット自身が持つ寿命
② 内側のデータ部 送信元VM ➔ 宛先VM UDPなど 1 破棄された元パケットの送信時の寿命(原因)

2. なぜ二重構造になっているのか?(ICMPの仕組み)

ルーターがパケットを破棄した際、ただ捨てるだけでは送信元コンピュータは「なぜ通信が届かないのか」が分かりません。

そのため、ルーターは送信元に対して「あなたの送ったこのパケット、TTLが0になったので途中で破棄しましたよ」という報告(ICMP Time Exceeded)を返送します。

このとき、送信元が「どの通信が失敗したのか」を特定できるように、ルーターは破棄したパケットのヘッダー情報をICMPメッセージの中にコピーして添付してくれます。

【ルーターから届く ICMP エラーパケットの全体像】

+-----------------------------------------------------------------------+
| [① 外側のIPヘッダー] (TTL = 128)                                      |
| 送信元: ルーター (NVA)  ───➔  宛先: 送信元VM                           |
+-----------------------------------------------------------------------+
| [ICMPメッセージ本体]                                                   |
| Type: 11 (Time-to-live exceeded)                                      |
|                                                                       |
|   ┌───────────────────────────────────────────────────────────────┐   |
|   | [② 添付された「破棄された元のパケット」のIPヘッダー]           |   |
|   | 送信元: 送信元VM  ───➔  宛先: 宛先VM                          |   |
|   | プロトコル: UDP (Port 3343)                                   |   |
|   | TTL: 1  <─── ★これが通信トラブルの原因!                      |   |
|   └───────────────────────────────────────────────────────────────┘   |
+-----------------------------------------------------------------------+

image.png

image.png
image.png


3. Wiresharkでの見分け方(どこをクリックすればいい?)

Wiresharkの中央パネル(ツリー表示)で、どの階層を展開しているかによって表示されるTTL値が変わります。

① 「128」が見えているとき

中央パネルの上のほうにある Internet Protocol Version 4 を選択している状態です。

  • ここで表示されているのは「ルーターが送信したエラー通知(ICMPパケット)」のTTL値です。
  • ルーター(OS)のデフォルト初期値(128など)が表示されます。

② 「1」が見えているとき

中央パネルの下にある Internet Control Message Protocol を展開(▶をクリック)し、その中にある Internet Protocol Version 4 を選択している状態です。

  • ここで表示されているのが、「破棄された元のパケット」のTTL値です。
  • 「なぜ通信が失敗したのか?」を調査するときは、こちらの内部のTTL値を見る必要があります。

4. トラブルシューティングでの活かし方

ネットワークの障害調査(キャプチャ解析)を行う際は、以下の手順でチェックするのがコツです。

  1. ICMP Time Exceeded パケットを見つける。
  2. Internet Control Message Protocol の中身(折りたたまれている配下)を展開する。
  3. 内側に添付されている元パケットの Time to Live を確認する。
  4. TTLが 1 になっていれば、「送信元アプリのTTL設定不足」または「途中に想定外のルーター(L3ホップ)が存在する」ことが原因だと一目で判断できる!

5. まとめ

  • WiresharkのICMPエラー表示は「外側の通知」と「内側の原因データ」の二重構造。
  • 一番上のIPヘッダーに見える TTL=128 は「エラー通知が届くための寿命」。
  • ICMPツリーを展開した中にある TTL=1 こそが「トラブルの原因となった元パケットの寿命」。

Wiresharkでエラーパケットを見るときは、ぜひ「ICMPの中身を展開して、内側のIPヘッダーを見る」ことを意識してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?