サブネットマスクとは、IP アドレスとサブネットの計算

回 4-2 道 4 ネットワークと暗号

サブネットマスクは、32 ビットの IPv4 アドレスのうち、頭から何ビットがネットワーク部 (どの網か) で、残りがホスト部 (網の中のどの機器か) かを示す値です。255.255.255.0 は頭の 24 ビットが 1 なので /24 とも書き、ホスト部は 8 ビットで 256 個の番地があります。そこからネットワークアドレスとブロードキャストアドレスの 2 つを引いた 254 台が、/24 の網につなげる台数です。

IP アドレスのうち、どの網かを示す部分と、網の中の機器を示す部分を切り分けられるようになります。

サブネットマスクとは何か

サブネットマスクは、IP アドレスのどこまでが網の名前で、どこからが網の中の機器の番号かを示す区切りの値です。スマホやパソコンの網の設定を開くと、IP アドレス 192.168.1.50 の下に、サブネットマスク 255.255.255.0 と並んでいることがよくあります。

この 255.255.255.0 は、何を決めているのでしょうか。家の網には、何台まで番号を配れるのでしょうか。答えは 254 台です。256 でも 255 でもない理由が、この回の主題です。

手がかりは、IP アドレスもマスクも、中身は 32 個の 0 と 1 だということです。2 進数の読み方は、道 1 の 2 進数と 16 進数 で確かめられます。

IP アドレスとマスクはどう決まっているのか

IPv4 アドレスは 32 ビットの数で、マスクの 1 の所がネットワーク部、0 の所がホスト部です。

IPv4 アドレスは 32 ビット

IPv4 アドレスは 32 ビットの数を、8 ビットずつ 4 つに切って 10 進数で書いたものです。8 ビットの 1 つの塊をオクテットと呼び、1 つのオクテットは 0 から 255 までの値を取ります。

書き方192.168.1.50
1 つ目11000000 (192)
2 つ目10101000 (168)
3 つ目00000001 (1)
4 つ目00110010 (50)

全体の範囲は 0.0.0.0 から 255.255.255.255 までで、2 の 32 乗、約 43 億個です。

ネットワーク部とホスト部を分けるマスク

サブネットマスクは、頭から 1 を並べ、残りを 0 にした 32 ビットの数です。255.255.255.0 は、2 進数で 1 が 24 個、0 が 8 個並びます。1 の数だけを書く形を CIDR 表記 (サイダー、プレフィックス長とも言う) と呼び、255.255.255.0 は /24 です。

アドレスとマスクのビットごとの AND (両方が 1 のときだけ 1 にする計算) を取ると、ホスト部が 0 に消え、ネットワーク部だけが残ります。これがネットワークアドレス (網の名前) です。192.168.1.50 と 255.255.255.0 なら、192.168.1.0 が残ります。

CIDRマスクホスト部
/16255.255.0.016 ビット
/24255.255.255.08 ビット
/25255.255.255.1287 ビット
/26255.255.255.1926 ビット
/30255.255.255.2522 ビット

マスクの 1 は必ず頭から切れ目なく続きます。CIDR の決まりを書いた RFC 4632 も、/16 を「上の 16 ビットが 1、下の 16 ビットが 0 のマスク」と説明しています。

CIDR の / のあとの数は頭から固定するビットの数で、/24 は 256 個、/16 は 65,536 個になる図

つなげる台数は 2 のホスト部乗から 2 を引く

網の中の番地の数は、ホスト部が h ビットなら 2 の h 乗です。/24 はホスト部が 8 ビットなので、256 個の番地があります。

このうち 2 つは機器に配りません。ホスト部が全部 0 の番地はネットワークアドレス (網そのものの名前)、全部 1 の番地はブロードキャストアドレス (網の全員に送る宛先) に使うからです。31 ビットのマスクの RFC 3021 も、30 ビットのマスクの網が 4 つの番地を「2 つのホストの番地、全部 0 の網、全部 1 のブロードキャスト」に使うと書いています。

そのため、つなげる台数は 2 の h 乗から 2 を引いた数です。/24 なら 256 − 2 で 254 台、/30 なら 4 − 2 で 2 台です。下の図でマスクの長さを動かすと、1 ビットごとに番地が半分になります。図の /31 の 0 台は式の上の値で、例外は後の節で確かめます。

マスクの長さで使える台数が変わる

プライベートアドレスは、家や会社の中だけで使う番地

プライベートアドレスは、インターネットに直接は出さず、家や会社の中の網で自由に使ってよい番地です。RFC 1918 が次の 3 つの範囲を決めています。

範囲CIDRRFC 1918 の呼び名
10.0.0.0 から 10.255.255.25510/824-bit block
172.16.0.0 から 172.31.255.255172.16/1220-bit block
192.168.0.0 から 192.168.255.255192.168/1616-bit block

家の網で 192.168.1.x がよく出るのは、この 3 つ目の範囲を使っているからです。外へ出るときは、ルーターが外の番地 1 つに付け替えます (NAT、番地の付け替え)。

家の中の住所と外の住所

道の選び方は最長一致

自分と相手の網が同じかどうかは、相手の番地に自分のマスクを被せ、自分のネットワークアドレスと比べて決めます。同じなら直接渡し、違えばルーター (デフォルトゲートウェイ、網の外への出口) に渡します。

ルーターは、行き先の番地に当てはまる道 (経路) が何本もあるとき、マスクの一番長い道を選びます。これを最長一致と呼び、RFC 4632 は「インターネットの転送は最長一致で行う」と定めています。0.0.0.0/0 はどの番地にも当てはまる既定の道です。

動かして確かめる

Python の標準の ipaddress モジュールで、/24 の網の中身を数えます。num_addresses は番地の数、hosts() は機器に配れる番地の並びです。

動かす /24 の網を数える

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

255.255.255.0 24
256
192.168.1.0
192.168.1.255
254
192.168.1.1 192.168.1.254

番地は 256 個、配れるのは 254 個です。最初の .0 と最後の .255 が抜けました。

次に、同じ計算を & で自分でします。番地を 32 ビットの整数に直し、マスクと AND を取ります。書式の 032b は、32 桁の 2 進数で表示する指定です。

動かす マスクを & で被せる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

11000000101010000000000100110010
11111111111111111111111100000000
11000000101010000000000100000000
192.168.1.0
50

1 行目が番地、2 行目がマスク、3 行目が AND の結果です。マスクが 0 の下 8 ビットは消え、192.168.1.0 が残りました。最後の行は、マスクを裏返して (~mask) 被せたホスト部で、50 番目の機器だと分かります。& full は 32 ビットの外を切り落とします。

マスクの長さごとに、つなげる台数を並べます。

動かす 長さごとの台数

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

/16 255.255.0.0     65534
/24 255.255.255.0   254
/25 255.255.255.128 126
/26 255.255.255.192 62
/28 255.255.255.240 14
/30 255.255.255.252 2

1 ビット伸ばすごとに、番地が半分になってから 2 を引いた数になります。

相手が同じ網かどうかは、in で調べられます。自分を 192.168.1.50 にして、マスクを /24 と /25 で比べます。strict=False は、ホスト部が 0 でない番地からでも網を作るための指定です。

動かす 同じ網か調べる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

192.168.1.0/24
  192.168.1.60 True
  192.168.1.130 True
192.168.1.0/25
  192.168.1.60 True
  192.168.1.130 False

/24 では 2 台とも同じ網ですが、/25 にすると網は 192.168.1.0 から 127 までに縮み、130 は別の網になります。上の図の「相手を 192.168.1.130 にする」も、同じ判定です。

最後に、マスクを伸ばして網を小さく切ります (サブネット化)。/24 を /26 にすると、ホスト部から 2 ビットを借りるので 4 つの網に分かれます。部署ごとに網を分けると、網の間の通信をルーターで許可したり止めたりできます。

動かす /24 を 4 つに切る

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

192.168.1.0/26 62
192.168.1.64/26 62
192.168.1.128/26 62
192.168.1.192/26 62

4 つの網は 62 台ずつで、合わせて 248 台です。網ごとにネットワークアドレスとブロードキャストアドレスが要るので、切る前の 254 台より減りました。

どこで計算が崩れるのか

2 の h 乗から 2 を引く式は、/30 までは当たりますが、/31 と /32 では当たりません。番地の数え方のほかにも、書き方の決まりと最長一致で、思い込みが崩れます。

/31 と /32 は例外

式どおりなら /31 は 0 台、/32 はマイナス 1 台です。しかし RFC 3021 は、ルーターとルーターを 1 本の線で結ぶ網 (2 点の間の網) では、/31 で両端に 1 つずつ番地を配ってよいと決めました。2 点の間の網には、ブロードキャストの考えが無いからです。/32 は番地 1 つだけの道 (RFC 4632 の表では host route) です。

動かす /30 /31 /32 を比べる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

192.0.2.0/30 4 2
   192.0.2.1 192.0.2.2
192.0.2.0/31 2 2
   192.0.2.0 192.0.2.1
192.0.2.1/32 1 1
   192.0.2.1

ipaddress も、/31 では 2 つの番地を両方とも配れる番地として返し、/32 ではその 1 つを返します。RFC 3021 は、500 本の 2 点の間の線がある網なら、/30 の代わりに /31 を使うと 1000 個の番地が浮くと書いています。

網の名前にホスト部を残すと、エラーになる

網は、ホスト部が全部 0 のネットワークアドレスで書くのが決まりです。10.0.0.5/24 のようにホスト部に 5 が残った書き方は、網の名前としては正しくありません。

動かす ホスト部が残った網

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

10.0.0.5/24 has host bits set
10.0.0.0/24

strict=False を付けると、マスクを被せて 10.0.0.0/24 に直します。網を書く所に機器の番地を書くと、道具によってはエラーになり、黙って直されることもあります。

プライベートかどうかは、範囲を正確に照らす

「172 で始まればプライベート」は崩れます。範囲は 172.16 から 172.31 までです。

動かす プライベートか調べる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

10.1.2.3     True
172.16.0.1   True
172.32.0.1   False
192.168.0.1  True
8.8.8.8      False
100.64.0.1   False

172.32.0.1 は False です。100.64.0.1 も False になります。Python の公式文書は、共有の番地 100.64.0.0/10 では is_private も is_global も False になると書いています。RFC 1918 の 3 つとは別の範囲なので、「外の番地ではない」と「プライベート」は同じではありません。

広い道より、狭い道が勝つ

「自分の網の /22 を出しているから、自分に届く」という前提は、誰かがその中の狭い網を出すと崩れます。最長一致では、マスクの長い道が勝つからです。

動かす 最長一致で道を選ぶ

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

208.65.153.238
   208.65.153.0/24 偽の道
208.65.152.10
   208.65.152.0/22 YouTube
8.8.8.8
   0.0.0.0/0 既定の道

208.65.153.238 には /0、/22、/24 の 3 本が当てはまり、一番長い /24 の偽の道が選ばれました。208.65.152.10 は /24 の外なので /22 の YouTube に、8.8.8.8 は既定の道に行きます。番地は次の実例のものです。

仕事でどう確かめるか

仕事では、網を作る前に台数と範囲を計算し、作った後は機械の設定と照らします。

1 つ目は、自分の機械の番地とマスクを見ることです。Windows では ipconfig、macOS や Linux では ifconfig や ip addr で、番地とマスクが並びます。

2 つ目は、クラウドの決まりを足して数えることです。AWS の VPC のサブネットでは、頭の 4 つと最後の 1 つの番地が使えません。/24 なら 256 から 5 を引いた 251 個です。サブネットの大きさは /16 から /28 までです。

3 つ目は、網の重なりを確かめることです。Python なら a.overlaps(b) で分かります。つなぐ 2 つの網が同じ 192.168.1.0/24 だと、どちらに渡すか決められません。

関わる実例

最長一致では狭い偽の道が正しい道に勝つので、誤った道の知らせが広がると、通信が別の所へ流れます。

YouTube の通信がパキスタンへ流れた件 (2008 年 2 月 24 日)

地域インターネットレジストリの RIPE NCC の記録によると、2008 年 2 月 24 日 18 時 47 分 (UTC) に、Pakistan Telecom が 208.65.153.0/24 の道を許可なく出し始め、上流の PCCW Global がそれを世界へ伝えました。YouTube は 208.65.152.0/22 を出していましたが、/24 はその中のより長い道なので、受け取ったルーターは YouTube 行きの通信をパキスタンへ送りました。

YouTube は 20 時 07 分に同じ /24 を、20 時 18 分にはさらに長い 2 つの /25 を出し、最長一致で通信を取り戻しました。21 時 01 分に PCCW Global がパキスタンからの道を取り下げ、乗っ取りは止まりました。

崩れた前提は「自分の網の大きな道を出していれば、通信は自分に届く」です。

よくある問い

255.255.255.0 と /24 は同じ意味ですか

同じ意味です。255.255.255.0 を 2 進数にすると、頭から 1 が 24 個、0 が 8 個並ぶので、1 の数で書くと /24 です。書き方の違いだけで、中身は変わりません。

ネットマスクとサブネットマスクは違いますか

ほとんどの場面で同じ物を指します。どちらも、アドレスのネットワーク部を 1、ホスト部を 0 にした 32 ビットの値です。Python の ipaddress も網のマスクを netmask と呼びます。

IPv4 アドレスの範囲はどこまでですか

0.0.0.0 から 255.255.255.255 までです。32 ビットなので、全部で 2 の 32 乗、約 43 億個です。このうち 3 つの範囲は、RFC 1918 のプライベートアドレスです。

/16 のマスクの範囲はどこからどこまでですか

/16 のマスクは 255.255.0.0 で、ホスト部は 16 ビットです。192.168.0.0/16 なら 192.168.0.0 から 192.168.255.255 までの 65536 個の番地があり、つなげるのは 2 を引いた 65534 台です。

確認クイズ

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。4 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。

1 問目

192.168.10.0/24 の網に、機器を最大で何台つなげますか。

2 問目

このコードを動かすと何が出ますか。

マスクを被せる

a = 0xC0A80A85
mask = 0xFFFFFF80
n = a & mask
print(n & 0xFF)

3 問目

プライベートアドレス (RFC 1918) に入らないのはどれですか。

4 問目

ルーターに 10.0.0.0/8、10.1.0.0/16、10.1.2.0/24 の 3 本の道があります。10.1.2.3 宛ての通信はどの道を通りますか。

説明課題

次のことを、自分の言葉で 3 行にまとめてください。書いたら、下の模範解答を開いて比べてください。

  • 255.255.255.0 (/24) の網に 254 台つなげる理由を、32 ビットとホスト部の言葉を使って
  • /31 の網がその計算の例外になる理由

模範解答

自分の説明を書いてから開いて、比べてください。

この回の先の一歩

クラウドの VPC やオフィスの網を組む仕事では、サブネットの大きさを先に決めて台数の足りなさや網の重なりを防ぎます。障害の調べでは、届かない相手が同じ網かどうかをマスクで切り分けるところから始めます。

もっと深く

この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。

一次資料

どれも 2026年10月27日に開いて、題と中身を確かめました。

次へ

道 4 ネットワークと暗号の回

  1. 4-1層に分けて考えるOSI、TCP/IP、パケット頁で読む
  2. 4-2IP とサブネットIP アドレス、CIDR、ルーティングこの回
  3. 4-3TCP と UDP再送、輻輳制御、ポート頁で読む
  4. 4-4HTTP と DNSHTTPS、HTTP/3、名前解決頁で読む
  5. 4-5TLS と暗号の基礎共通鍵、公開鍵、ハッシュ、署名頁で読む

道 4 の頁へ戻るほかの道を見る