web-dev-qa-db-ja.com

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

私は自分のウェブサイトを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

example.comにpingを実行してもうまくいきます

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

44
Saransh Singh

私は自分のウェブサイトをpingしようとしています http://www.example.com/ それは未知の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つの部分で構成されています。

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

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

  • すべてのURLが上記の形式であるとは限りません。

  • 完全なURLは、命名規則指定子とそれに続く形式が命名規則の関数である文字列で構成されます。

  • URLのフォーマットは、IETF仕様で定義されています URL(Uniform Resource Locator)


DNSハイジャック

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

これは、ISPがあなたのDNSクエリを乗っ取っている場合に起こります。

答え: なぜ私がタイプしたランダムなホスト名に対してpingがIP 198.105.254.228に解決されるのですか? by Michael Hampton

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

幸いなことに、彼らは preferencesページ を持っています。

107
DavidPostill

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を誤って入力したユーザーに役立ちます。

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

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

32
Hunter Dolan

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

20
KJ4TIP

どうしてあなたはとにかく 'ping'を使うでしょう。 「ping」トラフィックをブロックするような方法でファイアウォールがある場合は機能しません。

私の意見では、Webサーバーをテストするのであれば 'telnet'を使用した方が良いのであれば、ホストとそれがlistenしているはずのポートをテストすることができます。

例:あなたのウェブサーバーをテストするにはtelnet www.mywebserver.com 80を空白の画面で入力してください。 Webサーバーから戻ってくるHTTP応答の山。 (例:HTTP/1.1 400不正な要求...

これは、サーバーが「稼働」しているだけでなく、ポート80で待機して応答していることも示しています(ファイアウォールを使用してポート80をWebサーバーに接続することもできます)。

同様に、 'telnet'はメールサーバやftpなどのテストにも利用できます。

0
MattW