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

私たちのほとんどは「127.0.0.1と0.0.0.0」について聞いたことがありますが、おそらくあまり考えていませんが、両方が実際に同じ場所を指しているように見える場合、2つの実際の違いは何ですか?今日のスーパーユーザーのQ&A投稿は、混乱している読者のために物事を片付けるのに役立ちます。

今日の質疑応答セッションは、コミュニティ主導のQ&AWebサイトのグループであるStackExchangeの下位区分であるSuperUserの好意で行われます。

写真提供:Kate Gardiner(Flickr)

質問

スーパーユーザーリーダーのSagnikSarkarは、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の違いは何ですか?

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

答え

スーパーユーザーの寄稿者であるDavidPostillが私たちに答えを持っています。

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予約済み、ループバック、プライベートアドレス

詳細については、Ask Ubuntuの質問:ループバックデバイスとは何ですか?どのように使用しますか?を参照してください。

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ホストを指定する方法。デフォルトルートを指定するときにこのように使用されます。
  • ターゲットが使用できないことを明示的に指定する方法。出典:  127.0.0.1 –その用途は何ですか?なぜそれが重要なのですか?
  • すべてのIPv4アドレスを指定する方法。これは、サーバーを構成するとき(つまり、リスニングソケットをバインドするとき)にこのように使用されます。これは、TCPプログラマーにはINADDR_ANYとして知られています。[ 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コマンドが使用されます:

  • ipdefault-gateway
  • ipdefault-network
  • ip route 0.0.0.0 0.0.0.0

IPルート0.0.0.00.0.0.0

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

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

出典: IPコマンドを使用したラストリゾートのゲートウェイの構成

説明に追加するものがありますか?コメントで音を立ててください。他の技術に精通したStackExchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッド全体をご覧ください。