web-dev-qa-db-ja.com

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

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

219
Sagnik Sarkar

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

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

  • 0.0.0.0は、無効な、不明な、または適用外のターゲットを指定するために使用されるルーティング不可能なメタアドレスです(特定のアドレスプレースホルダはありません)。

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

    サーバーのコンテキストでは、0.0.0.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストに192.168.1.1と10.1.2.1の2つのIPアドレスがあり、そのホスト上で稼働しているサーバーが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 の質問 を参照してください。ループバックデバイスとは何ですか。 ? および ループバックIPアドレスが127.0.0.1から127.255.255.254? になるのはなぜですか。


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アドレス」を意味します。ホストに192.168.1.1と10.1.2.1の2つのIPアドレスがあり、そのホスト上で稼働しているサーバーが0.0.0.0で待機している場合、それらのIPの両方で到達可能になります。

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

用途は次のとおりです。

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

IPv6では、すべてゼロのアドレスは "::"として書き込まれます。

出典: 0.0.0.0


DHCP検出/要求

クライアントが初めて起動すると、クライアントは初期化中状態にあると言われ、UDP(User Datagram Protocol)ポート67(BootPサーバー)を介してDHCPDISCOVERメッセージをローカル物理サブネットに送信します。 クライアントは自分が属するサブネットを知ることができないため、DHCPDISCOVERは、送信元IPアドレスが0.0.0.0の全サブネットブロードキャスト(宛先IPアドレスは255.255.255.255)です。クライアントにはIPアドレスが設定されていないため、送信元IPアドレスは0.0.0.0ですこのローカルサブネットにDHCPサーバが存在し、設定されて正常に動作している場合、DHCPサーバはブロードキャストを受信して​​応答します。 DHCPOFFERメッセージで。 DHCPサーバーがローカルサブネット上に存在しない場合は、DHCPDISCOVERメッセージをDHCPサーバーを含むサブネットに転送するために、このローカルサブネット上にDHCP/BootPリレーエージェントが存在する必要があります。

このリレーエージェントは、専用ホスト(たとえば、Microsoft Windows Server)またはルータ(たとえば、インターフェイスレベルのIPヘルパーステートメントを使用して設定されたCiscoルータ)のいずれかです。

...

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

...

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

Enter image description here

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


デフォルトルート

このドキュメントでは、デフォルトルート、またはラストリゾートゲートウェイを設定する方法について説明します。これらのIPコマンドは使用されています:

  • ipデフォルトゲートウェイ

  • ip default-network

  • とIPルート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へのスタティックルートを作成することは、ルータ上で最後の手段となるゲートウェイを設定するもう1つの方法です。 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コマンドを使ったラストリゾートゲートウェイの設定

207
DavidPostill

彼らは同じではありません。

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

0.0.0.0は特別なIPアドレスで、文脈によって意味が異なります。

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

Netstatを見て、ローカルアドレスが0.0.0.0として待機しているのを見たときに、127.0.0.1を0.0.0.0と間違えた可能性がありますが、これは0.0.0.0が使用されるのとは異なる方法です。

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

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

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

111
Cristian Dobre

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

127.x.y.zは「ここ」を意味します。

0.0.0.0はまったく違います: 0.0.0.0は何のアドレスでもありません 、Shellの*のようにジョーカーです。

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

アドレスを任意に指定できる状況では、ジョーカー0.0.0.0を使用できます を指定しても構いません

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

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

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

先ほどシェルの "メタ文字" *について述べましたが、メタ文字と*foo*( "foo"を含む任意のファイル名)のような文字とを組み合わせることの力は、IPアドレスの制約にはありません。 IPアドレスは許容できると見なされるか、すべてのアドレスが許容されます。 Logicはnotとしているので、このようにする必要があります。より豊富な制約言語でインターフェースを拡張することができます。

精度:

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

備考:仮想化(エミュレーション、ハードウェア仮想化、準仮想化、あなたが考えることができるものは何でも)を備えたコンピュータは複数の独立したIPスタックを持っています。

15
curiousguy

通常、bind-address 0.0.0.0を使用して外部のネットワークや送信元からの接続を許可します。 MySQLのような多くのサーバーは通常127.0.0.1にバインドしてループバック接続のみを許可しているため、管理者は外部接続を有効にするためにそれを0.0.0.0に変更する必要があります。

4
Marek Bejda