127.0.0.1〜127.255.255.254が最新のオペレーティングシステムのループバックIPアドレスであり、これらのIPアドレスを使用して自分のコンピューターを参照できることを知っています。
しかし、0.0.0.0とは何ですか?ローカルコンピューターも参照しているようですが、違いは何ですか?
そして、私のために次のIP接続を説明してもらえますか:
::1
、ループバックアドレスとして使用します。
127.0.0.1〜127.255.255.254が最新のオペレーティングシステムのループバックIPアドレスであり、これらのIPアドレスを使用して自分のコンピューターを参照できることを知っています。
しかし、0.0.0.0とは何ですか?ローカルコンピューターも参照しているようですが、違いは何ですか?
そして、私のために次のIP接続を説明してもらえますか:
::1
、ループバックアドレスとして使用します。
回答:
唯一のことは、「すべてのアドレスにアクセスを許可する」と言っていないことです。これは、ファイアウォールやサーバーソフトウェア、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はデフォルトルート(ローカルネットワークなどのルートを除く、インターネットの「残り」へのルート)を意味することに注意してください。
0.0.0.0
デフォルトルートを意味だけで、それがプレフィックスを伴っている場合/0
(またはネットマスク0.0.0.0
)
IPアドレス0.0.0.0
は、使用場所に応じて、非常に異なる意味を持つことができます。
0.
)とともに、実際のネットワークインターフェースに与えられる有効なアドレスではありません。netstat
コマンドの出力(要求されたもの)に表示される場合、特定のソケットがコンピューターの使用可能なすべてのIPアドレスをリッスンしていることを意味します。コンピューターに複数のIPアドレスがある場合、ソケットは特定のアドレスとポートのペア、またはポートとすべてのアドレスにのみバインドできます。そこにIPアドレスが表示されている場合、ソケットはそのポートとその特定のアドレスでのみリッスンしていることを意味します。が表示された場合0.0.0.0
、それはループバック()を含むマシンのすべてのアドレスでそのポートをリッスンしていることを意味します127.0.0.1
。ping 0.0.0.0
Windowsシステムで実行しようとすると、エラーメッセージが表示されます。
curl 0.0.0.0
connection refused
Arch Linuxで生成されます。ping 0.0.0.0
、一方で、エイリアスはping 127.0.0.1
うまく機能しているようです。
connection refused
、デフォルトでcurlがポート80 / tcpに接続しようとするためです。nmap -sV localhost
たとえば、631 / tcp:で、開いているポートを見つけてくださいcurl 0.0.0.0:631
。
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.
まさに、「このネットワーク上のこのホスト」... Lee 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インターフェイスを許可するように設計されていることです。ループバックデバイスに送信されたトラフィックは、すぐにループバックデバイスで受信されます。ループバックネットワークが自分のホストを「参照」するのはそれほどではありません...ホストにデバイス、プロセス、ソケットがあり、開いて接続できるミニネットワークセグメントがあるようなものです。