返信

まず、tracerouteの仕組みから説明しましょう。
IPにはパケットの生存期限を管理する仕組みがあります。
具体的には、IPヘッダのTTLという欄に
送信側で適当な値(実際の値は実装によって違います)を入れて送信し
ルータで中継する際にカウントダウンして、
TTLがゼロになったら、パケットは期限切れなので廃棄する、というものです。

tracerouteはこの仕組みを利用しています。
まず、TTLに1を入れてパケットを送ります。
すると、最初のルータで期限切れになり、
そこからパケット廃棄を知らせるICMPが返ってきます。
その送信元アドレスを見ることで、最初のルータのIPアドレスが分かります。
以後、TTLを2,3,4,5...と増やしていけば、
2番目、3番目...というように手前から順にルータのIPアドレスが分かります。
それを順番に表示するのがtracerouteです。

次はカプセル化の仕組みです。
カプセル化はパケットを丸ごと全部(ヘッダとデータの両方)
別のパケット(カプセル化用パケットと呼びましょう)のデータ部分に入れて運ぶ仕組みです。
その姿は下のようなイメージになります。

| カプセル化用パケットヘッダ(A) | tracerouteのヘッダ(B) | tracerouteのデータ(C) |

そして、このパケットを中継するルータは
カプセル化パケットのデータ部分(上のBとC)をビットの塊として認識するだけで、
その内容は関知しません。

このパケットがトンネルを流れるとどうなるか。

トンネルの入り口のルータがn番目とすると、
TTL=nにしてパケットを送信すると
パケットは入り口のルータで廃棄され、
返ってきたICMPから入り口のルータのIPアドレスが分かります。
次、TTL=n+1のパケットを送信すると
TTL=n+1のパケットはトンネル入り口でカプセル化され、
トンネルを通って出口に届き、そこでカプセル化を解いて元のパケットに戻り、
そのルータ(出口のルータ)がTTLをカウントダウンしてゼロになり、
パケット廃棄してICMPを返送するはずです。
そして、tracerouteの画面には
トンネル入り口のルータの次に出口のルータが表示されます。
tracerouteのパケットの立場から見ると、
トンネル入口のルータ(n番目)の次はトンネル出口のルータ(n+1番目)なのです。
トンネルの中間のルータは見えないというのは、こういうことなのです。

補足すると、
カプセル化されたパケットはTTLカウントダウンの対象にならないのですが、
これをトンネルの中間のルータはTTLをカウントダウンをしない、と誤解してはいけません。
トンネルの中間のルータもTTLのカウントダウンは行います。
ただ、その対象になるTTLは、カプセル化用のパケットのTTL(上記Aの中にある)であって、
データ部分に入れたパケットのTTL(上記Bの中にある)ではない、ということです。

<code>Only

  • 使用できるHTMLタグ: <code>
  • 文字で図を描く場合に<code>と</code>で囲んでください
画像認証
機械的なスパムメッセージ送信を防止するために画像認証を設けています。ご協力ください。
Image CAPTCHA
Enter the characters shown in the image.