戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ネットワークスペシャリスト 2012年 午前216


問題文

IPv4アドレスが192.168.10.0/24〜192.168.58.0/24のネットワークを対象に経路を集約するとき、集約した経路のネットワークアドレスのビット数が最も多くなるものはどれか。

選択肢

192.168.0.0/16
192.168.0.0/18
192.168.0.0/17(正解)
192.168.0.0/19

🔒 解説は解答すると表示されます

共通プレフィックス長【午前2解説】

正解の理由

問題文に記載された選択肢のうち、提示された解答欄にある (192.168.0.0/17)が「正答」とされていますが、このキーは誤りです。192.168.10.0/24〜192.168.58.0/24 の範囲を1つのサマリ(単一のCIDRプレフィックス)で表すと、最も細かい(ビット数が多い)集約は 192.168.0.0/18 になります。したがって正しい選択肢はイ(192.168.0.0/18)です。
理由の要点:
  • /18(ネットマスク 255.255.192.0)は第3オクテットでブロック長64(0〜63)を表し、192.168.0.0/18 は 192.168.0.0 〜 192.168.63.255 をカバーします。これは .10〜.58 の /24群(計49個)を1つの /18 に含められる最小の単一ブロックです。
  • /19 は 32 個ブロック単位(0-31、32-63)で分割されるため、単一の /19 では .10 と .58 を同時に含められません。/17 は /18 より大きく(粗く)なり、/18 よりビット数が少ないため「最も多い」にはならない。

解法ステップ

  1. 対象ネットワークの範囲を確認:192.168.10.0/24〜192.168.58.0/24 → 第3オクテットの値が 10 〜 58。
  2. 代表的な境界の確認:
    • /18 のブロック幅は 64(第3オクテットの値 0〜63)。
    • /19 のブロック幅は 32(0〜31、32〜63 の2ブロックに分かれる)。
  3. 範囲が 10〜58 であるため、これを単一ブロックでカバーできる最小のパワー・オブ・ツー個数は 64(= /18)。32(/19)では不足する(10 は 0〜31 ブロック、58 は 32〜63 ブロックにあり、同一 /19 ではない)。
  4. よって、単一の集約で最もビット数が多い(=最も細かい)ものは /18(選択肢イ)。
(ビット比較の方法)
  • 192.168.10.0 の第3オクテット:10 = 00001010
  • 192.168.58.0 の第3オクテット:58 = 00111010
  • 上位2ビット(00)は共通 → 共通長 = 16(先頭2オクテット) + 2 = 18 ビット → /18

選択肢別の誤答解説

  • ア: 192.168.0.0/16
    • /16 は確かに範囲を含むが、もっとも粗い(ビット数が最少)選択。問題は「ビット数が最も多くなる(=最も細かい)」ものを問うているため不適。
  • イ: 192.168.0.0/18
    • 正答。/18 は 0〜63 をカバーし、.10〜.58 を単一ブロックで包含するため、与えられた選択肢の中で最もビット数が多く(最も細かく)集約できる。
  • : 192.168.0.0/17
    • /17(0〜127 をカバー)は範囲を含むが、/18 より粗い(ビット数が少ない)ので、「最も多くなる」選択肢ではない。問題文の解答欄に とある場合はキー誤りである。
  • エ: 192.168.0.0/19
    • /19 は 0〜31 または 32〜63 のブロック単位。192.168.10.0 は 0〜31 側、192.168.58.0 は 32〜63 側にあり、単一の /19 では両者をカバーできないため不適。

よくある誤解

  • 範囲内の最小値と最大値の第3オクテットだけを見て「MSBが1つしか同じ」など誤判定する。必ずビットごとに上位から比較して共通ビット長を決めること。
  • 単一のサマリ(集約)にしなければならないとき、サマリの大きさは 2 の累乗単位(/18, /17 …)で考える。まとまった個数(ここでは49個)を収める最小のパワー・オブ・ツーが何個かを検討すること。
  • 「含められる」=「許容」だが、問われているのが「最もビット数が多い(最も細かい)集約」である点を見落とすと、/17 や /16 を誤って選ぶ。

補足コラム

  • 集約(サマリ)を1つのCIDRで表す場合、含める/24の個数が49(10〜58 は 58−10+1 = 49)。1つのCIDRブロックは2^k個の/24を含む(k = 6 → 64 個 = /18)。したがって最小の単一CIDRは64個を含む /18 になります。
  • 複数のCIDRで最小個数に分割したい場合は、たとえば 49 個を /18 (64) にせず、/19(32)+/20(16)+/24(1)などの組合せで正確に表現することも可能(まとめのアルゴリズムは「CIDR aggregation」や「range to CIDR」アルゴリズム参照)。
簡単なスクリプト例(範囲を最小の単一CIDRで覆えるかの確認):
import ipaddress

start = ipaddress.IPv4Network('192.168.10.0/24').network_address
end   = ipaddress.IPv4Network('192.168.58.0/24').network_address + 0  # ネットワークアドレス
# 最小・最大を含むプレフィックスの計算(ここでは単純に目で確認した /18 が該当)
print(ipaddress.ip_network('192.168.0.0/18'))

FAQ

Q. なぜ /19 ではダメですか?
A. /19 は第3オクテットを32単位で分けるため、.10(0〜31)と .58(32〜63)は異なる /19 ブロックに属し、単一の /19 では両者を同時に含められません。
Q. 範囲を最小の単一CIDRにするにはどう調べればよいですか?
A. 範囲の最小アドレスと最大アドレスを2進数で並べて先頭から同じビットを数える(共通プレフィックス長を求める)。または、含むアドレス数がどの2^n に収まるかでブロック長を決める方法も有効です。

関連キーワード: IPv4、CIDR、サブネットマスク、経路集約、共通プレフィックス、サマリ化、ビット比較、ネットワークブロック
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ネットワークスペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について