tracert
tracert (traceroute)はWindows (Linux)で提供されているルート探索コマンドの一つです.ICMPプロトコルを利用したコマンドです.(Pingを連続で投げているのと同一という理解)
仕組み
IPヘッダに存在するTTL(生存時間)によって,何個ルータを経由できるかが規定されています.デフォルトでは64や128など大きな値が設定されており,目的IPに到達できないことは非常にまれです.
目的IPに到達できなかった場合,すなわち,あるルータでTTLが0になった場合は,そのルータがTime-to-live exceededというエラーで返答します.
tracertではIPパケット作成時にTTLを1から順に増加させ,Time-tolive exceededの返事が順に返答されることによってルート探索を行っています.
コマンド
tracert techatoq.com //ipだけでなく,domain名でも指定可能です
tracert -d techatoq.com //-dオプションで表示されるアドレスを名前解決しない.
結果は以下のようになります(念のため初めの数個は伏せておきます).msの部分は3回要求し,その返答時間を表示しています.なお,tracertに対する返答を行わない設定が行われている
WireShark例
3回要求を投げていること,ttlが宛先ごとに1ずつ増えている様子が確認できます
やっぱりWireSharkと組み合わせてやると,こういうコマンドは何をやっているのか分かりやすいですね.特に深く理解する必要もないように思いますが・・.
どういう時に使えるか?
その名の通りルート探索なので,宛先アドレスからの返答が遅い場合に原因究明の一助となると思います.
- 不要なルータが経由されていないか
- 明らかに返答が遅いルータが存在しないか
- 混雑しているルータはどこか
なので,ネットワークの調子が悪い場合にはとりあえず叩いてみるといいかもしれませんね.