web-dev-qa-db-ja.com

IPアドレス0.0.0.0と127.0.0.1の違いは何ですか?

127.0.0.1〜127.255.255.254は最新のほとんどのオペレーティングシステムのループバックIPアドレスであり、これらのIPアドレスを使用して自分のコンピューターを参照できることを知っています。

しかし、0.0.0.0とは何ですか?ローカルコンピューターも参照しているようですが、differenceは何ですか?

また、次のIP接続について説明してください。

screenshot of netstat -an output

234
Jichao

唯一のことは、「すべてのアドレスにアクセスが必要」とは言っていないことです。これは、ファイアウォールやサーバーソフトウェア、tcpwrappersなどの他のセキュリティレイヤーで行われます。

このコンテキストでの0.0.0.0は、「ローカルマシン上のすべてのIPアドレス」を意味します(実際には、おそらく「ローカルマシン上のすべてのIPv4アドレス」)。したがって、ウェブサーバーマシンに192.168.1.1と10.1.2.1の2つのIPアドレスがあり、Apacheなどのウェブサーバーデーモンが0.0.0.0でリッスンすることを許可すると、両方のIPアドレスで到達可能になります。ただし、それらのIPアドレスとWebポートに接続できるものに限られます。

別のコンテキスト(ルーティング)では、0.0.0.0は通常、デフォルトルート(ローカルネットワーク内のルート以外のインターネットの「残りの部分」へのルートなど)を意味することに注意してください。

163
Lee B

サービスが0.0.0.0でリッスンしている場合、これは、サービスが構成済みのすべてのネットワークインターフェイスでリッスンしていることを意味します。127.0.0.1でリッスンしている場合、サービスはループバックインターフェイスにのみバインドされます(ローカルマシンでのみ使用可能)

81
slubman

IPアドレス0.0.0.0は、使用される場所に応じて、非常に異なる意味を持つ可能性があります。

  • これは、0.0.0.0/8サブネット内の他のアドレス(つまり、0.で始まるアドレス)とともに、実際のネットワークインターフェースに指定する有効なアドレスではありません。
  • これは、コンピューターが自分のIPアドレスをまだ知らず、IPアドレスを取得しようとしている場合(クラシックの例:DHCP)を除き、どのIPパケットのソースアドレスとしても使用できません。
  • ルーティングテーブルで使用する場合は、デフォルトゲートウェイを識別します。 0.0.0.0へのルートはデフォルトのルートです。つまり、宛先アドレスに利用できる特定のルートがない場合に使用されるルートです。
  • 最後に、netstatコマンドの出力(要求されたもの)に表示される場合、特定のソケットがコンピューターが使用できるすべてのIPアドレスをリッスンしていることを意味します。コンピューターに複数のIPアドレスがある場合、ソケットは特定のアドレスとポートのペア、またはポートとallアドレスにのみバインドできます。そこにIPアドレスが表示されている場合は、ソケットがそのポートとその特定のアドレスでのみリッスンしていることを意味します。 0.0.0.0が表示されている場合は、ループバックアドレス(127.0.0.1)を含む、マシンのアドレスallでそのポートをリッスンしていることを意味します。
40
Massimo

Lee Bの答えは正解ですが、興味がある場合のために、関連するRFCをいくつか示します。

0.0.0.0:

RFC1122 、セクション3.1.2.3から:

ここでは、IPアドレスに次の表記法を使用して、クラスA、B、およびCのIPアドレスの重要な特殊ケースを要約します。

            { <Network-number>, <Host-number> }

        or
            { <Network-number>, <Subnet-number>, <Host-number> }

...

          (a)  { 0, 0 }

             This Host on this network.  MUST NOT be sent, except as
             a source address as part of an initialization procedure
             by which the Host learns its own IP address.

つまり、「このネットワーク上のこのホスト」...リーBの回答によると、これはホストで使用可能なすべてのIPアドレスに変換されます。 0.0.0.0でサービスをホストすると、すべてのアドレス可能なインターフェイスでそのサービスが自動的にホストされます。

127.0.0.1:

から RFC5735

127.0.0.0/8-このブロックは、インターネットホストループバックアドレスとして使用するために割り当てられます。上位レベルのプロトコルによってこのブロック内の任意のアドレスに送信されたデータグラムは、ホスト内でループバックします。これは通常、ループバックに127.0.0.1/32のみを使用して実装されます。 [RFC1122]のセクション3.2.1.3で説明されているように、127.0.0.0/8ブロック全体のアドレスは、どこのネットワークにも正当に表示されません。

0.0.0.0とループバックアドレス127.0.0.1の違いは、ループバックアドレスは、ネットワーク設定の残りの部分がどのように見えるかに関係なく、ホスト自体内で完全に機能するIPインターフェイスを許可するように設計されていることです。ループバックデバイスに送信されたトラフィックは、すぐに受信されます。ループバックネットワークが自分のホストを「参照」することはそれほど多くありません...デバイス、プロセス、およびソケットを開いたり接続したりできるホストにミニネットワークセグメントがあるようなものです。

28
user62491

簡単に言うと、0.0.0.0でリッスンすると、このコンピュータ、ローカルネットワーク、インターネットなど、このコンピュータにネットワークアクセスできる場所からリッスンします。一方、127.0.0.1でリッスンすると、このコンピュータだけからリッスンします

5
Hải Phong