tracerouteコマンドを入力した際に使用されるパケットの種類について考える機会があったのでそのメモです。
tracerouteコマンドとtracertコマンドの概要
tracerouteコマンドとtracertコマンドはどちらも宛先に到達するまでの経路を表示してくれるコマンドです。細かい解説は省略しますが、はじめはTTL=1のパケットを送信し、TTLが0になったときに返ってくるICMPタイプ11(Time-to-live exceeded)を受信するたびに、TTLを1ずつ増やしながら、宛先に到達するまで送信を繰り返すことで、宛先までの経路情報を知ることができます。ほとんどのOSではtracerouteコマンドを使用しますが、Windowsではtracertコマンドが使用されます。
LinuxのtracerouteコマンドのデフォルトはUDP
tracerouteコマンドでパケットを送信する際、デフォルトではUDPパケットを使用します。下記の図はLinux(CentOS8)でtracerouteコマンドを入力したときのTTL=1のパケットです。UDPを使用していることがわかります。
なお、-IオプションをつけることでICMPを、-TオプションをつけることでTCP synパケットを使用することができます。
Mac OSが手元にないため未検証ですが、デフォルトでは同様にUDPを使用するようです。また、オプションによってICMPやTCPに変更することが可能です。
WindowsのtracertコマンドのデフォルトはICMP
tracertコマンドでパケットを送信する際、デフォルトではICMPパケットを使用します。下記の図はWindowsでtracertコマンドを入力したときのTTL=1のパケットです。ICMPを使用していることがわかります。