TCP/IP - ICMP (traceroute)



 ◆ tracerouteとは

 traceroute (トレースルート)は、ICMPプロトコルを使用したネットワークの診断プログラムです。
 使用するコマンドはWindowsの場合は
tracert、Cisco機器の場合は tracerouteというコマンドです。
 このコマンドによって、あるホストから宛先のホストまでに到達するためにどのネットワーク経路を
 使用しているのかが分かり、結果、宛先ノードまでのネクストホップアドレスの一覧が表示されます。
 ※ ネクストホップアドレスとは、ルーティングで次にパケットを転送する隣接ルータのIPアドレス。



 ◆ tracerouteが使用するプロトコル

 tracerouteは、ICMPプロトコルまたはUDPプロトコルのどちらかを使用します。Windowsのtracertは
 
ICMPプロトコルを使用しますが、LinuxやCisco IOSではUDPを使用します。このようにOSにより使用
 プロトコルは異なるので、WindowsでのtracertとCisco IOSでのtracerouteの結果が異なる場合がある。
 ※ ルータでのpingはOK、しかしtracerouteはNGという結果が得られた場合、上記内容を思い出そう。


 ◆ tracert の仕組み

 
以下解説のtracerouteの仕組みは「ICMP」を使用した場合のものですが、「UDP」を使用する場合でもその考え方は基本的に同じ。

 下図でホストAからホストBにWindows上のコマンドプロンプトで tracert 192.168.3.100 を実行します。
 tracerouteではICMPパケットを送る際に、IPヘッダのTTL値を「1」にします。1台目を経由するルータが
 このパケットを受信するとTTL値が「0」になるので、ルータはパケットを破棄してICMP Time Excceedの
 メッセージを送信します。なぜこのような事をするのかというと、このICMPメッセージを受信することで
 ホストAは、宛先の機器に到達するまでに経由するルータが分かる(通過する伝送経路が分かる)からです。


   



 次に、ホストAはTTL値を1つ増やして「2」にします。ルータAでTTL値が1つ減らされ、ルータBでTTL値が
 1つ減らされるので、今度はルータBの時点でTTL値が「0」になります。そうなると、先ほど同様に、今度は
 ルータBがICMP Time ExceededのメッセージをホストAに送信します。これにより、2台目の経由ルータは
 「 192.168.2.2 」だと分かります。これによりホストAは、ルータAとルータBまで通信できると分かります。



  


 ホストAは、今度はTTL値をさらに1つ増やして「3」にします。ルータAで、TTL値が1つ減らされて、
 ルータBでTTL値が1つ減らされますが、残り「1」のTTL値は減らされないのでホストBにICMPエコー
 要求が到達します。ICMPエコー要求を受信したホストBは、ホストAにICMPエコー応答のメッセージを
 送信します。ICMPエコー応答を受信したホストAは、tracertによるICMPパケットの送出をこれで終了。


  



 以下は、ホストAでtracertを実行した結果です。応答時間(ミリ秒)が3回表示されているが、Windowsでは
 1回のtracertの実行につき、デフォルトで3回パケットが送信されるので、3回の応答時間が表示されています。
 表示されているアドレスは宛先機器までの伝送経路にある経由するルータのアドレスです。ここに表示されて
 いるアドレスがネクストホップアドレス。ただし最後のIPアドレスは宛先機器である「ホストB」となります。



 ちなみに、pingコマンドと同様にtracertコマンドでも、以下のように宛先IPアドレスではなく、代わりに
 ドメイン名を指定しtracertを実行できます。前提としてPCで正しいDNSサーバを指定する必要があります。

 C:\>
tracert www.yahoo.co.jp



ICMP - ping TCPとは

ネットワークエンジニアとして

Copyright (C) 2002-2019 ネットワークエンジニアとして All Rights Reserved.