私は自分のウェブサイトを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を実行してもうまくいきます
私がここで見逃しているのは何ですか?
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つの部分で構成されています。
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ページ を持っています。
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要求に応答しないためです。
Http://はWebページにアクセスするために使用されるプロトコルであるハイパーテキスト転送プロトコルを表します。サーバーへのping送信はHTTPを使用しませんが、代わりにICMP(インターネット制御メッセージプロトコル)メッセージで構成されているため、http://は意味がありません。
どうしてあなたはとにかく 'ping'を使うでしょう。 「ping」トラフィックをブロックするような方法でファイアウォールがある場合は機能しません。
私の意見では、Webサーバーをテストするのであれば 'telnet'を使用した方が良いのであれば、ホストとそれがlistenしているはずのポートをテストすることができます。
例:あなたのウェブサーバーをテストするにはtelnet www.mywebserver.com 80を空白の画面で入力してください。 Webサーバーから戻ってくるHTTP応答の山。 (例:HTTP/1.1 400不正な要求...)
これは、サーバーが「稼働」しているだけでなく、ポート80で待機して応答していることも示しています(ファイアウォールを使用してポート80をWebサーバーに接続することもできます)。
同様に、 'telnet'はメールサーバやftpなどのテストにも利用できます。