応用情報技術者 2012年 春期 午前2 問34
問題文
二つの IPv4ネットワーク 192.168.0.0/23と192.168.2.0/23 を集約したネットワークはどれか。
選択肢
ア:192.168.0.0/22(正解)
イ:192.168.1.0/22
ウ:192.168.1.0/23
エ:192.168.3.0/23
🔒 解説は解答すると表示されます
サブネット集約【午前2解説】
正解の理由
ア(192.168.0.0/22)が正解です。理由は、192.168.0.0/23(範囲:192.168.0.0〜192.168.1.255)と192.168.2.0/23(範囲:192.168.2.0〜192.168.3.255)が連続していて、これらを包含する最小のプレフィックスは /22(サブネットマスク 255.255.252.0)だからです。/22 のネットワークは第3オクテットが4の倍数で始まる必要があり、192.168.0.0/22 は範囲 192.168.0.0〜192.168.3.255 を表します。したがって、両者をきれいに集約できます。
解法ステップ
- 各ネットワークの範囲を確認する
- 192.168.0.0/23 → 192.168.0.0~192.168.1.255
- 192.168.2.0/23 → 192.168.2.0~192.168.3.255
- 連続しているかを確認する
- 上記2つは連続しており、合わせると 192.168.0.0~192.168.3.255 になる。
- 共通のプレフィックス長を求める(境界を探す)
- 範囲のサイズは 4つの連続した /24 ブロックに相当 → 必要なホストビット数は ビット → プレフィックスは /22。
- ネットワークアドレスがアライン(境界)しているか確認
- /22 の第3オクテットの単位は (つまり 0,4,8,…)。192.168.0.0 は第3オクテット 0 で 4 の倍数なので有効な /22 ネットワークアドレス。従って 192.168.0.0/22 が集約先。
選択肢別の誤答解説
- ア:192.168.0.0/22
- 正しい。範囲は 192.168.0.0~192.168.3.255 で、両方の /23 を包含する。
- イ:192.168.1.0/22
- 誤り。/22 のネットワークアドレスは第3オクテットが 4 の倍数でなければならず、1 は不適切(192.168.1.0 は 192.168.0.0/22 のホストアドレスの一つに過ぎない)。したがって「192.168.1.0/22」という表記はネットワーク境界として整合しない。
- ウ:192.168.1.0/23
- 誤り。192.168.1.0/23 の範囲は 192.168.1.0~192.168.2.255 で、元の二つの /23(.0/23 と .2/23)を両方包含しない(.0/23 の一部を含まない)。
- エ:192.168.3.0/23
- 誤り。192.168.3.0/23 の範囲は 192.168.3.0~192.168.4.255 で、192.168.0.0/23 を含まないし、そもそも集約になっていない。
よくある誤解
- ネットワークアドレスは任意に設定できると思い込む
- プレフィックス長に応じてネットワークアドレスは特定の境界(例えば /22 は第3オクテットが 0,4,8,…)に合わせる必要があります。
- 範囲の端点を見誤る(例:/23 の範囲計算ミス)
- /23 は 512 アドレス(例:192.168.0.0~192.168.1.255)。連続ブロックを合わせるときに開始オクテットの倍数条件を忘れると誤答しやすいです。
補足コラム
- /22 のアドレス数は アドレスで、使用可能ホストは通常 1022(ネットワークとブロードキャストを除く)です。
- 一般的な集約(サマリールート)の手順は「各ネットワークを2進表記にして左から共通のビット長を見つける」→「その共通長が集約プレフィックス」。ネットワークアドレスは共通ビット以降をすべて 0 にします。
- 実務ではルーティングテーブルを減らすためにサブネット集約(スーパーネット化)を行いますが、不要な集約は誤配信や到達不能を招くことがあるため注意が必要です。
コード例(Python): IP ネットワークの集約判定サンプル
import ipaddress
nets = [ipaddress.ip_network('192.168.0.0/23'),
ipaddress.ip_network('192.168.2.0/23')]
supernet = ipaddress.collapse_addresses(nets) # 集約可能なブロックを返す
print(list(supernet)) # -> [IPv4Network('192.168.0.0/22')]
FAQ
Q: なぜ /22 の第3オクテットは 4 の倍数で始まるのですか?
A: /22 のマスクは 255.255.252.0 で、第3オクテットの有効ビットは上位6ビット(11111100)。ブロックサイズは 。したがって第3オクテットは 0,4,8,… の倍数で始まります。
A: /22 のマスクは 255.255.252.0 で、第3オクテットの有効ビットは上位6ビット(11111100)。ブロックサイズは 。したがって第3オクテットは 0,4,8,… の倍数で始まります。
Q: 連続していればどんな2つのサブネットでも集約できる?
A: 連続しているだけでは不十分で、開始アドレスが集約後のプレフィックス境界にアラインしていること(下位ビットが全て 0)も必要です。
A: 連続しているだけでは不十分で、開始アドレスが集約後のプレフィックス境界にアラインしていること(下位ビットが全て 0)も必要です。
関連キーワード: IPv4、CIDR、サブネットマスク、スーパーネット化、ネットワークアドレス、ブロードキャストアドレス

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

