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

情報処理安全確保支援士 2012年 秋期 午前219


問題文

2台のPCをIPv6ネットワークに接続するとき2台ともプレフィックスが2001:db8:100:1000::/56のIPv6サブネットに入るようになるIPアドレスの組合せはどれか。
情報処理安全確保支援士 2012年 秋期 午前2 問19の選択肢の画像

選択肢

(正解)

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

IPv6プレフィックス判定【午前2解説】

正解の理由

与えられたプレフィックスは で、これは最初の ビットが固定されることを意味します。16ビットごとのヘクステット(欄)で考えると、最初の3ヘクステット(2001:db8:100)は完全に固定され、4番目のヘクステットの上位8ビットが固定されます。4番目ヘクステットの上位8ビットが (= 0x1000 の上位8ビット)なので、4番目ヘクステットは範囲 から まで変化します。つまりこのサブネットのIPv6アドレス範囲は
開始: 2001:db8:100:1000:0000:0000:0000:0000
終了: 2001:db8:100:10ff:ffff:ffff:ffff:ffff
となります。選択肢の両アドレス(2001:db8:100:1010::aa:bb と 2001:db8:100:1020::cc:dd)はいずれも4番目ヘクステットが , とこの範囲内にあるため、両方とも同一の サブネットに入ります。したがって選択肢が正解です。

解法ステップ

  1. プレフィックス長 の意味を確認する。 ビット(先頭3ヘクステット)+さらに ビット(4番目ヘクステットの上位8ビット)が固定される。
  2. 固定された4番目ヘクステット上位8ビットの値から、4番目ヘクステットの変化範囲を求める。今回は
  3. 各候補アドレスの4番目ヘクステットの値を読み取り、上記範囲に入るか比較する。
  4. 両方のアドレスが範囲内であればその選択肢が正解。

選択肢別の誤答解説

  • ア:2001:db8:100::aa:bb は省略表記を展開すると4番目ヘクステットが になる(= 2001:db8:100:0:...)。 の範囲外なのでサブネットに含まれない。よってアは不適。
  • イ:1台目は 2001:db8:100:1000::aa:bb(4番目 )で範囲内だが、2台目 2001:db8:100:2000::cc:dd(4番目 )は範囲外。両方が同一サブネットにいる条件を満たさない。
  • :1台目 2001:db8:100:1010::aa:bb(4番目 )、2台目 2001:db8:100:1020::cc:dd(4番目 )ともに の範囲内のため、両者とも同一サブネットに入る(正解)。
  • エ:2001:db8:100:1100::...(4番目 )は より大きく範囲外。2001:db8:100:1200::...()も同様に範囲外であるため不適。

よくある誤解

  • /56 を /48 や /64 と混同してしまう:/48 なら4番目ヘクステット全体が可変、/64 なら下位64ビットがホスト部。境界ビット位置を取り違えると誤判定する。
  • 省略記法(::)の展開を誤る:2001:db8:100::aa:bb は 2001:db8:100:0:0:0:aa:bb と解釈され、4番目ヘクステットは 0x0000 である点を忘れがち。
  • 16進(hex)と10進の混同:ヘクステットは16進で表記されるため、範囲比較も16進で行うと分かりやすい。

補足コラム

一般にプレフィックス のアドレス範囲は「開始 = プレフィックス & マスク」「終了 = プレフィックス | ビット反転マスク」で求められます。 の場合、マスクは先頭56ビットが1、残りが0です。ビット演算のイメージは次のとおりです。
  • マスク(簡略): 11111111.11111111.11111111.11111111.11111111.00000000...(ビット列)
  • 開始 = 2001:db8:100:1000:...:...:...:...(下位はすべて0)
  • 終了 = 2001:db8:100:10ff:ffff:ffff:ffff:ffff
簡単な確認用コード(Python)例:
import ipaddress

net = ipaddress.IPv6Network("2001:db8:100:1000::/56")
addrs = ["2001:db8:100:1010::aa:bb", "2001:db8:100:1020::cc:dd"]
print(net.network_address, net.broadcast_address)  # 開始と終了
for a in addrs:
    print(a, ipaddress.IPv6Address(a) in net)

FAQ

Q. なぜ終了アドレスが 2001:db8:100:10ff:ffff:ffff:ffff:ffff なのですか?
A. /56 は4番目ヘクステットの上位8ビットを固定するため、4番目ヘクステットの下位8ビットが から まで変化可能です。したがって4番目は になり、以降のヘクステットはすべて で最大値を表します。
Q. 省略表記での確認方法は?
A. 省略表記(::)は不足している0列を埋めて完全展開してから、該当するヘクステットの値を比較すると安全です。

関連キーワード: IPv6、サブネット、プレフィックス長、ヘクステット、アドレス範囲、ビットマスク、アドレス展開
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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