127.0.0.0.1はlocalhost
を指し、0.0.0.0はlocalhost
を指していると理解しています(間違っていたら訂正してください)。では、127.0.0.0.1と0.0.0.0の違いは何でしょうか?
278 Sagnik Sarkar 2015-08-02
127.0.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.1と10.1.2.1の2つのIPアドレスを持っていて、そのホスト上で動作しているサーバが0.0.0.0をリッスンしている場合、それらのIPの両方に到達することができます
IPアドレス127.0.0.1とは?
127.0.0.0.1 は、「ローカルホスト」とも呼ばれるループバックインターネットプロトコル (IP) アドレスです。このアドレスは、エンドユーザーが使用している同じマシンやコンピュータへの IP 接続を確立するために使用されます
IPv6アドレスをサポートしているコンピュータでは、 ::1の意味合いを使用して同じ規約が定義されています。アドレス127.0.0.0.1を使用して接続を確立するのが最も一般的な方法ですが、127…*の範囲内の任意のIPアドレスを使用しても、同様の方法で機能します。ループバック構成は、ネットワーキングが可能なコンピュータやデバイスに、マシン上の IP スタックを検証したり確立したりする能力を与えます
ソースは以下の通りです。127.0.0.0.1 – その用途と重要な理由は?
Special Addresses
クラスAのネットワーク番号127には「ループバック」機能が割り当てられており、つまり、上位プロトコルによってネットワーク127アドレスに送信されたデータグラムは、ホスト内でループバックするべきである。ネットワーク127アドレスに「送られた」データグラムは、どこのネットワークにも現れてはならない
ソースは以下の通りです。ネットワークの番号
Aクラス全体であれば、最後の3オクテットの他の任意の値に何の意味があるのでしょうか?
ループバック範囲の目的は、ホスト上の TCP/IP プロトコルの実装をテストすることです。下位レイヤは短絡されているので、ループバックアドレスに送信することで、下位レイヤの問題が顕在化することなく、上位レイヤ(IP 以上)のテストを効果的に行うことができます。127.0.0.0.1 は、テスト目的で最も一般的に使用されるアドレスです
ソースは以下の通りです。IP予約、ループバック、プライベートアドレス
詳細については、https://askubuntu.com の質問ループバックデバイスとは何か、どのように使用するのかと、ループバックの IP アドレスが 127.0.0.0.1 から 127.255.255.254 になっているのはなぜかを参照してください
IPアドレス0.0.0.0とは?
“0.0.0.0.0” は有効なアドレス構文です。したがって、従来のドット十進法のIPアドレスが予想される場合は、どこでも有効なアドレスとしてパースされるはずです。一度解析され、実行可能な数値形式に変換された後、その値が次に何が起こるかを決定します
オールゼロの値は特別な意味を持っています。つまり、「有効」なのですが、特定の状況では適切ではないかもしれない(したがって、有効ではないとして扱われる)意味を持っています。これは基本的には「特定のアドレスを指定しない」プレースホルダです。ネットワーク接続のアドレスバインドのようなものに対しては、結果として適切なインターフェースアドレスを接続に割り当てることができます。インターフェイスを設定するために使用している場合は、代わりにインターフェイスからアドレスを削除することができます。特定のアドレスなし」が実際に何をするかは、使用するコンテキストに依存します
ルートエントリのコンテキストでは、通常はデフォルトのルートを意味します。これは、比較するビットを選択するアドレスマスクの結果として起こります。0.0.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.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストが192.168.1.1.1と10.1.2.1の2つのIPアドレスを持っていて、そのホスト上で動作しているサーバが0.0.0.0をリッスンしている場合、それらのIPの両方に到達することができます
ルーティングの文脈では、0.0.0.0.0は通常、デフォルトルート、つまりローカルネットワークのどこかではなく、インターネットの「残りの部分」につながるルートを意味します
Uses include:
- DHCPDISCOVERパケットを送信するときなど、DHCPを使用しているときの最初のDHCPDISCOVERパケットを送信するときのように、ホストが自分自身のアドレスとして主張するアドレスです。例えば、DHCPを使用しているときに最初のDHCPDISCOVERパケットを送るときのように
- DHCPによるアドレス要求が失敗したときに、ホストのIPスタックがこれをサポートしていれば、 ホストが自分自身に割り当てるアドレス。この使用法は、最新のオペレーティングシステムではAPIPAメカニズムに置き換えられています
- “任意のIPv4-ホストを一切指定しない “という方法です。デフォルトルートを指定する際にこのように使用します
- ターゲットが利用できないことを明示的に指定する方法です
- あらゆるIPv4アドレス」を指定する方法。サーバを設定するとき(つまり、リスニングソケットをバインドするとき)にこの方法で使用されます。これは TCP プログラマには INADDR_ANY として知られています。(bind(2) はインタフェースではなくアドレスにバインドします)
IPv6では、オールゼロアドレスは”:: “と書かれています
ソースは以下の通りです。0.0.0.0.0 です
DHCP Discovery/Request
クライアントが初めて起動したとき、クライアントは初期化状態にあると言われ、ローカルの物理サブネット上にUDPポート67(BootPサーバ)を介してDHCPDISCOVERを送信します。クライアントは自分の属するサブネットを知る方法がないので、DHCPDISCOVERは全サブネットブロードキャスト(宛先IPアドレスは255.255.255.255.255)で、送信元IPアドレスは0.0.0.0.0です。DHCPサーバがこのローカルサブネット上に存在し、正しく設定され、動作していれば、DHCPサーバはブロードキャストを聞いてDHCPOFFERメッセージで応答します。DHCPサーバが存在しない場合は、DHCPサーバが存在するサブネットにDHCPDISCOVERを転送するために、DHCP/BootPリレーエージェントが存在しなければなりません
この中継エージェントは、専用ホスト(例えば、Microsoft Windows Server)、またはルータ(例えば、インターフェースレベルのIPヘルパーステートメントで構成されたCiscoルータ)のいずれかであることができます
…
クライアントはDHCPOFFERを受信した後、DHCPREQUESTで応答し、DHCPOFFERのパラメータを受 け取る意思を示し、「要求中」の状態に移行します。クライアントはDHCPDISCOVERを受信したDHCPサーバから複数のDHCPOFFERを受信してもかまいません。クライアントはDHCPOFFERを選択し、そのDHCPOFFERにのみ応答し、他のDHCPOFFERを暗黙のうちに拒否します。クライアントはDHCPOFFERを選択し、そのDHCPサーバにのみ応答し、他のすべてのDHCPOFFERを 暗黙のうちに拒否します。DHCPREQUESTはブロードキャストでもあるので、DHCPOFFERを送信したすべてのDHCPサーバはDHCPREQUESTを見て、自分のDHCPOFFERが受諾されたのか辞退されたのかを知ることができます。クライアントが必要とする追加のコンフィグレーションオプションは、DHCPREQUESTのオ プションフィールドに含まれます。クライアントはDHCPREQUESTメッセージを送信する際に、「0.0.0.0.0.0」のソースIPアドレスを使用します。この時点では、クライアントはそのIPアドレスを使用することが明確であることを確認していません
…
クライアントとDHCPサーバが同じサブネット上に存在する場合、クライアントがDHCPアドレスを取得するためのクライアント-サーバ間の会話
ソースは以下の通りです。カタリストスイッチまたはエンタープライズネットワークにおけるDHCPの理解とトラブルシューティング
Default Route
このドキュメントでは、デフォルトルート、つまり最後の手段のゲートウェイを構成する方法について説明します。これらのIPコマンドを使用します
ip default-gateway
ip default-network
と、ip route 0.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.0 へのスタティックルートの使用は、どのルーティングプロトコルにも依存しません。ただし、ルータで ip ルーティングが有効になっている必要があります
注意:IGRPは0.0.0.0.0へのルートを理解していないため、ip route 0.0.0.0.0コマンドを使用して作成したデフォルトルートを伝搬させることはできません。IGRPにデフォルトルートを伝搬させるには、ip default-networkコマンドを使用します
ソースは以下の通りです。IP コマンドを使用した最後のリゾート地のゲートウェイの設定
266 DavidPostill 2015-08-02
彼らは同じではありません
127.0.0.1
は、予約された127/8ネットワークの一部であり、同じコンピュータを指しています
0.0.0.0
は特殊なIPアドレスで、文脈によって異なる意味を持ちます
インターネットプロトコルバージョン4では、アドレス0.0.0.0.0は、無効な、未知の、または適用できないターゲットを指定するために使用される非ルーティング可能なメタアドレスです。そうでなければ無効なデータに特別な意味を与えることは、バンド内シグナリングの応用である
netstatを見て、リスニングしているローカルアドレスが0.0.0.0と表示されたときに、0.0.0.0.0を127.0.0.1と勘違いしてしまうかもしれませんが、これは0.0.0.0の使い方が違うのです
サーバの文脈では、0.0.0.0は「ローカルマシン上のすべてのIPv4アドレス」を意味します。ホストが192.168.1.1.1と10.1.2.1の2つのIPアドレスを持っていて、そのホスト上で動作しているサーバが0.0.0.0をリッスンしている場合、それらのIPの両方に到達することができます
ルーティングの文脈では、0.0.0.0.0は通常、デフォルトルート、つまりローカルネットワークのどこかではなく、インターネットの「残りの部分」につながるルートを意味します
119 Cristian Dobre 2015-08-02
127.0.0.1はローカルコンピュータのアドレスの一つですが、127.0.0.0(ループバックサブネット)と127.255.255.255(ループバックサブネットのブロードキャストアドレス)以外の127.x.y.zもコンピュータの別のアドレス(ループバックアドレスと呼ばれています)です
127.x.y.zはここを意味する
0.0.0.0.0 は何かのアドレスではなく、シェルの *
のようにジョーカーです
0.0.0.0.0には何もないので、0.0.0.0にデータを送ることも、0.0.0.0へのTCP接続を積極的に開くこともできません
joker 0.0.0.0.0 は、アドレスをオプションで指定できる文脈で使用できますが、これは私が気にしないという意味です
例えば、いくつかのTCPサーバへのTCP接続を積極的にオープンする場合(TCPサーバはパッシブTCPオープンによって作成されます)、TCPサーバのアドレス(IPとポート番号)を指定する必要があり、オプションでローカルアドレスを選択することができます。(ソケットはサーバソケットではないので、誰も接続を開くことができず、接続する側のアドレスは通常あまり重要ではありません)
bind
システムコールは、TCPソケットのローカルアドレスを選択するために使用されます。bind
に渡されるデータは、実際には、IPアドレスに対する制約、TCPポートに対する制約のセットです。通常のテキスト表記はIP:portです。0.0.0.0.0:0は任意のIPとポートが許容されることを意味します。0.0.0.0.0:20はローカルポートが20でなければならないことを意味し、どのようなIPでも構いません(0.0.0.0.0:20はアクティブモードでのデータ接続に準拠したFTPサーバで使用されます)
TCP/IP サブシステムは、宛先アドレスに基づいてルーティングテーブルを使用して、TCP 接続の自分側のアドレスを選択します
以前、シェルの「メタ文字」*
について触れましたが、メタ文字と*foo*
のような文字を組み合わせる力(「foo」を含む任意のファイル名)は、IPアドレスの制約では存在しないので、オール・オア・ナッシングです:単一のIPアドレスが許容されるとみなされるか、すべてのアドレスが許容されるかのどちらかです。論理的には、このようにしなければならないということはありません。よりリッチな制約言語でインターフェイスを拡張することができます
Precision:
127.x.y.z は「ここにある」という意味の文章は、これらのアドレスがすべて同じであることを意味するものではありません。これらのアドレスは、実際にはローカルの「コンピュータ」の中の、ローカルの IP スタックの中の、異なる「場所」(ソケットアドレス)を表しています
備考: 仮想化(エミュレーション、ハードウェア仮想化、準仮想化、考えられるものは何でも)されたコンピュータは、複数の独立したIPスタックを持っています
16 curiousguy 2015-08-03
通常、外部のネットワークやソースからの接続を許可するために、バインドアドレス 0.0.0.0.0 を使用します。MySQL のような多くのサーバでは、通常 127.0.0.0.1 にバインドしてループバック接続のみを許可していますが、外部からの接続を有効にするには管理者が 0.0.0.0.0 に変更する必要があります
7 Marek Bejda 2015-08-03