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


234

127.0.0.1がを指しlocalhost、0.0.0.0を指すことを理解しています(間違っている場合は修正してください)。それでは、127.0.0.1と0.0.0.0の違いは何ですか?


1
アドレス入力での処理方法に関するこのChromeバグトラッカーのディスカッションに興味があるかもしれません0.0.0.0
ジェレミー銀行

6
ほとんどのサーバー構成では、0.0.0.0はすべてのアドレスでリッスンします!これにより、サーバーがインターネットで利用可能になります。セキュリティを使用せずにローカルサーバーでこれを行うと(ローカルホストでのみリッスンしますか?)、それは悪いことです。そんなことしないで!
ジョセフ

56
質問に文字通り答えてください2130706433。違いはです。
シャズ

2
@マストオハイオ州、あなたは完全に安全でないシステムをセットアップする人の一人です、ファイアウォールはそれをすべて修正するでしょうか?通常、このシステムはshodan.ioで見つけることができます:3この考え方の次のレベルは、「5年前のWordPressインストールを完全に使用でき、WAFが得られました」です。この道を行く人はお勧めしません!
ジョセフ

2
@Shaz私はあなたのコメントをupvoteしたいが、それは42で、現在だと私は...自分自身がそれを行うために持って来ることができない
ジェニーD

回答:


221

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

  • 127.0.0.1 ループバックアドレス(localhostとも呼ばれます)です。

  • 0.0.0.0 無効、不明、または該当しないターゲット(特定のアドレスプレースホルダーなし)を指定するために使用される、ルーティングできないメタアドレスです。

    ルートエントリのコンテキストでは、通常、デフォルトルートを意味します。

    サーバーのコンテキストでは、0.0.0.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストに2つのIPアドレス192.168.1.1と10.1.2.1があり、ホストで実行されているサーバーが0.0.0.0でリッスンしている場合、それらのIPの両方で到達可能です。


IPアドレス127.0.0.1とは何ですか?

127.0.0.1は、「localhost」とも呼ばれるループバックインターネットプロトコル(IP)アドレスです。このアドレスは、エンドユーザーが使用している同じマシンまたはコンピューターへのIP接続を確立するために使用されます。

:: 1の意味を使用してIPv6アドレッシングをサポートするコンピューターにも同じ規則が定義されています。アドレス127.0.0.1を使用して接続を確立することが最も一般的な方法です。ただし、127の範囲内の任意のIPアドレスを使用します。*は同じまたは同様の方法で機能します。ループバックコンストラクトは、ネットワーク上のコンピュータまたはデバイスに、マシン上のIPスタックを検証または確立する機能を提供します。

出典:127.0.0.1 –その用途と重要な理由


特別な住所

クラスAネットワーク番号127には「ループバック」機能が割り当てられます。つまり、上位レベルのプロトコルによってネットワーク127アドレスに送信されるデータグラムは、ホスト内でループバックする必要があります。ネットワーク127アドレスに「送信」されたデータグラムは、どこのネットワークにも表示されません。

出典:ネットワーク番号


クラスA全体の場合、最後の3オクテットの他の任意の値のポイントは何ですか?

ループバック範囲の目的は、ホスト上のTCP / IPプロトコル実装のテストです。下位層は短絡しているため、ループバックアドレスに送信すると、下位層で問題が発生する可能性がなく、上位層(IP以上)を効果的にテストできます。127.0.0.1は、テスト目的で最も一般的に使用されるアドレスです。

ソース:予約済みIP、ループバックおよびプライベートアドレス

詳細については、https://askubuntu.comの質問を参照してください。ループバックデバイスとは何ですか。そして、なぜ127.0.0.1から127.255.255.254までのループバックIPアドレスはありますか?


IPアドレス0.0.0.0とは何ですか?

「0.0.0.0」は有効なアドレス構文です。したがって、従来のドット付き10進表記のIPアドレスが予想される場合は、有効なものとして解析する必要があります。解析され、実行可能な数値形式に変換されると、その値によって次に何が起こるかが決まります。

すべてゼロの値には特別な意味があります。したがって、それは「有効」ですが、特定の状況では適切ではない(したがって無効であると見なされる)意味を持つ場合があります。基本的には「特定のアドレスなし」プレースホルダーです。ネットワーク接続のアドレスバインディングなどの場合、適切なインターフェイスアドレスを接続に割り当てることができます。これを使用してインターフェイスを構成している場合、代わりにインターフェイスからアドレスを削除できます。「特定のアドレスなし」が実際に何をするかを決定するのは、使用状況に依存します。

ルートエントリのコンテキストでは、通常はデフォルトルートを意味します。これは、比較するビットを選択するアドレスマスクの結果として発生します。「0.0.0.0」のマスクはビットを選択しないため、比較は常に成功します。そのため、このようなルートが構成されている場合、パケットが送信される場所は常に存在します(有効な宛先で構成されている場合)。

場合によっては、単に「0」でも機能し、同じ効果があります。しかし、これは保証されていません。「0.0.0.0」形式は、「特定のアドレスなし」(IPv6では「:: 0」または単に「::」)と言う標準的な方法です。

出典:IPアドレス0.0.0.0の意味


インターネットプロトコルバージョン4では、アドレス0.0.0.0は、無効、不明、または該当しないターゲットを指定するために使用されるルーティング不可能なメタアドレスです。他の点では無効なデータに特別な意味を与えることは、インバンドシグナリングのアプリケーションです。

サーバーのコンテキストでは、0.0.0.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストに2つのIPアドレス192.168.1.1と10.1.2.1があり、ホストで実行されているサーバーが0.0.0.0でリッスンしている場合、それらのIPの両方で到達可能です。

ルーティングのコンテキストでは、通常、0.0.0.0はデフォルトルート、つまりローカルネットワーク上のどこかではなく、インターネットの「残り」につながるルートを意味します。

用途は次のとおりです。

  • ホストがまだアドレスを割り当てられていない場合に、ホストがそれ自体として主張するアドレス。DHCPの使用時に初期DHCPDISCOVERパケットを送信するときなど。
  • ホストのIPスタックがこれをサポートしている場合、DHCPを介したアドレス要求が失敗したときにホストが自身に割り当てるアドレス。この使用法は、最新のオペレーティングシステムのAPIPAメカニズムに置き換えられました。
  • 「すべてのIPv4ホスト」を指定する方法。デフォルトルートを指定するときにこの方法で使用されます。
  • ターゲットが使用不可であることを明示的に指定する方法。1
  • 「すべてのIPv4アドレス」を指定する方法。サーバーを構成するとき(つまり、待機ソケットをバインドするとき)にこの方法で使用されます。これは、INADDR_ANYとしてTCPプログラマーに知られています。(bind(2)は、インターフェースではなくアドレスにバインドします。)

IPv6では、すべてゼロのアドレスは「::」と記述されます。

ソース:0.0.0.0


DHCPディスカバリー/リクエスト

クライアントが初めて起動するとき、クライアントは初期化状態にあると言われ、ローカル物理サブネット上でユーザーデータグラムプロトコル(UDP)ポート67(BootPサーバー)経由でDHCPDISCOVERメッセージを送信します。クライアントは所属するサブネットを知る方法がないため、DHCPDISCOVERはすべてのサブネットブロードキャスト(宛先IPアドレス255.255.255.255)であり、ソースIPアドレスは0.0.0.0です。クライアントにはIPアドレスが設定されていないため、ソースIPアドレスは0.0.0.0です。このローカルサブネット上にDHCPサーバーが存在し、正しく構成されて動作している場合、DHCPサーバーはブロードキャストを聞き、DHCPOFFERメッセージで応答します。DHCPサーバーがローカルサブネット上に存在しない場合、DHCPDISCOVERメッセージをDHCPサーバーを含むサブネットに転送するには、このローカルサブネット上にDHCP / BootPリレーエージェントが必要です。

このリレーエージェントは、専用ホスト(Microsoft Windows Serverなど)またはルーター(インターフェイスレベルIPヘルパーステートメントで構成されたCiscoルーターなど)のいずれかです。

...

クライアントはDHCPOFFERを受信すると、DHCPREQUESTメッセージで応答し、DHCPOFFERのパラメーターを受け入れる意図を示し、要求中状態に移行します。クライアントは、元のDHCPDISCOVERメッセージを受信した各DHCPサーバーから1つずつ、複数のDHCPOFFERメッセージを受信する場合があります。クライアントは1つのDHCPOFFERを選択し、そのDHCPサーバーのみに応答し、他のすべてのDHCPOFFERメッセージを暗黙的に拒否します。クライアントは、サーバー識別子オプションフィールドにDHCPサーバーのIPアドレスを入力して、選択したサーバーを識別します。DHCPREQUESTもブロードキャストであるため、DHCPOFFERを送信したすべてのDHCPサーバーはDHCPREQUESTを確認し、それぞれがDHCPOFFERが受け入れられたか拒否されたかを認識します。クライアントが必要とする追加の構成オプションは、DHCPREQUESTメッセージのオプションフィールドに含まれます。クライアントにIPアドレスが提供されていても、送信元IPアドレス0.0.0.0でDHCPREQUESTメッセージを送信します。現時点では、クライアントはIPアドレスを使用することが明確であるという確認をまだ受け取っていません。

...

クライアントとDHCPサーバーが同じサブネット上にあるDHCPアドレスを取得するクライアントのクライアントサーバー会話

ここに画像の説明を入力してください

出典:CatalystスイッチまたはエンタープライズネットワークでのDHCPの理解とトラブルシューティング


デフォルトルート

このドキュメントでは、デフォルトルート、または最終手段のゲートウェイを設定する方法について説明します。次のIPコマンドが使用されます。

  • ip default-gateway

  • ip default-network

  • およびip route 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

ネットワーク0.0.0.0 0.0.0.0への静的ルートを作成することは、ルーターに最終手段のゲートウェイを設定する別の方法です。ip default-networkコマンドと同様に、0.0.0.0への静的ルートの使用は、ルーティングプロトコルに依存しません。ただし、ルーターでIPルーティングを有効にする必要があります。

注:IGRPは0.0.0.0へのルートを理解しません。したがって、ip route 0.0.0.0 0.0.0.0コマンドを使用して作成されたデフォルトルートを伝播することはできません。IGRPにデフォルトルートを伝播させるには、ip default-networkコマンドを使用します。

ソース:IPコマンドを使用した最終手段のゲートウェイの構成


3
サーバーのコンテキストでは、0.0.0.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストに2つのIPアドレス192.168.1.1と10.1.2.1があり、ホストで実行されているサーバーが0.0.0.0でリッスンしている場合、それらのIPの両方で到達可能になります。-それは私のためにそれをした
ラファエル・アイング

112

それらは同じではありません。

127.0.0.1 予約され、同じコンピューターを指す127/8ネットワークの一部です。

0.0.0.0 コンテキストに応じて異なることを意味する特別なIPアドレスです。

インターネットプロトコルバージョン4では、アドレス0.0.0.0は、無効、不明、または適用できないターゲットを指定するために使用されるルーティング不可能なメタアドレスです。他の点では無効なデータに特別な意味を与えることは、インバンドシグナリングのアプリケーションです。

netstatを見て、0.0.0.0としてリッスンしているローカルアドレスを確認するときに、0.0.0.0を127.0.0.1と間違えた可能性がありますが、これは0.0.0.0の別の使用方法です。

サーバーのコンテキストでは、0.0.0.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストに2つのIPアドレス192.168.1.1と10.1.2.1があり、ホストで実行されているサーバーが0.0.0.0でリッスンしている場合、それらのIPの両方で到達可能です。

ルーティングのコンテキストでは、通常、0.0.0.0はデフォルトルート、つまりローカルネットワーク上のどこかではなく、インターネットの「残り」につながるルートを意味します。

https://en.wikipedia.org/wiki/0.0.0.0


0.0.0.0また、ネットワーク上のすべてのコンピューターを意味するブロードキャストを示すこともあります。
ジェームズメルツ

8
私は放送のようなものです考え@KronoS 255.255.255.255(のようなものか、より現実的に192.168.1.255ローカルネットワーク用)
ニックT

1
@NickTああ、あなたは正しいA special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
ジェームズ・メルツ

@KronoSブロードキャストアドレスとループバックを混同しています。ループバックは0.0.0.0で、上記のようにすべてのローカルアドレスをリッスンします。ブロードキャスト(簡単な方法で)は、ネットワーク内のすべてのアドレスに「ブロードキャスト」する255のネットワークです。
-Desorder

これは不完全です。多くのオペレーティングシステムでは実際 0.0.0.0に接続でき、ループバックアドレスのように動作します。
-grawity

16

127.0.0.1はローカルコンピューターのアドレスの1つですが、127.xyzのアドレスもコンピューターの別のアドレス(「ループバックアドレス」と呼ばれます)です。ただし、127.0.0.0(ループバックサブネット)と127.255.255.255(ループバックサブネット)。

127.xyzは「ここ」を意味します。

0.0.0.0はまったく異なります。0.0.0.0は何のアドレスでもありません*。シェルのようにジョーカーです。

0.0.0.0にデータを送信したり、TCP接続を0.0.0.0にアクティブに開いたりすることはできません。0.0.0.0は、到達不能またはルーティング不可能なアドレスではなく、アドレスが予想されるコンテキストでは無意味です。

あなたはアドレスは、必要に応じて提供できる状況でジョーカー0.0.0.0を使用することができます意味する、私は気にしません

たとえば、あるTCPサーバーへのTCP接続をアクティブに開く場合(TCPサーバーはパッシブTCPオープンによって作成されます)、TCPサーバーのアドレス(IPおよびポート番号)を指定する必要があり、オプションでローカルアドレス。(ソケットはサーバーソケットではないため、だれも接続を開くことができず、通常、接続の側のアドレスはあまり重要ではありません。)

bindシステムコールは、TCPソケットのローカルアドレスを選択するために使用されます。渡されるデータbindは実際には一連の制約です:IPアドレスの制約、TCPポートの制約。通常のテキスト表記はIP:portです。0.0.0.0:0は、任意のIPおよび任意のポートが受け入れられることを意味し、それはヌル制約です。0.0.0.0:20は、ローカルポートが20でなければならないことを意味します(すべてのIPが許容されます(0.0.0.0:20は、アクティブモードでのデータ接続に準拠するFTPサーバーによって使用されます)。

TCP / IPサブシステムは、宛先アドレスに基づいてルーティングテーブルを使用して、TCP接続の側のアドレスを選択しない場合、アドレスを選択します。ローカルTCPソケットアドレスは、対応するルートに関連付けられたローカルアドレスになります。宛先アドレスに。

以前にシェル "メタ文字"について述べました*が、メタ文字と*foo*( "foo"を含む任意のファイル名)のような文字を組み合わせる力は、IPアドレスの制約では存在しません。受け入れられるとみなされるか、すべてのアドレスが受け入れられます。ロジックは、この方法でなければならないことを指示しませ。より豊富な制約言語でインターフェースを拡張できます。

精度:

127.xyzは、「ここ」がこれらすべてのアドレスが同じであることを意味しないことを意味します。これらは、実際にはローカルIPスタック内のローカル「コンピューター」内のさまざまな「場所」(ソケットアドレス)を表します。

注:仮想化(エミュレーション、ハードウェア仮想化、準仮想化など)を備えたコンピューターには、複数の独立したIPスタックがあります。


ブラウザで127から始まるランダムなアドレス(127.16.23.42など)を入力すると、localhostに接続しませんでした。
whoKnows

@whoKnowsもちろん。localhostは127.06.20.12ではなく127.0.0.12です。
curiousguy

そうですか。127.0.0.1はlocalhostを意味しますが、127.xyz はローカルコンピューターを意味する可能性があります。
whoKnows

2
@whoKnowsいいえ:127.xyzは、任意のxy zのこのコンピューターに属します。「localhost」は単なる127.0.0.1の名前なので、「localhost」は忘れてください。および関連プログラムの-nor -dフラグを使用して、netstat名前ではなく数値のアドレスを表示します。127.0.0.1は127.16.23.42と同じIPアドレスではありません。そのため、127.0.0.1:80と127.16.23.42:80は個別のTCPエンドポイントアドレスを表し、一方のアドレスのWebサーバーは他方のアドレスに見つかりません。
curiousguy

6

通常、bind-address 0.0.0.0を使用して、外部ネットワークおよびソースからの接続を許可します。MySQLなどの多くのサーバーは通常127.0.0.1にバインドし、ループバック接続のみを許可します。外部接続を有効にするには、管理者が0.0.0.0に変更する必要があります。

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