/24 と 255.255.255.0 が同じ境界を指している仕組みを覗く
255.255.255.0 の裏側を覗くと、そこには 24 個の 1 と 8 個の 0 が並んでいた。左側の 1 の並びがネットワーク部、右側の 0 の並びがホスト部。マスクは IPアドレスの上に境界を引く道具で、境界の位置だけが外から与えられる、というところまでは手元にある。
ここで、少し違う角度から、自分の職場を眺めてみてほしい。
社内ネットワークの構成図や、サーバ管理台帳、運用手順書のどれでもいい。目に止まる数字はこんな形をしていないだろうか。
[5Fフロア LAN] 10.1.50.0/24
[3Fフロア LAN] 10.1.30.0/24
[コアルータ間 P2P リンク] 10.1.255.0/30
IP アドレスの後ろに、スラッシュと小さな数字。/24 や /30。よく見かける形だ。255.255.255.0 という形と、この /24 が、どうやら同じことを言っているらしい — という見当はつく。
でも、いざ説明を求められると、見当しか手元にない。
もう一つ、もっと引っかかる話がある。P2P リンクのところに書かれている /30、ここには端末が 2 台しか入らないらしい。脳は一瞬つまずく。/30 は /24 より数字が大きい。数字が大きい方が大きい範囲、つまり広いはずじゃなかったか。でも 2 台しか入らない。/24 の方はフロア LAN で数百台規模で使っている。数字は大きいのに、収容は狭い。
この直感と逆の景色を、ここから順に解いていく。
/24 は、サブネットマスクの別表記でしかない。境界が右に寄るほど、収容できる端末数は半分ずつ減っていく。
これが手元の言葉になれば、構成図に並ぶ /24 や /30 を見ただけで、そこが数百台規模のフロアなのか、ルータ 2 台だけの P2P リンクなのかが、桁感で読めるようになる。


プレフィックスは、マスクの 1 を数えるだけ
まず、/24 が何者なのかを片付けてしまおう。結論から言うと、/24 は 255.255.255.0 を別の書き方で書いただけのものだ。新しい概念はどこにもない。
255.255.255.0 の裏側を、もう一度思い出してほしい。


上段の 4 つのオクテット、これがマスク 255.255.255.0 の 32 ビットの姿だ。左から、11111111・11111111・11111111・00000000 と並んでいる。左側に 1 がずらっと並び、右側で 0 に切り替わる。「1 と 0 の切り替わりの位置がネットワーク部とホスト部の境界」という、あの景色がそのまま出ている。
ここで、素朴なことをしてみる。先頭から 1 が何個続いているか、数えてみよう。
1 オクテット目は 8 個、2 オクテット目も 8 個、3 オクテット目も 8 個。合計すると 24 個。4 オクテット目は全部 0 になって、1 の列は終わる。
この「24」という数字だけを取り出して書いたのが、/24 だ。
図の下段を見てほしい。上段のマスクの 1 の個数 — 24 — を、数字だけ抜き出して、スラッシュを付けて書いた。それだけ。/24 と 255.255.255.0 は、同じ境界位置を、別の書き方で書いただけだ。
マスクを毎回 255.255.255.0 と 4 つのオクテットで書くのは、率直に言って長い。でもマスクの主役は「先頭の 1 がどこまで続くか」、それ一点だった。4 オクテット目まで 0 が並ぶのはすでに決まっている(途中で混ざらないというルールもある)。
だとしたら、先頭の 1 の個数さえ伝えれば、マスク全体が一意に決まる。残りは自動で埋まる。だから /24 という数字 1 つあれば、32 ビットの境界位置は迷わずに決まる。
このアイデアを 1993 年 9 月に標準化したのが、RFC 1519 という文書だ(詳しくは後の章で触れる)。それから 13 年後の 2006 年 8 月、RFC 4632 がこの表記を現行のルールとして整理し直し、「プレフィックス長 = マスクの中に立っている 1 の個数」として明文化した。プレフィックス長とは、それだけの意味だ。
だから、構成図の 10.1.50.0/24 を見たら、頭の中では次のように読み替えればいい。
10.1.50.0という IPアドレス に/24= 先頭の 1 が 24 個並んでいるマスク(=255.255.255.0)を重ねている
これだけで、サブネットマスクの景色にそのまま戻れる。/24 は新しい概念ではなく、マスクの別表記。この等価性が、ここからすべての入り口になる。
/24 と 255.255.255.0 は、同じ境界位置を指す 2 つの書き方。マスクの先頭から 1 が何個連続しているか、その個数だけを数字として取り出したのが /N。マスクの仕組みそのものは何も変わっていない。
境界が右に寄るほど、収容できる端末数は半分ずつ減る
等価性がわかったところで、冒頭の違和感に戻る。/30 はなぜ 2 台しか入らないネットワークなのか。数字が大きい方が大きい範囲、という素朴な直感と、どう折り合いをつけるか。
考えてみよう:
/24と/30、数字が大きい方が広い範囲なのか、狭い範囲なのか。そして、そう思った理由は何だろうか。先を読む前に、5 秒だけ言葉にしてみてほしい。
予想を持ってもらえただろうか。では答え合わせをしよう。結論は、数字が大きいほど収容範囲は狭い。直感と逆だ。
ただ、これは直感が劣っているわけではない。「数字が大きい=大きい」という日常の感覚はそのままで正しい。ただ、/N の数字は「ネットワークの収容数」を直接表していない。境界の位置を表している。そして、境界を右に動かすほど、ホスト部のビット数が削られていく。だから、収容できる端末数は減る。
この景色を、縦に並べて見てもらう。


上から /24・/25・/26・/30 と並んでいる。緑の長さがネットワーク部、灰色の長さがホスト部。見比べてほしいのは、緑と灰色の境界が 1 行ごとに右にずれていくことだ。
/24は 24 ビット目で境界が引かれる。ホスト部に残るのは 8 ビット。/25ではもう 1 ビット右へ。ホスト部は 7 ビット。/26ではさらに右へ。ホスト部は 6 ビット。/30までいくと、ホスト部に残るのはたった 2 ビット。
つまり、/N の数字が 1 増えるたびに、ネットワーク部は 1 ビット分広がるのに対して、ホスト部は 1 ビット分短くなる。そして、ホスト部が短くなるほど、収容できる端末の桁感は、半分、半分と落ちていく。2 ビットの並びで表せる組合せ数は、3 ビットのそれの半分だ。
図の右端を見てほしい。
/24で収容できるのは、桁感で数百台オーダー。これがフロア LAN の規模だ。/25はその半分。/26はさらに半分。/30まで狭めると、収容できる端末は 2 台だけ。ルータ 2 台だけが収まる、それだけのネットワーク。
これが、構成図でフロア LAN と P2P リンクでプレフィックスが違っていた理由だ。フロアには数百台の端末がいる。だから /24 で余裕のある収容数を用意する。コアルータ間をつなぐ P2P リンクはルータ 2 台しか乗らないから、そこには /30 までぎりぎりに寄せて 2 台分の収容数を用意する。必要な台数に合わせて境界の位置を動かす、それだけだ。
/N の N の数字を眺めていると混乱しそうになるが、ホスト部の長さを見る習慣にすれば、混乱は消える。ホスト部が短ければ収容範囲は狭い。ホスト部が長ければ収容範囲は広い。数字ではなく、残っているビットの長さで収容数の桁感を掴む。これが、この章で手元に来る読み方だ。
/N の N が大きくなるほど、境界は右に寄る。境界が右に寄ると、ホスト部のビット数は短くなり、ホスト部が 1 ビット減るたびに、収容数の桁感は半分になる。直感と逆に見えたのは、数字ではなく「ホスト部の長さ」を見ていなかったからだ。
/24 は 254 台、/30 は 2 台 — 桁感を手元に持つ
境界の位置とホスト部ビット数の関係が見えたら、最後に「何台収容できるか」という具体的な桁感まで降りてくる。
使うのは、一本の引き算だけだ。
ホスト部ビット数 = 32 − /N
これは、ここまでに学んだ事実の組合せでしかない。IPアドレスは全体で 32 ビット。そのうち /N 個がネットワーク部に使われる。残りがホスト部だから、32 − N。それだけの式だ。
この式に /24 を入れると、ホスト部は 8 ビット。/30 を入れると、ホスト部は 2 ビット。前の章で図で見た姿と、数字の上でもぴったり一致する。
ホスト部の広さは、2 進数の組合せの数で決まる。ビットが 1 本あれば 2 通り、2 本あれば 4 通り、8 本あれば 256 通り。桁感として、こんな具合だ。
/24のホスト部 8 ビット → 桁感 256 通り/30のホスト部 2 ビット → 桁感 4 通り
ただし、実際に端末へ割り当てられるのは、この桁感からちょうど 2 つ分少ない。ネットワークの中には、端末には使えない 2 つの IP アドレスがある。
- ネットワーク自身を指すアドレス: ホスト部のビットが全部 0 のもの。
/24の例なら10.1.50.0。「このネットワーク自身の識別子」として予約されている。 - ネットワーク内の全員へ一斉に届けるアドレス: ホスト部のビットが全部 1 のもの。同じ例なら
10.1.50.255。「ネットワーク内の全端末へ届ける宛先」として予約されている(L2 で出てきたブロードキャストの、L3 版だと思っておけばいい)。
この 2 つは「ネットワーク識別子」と「ブロードキャストアドレス」という別の役割を持っているので、個々の端末には割り当てられない。だから使えるアドレス数は、桁感からこの 2 つ分を引いた残りになる。
あわせると、
/24→ 256 − 2 = 254 台(フロア LAN の桁感)/30→ 4 − 2 = 2 台(P2P リンクの桁感)
冒頭の違和感が、これで解ける。/30 が 2 台なのは、/N の数字が大きいからではなく、32 から 30 を引くとホスト部が 2 ビットしか残らず、2 ビットで表せる桁感(4 通り)から予約の 2 を引いたからだ。順を追えば、直感のほうが途中で道を踏み外していただけで、景色はまっすぐ流れている。
ここで、1993 年にこの発想が生まれた経緯に、1 行だけ触れておく。
それ以前の IPv4 には、/N という可変の線はなかった。組織ごとに使える IPアドレスの単位は、クラス A、クラス B、クラス C という3 種類の固定サイズだけ。1990 年代初頭、クラス B の在庫が枯渇しかけ、クラスの単位も組織実態に合わず、余分な IP が塩漬けになる。その痛みに応えて出たのが、1993 年 9 月の RFC 1519 だ。
本話の目線では「書き方が短くなった」話に見えるが、RFC 1519 が標準化したのはそれだけではない。クラスの固定サイズをやめ、プレフィックス長で自由に線を切って割り当てるという設計思想そのものが、ここで公式になった。線を短く書くための /N 記法は、その設計の見える側だと思えばいい。2006 年の RFC 4632 がこの記法と運用を現行ルールとして整理し、今日の 10.1.50.0/24 という書き方が世界中の構成図で動いている。
つまり、あなたが見ていた社内構成図の /24 と /30 は、30 年以上前の 1993 年の決定から今日までまっすぐ延びてきた線だ。
ホスト部ビット数 = 32 − /N。そこから桁感(2 のホスト部ビット乗)を出し、予約の 2 台分を引く。/24 で 254 台のフロア LAN、/30 で 2 台の P2P リンク。1993 年 RFC 1519 以降、世界中の構成図がこの境界の動かし方で書かれている。
/Nは使えるホスト数の桁感を動かす
社内構成図で見かけていた /24 や /30 の正体は、サブネットマスクを短く書き直した表記だった。マスクの先頭から 1 が何個連続しているか、その個数だけを数字として取り出したのが /N。/24 と 255.255.255.0 は、同じ境界位置の 2 つの書き方にすぎない。
境界の位置が右に寄るほど、ホスト部の長さは短くなり、収容できる端末数は桁感で半分、半分と縮んでいく。ホスト部ビット数は 32 − /N の引き算で出る。そこから使える台数を桁感で導くと、/24 はおよそ 254 台、/30 はちょうど 2 台。フロア LAN にはゆとりのある収容数を、P2P リンクには 2 台分の収容数を。用途に合わせて境界の位置を自由に動かせることが、1993 年の RFC 1519 以降の世界の前提になっている。
ここまでで、IPアドレスの形、その上に引く境界、その境界を短く書く方法までが手元でつながった。
ただ、一つ、ずっと気になっていた景色がある。自分の会社のネットワーク、自宅のルータ、別の会社の構成図、友人から聞いた別のオフィス — 似たような番号が、あちこちで重なって使われているように見える。世界中に何億もの組織があるはずなのに、なぜこんなことが起きているのか。偶然か、事故か、それとも最初からそういう設計なのか。プライベートIPアドレスという、組織内専用の番号体系の話題が、ここから残されている。