0.0.0.0は有効なIPアドレスですか?私のプログラムは、アドレスが使用されていないことを示すものとして保存できるようにしたいのですが、実際に有効な場合は機能しません。
4つのオクテットを含み、それぞれが0〜255の範囲内にある限り、validです。ただし、実際のIPアドレスとしてusableではありません。
RFC17 (a) 0.0.0.0/8
(0.<anything>.<anything>.<anything>
)は、送信元アドレスとしてのみ予約されています。このアドレスを持っているように見える場合がありますが、通常はアドレスが割り当てられていないためです(たとえば、DHCPによって)。
IPv4のウィキペディアエントリ も参照してください。
(a) このRFCは現在は時代遅れと見なされていますが、指定された動作に関しては依然として正しいです。その代替 https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml は、0.0の使用を詳述する同じテキストをまだ持っています.0.0アドレス。
はい、それはIPアドレスですしかし予約されています。
0.0.0.0/8-アドレスこのブロックでは、「この」ネットワーク上のソースホストを参照します。アドレス0.0.0.0/32は、このネットワーク上のこのホストの送信元アドレスとして使用できます。 0.0.0.0/8内の他のアドレスを使用して、このネットワーク上の指定されたホストを参照できます。
0.0.0.0
は、すべてのIPv4インターフェイスをバインドするために使用されます。したがって、それは127.0.0.1
のような特別な値です。
OPがここで質問している質問を見てみましょう。
0.0.0.0は有効なIPアドレスですか?
はい。これは技術的には有効なIPアドレスであり、他の回答ではさまざまな用途が説明されています(ここでは wikipedia リンクを再投稿するつもりはありません...
したがって、 paxdiablo's answer 上記が最も正しいと思いますが、質問のコンテキストも見てみましょう。
私のプログラムは、アドレスが使用されていないことを示すものとして保存できるようにしたいのですが、実際に有効な場合は機能しません。
これは、ユースケースに完全に依存します。これがプログラマーフォーラムであることを考えると、その観点を考慮しましょう。
ソフトウェアが実際のインターネットアドレス(サーバーの場所、Webサイトへの訪問者、複製/ミラーまたはバックアップサイト、Webサービスまたはデータベースサーバーなど)を保存している場合、これは完全に有効です。インターネット上のマシンには、このアドレスが割り当てられることはなく、有効な接続に解決されることもありません。
一方、ファイアウォールまたはルーターのファームウェアを作成している場合、このアドレスは特別な意味を持ちます。デフォルトルート、すべてのIP送信元/送信先の受け入れ、すべてのIP送信元/送信先のブロック、フォールトラフキャッチオールなど。ただし、このレベルでコーディングする場合は、最初にこの質問をする必要がないように、ネットワークプロトコルを十分に理解する必要があることを指摘しておきます。
したがって、私はこの質問を見ているほとんどの人が最初のカテゴリに分類されると仮定し、これがヌル、空または欠落したIPアドレスを保存する完全に有効な方法であることを提案します、実際のnull
値を使用できない何らかの理由がある場合。検証チェックを怠り、ソフトウェアがこのIPアドレスに接続しようとしても、接続を確立することはできません。
デフォルトルート アドレスとして予約されています。
これは、アドレスが割り当てられていないときにipconfigを介して表示されるのが一般的です。
他の回答で説明したように、0.0.0.0は一部の目的のIPアドレスとして有効で有効です。
範囲内のすべての値が有効な値である場合、定義するフラグアイテムは他の場所から取得する必要があります。そうしないと、フラグの意味で正当な値をオーバーロードします。オーバーロードされた値を使用する場合、正当な値またはフラグの意味が意図されているかどうかを100%判断することはできません。これはバグにつながり、リファクターで解決する必要があり、費用のかかる努力になる可能性があります。
正当な値のオーバーロードは常に発生し、IPアドレスとMACアドレス(はい、00:00:00:00:00:00は正当で割り当てられています)は最も一般的な被害者の一部です。
偶然にも、フレームの長さが約40バイトに制限されているシステム(イーサネット/ IPベースではない)で作業しています。 1バイトは0から255バイトの長さを表すことができ、最大長は40バイトなので、フラグ項目を表すために未使用の別名非法的値(252から255)のいくつかを使用できます。これらの帯域内フラグは、オーバーロードがないため大丈夫です。
アプリケーションでこれを使用して、IPアドレスがないことを表すことができます。Microsoftは、マシンにIPアドレスがない場合も0.0.0.0を使用します。
上記の「有効な」シナリオは、アプリケーションとは関係のない特定のシナリオに依存しています。
はい、すべての意図と目的のために。ピリオドで区切られた4つの数値はそれぞれ0〜255の範囲の値を持っているため、0.0.0.0は技術的に有効です。
しかし、実際にそのIPを持っている人が世界中にいるとは思わない。
編集:さて、それはデフォルトルートのために予約されていますが、それはまだ有効です。
Network Whoisクエリを実行すると、非常に役立つ出力を生成することもできます。
例:
http://whois.arin.net/rest/nets;q=0.0.0.0?showDetails=true
コメント:アドレス0.0.0.0は、コンピューターが使用するIPアドレスを学習している場合にのみ、発信パケットのアドレスとして使用できます。宛先アドレスとして使用されることはありません。 「0」で始まるアドレス直接接続されたデバイスへのブロードキャストに使用されることがあります。
もちろん。ただし、ネットワーク上の単一のホストには有効ではありません。ローカルネットワークのブロードキャスト範囲内にあります。ここをお読みください: http://tools.ietf.org/html/rfc17