http://を使用した場合と使用しない場合のpingの違い


46

Webサイトをpingしようとしていますhttp://www.example.com/が、不明なIPアドレスに解決され、タイムアウトします。

PING http://www.example.com/ (198.105.254.228): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

しかし、pingを実行example.comすると動作します

ここで見逃しているのは何ですか?


32
ここで混乱しているのは、pingがホスト名としてそれを解決することすらできないはずであり、失敗したICMPパケットを送信することははるかに少ないことです。どのOS /バージョンを使用していますか?
ふわふわ

11
私は謝罪しますが、理由の組み合わせのためにこれを拒否しました-PINGから明らかに偽造された出力を含むWebサイトへのURLを含む1つの質問を持つ新しいユーザー。すべての権利により、これはトラフィックをURLに誘導しようとする試みです。1)URLが何であるかを認識し、2)各タイムアウトのicmp_seq番号を識別するPINGのバージョンがあるオペレーティングシステムを見つけることができない場合。
ドーンベントン


25
失敗した検索をハイジャックするDNSサービスがあること、知らないこと、友人がスラッシュを通過すること、一般的なデフォルトであることを知らないことpingなどgetaddrinfo()を知らなかったためにダウン票を投じた人々へ56 data bytes:これをサインとして受け取ってください助けようとする前に物事についてもっと学ぶ努力が評価されます。
-rakslice

5
Ƭᴇcʜιᴇ007@ pingの結果は、私がOS X上TimeWarnerケーブルDNSで無効なホスト名pingを実行するとき、私は正確に同じを参照してください、本物です
ハンタードーラン

回答:


108

Webサイトhttp://www.example.com/をpingしようとしていますが、不明なIPアドレスに解決され、タイムアウトします。

PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0

pingの引数はホスト名(またはIPアドレス)です。

したがって、次のすべてが機能します。

ping example.com
ping www.example.com
ping 127.0.0.1

一方、

ping http://www.example.com/

ないので、仕事http://www.example.com/は、 HTTPのあるユニフォームリソースロケータ(URL)ではない有効なホスト名(その一部はホスト名ですが)。

HTTP URLは4つの部分で構成されています。

  • スキーム—常に存在
  • ホスト名-常に存在
  • パスまたはステム-常に存在しますが、nullの場合もあります
  • パラメーター—オプション

Pingは通常、URLを有効な宛先ホスト名として認識しません。

  • すべてのURLが上記の形式を持つわけではありません。

  • 完全なURLは、命名スキーム指定子と、それに続くフォーマットが命名スキームの関数である文字列で構成されます。

  • URLの形式は、IETF仕様のUniform Resource Locators(URL)で定義されています


DNSハイジャック

DNSサーバー(ホスト名をIPアドレスに解決する)が無効なホスト名が指定された場合でも有効なIPアドレスを返すように構成されている場合、上記の例外が発生する可能性があります。

これは、ISPがDNSクエリをハイジャックしている場合に発生する可能性があります。

答えからpingは、入力したランダムなホスト名のIP 198.105.254.228に解決されるのはなぜですか?マイケル・ハンプトン

存在しないドメインに対するリクエストを検索結果と広告を提供するホワイトラベルサービスにリダイレクトすることで、「役に立つ」ようにしています。

幸いなことに、彼らはあなたがおそらくそれをオフにすることができる設定ページを持っています。


33

IPアドレスではない文字列を使用してpingコマンドを実行する場合、最初にpingを試行するホストのIPアドレスを解決する必要があります。

実行すると:

$ ping example.com

DNSサーバーは、WebサイトをホストするサーバーのIPアドレスを返します。

ただし、プロトコルとパスにプレフィックスを付けて、解決するDNSサーバーにすべて送信される標準のhttp URLを作成する場合。

そのため、DNSサーバーがレコードを見つける代わりに、有効なホスト名ではないexample.comレコードhttp://example.com/を探します。

多くのDNSサーバーは何も返されません。その場合、pingコマンドはDNS解決エラーでエラーになります。

ただし、DNSサーバーはIPアドレスを返します123.456.789.000。このアドレスは、ブラウザでURLを誤って入力したユーザーを支援するためのTime Warner Cableによる提案サービスのようです。

しかし、pingコマンドはこれを文字通り解釈し、ホスト名http://example.com/(有効なホスト名ではない)がアドレスに解決されると信じています123.456.789.000

その後、pingコマンドがタイムアウトになるのは、123.456.789.000ICMP要求に応答しないためです。


5
実際のドメイン/ IPはコミュニティボットによって編集されたことを指摘する価値があります。「123.456.789.000」は、元は存在しないホスト名を解決しようとしたときにTWCのDNSが除外したIPアドレスでした。
ハンタードーラン

1
ボットは自動編集の方法を知りません。匿名ユーザーによって提案された編集だと思います。
レオラム

編集は匿名ユーザーによって提案され、自分と別のユーザーによって承認されました。
DavidPostill

21

http://は、Webページへのアクセスに使用されるプロトコルであるハイパーテキスト転送プロトコルの略です。サーバーへのpingはHTTPを使用せず、代わりにICMP(インターネット制御メッセージプロトコル)メッセージで構成されるため、このコンテキストではhttp://は意味がありません。


私はそれをまだ知らない人には明らかではないと言いますが、KJ4TIPの答えから情報を知ったので、出力Request timeout for icmp_seq 0を見てください:ICMPシーケンス0、1、2を意味するそこにICMPを見ることができます...
タイラーコリアー

0

とにかく「ping」を使用する理由。「ping」トラフィックをブロックする方法でファイアウォールが存在する場合、機能しません。

私の意見では、Webサーバーをテストする場合、「telnet」を使用する方が良い場合は、ホストとリッスンするポートをテストできます。

例:Webサーバーtelnet www.mywebserver.com 80 を空白の画面でテストするに は、「get」と入力してから「enter」と入力すると、Webサーバーからhttp応答の山が返されます。(例:HTTP / 1.1 400 Bad Request ...

これにより、サーバーが「アップ」しているだけでなく、ポート80でリッスンおよび応答していることがわかります(ファイアウォールがポート80をWebサーバーに通すことも期待されます)

同様に、「telnet」は、メールサーバー、ftp、その他ほとんどすべてのテストにも使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.