/31と/32のCIDRだけ計算式が崩れる理由
公開日: 2026-06-21
CIDR表記でホスト数を求める式は「2^(32-プレフィックス長)-2」だと覚えている人が多いはずです。 実際/24なら256-2=254台、/28なら16-2=14台と、この式できれいに合います。 ところが/31を当てはめると2-2=0、/32なら1-2=-1になり、式そのものが崩れます。それでも/31は2台、/32は1台のホストとして実用されています。この記事ではなぜこの2つだけ例外になるのかを整理します。
「-2」が意味すること
サブネット内の先頭アドレスはネットワークアドレス、末尾アドレスはブロードキャストアドレスとして予約され、どちらもホストには割り当てられません。 これが式の「-2」の正体です。192.168.1.0/24なら192.168.1.0がネットワークアドレス、192.168.1.255がブロードキャストアドレスで、残り254個がホストに使えます。 この予約はサブネットが3台以上のホストを収容することを前提にした設計です。ホストが1〜2台しかいないサブネットでは、そもそも前提が成り立ちません。
/31: 2台しかいないなら予約する意味がない
ルーター同士を1本の回線で直結するポイントツーポイントリンクでは、リンクの両端に1つずつ、合計2つのアドレスがあれば足ります。
ここに従来の考え方で/30を割り当てると、4つのうち先頭と末尾を予約に使うため、実際にホストとして使えるのは2つだけになり、残り2つは何にも使われません。
RFC 3021はこの無駄をなくすために、ポイントツーポイントリンクに限って/31の利用を認めました。2つのアドレスのうち、ネットワークアドレス・ブロードキャストアドレスという区別自体を作らず、両方をホストアドレスとして使うという発想です。
3台以上を収容できる構造を前提にした予約ルールを、そもそも2台しかいないリンクに適用するのが間違っていた、という整理です。実装上は「cidrが31か32なら従来のhost range計算をスキップする」という分岐になり、ip-cidr-calculatorの内部でも同様に特別扱いしています。
/32: ホスト1台だけを指すための表記
/32は32bit全部をネットワーク部として使うため、表せるアドレスは1つだけです。 ネットワークアドレスもブロードキャストアドレスも存在する余地がなく、その1つのアドレスがそのままホストを指します。 ルーティングテーブルで「このIPアドレス1つだけへの経路」を明示したい場合や、ロードバランサーの背後にいる特定のサーバーを指す場合など、サブネットというよりは単一のホストを識別するための表記として使われます。
/30との比較で見える設計判断
プレフィックス 総アドレス数 予約 使えるホスト数 用途 /30 4 ネットワーク・ブロードキャスト各1 2 従来のポイントツーポイント /31 2 なし 2 RFC3021準拠のポイントツーポイント /32 1 なし 1(ホストそのもの) 単一ホストの指定/30と/31は使えるホスト数が同じ2台でありながら、消費するアドレス空間は半分で済みます。 大規模なバックボーンではポイントツーポイントリンクの数自体が多いため、リンク1本あたり2個減らせるこの差が積み重なるとアドレス空間の節約効果は無視できません。 一方で、機器によっては/31をサポートしないファームウェアも残っているため、相手機器がRFC3021に対応しているかを確認してから使う必要があります。
CIDRから計算されるネットワークアドレス・ブロードキャストアドレス・利用可能ホスト数を実際に確認したい場合は、以下のツールでIPv4/IPv6どちらも計算できます。