localhost に ping を実行すると、常に 127.0.0.1 に解決されますか?
Windows Vista、XP、Ubuntu、および Debian がそれを行うことは知っていますが、誰もがそれを行うのでしょうか?
TCP/IP を正しく実装すると、アドレス 127.0.0.1 がローカル マシンを参照するために予約されます。hosts
ただし、「localhost」という名前からそのアドレスへのマッピングは、通常、システムファイルに依存します。から localhost エントリを削除するとhosts
、localhost 名がまったく正しく解決されなくなる可能性があります。
127.0.0.1 は、ローカル ホスト用の IP スタックで予約されています。
ホスト名としての「localhost」は、そこにあるとは限りません。ホスト/DNS 設定が正しく構成されていない場合、localhost は解決されません。
Debian ボックスでの例:
topaz:/root# vi /etc/hosts
[comment out localhost entry]
topaz:/root# ping localhost
ping: unknown host localhost
いいえ。最初localhost
はルールではなく慣習です。ほとんどの場合、デフォルトで設定されていますが、義務付けるものはありません。
第二に、いつでも127.0.0.1にpingできると言うことは何もありません。例として(UNIXシステムで)次のことを試してください。
sudo ifconfig lo down
ping 127.0.0.1
巡洋艦が言ったように、127.0.0.1(存在する場合)はローカルマシンとして定義されています。しかし、それは存在する必要はありません。
衒学的な答え (申し訳ありませんが、Greg :) はRFC 3330を読むことです:
127.0.0.0/8 - This block is assigned for use as the Internet host
loopback address. A datagram sent by a higher level protocol to an
address anywhere within this block should loop back inside the host.
This is ordinarily implemented using only 127.0.0.1/32 for loopback,
but no addresses within this block should ever appear on any network
anywhere [RFC1700, page 5].
(上記の「通常」は、おそらく「頻繁に」と読む必要があります。現在のほとんどのオペレーティング システムは、127.0.0.0/8 のすべてをループバックとして使用することをサポートしています。)
「localhost」が常に 127.0.0.1 に解決されるかどうかに関しては、彼は正しいです。一般的には同じですが、技術的には実装固有です。
~> dig localhost.t...e.org
...
;; ANSWER SECTION:
localhost.t...e.org. 86400 IN A 127.0.0.2
クライアントが接続している DNS サーバーが rfc1912 に従っている場合、はい、localhost は 127.0.0.1 に解決されるはずです。
RFC1912
4.1
...
Certain zones should **always be present** in nameserver configurations:
primary localhost localhost
primary 0.0.127.in-addr.arpa 127.0
...
The "localhost" address is a "special" address which always refers to
the local host. It should contain the following line:
localhost. IN A 127.0.0.1
The "127.0" file should contain the line:
1 PTR localhost.
答えは次のとおりです。
「ループバック」と呼ばれることが多い 127.0.0.1 が必要です。お使いのコンピューターでは、無効にしたり、物理インターフェイスでその範囲を構成したりするなど、ばかげたことを実行できる場合がありますが、これらはすべて無効です。
「localhost」は単なるホスト名であり、慣例により 127.0.0.1 にする必要があります。システム管理者またはホストマスターとして、localhost が他のアドレスを指すことを許可する構成は避ける必要があります。
hosts ファイルを編集して「localhost」のアドレスを変更しないでください。ローカルホストを持つようにドメインを構成する必要があります。および 127.0.0.1 を指す localhost.domain.com エントリ。
プロキシ サーバーが "localhost" または localhost で始まる FQDN に応答しないようにする必要があります。
localhost はほとんどのプラットフォームで 127.0.0.1 に解決されると思いますが、127 で始まるすべての IP は. . .* localhost にも解決されます。127.255.255.254 に ping してみてください。それでも応答します。
理論上、存在しない場合もあります。実際には、常にそこにあります。
まともなファイアウォールを使用すると、ループバック インターフェイスでもアクセスをフィルタリングできます。そのため、ローカルホスト (127.0.0.1) への icmp ping パケットをドロップするファイアウォール ルールを設定することができます。また、他の誰もが既に述べたように、localhost または 127.0.0.1 アドレスとループバック インターフェイスの存在さえ保証されていません。
Ok。
解決する理由は、次のように %WINDOWS_DIR%\System32\drivers\etc\hosts ファイルに記録されているためです。
127.0.0.1 ローカルホスト