• ベストアンサー

ttlについて…

学校の課題でc++でpingを作れと言われました。プログラムを作って表示するところでWindowsで普通にpingを通すとReply form bytes time ttlを表示するので、自分のプログラムもこれらを表示するようにしました。ですが、先生にttlは何故必要なのか?と言われあんまり考えていなかったので答えられませんでした。なぜttlは必要なのですか?少し噛み砕いて教えていただけたら幸いです

  • dogga
  • お礼率20% (2/10)

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

こちらを読めば解決しますよ。 http://www.tef-room.net/main/icmp.html 下のほうにある「TTLってなに?」を読んでください。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.2

ICMPは、ルータを経由するたび、TTL(Time To Live)フィールドの値が1つ減る事が期待されています。 ICMP Echo Requestを受け取った相手は、ICMP Echo ReplyのTTL(Time To Live)フィールドに、以下の何れかの値をセットしてping元に返送します。 ・Echo RequestのTTLフィールドの値をそのままセット(古いBSD Unix) 結果「ping元がセットしたTTLの値-往復で通過したルータの個数」が返って来ます。 ・255をセット(今のBSD Unix、Linuxなど) 結果「255-復路(帰り)で通過したルータの個数」が返って来ます。往路(行き)のルータの個数は含まれません。 ・128をセット(Windowsなど) 結果「128-復路(帰り)で通過したルータの個数」が返って来ます。往路(行き)のルータの個数は含まれません。 ・60をセット(ルータ、ネットワーク機器などや、一部のBSD Unix) 結果「60-復路(帰り)で通過したルータの個数」が返って来ます。往路(行き)のルータの個数は含まれません。 TCP/IP規格では、TCPパケットのTTLフィールドは60に設定すべきとしている為、ICMPのTTLフィールドも60に設定している機器が多い為。 ・30をセット(一部のBSD Unix) 結果「30-復路(帰り)で通過したルータの個数」が返って来ます。往路(行き)のルータの個数は含まれません。 一部のBSD UnixなどではTCP/IPのTCPパケットのTTLフィールドを30に設定しているシステムが多く、ICMPのTTLフィールドも30に設定しているシステムがある為。 ・32とか64とか、その他の値をセット(特殊な機器、一部のBSD Unix) 結果「その他の値-復路(帰り)で通過したルータの個数」が返って来ます。往路(行き)のルータの個数は含まれません。 「その他の値」が幾つなのかがping元に判らない場合、幾つのルータを経由して来たかは判りません。 このように、ping先の正体が判明しないと、相手がTTLフィールドに幾つの値をセットして来たか判りません。 例えば、pingした結果「TTL=126」と表示されても「相手がLinuxで、応答時にTTLに255がセットされ、その後、129個のルータを経由して返って来た」のか「相手がWindowsで、応答時にTTLに128がセットされ、その後、2個のルータを経由して返って来た」のか、どっちなのか区別できません。 こういう場合は、pingを打つ際のICMP Echo RequestのTTLを、5とか10とか、極端に小さい値にして試します。 もし「相手がLinuxで、応答時にTTLに255がセットされ、その後、129個のルータを経由して返って来た」のなら、pingを打つ際のTTLが5とか10とかにすれば、途中の130個近くのルータを経由する前に、途中で「相手に届きませんでした」と言う応答が返って来ます。 もし「相手がWindowsで、応答時にTTLに128がセットされ、その後、2個のルータを経由して返って来た」のなら、pingを打つ際のTTLが5とか10とかであっても、途中のルータがたった2個なら乗り越えられる筈で、相手から正しい応答が返って来る筈です。 このように、TTLとは「経路上のルータの個数など、途中の経路の状態を知る手掛かり」として必要なのです。 TCP/IPパケットが相手に届かない理由を調べる時、pingでのTTL表示を見れば、途中の経路のルータ数が予測出来ます。 その時、もし「どうやら、途中に30個を超えるルータが入っているようだ」と予測出来たら「TCP/IPパケットのTTLが30になっているのが相手に届かない原因らしい」と推測出来ます。 そして「TCP/IPのTTLを30から60に変更して送ってみる」と言う対処を行う事が可能です。 pingにTTLの表示が無ければ「届くか、届かないか」しか判りませんが、TTLが表示されていれば「届くか、届かないか」と同時に「届かない場合、どうして届かないのか」も推測する事が可能になるのです。

関連するQ&A

  • TTL

    TTLとは、パケットの有効期間を表す値。最大255までの整数値で表され、ルータなどを1回経由されるたびに値が1減少する。TTLが0になったパケットはその時点で廃棄され、廃棄通知がパケットの送信元に届くようになっている。 ・・・とのことですが、 tracert では TTL という言葉は出てこないですし、 pingでは 例えば・・・yahooまでPingで、 C:\Documents and Settings\Owner>ping www.wakwak.com Pinging www.wakwak.com [219.103.130.28] with 32 bytes of data: Reply from 219.103.130.28: bytes=32 time=11ms TTL=250 Reply from 219.103.130.28: bytes=32 time=13ms TTL=250 Reply from 219.103.130.28: bytes=32 time=11ms TTL=250 Reply from 219.103.130.28: bytes=32 time=11ms TTL=250 Ping statistics for 219.103.130.28: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 11ms, Maximum = 13ms, Average = 11ms TTLという言葉は出てきますが、=250 で、減っているという状況ではないようです どんなコマンドを試した時に、1つずつ減っていくのを確認できますか? 

  • ping の TTL について

    ネットワークの勉強をしております。 3ヶ所に対して ping を行ったところ、 ping -c 1 www.google.com PING www.l.google.com (72.14.235.99) 56(84) bytes of data. 64 bytes from www.google.com (72.14.235.99): icmp_seq=1 ttl=243 time=40.9 ms ping -c 1 www.ericson.com PING www.ericson.com (72.3.222.14) 56(84) bytes of data. 64 bytes from www.ericson.com (72.3.222.14): icmp_seq=1 ttl=113 time=196 ms ping -c 1 www.yahoo.com PING www.yahoo-ht3.akadns.net (209.131.36.158) 56(84) bytes of data. 64 bytes from www.yahoo.com (209.131.36.158): icmp_seq=1 ttl=52 time=125 ms となりました。 google に対して TTL の初期値は , google : 255 , ericson : 128 , yahoo : 64 となっていると思いますが, どうやってこの初期値は決まるのでしょうか?() 色々調べてみましたが, わからなかったので, こちらに投稿しました.

  • PINGのtimeは必要ありませんか?

    作業環境:windowsXP、Visual C++ 2008。 winsockを使ってpingを表示するプログラムを作っています。 windowsのコマンドプロンプトで『ping XX.co.jp』と打ち成功すると『Reply from XX.co.jp:bytes=XX time=XXms TTL=XX』と返って来ます。 初心者で作り方がよくわからなかいため、サンプルプログラムなどを検索しましたが、『time=』の表示について書かれているサイトが見当たりませんでした。 なぜtimeの項目は書かれないのでしょうか。 書かなくても問題無いものですか? またそのプログラムの書き方について書かれているサイトや書籍がありましたら教えていただきたいと思います。

  • PINGによる応答

    googleまではIPアドレスまでと、ドメインまでのpingの結果は 下記のようにいずれも、0%loss  ■ping 74.125.95.104 の結果 Pinging 74.125.95.104 with 32 bytes of data: Reply from 74.125.95.104: bytes=32 time=133ms TTL=51 Reply from 74.125.95.104: bytes=32 time=132ms TTL=51 Reply from 74.125.95.104: bytes=32 time=134ms TTL=51 Reply from 74.125.95.104: bytes=32 time=134ms TTL=51 Ping statistics for 74.125.95.104: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 132ms, Maximum = 134ms, Average = 133ms ■ping google.co.jpの結果 Pinging google.co.jp [74.125.95.104] with 32 bytes of data Reply from 74.125.95.104: bytes=32 time=134ms TTL=51 Reply from 74.125.95.104: bytes=32 time=133ms TTL=51 Reply from 74.125.95.104: bytes=32 time=135ms TTL=51 Reply from 74.125.95.104: bytes=32 time=134ms TTL=51 しかし、googleまではIPアドレスまでもドメインまでも 下記のように Request timed out O%loss  C:\Documents and Settings\Owner>ping 210.132.71.11 Pinging 210.132.71.11 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 210.132.71.11: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), C:\Documents and Settings\Owner>ping oshiete1.goo.ne.jp Pinging oshiete1.goo.ne.jp [210.132.71.11] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 210.132.71.11: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss) Googleも、教えてgooも、IEでホームページを表示することはできますが、なぜこのようにpingの応答結果が違うのでしょうか?

  • ネットワークが異常に遅くなった

    1週間ほど前から急にインターネットのアクセスが遅くなりました。 それまでは問題なく利用できていました。 マンションに住んでおり、プロバイダとの契約は不動産屋が行っています。 すべての部屋にインターネット環境が提供される形態と思われます。 構成は 【管理人室】 モデム → LANケーブル → ルータ※ → (この先は不明) 【自室】 モジュラージャック → モジュラーケーブル → 分配機※ → LANケーブル → PC ※ルータはAllied Telesis CentreCOM AR220Eです。 ※分配機はNAKAYO NYC-VDSL-T16です。 ルータへのpingを試みてみたところ   >ping -n 10 192.168.1.1   Pinging 192.168.1.1 with 32 bytes of data:   Reply from 192.168.1.1: bytes=32 time=1758ms TTL=250   Reply from 192.168.1.1: bytes=32 time=1909ms TTL=250   Reply from 192.168.1.1: bytes=32 time=1961ms TTL=250   Reply from 192.168.1.1: bytes=32 time=1837ms TTL=250   Reply from 192.168.1.1: bytes=32 time=253ms TTL=250   Reply from 192.168.1.1: bytes=32 time=2818ms TTL=250   Reply from 192.168.1.1: bytes=32 time=573ms TTL=250   Reply from 192.168.1.1: bytes=32 time=1633ms TTL=250   Reply from 192.168.1.1: bytes=32 time=1185ms TTL=250   Reply from 192.168.1.1: bytes=32 time=1909ms TTL=250   Ping statistics for 192.168.1.1:    Packets: Sent = 10, Received = 10, Lost = 0 (0% loss),   Approximate round trip times in milli-seconds:    Minimum = 253ms, Maximum = 2818ms, Average = 1583ms   >ping -l 1465 192.168.1.1   Pinging 192.168.1.1 with 1465 bytes of data:   Reply from 192.168.1.1: bytes=1465 time=461ms TTL=250   Reply from 192.168.1.1: bytes=1465 time=1531ms TTL=250   Reply from 192.168.1.1: bytes=1465 time=175ms TTL=250   Reply from 192.168.1.1: bytes=1465 time=1084ms TTL=250   Ping statistics for 192.168.1.1:    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),   Approximate round trip times in milli-seconds:    Minimum = 175ms, Maximum = 1531ms, Average = 812ms なお、ルータにログインすることは可能です。 ルータをアクセスログを探してみましたが、どうやらPPPoEステータスくらいしかないようです。 ご教授のほどよろしくお願いいたします。

  • pingのデータサイズによってRequest timed outが起こる

    質問です。下記のようにpingを実行したところ2000バイト程度だと問題なくpingが通りますが、 たった2バイトなのに、サイズをあげるとRequest timed out.がおこり、1回も通りません。理由を教えて下さい。 C:\>ping -l 2000 yahoo.co.jp Pinging yahoo.co.jp [203.216.227.176] with 2000 bytes of data: Reply from 203.216.227.176: bytes=2000 time=260ms TTL=51 Reply from 203.216.227.176: bytes=2000 time=157ms TTL=51 Reply from 203.216.227.176: bytes=2000 time=154ms TTL=51 Reply from 203.216.227.176: bytes=2000 time=114ms TTL=51 Ping statistics for 203.216.227.176: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 114ms, Maximum = 260ms, Average = 171ms C:\>ping -l 2001 -w 60000 yahoo.co.jp Pinging yahoo.co.jp [203.216.227.176] with 2001 bytes of data: Reply from 203.216.227.176: bytes=2001 time=196ms TTL=51 Request timed out. Reply from 203.216.227.176: bytes=2001 time=170ms TTL=51 Reply from 203.216.227.176: bytes=2001 time=183ms TTL=51 Ping statistics for 203.216.227.176: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss), Approximate round trip times in milli-seconds: Minimum = 170ms, Maximum = 196ms, Average = 183ms C:\>ping -l 2002 -w 60000 yahoo.co.jp Pinging yahoo.co.jp [124.83.139.192] with 2002 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 124.83.139.192: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

  • ルータ壊れてしまって(2)

    1階から Microsoft(R) Windows 98 (C)Copyright Microsoft Corp 1981-1999. C:\WINDOWS>ping 192.168.0.2 Pinging 192.168.0.2 with 32 bytes of data: Reply from 192.168.0.2: bytes=32 time=5ms TTL=128 Reply from 192.168.0.2: bytes=32 time=3ms TTL=128 Reply from 192.168.0.2: bytes=32 time=2ms TTL=128 Reply from 192.168.0.2: bytes=32 time=3ms TTL=128 Ping statistics for 192.168.0.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 2ms, Maximum = 5ms, Average = 3ms 異常ありませんでした。 2階から C:\WINDOWS>ping 192.168.0.1 Pinging 192.168.0.1 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 192.168.0.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms PINGは、通りませんでした。 ルータ壊れてしまって(3)へ 関連URL:http://www.okweb.ne.jp/kotaeru.php3?q=423352

  • LANカードとPCの相性(不具合)

    2ヶ月ほど前からフレッツADSLにして不具合が耐えず まだ、何が原因なのか突き止められていません。 PC→LANカード→LANケーブル→モデム→電話線 という具合でインターネット接続しています。 で、他の質問にあったのですがDOSの画面で ping 127.0.0.1と打つとLANカードのpingが確認できる らしいのですが初心者の私にとっては何がなんだかさっぱりわかりません。 このpingで例えばLANカードの不具合とか、PCとの相性とかが わかるものなのでしょうか? このpingの意味するものをわかりやすく教えて下さい ちなみに私のパソコンで打つと Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<10ms TTL=128 Reply from 127.0.0.1: bytes=32 time<10ms TTL=128 Reply from 127.0.0.1: bytes=32 time<10ms TTL=128 Reply from 127.0.0.1: bytes=32 time<10ms TTL=128 Pinging statistics for 127.0.0.1: Packets: Sent = 4, Received = 4 , Lost =0 (0% loss), Approximate round triptimes in milli-seconds: Minimum = Oms,Maximum = Oms, Average = Oms と返ってきます。OSはMEです。回答よろしくお願いします。

  • VBScriptでpingを実行(ブラウザのテキストエリア内)

    VBScriptで、複数台の端末に対して同時にpingを実行したいのですが、 表示結果をコマンドプロンプトではなく、 ブラウザのテキストエリア内に、リアルタイムに表示 する方法はあるのでしょうか? イメージとしては、以下の通りになります。 ---------------------------------------------------- PC1 Reply from 192.168.1.1: bytes=32 time<1ms TTL=128 PC2 Reply from 192.168.1.2: bytes=32 time<1ms TTL=128 PC3 Request timed out. PC4      ・      ・      ・ ---------------------------------------------------- お分かりの方がいらっしゃいましたら、教えて頂けますでしょうか?

  • ローカルでCGIを動かしたいのですがDynamicDNSがうまく設定できません。

    CGIを勉強したいと思い、ttp://www.kent-web.com/www/anhttpd/www3.htmlのサイトで自宅マシーンをwwwサーバのしてローカルでCGIを動かせるようにしようと思っていたのですが、DynamicDNSサービスに登録してホスト名を取得し、コマンドプロンプトを立ち上げて PING を打ち新規に取得したホスト名が、「taro.no-ip.com」だとしたら、コマンドプロンプトから、ping taro.no-ip.com と打ちました。 成功しているなら C:\>ping taro.no-ip.com Pinging taro.no-ip.com [210.123.45.67] with 32 bytes of data: Reply from 210.123.45.67: bytes=32 time=139ms TTL=116 Reply from 210.123.45.67: bytes=32 time=144ms TTL=116 Reply from 210.123.45.67: bytes=32 time=139ms TTL=116 Reply from 210.123.45.67: bytes=32 time=139ms TTL=116 Pinging statistics for 210.123.45.67: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 139ms, Maximum = 144ms, Average = 140ms C:\>_ と表示されるみたいなのですけど Reply from 210.123.45.67:・・・・・・というところが私のは Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 210.123.45.67: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), となってしまい、失敗しているようです。 いろんなフリーのホスト名を取得し試してみましたがどこも同じ表示がされてしまいます。 どこがおかしいのでしょうか?解決する方法があれば教えてください。 ちなみにPCがWindows XPです。

    • ベストアンサー
    • CGI

専門家に質問してみよう