以下が.../hosts
で定義されていると仮定します:
127.0.0.1 localhost
サーバー名として127.0.0.1
とlocalhost
を使用した場合、特に接続をリッスンしているローカルで実行中のプロセスにヒットした場合、実際の違いはありますか?
さて、最も可能性の高い違いは、localhost
の実際のlookupをどこかで行う必要があることです。
127.0.0.1
を使用する場合、(インテリジェント)ソフトウェアはそれを直接IPアドレスに変換して使用します。 gethostbyname
の一部の実装は、ドット形式(およびおそらく同等のIPv6形式)を検出し、ルックアップをまったく行いません。
それ以外の場合は、名前を解決する必要があります。そして、あなたのhosts
ファイルが実際にusedであることを保証するものではありません(最初に、またはまったく)localhost
完全にdifferentIPアドレスになる場合があります。
つまり、一部のシステムでは、ローカルhosts
ファイルをバイパスできるということです。 Host.conf
ファイルは、Linux(および他の多くのUnices)でこれを制御します。
現代のコンピューターシステムでは、ホスト名としてのlocalhostは、127.0.0.0/8(ループバック)ネットブロック内のIPv4アドレス、通常127.0.0.1、またはIPv6の場合は:: 1に変換されます。
唯一の違いは、localhost
が解決する対象をシステムのDNSで検索することです。この検索は非常に高速です。たとえば、stackoverflow.com
にアクセスするには、アドレスバーに入力しました(または、ここを指すブックマークレットを使用しました)。いずれにせよ、ホスト名を介してここに到達しました。 localhost
は同様の機能を提供します。
一部のアプリケーションは「localhost」を特別に扱います。 mysqlクライアントは、tcpを使用して127.0.0.1上のサーバーに接続する代わりに、localhostをローカルUNIXドメインソケットへの接続要求として扱います。これはより高速で、別の認証ゾーンにある場合があります。
Localhostを127.0.0.1とは異なる方法で処理する他のアプリは知りませんが、おそらくいくつかあります。
さて、IPの方が高速です。
基本的に、サーバー名で呼び出すと、元のIPに変換されます。
しかし、ドメイン名が作成されたため、IPを記憶するのは難しいでしょう。
個人的には、http://localhost
またはhttp://127.0.0.1
の代わりにhttp://username
を使用します。
違いはありません。一方はもう一方よりも覚えやすいです。通常、IPアドレスに関連付ける名前を定義します。 127.0.0.1にlocalhostを指定する必要はありません。任意の名前を指定できます。