応用情報技術者 2021年 秋期 午前2 問35
問題文
IPv4ネットワークにおいて、あるホストが属するサブネットのブロードキャストアドレスを、そのホストの IPアドレスとサブネットマスクから計算する方法として、適切なものはどれか。ここで、論理和、論理積はビットごとの演算とする。
選択肢
ア:IPアドレスの各ビットを反転したものとサブネットマスクとの論理積を取る。
イ:IPアドレスの各ビットを反転したものとサブネットマスクとの論理和を取る。
ウ:サブネットマスクの各ビットを反転したものとIPアドレスとの論理積を取る。
エ:サブネットマスクの各ビットを反転したものとIPアドレスとの論理和を取る。(正解)
🔒 解説は解答すると表示されます
サブネットのブロードキャスト算出【午前2解説】
正解の理由
サブネットのブロードキャストアドレスは「そのサブネット内のホスト部ビットをすべて1にしたアドレス」です。サブネットマスクをビット反転するとホスト部が1、ネットワーク部が0になります。これとホストのIPアドレスをビットごとに論理和(OR)すると、ネットワーク部は元のIPの値を保持し、ホスト部はすべて1になります。したがって選択肢エ(サブネットマスクの各ビットを反転したものとIPアドレスとの論理和を取る)が正解です。
解法ステップ
- サブネットマスクを得る(例: 255.255.255.0)。
- そのビットを反転する(NOT):ホスト部が1、ネットワーク部が0となる(例: 0.0.0.255)。
- ホストのIPアドレスと反転マスクをビットごとに論理和(OR)する。
- ネットワーク部:反転マスクが0なのでIPのビットを保持する。
- ホスト部:反転マスクが1なので結果は1になる(ホスト部全ビットが1)。
- 得られたアドレスがそのサブネットのブロードキャストアドレス。
例(具体例)
- IP: 192.168.10.5
- マスク: 255.255.255.0
- 反転マスク: 0.0.0.255
- ブロードキャスト = 192.168.10.5 OR 0.0.0.255 = 192.168.10.255
簡単な確認用Python例:
import ipaddress
ip = ipaddress.IPv4Interface("192.168.10.5/24")
net = ip.network
broadcast = ip.ip | (~net.netmask & ipaddress.IPv4Address("255.255.255.255"))
print(broadcast) # 192.168.10.255
選択肢別の誤答解説
- ア: 「IPアドレスの各ビットを反転したものとサブネットマスクとの論理積」
- 演算は (NOT IP) AND mask。maskのネットワーク部は1なので結果のネットワーク部はNOT(IPのネットワーク部)となり、ネットワーク情報が反転されて不正確になります。ホスト部はmask側が0なので0になり、正しいブロードキャスト(ホスト部が全1)になりません。
- イ: 「IPアドレスの各ビットを反転したものとサブネットマスクとの論理和」
- 演算は (NOT IP) OR mask。maskのネットワーク部が1のため、その部分は強制的に1となり、ネットワーク部がすべて1になるなどネットワーク情報が保たれません。ホスト部はNOT(IP_host)のままであり、ブロードキャスト(ホスト部全1)にはなりません。
- ウ: 「サブネットマスクの各ビットを反転したものとIPアドレスとの論理積」
- 演算は (NOT mask) AND IP。反転マスクはネットワーク部が0、ホスト部が1なので、このANDはネットワーク部をすべて0にしてしまいます(ネットワーク情報が失われる)。ホスト部はIPのまま残るため、ホスト部が全1になることはなく、ブロードキャストになりません。したがって誤りです(ネットワーク部が0になる点がポイント)。
よくある誤解
- 「反転=ホスト部が0になる」:反転(ビット否定)はサブネットマスクに対して行えばホスト部が1になります。反転対象を取り違えると計算が逆になります。
- 「ANDでホスト部を1にできる」:ホスト部を1にするには反転マスクをORする必要がある。ANDではホスト部は元のIPに依存するため全1にはならない。
- 「ブロードキャストは単に .255 の形」:/24ではそうですが、プレフィックス長によってブロードキャストの下位オクテットは変わります(例: /26 なら末尾が .63, .127 など)。
補足コラム
- ブロードキャストアドレスは「そのサブネットの全ホスト宛の宛先」として使われます。ルータはサブネット間のブロードキャストを基本的に中継しません(限定ブロードキャストやルータ設定による例外を除く)。
- 計算はCIDR表記(/N)でも同様です:反転マスクはホスト部のビット数分だけ1になります(例: /26 → 6ビットがホスト部 → 反転マスクは下位6ビットが1)。
FAQ
Q: なぜ「反転マスク AND IP」ではダメですか?
A: 反転マスクはネットワーク部が0なので、ANDするとネットワーク部が0になり元のネットワーク情報が消えます。ブロードキャストではネットワーク部を保持し、ホスト部だけを1にする必要があります。
Q: ホスト部をすべて1にする以外に注意点はありますか?
A: 歴史的にはホスト全1や全0のサブネットを扱う実装差がありましたが、現在の標準ではサブネット内のブロードキャスト(ホスト全1)は有効です。ただしネットワーク設計や機器の設定に依る例外に注意してください。
関連キーワード: IPv4、ブロードキャストアドレス、サブネットマスク、ビット反転、論理和、論理積、ビット演算、CIDR

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

