web-dev-qa-db-ja.com

127.0.0.1とlocalhostの違いは何ですか

以下が.../hostsで定義されていると仮定します:

127.0.0.1 localhost

サーバー名として127.0.0.1localhostを使用した場合、特に接続をリッスンしているローカルで実行中のプロセスにヒットした場合、実際の違いはありますか?

127
Bohemian

さて、最も可能性の高い違いは、localhostの実際のlookupをどこかで行う必要があることです。

127.0.0.1を使用する場合、(インテリジェント)ソフトウェアはそれを直接IPアドレスに変換して使用します。 gethostbynameの一部の実装は、ドット形式(およびおそらく同等のIPv6形式)を検出し、ルックアップをまったく行いません。

それ以外の場合は、名前を解決する必要があります。そして、あなたのhostsファイルが実際にusedであることを保証するものではありません(最初に、またはまったく)localhost完全にdifferentIPアドレスになる場合があります。

つまり、一部のシステムでは、ローカルhostsファイルをバイパスできるということです。 Host.conf ファイルは、Linux(および他の多くのUnices)でこれを制御します。

103
paxdiablo

ウィキペディアはこれをうまくまとめています:

現代のコンピューターシステムでは、ホスト名としてのlocalhostは、127.0.0.0/8(ループバック)ネットブロック内のIPv4アドレス、通常127.0.0.1、またはIPv6の場合は:: 1に変換されます。

唯一の違いは、localhostが解決する対象をシステムのDNSで検索することです。この検索は非常に高速です。たとえば、stackoverflow.comにアクセスするには、アドレスバーに入力しました(または、ここを指すブックマークレットを使用しました)。いずれにせよ、ホスト名を介してここに到達しました。 localhostは同様の機能を提供します。

32
Ryan Bigg

一部のアプリケーションは「localhost」を特別に扱います。 mysqlクライアントは、tcpを使用して127.0.0.1上のサーバーに接続する代わりに、localhostをローカルUNIXドメインソケットへの接続要求として扱います。これはより高速で、別の認証ゾーンにある場合があります。

Localhostを127.0.0.1とは異なる方法で処理する他のアプリは知りませんが、おそらくいくつかあります。

28
Wayne Walker

さて、IPの方が高速です。

基本的に、サーバー名で呼び出すと、元のIPに変換されます。

しかし、ドメイン名が作成されたため、IPを記憶するのは難しいでしょう。

個人的には、http://localhostまたはhttp://127.0.0.1の代わりにhttp://usernameを使用します。

8
The Mask

違いはありません。一方はもう一方よりも覚えやすいです。通常、IPアドレスに関連付ける名前を定義します。 127.0.0.1にlocalhostを指定する必要はありません。任意の名前を指定できます。

0
d_ethier