127.0.0.0 に使用可能な IP アドレスがないのはなぜですか?

127.0.0.0 に使用可能な IP アドレスがないのはなぜですか?

理論上、IP アドレスの各部分は 0 から 255 までの数字です (使用可能なスロットは合計 256 個)。

しかし、なぜ0どの IP アドレスでも 4 番目の部分には使用されず、IP アドレスの計算では常に 1 から始まるのでしょうか?

例えば:

127.0.0.1 <=== logically this should start from 0 as the first usable IP address.
192.168.0.1 <=== for example even default router IP address is set to 1 rather than to be 0
10.10.0.1
.
.

0最後の部分からスロットが常にスキップされるのはなぜですか?

答え1

しかし、なぜ IP アドレスの 4 番目の部分には 0 が使用されず、IP アドレスの計算では常に 1 から始まるのでしょうか?

への敬意を持ってタイトル質問の「」は、少なくとも Linux では、127.0.0.0完全に有用なアドレスです (他の127.*アドレスと同様に、ループバック インターフェイスにマップされます)。

たとえば、次の場所で Web サーバーを起動できます127.0.0.0:8080

docker run -d --rm --hostname node1 --name node1 -p 127.0.0.0:8080:8080 alpine \
  sh -c "apk add --update darkhttpd; mkdir /srv; hostname > /srv/index.html; darkhttpd /srv --port 8080"

そして、次のバインドに別のものを開始します127.0.0.1:8080

docker run -d --rm --hostname node2 --name node2 -p 127.0.0.1:8080:8080 alpine \
  sh -c "apk add --update darkhttpd; mkdir /srv; hostname > /srv/index.html; darkhttpd /srv --port 8080"

そして、それぞれのアドレスでそれらのサーバーにアクセスできるようになりました。

$ curl 127.0.0.0:8080
node1
$ curl 127.0.0.1:8080
node2

答え2

IPv4では、サブネットの最初のアドレスは、理由はよく分かりませんが、おそらくずっと昔に以前は「ブロードキャスト」アドレスでした。(後に、最後のアドレスが標準のブロードキャスト アドレスになりました。)

したがって、今日では技術的には最初のアドレスを使用することが可能かもしれませんが、ほとんどの既存のネットワーク スタックでは、依然としてそのアドレスを「予約済み」として扱います (以前の「クラス E」240.0.0.0/4 スペース全体が誤って使用できなくなったのと同じです)。

特に、サブネットの最初のアドレス、アドレスは必ずしも一致しません0。これらは/24サブネットの場合にのみ一致します。しかし、たとえば/16サブネットは.0.0予約されていますが、ない .1.0または.47.0、これらは /16 の中央にあるため、完全に有効なホスト アドレスです。

(一方、より小さな /27 サブネットは だけでなく.0または からも.32開始できます.192。これらは /24 で予約されていなくても、やはり /27 で予約されます。)

また、これはブロードキャスト サブネット (例: イーサネット) にのみ適用されることに注意してください。このようなアドレスは、ポイントツーポイント リンクで使用したり、/32 として個別にルーティングしたりできます。

答え3

IPv4 仕様では、IPv4 ネットワーク内の最低アドレスはネットワーク アドレスとして予約されており、これは通常ネットワーク内で最高アドレスであるブロードキャスト アドレスとは異なる目的を持っています (ただし、楽しみたいなら別の設定にすることもできます)。ネットワーク アドレスの考え方は、クラスレス ネットワークやサブネット マスクが登場する前の時代には、より理にかなったものでした。サブネットとサブネット マスクの背後にある概念は、元の仕様には存在しなかった IPv4 へのアドオンでした。

アップデート:「.0」で終わることには特別な意味はなく、単にそれがサブネット内の最低のアドレスであるということだけです (必ずしも .0 であるとは限りません)。

元々、IPv4 はクラスフルで、A、B、C、D、E の 5 つのクラスに分かれていました。クラス A ネットワークは、最上位ビットが 0 であるすべての IP、つまり 0.0.0.0 から 127.255.255.255 の IP です。上位 2 ビットが 10 の IPv4 アドレスはクラス B で、アドレス 128.0.0.0 から 191.255.255.255 に対応します。クラス C は最初のオクテットが 110xxxxx で始まるか、アドレス 192.0.0.0 から 223.255.255.255 です。クラス D は最初のオクテットが 1110xxxx に一致し、IP 224.0.0.0 から 239.0.0.0 になります。最後に、クラス E は 1111xxxx または IP 240.0.0.0 から 255.255.255.255 です。クラス E アドレスは予約済みとみなされ、255.255.255.255 の特別な例外を除いて、定義された用途はありません。クラス D は、コンピューターのグループにパケットをまとめて送信するために使用されるマルチキャスト アドレスです。クラス AC は通常のユニキャスト IP で、個々のデバイスが何らかのネットワーク上で IP を取得します。

そうは言っても、各ネットワークのサイズを定義するのはクラスです。クラス A ネットワークは、アドレスの最初の 8 ビットまたは最初のオクテットがネットワーク部分であり、残りの 24 ビットが単一の IPv4 ネットワーク上のアドレスのホスト固有の部分であると定義されています。クラス B は、それを 16 ビットと 16 ビットまたは 2 オクテットに分割します。クラス C ネットワークは、最初の 24 ビットをネットワーク部分として使用し、最後の 8 ビットをホスト部分として使用します。現代の用語では、クラス A ネットワークは /8 サブネット、クラス B は /16、クラス C は /24 サブネットです。IPv4 アドレスのネットワーク部分とホスト部分の分離は、パケットのルーティングにとって重要であり、デバイスがパケットをローカル ネットワーク上のシステムに直接送信できるか、またはルーターに送信して他の場所に転送する必要があるかを判断する方法です。IPv4 ネットワーク スタックとプロトコルがサブネット化を実装する前は、この区別は IP 自体にハードコードされていました。

RIPv1 ルーティング プロトコルなどのプロトコルに、この名残を見ることができます。RIPv1 ルーティング プロトコルは IP のみをアドバタイズし、サブネット マスクはアドバタイズしないため、ホスト アドレスとネットワーク アドレスの区別が重要でした。RIPv1 アドレスが 192.0.0.0 のアドレスをアドバタイズした場合、これはクラス B ネットワークの最小アドレスであるため、そのネットワーク全体のネットワーク アドレスになります。他のデバイスには、192.0.0.0 から 192.0.255.255 までのすべてのシステムがそのルートから利用可能であることが通知されます (クラス B はネットワークの最初の 2 つのオクテット (この例では 192.0) を使用するため)。ただし、192.0.0.1 をアドバタイズした場合、これはそのネットワークの最小アドレスではないため、ホスト アドレスになります。つまり、RIPv1 はネットワーク全体ではなく、単一の特定のホストのルートをアドバタイズしています。ダイヤルアップ モデムであるか、または一意のルートを取得する他の理由がある可能性がありますが、そのアドバタイズはその 1 つのホストのみを対象としています。

現在、サブネットは一般的になり、RIPv2 などの新しいプロトコルは IP とともにサブネット マスクを送信するため、ネットワーク アドレスの概念全体が少し冗長になっていますが、歴史的な理由により、この概念が残っています。ホスト固有のルートは、サブネット マスク 255.255.255.255 でアドバタイズできますが、ネットワーク アドレスがネットワーク範囲の下部に存在すると想定するソフトウェアとの互換性を維持する必要があります。

アップデート:さらに明確にするために、いくつか例を挙げます。10.xxx IP アドレス範囲を /26 サブネットに分割すると、32 ビット IP のうちホスト部分には 6 ビットしか残っていないため、各サブネットには合計 64 個のアドレス (ホストに使用可能なのは 62 個) が与えられます。最初の 5 つのサブネット ネットワーク アドレスは、10.0.0.0、10.0.0.64、10.0.0.128、10.0.0.192、および 10.0.1.0 になります。デフォルトのブロードキャスト アドレスは、サブネット内で最も高いアドレスとなり、それぞれ 10.0.0.63、10.0.0.127、10.0.0.191、および 10.0.1.63 に対応します。代わりに /23 サブネットを使用すると、各ネットワークには 512 個のアドレス (使用可能なのは 510 個) が与えられます。最初の 5 つのサブネットは、10.0.0.0、10.0.2.0、10.0.4.0、および 10.0.6.0 です。対応するブロードキャスト アドレスは、10.0.1.255、10.0.3.255、10.5.255、および 10.7.255 です。この最後の例では、10.0.1.0、10.0.3.0 などはネットワーク アドレスではないことに注意してください。これらはサブネット範囲の中央にあるため、ホストの通常の IP として完全に使用できます。最初と最後のアドレスだけが特別です。10.0.0.255 も同様に通常のホストとして使用できます。

答え4

IPv4 では、プレフィックス /24 を使用する場合、.0 で終わる IP は (デフォルトの) ネットワーク アドレスであることを意味します。このアドレスを使用してコンピューターに割り当てることはできません。割り当て可能な IP は .1 から .254 です。また、.255 はネットワークの「ブロードキャスト」アドレスとして使用されるため、使用できません。

関連情報