7

Tracerouteは、AからBへのパスをトレースするアプリケーションです(Aは現在地であり、Bはトレースするサーバーです)。Windowsでは、と入力できますtracert。主なアルゴリズムは次のとおりです。

send UDP with TTL = 1
Server A1 received, and return ICMP packet to A because TTL is expired.
--> know first machine between. For example A1.

send UDP with TTL = 2
Server A1 received, and send this UDP to server A2.
Server A2 received, and return ICMP packet to A because TTL is expired
--> know second machine between. In this example is A2.

Do it until to B. we can track down: A -> A1 -> A2 -> ... ->B

このアルゴリズムは正しく機能しますか?なぜなら、異なる時間に、中間サーバーが異なるサーバーにメッセージを送信できるからです。たとえば、最初はUDPメッセージがA1に送信されますが、後で別のサーバー(B1など)に送信できます。そのため、tracerouteは正しく機能しません。

私は何かを誤解しましたか?

4

2 に答える 2

3

マニュアルページから:

tracerouteは、パケットが特定のホストに向かう途中でIPネットワークからたどるルートを追跡します

したがって、パケットがたどる可能性のあるパスの1つを見つけようとしている場合 は、で友達を見つけることができますtraceroute

ルーティングテーブルは毎分変更されないため、送信するパケットは、ほとんどの場合、tracerouteによってトレースされるのと同じパスをたどります。

見逃せないもう1つの重要なポイントは、IPv4ヘッダーのレコードルートオプションです。このオプションを使用することを指定すると、パス内のすべてのルーターがそのIPアドレスをヘッダーのオプションに追加します。あなたはここでそれについてもっと読むことができます。キャッチは、宛先がソースではなく、中間ホップについて知るようになることです。

tracerouteの説明でicmpエコー要求および応答メッセージの役割を見逃しているようです。これが意図的ではなかった場合は、見てください

更新:次の手順を実行すると、ルートの記録オプションの動作を確認できます。ping -R

ping -R Echo Requestパケットのルート記録をオンにし、返されたパケットのルートバッファを表示します(多くのルーターでは無視されます)

于 2012-11-11T07:43:16.760 に答える
2

アルゴリズムは正しく機能します。実際、サーバーの負荷や可用性など、途中でさまざまなサーバーを考慮することにより、ルーティングが変更される場合があります。AからBにメッセージを送信するとします。ルートを変更できない場合、ルート上のサーバーがダウンするとどうなりますか?ルーティングを動的に調整できなかった場合、この例ではメッセージを宛先に配信できなくなります。別の例を次に示します。たとえば、日中は大量の計算に使用されるサーバーがあり、夜間はアイドル状態であるとします。夜間のみ通過を許可することが可能であるため、それを使用するルーティングは日中に変更する必要があります。

これらすべてを結論付けるために、動的ルーティングがなければ、インターネットは現在の形で存在することはできなかったと断言できます。

添加:

TracertAからBにメッセージを送信します。途中でホップが表示されます。これらのホップは、実行時にAからBへの有効なルートを構成します。ホップが完了した後、途中の2つの隣接するポイント間の接続が有効であるという保証はありません。保証される唯一のことは、ホップごとに、によって送信されたメッセージtracertがそこを通過したときに、2つのエンドポイント間にリンクがあったことです。

于 2012-11-11T07:20:23.767 に答える