9.2. IPv4 Traceroute
9.2. IPv4 Traceroute
IPv4 traceroute の場合, 上記の手順に従うことはできません。IPv4 ICMP Time Exceeded メッセージには, トリガーした IP ヘッダと IP ヘッダの後の 8 オクテットのみが含まれているためです。したがって, コアルータが ITR に IPv4 Time Exceeded メッセージを送信する場合, ITR が ICMP ペイロードに持っているのは, ITR が追加したカプセル化ヘッダとそれに続く UDP ヘッダのみです。元のトリガー IP ヘッダと traceroute ソースの ID は失われます。
この問題を解決するために提案する解決策は, ITR で traceroute IPv4 ヘッダをキャッシュし, コアルータと ETR から受信した対応する IPv4 Time Exceeded メッセージと照合することです。ITR は, traceroute パケットの IPv4 と UDP ヘッダをキャッシュするために循環バッファを使用します。後で IPv4 Time Exceeded メッセージを受信したときにそれらを見つけるためのキーとして 16 ビット数を選択します。ITR が IPv4 traceroute パケットをカプセル化するとき, カプセル化ヘッダの UDP 送信元ポートとして 16 ビット数を使用します。ICMP Time Exceeded メッセージが ITR に返されると, カプセル化ヘッダの UDP ヘッダが ICMP ペイロードに存在し, ITR が traceroute ソースのキャッシュされたヘッダを見つけることができます。ITR はキャッシュされたヘッダをペイロードに入れ, 元の ICMP Time Exceeded メッセージの送信元アドレス (コアルータまたは traceroute 宛先サイトの ETR) を保持したまま ICMP Time Exceeded メッセージを traceroute ソースに送信します。
traceroute パケットのシグネチャには 2 つの形式があります。最初の形式は UDP メッセージとしてエンコードされ, 宛先ポートの値範囲がチェックされます。2 番目の形式は ICMP メッセージとしてエンコードされ, IP 識別フィールドの既知の値がチェックされます。