tracerouteについての質問です。

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2014-8-24 22:58
prohibited  新米   投稿数: 3
http://ping-t.com/mondai3/mondais/view/12408
問題12408の解説に

 『「traceroute」はCiscoデバイスでトレースルートを行うコマンドです。
  windows PCのトレースルート(tracert)はICMPを利用しますが、
  CiscoデバイスのトレースルートはICMPではなくUDPを利用します。』

とありました。
ICMPではなくUDPを利用したtracerouteについて詳しく知ろうと思い検索したのですが、
ICMPを利用するtracerouteの解説しか見つかりませんでした。

ICMPではなくUDPを利用したtracerouteが実際にどのように動いているのか教えてください。
解説されているサイトでも構いません。
よろしくお願いします。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-8-25 0:30
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
ICMPではなくUDPを利用したtracerouteが実際にどのように動いているのか教えてください。
解説されているサイトでも構いません。
ここなんていかがでしょう?

Cisco.com
IP : IP ルーテッド プロトコル
各オペレーティング システムでの traceroute の使用方法
http://www.cisco.com/cisco/web/support/JP/102/1021/1021777_traceroute-j.html

※ciscoのアカウントが必要です。cisco試験受験されるのであればすでにお持ちかもしれませんが念のため。
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2014-8-27 1:32
prohibited  新米   投稿数: 3
ありがとうございます。
読んでみたのですが、ICMPを利用しているような……?
理解が間違っていたらすみません。

それとも、この分野では受信のみの場合は利用するという表現になならないのでしょうか?

まだ勉強を始めて日が浅く、適切な質問ができていないのではないかという気もします。
物分かりが悪いかも知れませんがもう少しだけよろしくお願いします。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-8-27 8:38
antares01  長老   投稿数: 690
引用:
読んでみたのですが、ICMPを利用しているような……?
理解が間違っていたらすみません。

それとも、この分野では受信のみの場合は利用するという表現になならないのでしょうか?

たしかに全体の通信を見ていくと、途中機器が返すメッセージではicmpを使っています。
しかし、「xxxxを利用したtraceroute」の利用とはtracerouteを実行した端末がIPパケットで
何を運んでいるか(IPヘッダを取り除いたら何がでてくるか)と言うこと意味してます。
途中機器が返すメッセージのプロトコルが何かと言うことは含んでいません。

ですので、例えばCiscoルータからtracerouteをうつことを「icmpを利用した」と言う表現には
ならないと思います。(私の周りでは聞いたことありません)
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-8-27 8:47
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
読んでみたのですが、ICMPを利用しているような……?
あれ?
Cisco IOS と Linuxのところに書いてありませんでした?

引用:
この分野では受信のみの場合は利用するという表現になならないのでしょうか?
えーと、受信のみ、とか「送受信とも」とかの考え方が混乱の元かと。

「tracerouteを行う=ある機器(OS)上でtracerouteコマンドを実行する=実行した機器(OS)から何らかの”探索用パケット(提示した先での表現は「プローブ」)”を送信する」ですよね?
で、探索用パケットに応答する経路上の機器が返す応答はICMPですが、それはtracerouteを実行した機器の挙動ではないですよね。

コマンドの実行によって何らかのデータを送信し、それに対する応答(ICMPメッセージ)によって情報を得るのがtracerouteです。
UDPで何かメッセージを返してくれと依頼するわけではないので、あくまで「探索用パケットとしてUDPを使うかICMPを使うか」というのがここで言う「(コマンドを実行によって主体的に)利用する」ということですかね
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-8-28 2:26
prohibited  新米   投稿数: 3
antares01さん、arashi1977さん、ありがとうございます。
難しいですね。
tracerouteに限れば了解できたのですが、

 問題:次の選択肢の中から風を利用しているものを全て選べ。
  □扇風機
  □風力発電

とあったら正解は扇風機だけという事ですよね。
現時点での私の自然な思考だと両方にチェックをつけてしまいそうです。
日本語の理解力の問題(今まで「利用」の厳密な意味なんて考えた事はありませんでした)ですが、
今後応用問題など複雑なケースでは苦労しそうです……。

早く慣れられるようより一層努力しようと思います。
お二人とも、ありがとうございました。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-8-28 9:03 | 最終変更
arashi1977  長老 居住地: 広島  投稿数: 1715
ちょっとニュアンスが…
引用:
 問題:次の選択肢の中から風を利用しているものを全て選べ。
  □扇風機 (注:自分が風を起こし、その風を利用するのは他者(たとえば人間))
  □風力発電 (注:自分が風を受け取り、その力を利用して発電する)

とあったら正解は扇風機だけという事ですよね。
この問い方だと「利用(することによる結果)」について「作用する側、される側」を混同してしまいそうです。
今回の使い方を当てはめるなら

問題:授業中に私的な用件で前の席の人に連絡したい。気づいてもらうためにどうするか選べ
□うけ狙いでハリセンを利用する
□頭が一番気づきやすいので、投げるために消しゴムを利用する
□背中をつつくためにペンを利用する
□自分の手を利用してやさしくつんつんする

かなーと。
とはいえ、この点を掘り下げるとこの質問の本質である「traceroute」の話から遠ざかってしまうので「【利用】の厳密な意味」はいったん離れましょう。

tracerouteの手法は「送出する探索用パケットのTTLを1から順に増やし、目的の宛先までの機器の応答から情報を得る」です。
※そこから、送出パケットに何を利用するかというのがここでの話題(「利用」の解釈)になっていると思っています。

どういう情報を得るか、については「相手機器が返すICMPメッセージ」なのですが、これはtracerouteがやってるわけではなくて、送出された探索用パケットを受け取りTTLを-1すると、TTL=0になるため次の相手に渡せませんという、受け取った機器からの(おおざっぱにいえば)文句なわけです。
つまり、「あー、文句を言ってきたのはこいつか、てことはこいつまでは届いたのね。じゃあもう一人先までやってみっか」みたいなのを繰り返してるのがtracerouteなのです。

antares01さんもこのように言われてます
引用:
tracerouteを実行した端末がIPパケットで
何を運んでいるか(IPヘッダを取り除いたら何がでてくるか)と言うこと意味してます。
探索用パケットのTTLを1ずつ増やしてるだけなので、それが相手に届けば極端な話何でもいいわけです。
そこで何を使うかが、IOSやlinuxの場合はUDP/WindowsだとICMP、って話です。

小学生っぽいたとえになっちゃいますが、
■お友達調査
・「あなたの名前を教えて」と伝えます
※この時に「伝えます」の方法を、紙にするかメールにするか言葉にするかは問いません。
・受け取った人は一緒についてくる数字を1減らして、0になったら自分の名前を戻します
・一緒についてくる数字がを1減らしても0にならなかったら、あなたの一番の友達に渡してください。
・戻すときはどういうルートで戻しても構いませんが、必ず送り主に返してください。
(紙でもらったけどメールで返す、メールでもらったけど送り主のところに「何か?」って行く、とか)

これがtracerouteです。
そして、IPネットワークの世界であれば「送り主に返す=ICMPメッセージ」が標準なのです。
これは解説の
引用:
そのため、ネットワークに障害などが発生した場合、IPの補助的な役割を果たすプロトコルとしてICMP(Internet Control Message Protocol:インターネット制御メッセージプロトコル)があります。
で言及されてるところです。

なお、最初の質問である
引用:
ICMPではなくUDPを利用したtracerouteが実際にどのように動いているのか
については、提示したURLの先にある
引用:
1.UDP データグラムは、TTL = 1、宛先 UDP ポート = 33434、および送信元ポート:ランダム値で送信されます。

2.UDP 宛先ポートは増分し、送信元 UDP ポートはランダムに設定され、2 つ目のデータグラムが送信されます。

3.手順 2 が最大 3 プローブ(または拡張 traceroute コマンド出力で要求された回数)まで繰り返されます。送信された各プローブについて、「TTL exceeded」メッセージが返されます。これは、宛先ホストへのパスを構築する際に使用します。

4.ICMP の「time exceeded」メッセージを返された場合、TTL は増分され、このサイクルは増分された宛先ポート数を使用して繰り返されます。また、次のいずれかのメッセージを受け取ることもあります。
ICMP type 3, code 3 ("destination unreachable"、"port unreachable") メッセージ。これは、ホストに到達したことを示しています。
"host unreachable"、"net unreachable"、"maximum TTL exceeded"、または "timeout" タイプのメッセージ。これは、プローブが再送信されたことを示しています。
の1,2がUDPについてのところです。ICMPの場合は
引用:
MS Windows の tracert コマンドでは、UDP データグラムの代わりに、ICMP エコー要求データグラムがプローブとして使用されます。ICMP エコー要求は、TTL を増分しながら送信されます。また、 「Cisco IOS と Linux」で説明したものと同じ動作が行われます。
こういう動きです。ttlを1ずつ増やしたpingを送る、と思ってもらえばいいです。

という話だと、少しは助けになるでしょうか?

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.