0.0.0.0、127.0.0.1、localhost の違いは何ですか? 質問する

0.0.0.0、127.0.0.1、localhost の違いは何ですか? 質問する

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

私も を使用しています。仮想マシンにVagrantインストールして Macintosh でテストしているので、Vagrantfile でポート転送 (8080 => 4000) を設定しています。デフォルト設定 (0.0.0.0:4000) を使用すると動作します。 で Safari からアクセスできます。ただし、インターネットがない場合、0.0.0.0:4000 にバインドできません。代わりに にサービスをバインドすると、 経由でアクセスできなくなります。JekyllVagranthttp://localhost:8080jekyll server -H 127.0.0.1127.0.0.1:4000http://localhost:8080

0.0.0.0、127.0.0.1、localhost の違いを説明できる人はいますか? また、その違いがなぜこの問題を引き起こすのかを説明できる人はいますか?

ベストアンサー1

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

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

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

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

おすすめ記事