サブネットマスクの計算
IPアドレスとサブネットマスク(または /22 のようなプレフィックス長)から、ネットワークアドレス・ブロードキャストアドレス・使えるホスト数・同じサブネットかどうかを、2進数の筆算をほとんどせずに求められるようになる。マスクとして正しい値の見分けと、ビット演算の式(a & m と a & ~m)の区別もできるようになる。
サブネットの計算は毎年のようにネットワーク分野で出題され、覚えた手順をそのまま使えば確実に取れる問題です。実務でも「この2台は同じネットワークにいるか」「このネットワークに何台つなげるか」を判断するときに使います。
このレッスンで稽古する(用語チェック・過去問)結論:サブネットマスクは「どこまでが建物名か」を示す定規
サブネットマスクは、32ビットのIPアドレスのうち「どこまでがネットワーク部(どのネットワークか)で、どこからがホスト部(その中のどの機器か)か」を示す32ビットの値です。マスクが 1 のビットがネットワーク部、0 のビットがホスト部です。
たとえるなら、IPアドレスは「マンション名+部屋番号」で、マスクは「ここまでがマンション名」と線を引く定規です。この線を後ろへずらすと、ホスト部の一部をネットワーク部として使えるようになり、1つの大きなネットワークを小さなネットワーク(サブネット)に分けられます。
試験で「サブネットマスクの説明はどれか」と聞かれたら、答えは 「ホスト部を分割して、より小さいネットワークを複数つくるための情報」 です。
マスクの形:1 は上から連続し、途中で 0 に変わったら最後まで 0
マスクは 上位ビットから 1 が連続し、ある位置から先は全部 0 という形しか取れません。だから各オクテット(8ビットずつの区切り。IPアドレスの「.」で区切った1つ分)に入る値は、次の9種類だけです。
| 2進数 | 10進数 | 区切り幅(256−値) |
|---|---|---|
| 00000000 | 0 | — |
| 10000000 | 128 | 128 |
| 11000000 | 192 | 64 |
| 11100000 | 224 | 32 |
| 11110000 | 240 | 16 |
| 11111000 | 248 | 8 |
| 11111100 | 252 | 4 |
| 11111110 | 254 | 2 |
| 11111111 | 255 | 1 |
たとえば 255.255.255.1 の最後は 00000001、.32 は 00100000、.64 は 01000000 で、どれも 1 が上から詰まっていないのでマスクになりません。128(10000000)だけが正しい形です。
プレフィックス長(/22 のように「上から何ビットが 1 か」を数で書いたもの)とマスクは同じ情報です。/22 なら 8+8+6 ビットが 1 なので 255.255.252.0、/28 なら 24+4 ビットで 255.255.255.240 です。
3つの特別なアドレスとホスト数
1つのサブネットの中で、ホスト部が 全部 0 のアドレス=ネットワークアドレス(ネットワークそのものの名前)、全部 1 のアドレス=ブロードキャストアドレス(全員あての一斉送信用)です。この2つは機器に割り当てられません。
| 用語 | ホスト部 | 役割 | 機器に割り当て | /24 の例(192.168.0.0/24) |
|---|---|---|---|---|
| ネットワークアドレス | 全部 0 | ネットワークの名前 | 不可 | 192.168.0.0 |
| ブロードキャストアドレス | 全部 1 | 全員への一斉送信 | 不可 | 192.168.0.255 |
| ホストに使えるアドレス | 0 と 1 が混ざる | 個々の機器 | 可 | 192.168.0.1〜192.168.0.254 |
| ループバックアドレス | (別物) | 自分自身との通信 | — | 127.0.0.1 |
だから 使えるホスト数 = 2^(ホスト部のビット数) − 2 です。ホスト部のビット数は 32 − プレフィックス長で求めます。
| プレフィックス長 | ホスト部 | アドレス総数 | 使えるホスト数 |
|---|---|---|---|
| /23 | 9ビット | 512 | 510 |
| /24 | 8ビット | 256 | 254 |
| /28 | 4ビット | 16 | 14 |
| /30 | 2ビット | 4 | 2 |
なお、オクテットの値は 0〜255 しかないので、192.168.32.256 のような値はアドレスとして成り立ちません。
最速の解き方:区切り幅で考える
2進数で全部書き出さなくても、区切り幅(256 − マスクの値) を使えば暗算で解けます。駐車場の区画が「16台ずつ」に線引きされていると考えると、どの区画に入るかは割り算だけで決まります。
- 注目オクテットを決める:マスクが 255 でも 0 でもないオクテットです。/17〜/23 なら第3オクテット、/25〜/31 なら第4オクテット(/9〜/15 なら第2オクテット)。
- 区切り幅 = 256 − 注目オクテットのマスク値 を出す(240 なら 16、252 なら 4)。
- 注目オクテットのIPの値を 区切り幅の倍数で切り捨て る → それがネットワークアドレスの値。
- ネットワークアドレスの値 + 区切り幅 − 1 がブロードキャストの値。注目オクテットより後ろは、ネットワークアドレスでは 0、ブロードキャストでは 255 にする。
/24 は境界で、注目オクテットがありません。第3オクテットまでがそのままネットワーク部なので、ネットワークアドレスは末尾 .0、ブロードキャストは末尾 .255 と考えます。/16 も同様に、後ろ2オクテットが .0.0 と .255.255 です。
flowchart TD
A["マスク(またはプレフィックス長)を確認"] --> B["255でも0でもないオクテットを探す"]
B --> C["区切り幅 = 256 − マスク値"]
C --> D["IPの値を区切り幅の倍数に切り捨て = ネットワークアドレス"]
D --> E["+区切り幅 − 1 = ブロードキャスト"]
E --> F["その間がホストに使える範囲"]
ビット演算の式で書くと
ネットワークアドレスは IPアドレスとマスクの論理積(AND) です。AND は「両方 1 のときだけ 1」なので、マスクが 0 のホスト部は消え、ネットワーク部だけが残ります。
| 求めたいもの | 式(a=IPアドレス、m=マスク) | 意味 |
|---|---|---|
| ネットワークアドレス | a & m | ホスト部を 0 にして消す |
| ホストアドレス(ホスト部だけ) | a & ~m | マスクを反転して、ネットワーク部を消す |
~ はビット反転(0 と 1 を入れ替える)です。~m はホスト部だけが 1 になるので、a と AND を取るとホスト部だけが残ります。この式の問題は出題が少ないので、「ネットワークは & m、ホストは & ~m」とだけ覚えれば十分です。
試験での問われ方
- ネットワークアドレスを選ばせる問題(最頻出):選択肢に「ブロードキャスト(.31 や .255)」や「区切りを無視した .0」が混ざります。区切り幅の倍数に切り捨てた値を選びます。
- 同じサブネットか判定する問題:区切りの境界(16 の倍数など)をまたぐ組合せが並びます。両方を区切り幅で割って、商が同じかを見ます。
- 割り当ててはいけないアドレス:範囲の最後(ホスト部が全部 1)を見落とさせます。最初(全部 0)と最後は割り当て不可です。
- ホスト数:−2 を忘れた値(16、512 など)や、プレフィックス長そのもの(23 など)が選択肢にあります。
- ブロードキャスト(/22 など):/24 と同じ感覚で第3オクテットをそのまま残した選択肢が罠です。
- 正しいマスクを選ぶ:2進数にして 1 が上から連続しているかを確認します。
IP 10.170.70.19・マスク 255.255.255.240 のネットワークアドレス
ア 10.170.70.0
イ 10.170.70.16
ウ 10.170.70.31
エ 10.170.70.255
解き方と答えを見る
- 注目オクテット:マスクは 255.255.255.240 で、255でも0でもないのは第4オクテット(240)。
- 区切り幅:256 − 240 = 16。第4オクテットは 0, 16, 32, 48 … と 16 ずつ区切られる。
- IPの第4オクテット 19 を 16 の倍数に切り捨てる:19 ÷ 16 = 1 余り 3 → 16 × 1 = 16。
- 2進数で確認:19 = 00010011、240 = 11110000。AND を取ると 00010000 = 16。
- 第1〜第3オクテットはマスクが 255 なのでそのまま 10.170.70。ネットワークアドレスは 10.170.70.16。
- 範囲は 16〜31(16 + 16 − 1 = 31)なので、ウの .31 はブロードキャスト、エの .255 は範囲外。
答え:イ:10.170.70.16
マスク 255.255.255.240 で同じサブネットになる組合せ
ア 192.168.1.14 と 192.168.1.17
イ 192.168.1.17 と 192.168.1.29
ウ 192.168.1.29 と 192.168.1.33
エ 192.168.1.33 と 192.168.1.49
解き方と答えを見る
- 区切り幅:256 − 240 = 16。第4オクテットの区画は 0〜15、16〜31、32〜47、48〜63 …。
- ア:14 は 0〜15、17 は 16〜31 → 別のサブネット。
- イ:17 も 29 も 16〜31(17 ÷ 16 = 1 余り 1、29 ÷ 16 = 1 余り 13 で商がどちらも 1)→ 同じサブネット。
- ウ:29 は 16〜31、33 は 32〜47 → 別。
- エ:33 は 32〜47、49 は 48〜63 → 別。
答え:イ:192.168.1.17 と 192.168.1.29
192.168.57.123/22 のブロードキャストアドレス
ア 192.168.55.255
イ 192.168.57.255
ウ 192.168.59.255
エ 192.168.63.255
解き方と答えを見る
- マスクに直す:/22 は 8 + 8 + 6 ビットが 1 → 255.255.252.0(第3オクテットは 11111100 = 252)。
- 注目オクテット:22 は 17〜23 の範囲なので、注目オクテットは第3オクテット。
- 区切り幅:256 − 252 = 4。第3オクテットは 0, 4, 8 … 52, 56, 60 … と 4 ずつ区切られる。
- IPの第3オクテット 57 を 4 の倍数に切り捨てる:57 ÷ 4 = 14 余り 1 → 4 × 14 = 56。ネットワークアドレスは 192.168.56.0。
- ブロードキャストの第3オクテット:56 + 4 − 1 = 59。注目オクテットより後ろ(第4オクテット)は 255 にする。
- ブロードキャストアドレスは 192.168.59.255。第3オクテットを 57 のまま残すとイを選んでしまう。
答え:ウ:192.168.59.255
192.168.0.0/23 で使えるホスト数の上限
ア 23
イ 24
ウ 254
エ 510
解き方と答えを見る
- ホスト部のビット数:32 − 23 = 9 ビット。
- アドレスの総数:2^9 = 512 個。
- ネットワークアドレス(ホスト部が全部 0)とブロードキャストアドレス(全部 1)の 2 個を引く:512 − 2 = 510。
- 参考:範囲は 192.168.0.0〜192.168.1.255 で、使えるのは 192.168.0.1〜192.168.1.254。
答え:エ:510
ネットワーク 200.170.70.16・マスク 255.255.255.240 で割り当ててはいけないアドレス
ア 200.170.70.17
イ 200.170.70.20
ウ 200.170.70.30
エ 200.170.70.31
解き方と答えを見る
- 区切り幅:256 − 240 = 16。
- 範囲:ネットワークアドレスが .16 なので、16〜31(16 + 16 − 1 = 31)。
- .16 はネットワークアドレス、.31 はブロードキャストアドレスで、どちらも機器に割り当て不可。
- 選択肢の .17、.20、.30 は 17〜30 の中なので割り当てられる。.31 だけが割り当て不可。
答え:エ:200.170.70.31
要点(試験直前に読む)
- マスクは 1 が上位から連続する形だけ。オクテットの値は 0・128・192・224・240・248・252・254・255 のどれか。
- ネットワークアドレス = IP & マスク(ホスト部が全部 0)。ブロードキャスト = ホスト部が全部 1。どちらも機器に割り当て不可。
- 使えるホスト数 = 2^(32 − プレフィックス長) − 2。/28 → 14、/23 → 510、/30 → 2。
- 区切り幅 = 256 − マスク値。IPの値を区切り幅の倍数に切り捨てるとネットワークアドレス、+区切り幅 − 1 でブロードキャスト。
- 注目オクテットは /17〜/23 なら第3、/25〜/31 なら第4。/24 は境界で、ネットワークは末尾 .0、ブロードキャストは末尾 .255。
- ホストアドレスの式は a & ~m(a & m はネットワークアドレス)。
ひっかけ
- ホスト数で −2 を忘れた値(16、512、4)が選択肢にある → アドレス総数ではなく「使える数」を聞かれていないか確認する。
- ネットワークアドレスの問題で、ブロードキャスト(.31、.255)や区切りを無視した .0 が並ぶ → 区切り幅の倍数に切り捨てた値を選ぶ。
- /22 などで第3オクテットを IP のまま残した選択肢 → 注目オクテットが第3のときは、第3オクテットも区切り幅で計算し直す。
- 同じサブネットの判定で、近い数どうし(14 と 17 など)を選ばせる → 区切り幅で割った商が同じかを見る。
- 192.168.0.0/24 のブロードキャストを .0、192.168.x.x を「届出が必要」、192.168.0.1 を「ループバック」とする記述 → ブロードキャストは .255、プライベートは届出不要、ループバックは 127.0.0.1。
用語(14)
IPアドレスのどこまでがネットワーク部かを、上位から連続する 1 のビットで示す32ビットの値。
⚠ NAT(1つのIPを複数端末で共用する仕組み)やブロードキャスト(全員への送信)と混同させる選択肢が出る。マスクは「ホスト部を分割する情報」。
IPアドレスのうち、どのネットワークに属するかを表す上位のビット。マスクが 1 の部分。
⚠ ホスト部はマスクが 0 の部分。
IPアドレスのうち、そのネットワーク内のどの機器かを表す下位のビット。マスクが 0 の部分。
⚠ ネットワーク部と逆。ホスト部のビット数 = 32 − プレフィックス長。
ホスト部の一部をネットワーク部として使い、1つのネットワークを分けてできた小さなネットワーク。
クラスの区切りに縛られず、ネットワーク部の長さを1ビット単位で自由に決められるサブネットマスク。
⚠ 長さは自由でも形は自由ではない。1 が上位から連続していないもの(.1、.32、.64)はマスクにならない。
マスクの上位から何ビットが 1 かを「/22」のように数で表したもの。
⚠ /23 の「23」はホスト数ではない。ホスト数は 2^(32−23) − 2。
クラスを使わず、IPアドレスの後ろに /プレフィックス長 を付けてネットワークの範囲を表す方式。
ホスト部をすべて 0 にした、ネットワークそのものを表すアドレス。IPとマスクの論理積で求める。
⚠ ブロードキャストアドレスはホスト部が全部 1。どちらも機器には割り当て不可。
ホスト部をすべて 1 にした、同じネットワーク内の全機器あてに送るためのアドレス。
⚠ ネットワークアドレス(全部 0・範囲の先頭)と逆で、範囲の最後。
IPアドレスのうちホスト部だけを取り出した値。a & ~m で求める。
⚠ a & m はネットワークアドレス。~ が付くのはホスト側。
2つのビットが両方 1 のときだけ 1 になる演算。IPとマスクの AND でネットワーク部だけが残る。
⚠ 論理和(OR、|)はどちらかが 1 なら 1。ネットワークアドレスの計算に使うのは AND。
各ビットの 0 と 1 を入れ替える演算。~m はホスト部だけが 1 になる。
8ビットのまとまり。IPv4 アドレスは「.」で区切った4つのオクテットで、各値は 0〜255。
⚠ 256 以上の値はオクテットに入らないので、アドレスとして不正。
自分自身と通信するためのアドレスで、代表は 127.0.0.1。
⚠ 192.168.0.1 はプライベートアドレスで、ループバックではない。
このレッスンの過去問
- サブネットマスクの役割(ホスト部の分割)基本情報技術者試験 科目A免除 修了試験 20180128 実施分 問31
- 可変長サブネットマスクの条件(1が連続)基本情報技術者試験 科目A免除 修了試験 20240609 実施分 問23
- サブネットマスクからのネットワークアドレス算出平成29年度 秋期 基本情報技術者試験 午前 問35
- IPアドレスからホストアドレスを求めるビット演算基本情報技術者試験 科目A免除 修了試験 20230122 実施分 問33
- プレフィックス長からのホスト数計算平成31年度 春期 基本情報技術者試験 午前 問32
- ブロードキャストアドレスの算出(プレフィックス長から)平成28年度 春期 基本情報技術者試験 午前 問34
- ブロードキャストアドレスの割当て不可判定平成30年度 春期 基本情報技術者試験 午前 問32