ping – ping の有無の違い http://

http ping

私のウェブサイトhttp://www.example.com/をpingしようとしているのですが、未知の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

が、example.comをpingすると動作します

ここで何が足りないんだろう?

  47  Saransh Singh  2015-06-20


ベストアンサー

私のウェブサイト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 Uniform Resource Locator (URL) であり、有効なホスト名ではないので動作しません (一部はホスト名ですが)

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

  • Scheme – 常に存在する
  • ホスト名 – 常に存在します
  • Path or Stem – 常に存在しますが、時々 null になることもあります
  • パラメータ – オプションです

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

Notes:

  • すべてのURLが上記のような形式を持っているわけではありません

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

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


DNS Hijacking

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

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

回答から Why is ping resolving to IP 198.105.254.228 for any random hostname that i type? by Michael Hampton

彼らは、存在しないドメインのリクエストを検索結果と広告を提供するホワイトラベルサービスにリダイレクトすることで「親切」になろうとしています

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

107  DavidPostill  2015-06-20


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

逃げるときは

$ ping example.com

DNSサーバーは、ウェブサイトをホストしているサーバーの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.000がICMPリクエストに応答しないからです

33  Hunter Dolan  2015-06-21


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

21  KJ4TIP  2015-06-20


ping’ を使う理由は何ですか?ping’ トラフィックをブロックしているファイアウォールがある場合、それはうまくいかないでしょう

私の意見としては、もしあなたがウェブサーバをテストしようとしているならば、’telnet’を使用するのが良いでしょう

例:あなたのWebサーバーをテストするには、空の画面でtelnet www.mywebserver.com 80, ‘get’を入力してから’Enter’とあなたは、Webサーバーから戻ってhttpの応答の山を取得する必要があります。例:HTTP/1.1 400 Bad Request…)

これは、サーバが「起動」しているだけでなく、ポート80をリッスンして応答していることを示しています。(私は、どのファイアウォールもポート80を私のウェブサーバに通すことを期待しています)

同様に、「telnet」はメールサーバやftp、その他あらゆるものをテストするためにも機能します

0  MattW  2015-07-01


タイトルとURLをコピーしました