0.0.0.0、127.0.0.1とlocalhostの違いは何ですか?


271

Macでを使用JekyllVagrantています。の代わりにJekyll serverバインドすることがわかりました。また、デフォルトでこのアドレスにバインドします。まだ経由でアクセスできます。しかしの場合、デフォルト設定(例:0.0.0.0:4000)ではインターネットアクセスが必要なようです。インターネットなしでは走れません小さなバグですか?0.0.0.0:4000127.0.0.1:4000gem serverhttp://localhost:portJekyllJekyll server

私も使っていますVagrant。仮想マシンにインストールJekyllしてVagrantMacintoshでテストするため、Vagrantfileでポート転送(8080 => 4000)を設定しました。デフォルト設定(0.0.0.0:4000)を使用すると、正常に機能します。サファリからで行くことができhttp://localhost:8080ます。しかし、インターネットがないと、0.0.0.0:4000にバインドできません。代わりにjekyll server -H 127.0.0.1サービスをバインドするために使用する127.0.0.1:4000と、を介してサービスにアクセスできませんhttp://localhost:8080

誰かが0.0.0.0、127.0.0.1とlocalhostの違いを説明できますか?そして、違いがこの問題を引き起こす理由を誰かが説明できますか?


この記事は参考にもhowtogeek.com/225487/...
fangxing

回答:


408

127.0.0.1通常、「ループバック」またはローカルのみのインターフェースに割り当てられたIPアドレスです。これは、同じホスト内でのみ通信できる「偽の」ネットワークアダプターです。これは、ネットワーク対応アプリケーションが同じホスト上のクライアントにのみサービスを提供したい場合によく使用されます。127.0.0.1接続をリッスンしているプロセスは、そのソケットでローカル接続のみを受け取ります。

「localhost」は通常、127.0.0.1IPアドレスのホスト名です。通常はに設定されています/etc/hosts(またはWindowsの同等の「ホスト」という名前の場所にあります%WINDIR%)。他のホスト名と同じように使用できます。「ping localhost」を実行して、どのように解決されるかを確認してください127.0.0.1

0.0.0.0にはいくつかの異なる意味がありますが、このコンテキストでは、サーバーがリッスンするように指示された場合、0.0.0.0「利用可能なすべてのネットワークインターフェースをリッスンする」ことを意味します。127.0.0.1サーバープロセスから見たIPアドレスのループバックアダプターは、マシン上の他のネットワークアダプターと同じように見えるため、リッスンするように指示されたサーバーは0.0.0.0、そのインターフェイス上の接続も受け入れます。

うまくいけば、あなたの質問のIP側に答えます。JekyllやVagrantについては詳しくありませんが、ポート転送8080 => 4000が何らかの理由で特定のネットワークアダプターにバインドされているため、ローカルに接続したときにパスに含まれていないと思います127.0.0.1


うーん、hostsファイルがを指していなくping localhost、Windowsで動作するようです。 127.0.0.1localhost
ペーチェリエ2015

パセリエに同意する。少なくともWindowsでは、localhostはデフォルトで0.0.0.0(127.0.0.1ではない)として動作します
drodsou

5
「これは、0.0.0.0へのバインディングの説明を除いて、ほぼ正しいです。これは、説明したように、使用可能なすべてのネットワークインターフェースにバインドするのではなく、すべてのアドレスにバインドします。TCPスタックでは、これはINADDR_ANYと呼ばれ、削除された回答から@strangemonadの。
ピョートルDobrogost

15

Jekyllの現在のバージョンでは、デフォルトはhttp://127.0.0.1:4000/です。
これは、ネットワークに接続しているが、他の誰にもアプリケーションにアクセスさせたくない場合に適しています。

ただし、アプリケーションがモバイルで、または他のラップトップ/コンピューターからどのように実行されるかを確認したい場合があります。

その場合、あなたは使うことができます

jekyll serve --host 0.0.0.0

これはあなたのアプリケーションをホストにバインドし、次に他のホストからそれに接続するために次を使用します

http://host's IP adress/4000 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.