女性目閉じる

traceroute(Windowsではtracert)は、ターゲットIPへの通信経路がわかる便利な機能であるが、どんな仕組みになっているのですか?
tracerouteはICMPパケットを利用しています。
以下の構成で説明します。

【PC1】        【ルータA】     【ルータB】     【ルータC】     【PC2】
10.1.1.10 → 10.1.1.1  → 1.1.1.2  → 2.1.1.1   →  3.1.1.10
             1.1.1.1      2.1.1.1     3.1.1.1

PC1(10.1.1.10)からPC2(3.1.1.10)へPingを打ちます。

Reply from 3.1.1.10: bytes=32 time<10ms TTL=128
このように、OKが返ってくるとします。

今度はtracerouteをします。
ICMPパケットのTTL(Time To Live:生存時間)を1に設定します。
▲襦璽A(10.1.1.1)に届きます。
TTL(生存時間)が1のパケットは、ルータAに届いたことでTTLは0になり、破棄されます。破棄されたことを通知するために、ルータAはtime exceeded(生存時間を超過した)というメッセージを返します。
PC1はtime exceededが返ってきた送信元IPアドレスを見て、最初のルータはルータA(10.1.1.1)であることがわかります。
イ海瞭虻遒魴り返します。次はTTLを2に設定し、同じ処理をします。
ζ瑛佑法time exceededが返ってきた送信元IPアドレスを見て、次のルータはルータB(1.1.1.2)であることがわかります。
sef4

PingがNGになるものでも、途中までは経路がわかる。
あれも不思議ですが。
PingがNGになる場合、最終的な宛先に届かなくても、途中の経路までは届く場合があります。たとえば、最終的な宛先のFirewallで拒否されている場合や、最終的な宛先の直前のルーティングが間違っている場合などです。
tracerouteの仕組みを説明したように、最終的な宛先に関係なく、順次TTLを増やしていくので、PingがNGでも途中までの経路がわかる場合があるんのです。