2017-03-19 9 views
0

Tracerouteは、AからBへのパスをトレースするアプリケーションです(Aはあなたの場所、Bはトレースするサーバーです)。次のようにTraceroute:すべてのプローブパケットのパスが同じですか?

基本的なアルゴリズムは以下のとおりです。

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 

私は、このアルゴリズムが正しく動作するかどうかの私は懐疑的になり疑問を持っています。

ルーティングテーブルが頻繁に更新されるため、tracerouteの間、たとえばTTL = 3の場合、プローブパケットはパスA1-> A2-> A3-> A4をたどります。

TTL = 4のプローブパケットを送信すると、A1、A2、A3、およびA4を通過してからA5が通過することが保証されますか?

そうでない場合は、最終出力は有効なパスを表していますか?

誰かがこの問題についていくつかの光を当ててくれることを願っています。ありがとうございます!今

答えて

0

、我々はTTL = 4でプローブパケットを送信する、それはA1、A2、A3、およびA4を通じて に合格することを保証して、A5上にありますか?

いいえ、それは保証されていませんが、ほとんどの現実的なケースではそうです。

enter image description here

:TTL = 4のパケットが前のパケットと同じパスに沿って移動しないでケースでは、あなたは正確に実際のネットワークトポロジを反映していない結果に終わるだろうただし、さまざまなIP & ICMPヘッダーフィールド(whitepaper)を試して、同じパスに沿ってすべてのパケットが移動する可能性を高めるtracerouteの実装であるParis Tracerouteを使用することで、この可能性を減らすことができます。

+0

この情報をお寄せいただきありがとうございます。 フォローアップの質問が1件ありました。 ルータは転送テーブルをどのくらいの頻度で更新しますか?標準はありますか?または可能性のある答え? 基本的には、自分の実装をparis-tracerouteにピボットする必要があるかどうかを判断するために、トレースルートのデータがどれほど頻繁であるかを分析したかったので、複雑さが増し、Android上で実行できるかどうかはわかりません。 もう一度ありがとうございます。 –

+0

ルーターが突然変更を決定したためではなく、ネットワークの変更により転送テーブルが変更されました。このような変更は、しばらくの間、特に*異なるネットワーク間で発生します。しかし、これらのタイプの異常は、ネットワークの変更ではなく、ロードバランサのために発生する可能性が非常に高いです。 paris tracerouteのホワイトペーパーを一見してみることをお勧めします。 paris tracerouteを実装することは、正確性が重要な場合には実際上難しくありません。 – Malt

関連する問題