ホスト名解決における「ping」と「wget」の違い

ホスト名解決における「ping」と「wget」の違い

試してみると、wgetホスト名の解決に問題はありません。

root:here cd$ wget https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1

明らかにする

Resolving gfe.cit.api.here.com... 52.51.134.116, 54.154.19.134, 52.208.9.155
Connecting to gfe.cit.api.here.com|52.51.134.116|:443... connected.
HTTP request sent, awaiting response... 400 Bad Request
2016-12-24 13:18:47 ERROR 400: Bad Request.

しかし、私が使うときping

ping https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1

明らかにする

cannot resolve https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123: Unknown host

wgetホスト名の解決に失敗しました。との違いは何ですかping

答え1

答え:

ホスト名解決に関して、「ping」と「wget」の違いは何ですか?

PingパラメータにはIPアドレスまたはホスト名が必要です。完全なURLを提供し、それをホスト名として解決しようとしましたが、失敗します。完全修飾名の削除を除くすべての操作により、コマンドはping接続を確認できました(要求がICMPブロックされたか、サーバーがダウンしているため、次のテストでは失敗しました)。

$ ping gfe.cit.api.here.com

Pinging cle2-cit.eu-west-1.elasticbeanstalk.com [54.154.19.134] with 32 bytes of data:
Request timed out.

pingwget.

エラー400を説明する理由は、roaimaのトピックを参照してください。

答え2

実際にリクエストした質問に答えます。wgetURLは必須ですが、pingホスト名は必須です。 URLは、プロトコル(https)、ホスト名(gfe.cit.api.here.com)、パス(/1/layer_put.json)、および3つのエンコーディングパラメータ()で構成されていますlayer_id=123&app_id=x2&app_code=x1。認証やポートなどの他のエントリも URL に表示されることがあります。

このコマンドはホスト名部分のみを受け入れますping

その後、コマンドはプロトコルwgetに必要なポート(443/tcpの場合https)へのTCP / IP接続を開き、HTTPプロトコルを使用して指定されたURLからコンテンツを取得します。

このpingコマンドは ICMP を使用して送信されます。平らな指定されたホストに要求して返します。エコ返信返信するこれはそれぞれICMPパケットタイプ8と0です。


失敗の根本的な原因は、wgetパラメータを引用していないwgetため、シェルがそれを解析することです。&URLの中央にある文字は、シェルにバックグラウンドからそのポイントまでのすべてを実行するように指示します。その後、行の残りの2つの部分をすぐに実行し、すぐにエラーが発生します。

URLの周りに一重引用符を使用すると、期待どおりに機能できます。

だから私たちは

wget -O layer_put.json 'https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1'

ping -c3 gfe.cit.api.here.com

答え3

Wget は主に HTTP、HTTPS、および FTP 経由のダウンロードに使用されるため、デフォルトでは接続に TCP を使用します。 Pingは次の方法を使用します。ICMP、基本的にホストに「こんにちは」と言って応答することを確認します。 ICMP はポートを使用しません。これはhttp://を意味します。 HTTPS ポート 443 に対して、ポート 80 で「接続を開くように」コンピューターに指示します。 ICMPはポートを使用しないため、pingにはIPアドレスのみが必要ですが、wgetはTCP接続を確立してファイルをダウンロードします。

関連情報