応用情報技術者試験　合格への道：IPアドレス関連

応用情報技術者試験の勉強をしているのですが、アウトプットした方が記憶の定着率がたかいということでQiitaにも投稿したいと思います。

勘違いに気が付いた方はご指摘いただけると非常に助かります！

応用情報技術者試験ではIP関連の問題がたくさん出ます。

特に「ブロードキャスト」、「サブネット・マスク」の問題が何か頭の中でごちゃごちゃになってきたのでまとめてみたいと思います。

#■例題1
応用情報技術者平成26年春期 午前問33

IPv4アドレス 172.22.29.44/20 のホストが存在するネットワークのブロードキャストアドレスはどれか。

ア　172.22.29.255
イ　172.22.30.255
ウ　172.22.31.255
エ　172.22.32.255


##■頭の動き①

今の私は「172.22.29.44」だとなにがブロードキャストアドレスになるんだ？

29か30か31か32かわからん。

2進数に直すと

29は011101
30は011110
31は011111
32は100000

なんだから、32かな？とか考えて「エ」かなあ、とか思うわけです。
午前合格点とってても、苦手な問題だとこんなもんなんですよ。


##■解き方①

「172.22.29.44/20」の"20"のところに注目しないといけないです。

まずは全部を2進数で書く

10101100 00010110 00011101 00101100
172    . 22     . 29     . 44

上から20ビットまでをとる
10101100 00010110 0001

残りの12ビットがすべて1になっているものがブロードキャストアドレスです。

なので
10101100 00010110 00011111 1111111
172     .22      .31      .255

になって、「ウ」じゃん！ってなるわけです。

この手順を踏まないと分からないですよね。

単純に、全部ビットが立っているやつを選べばよいわけですね。

#■例題2
ソフトウェア開発技術者平成19年秋期 午前問52

ネットワークアドレス192.168.10.192/28のサブネットにおけるブロードキャストアドレスはどれか。

ア　192.168.10.199
イ　192.168.10.207
ウ　192.168.10.233
エ　192.168.10.255

##■頭の動き②

おお簡単、「エ」が全部ビット立っているんだから「エ」だろ！

##■解き方②

ブブー、間違い。

やっぱり「192.168.10.192/28」の”28”に注目しないと。

まずは全部を2進数で書く

11000000 10100000 00001010 11000000
192     .168     .10      .192

上から28ビットまでをとる
11000000 10100000 00001010 1100

残りの4ビットがすべて1になっているものがブロードキャストアドレスです。
11000000 10100000 00001010 11001111
192     .168     .10      .207

答えは「イ」ですね！

ああ、7も全部ビット立ってるじゃん、なんですが255の方がビット立っているイメージが強うので、ちゃんと手順を踏まえないと間違えるわけです。


#■例題3
基本情報技術者平成29年秋期 午前問35

次のIPアドレスとサブネットマスクをもつPCがある。このPCのネットワークアドレスとして，適切なものはどれか。

　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

##■頭の動き③

ネットワークアドレスって何だったけ？

ネットワークアドレスはホスト部のビットが全て0だから「ア」かな？

##■解き方③

「クラスフルアドレス」と「クラスレスアドレス」という区別があります。

大雑把に言うと、クラスフルアドレスは古い管理方法です。

サブネットマスクがあるときはクラスレスアドレスと考えてください。

クラスA　の時は最初の 8ビットがネットワーク部　最後の24ビットがホスト部
クラスB　の時は最初の16ビットがネットワーク部　最後の16ビットがホスト部
クラスC　の時は最初の24ビットがネットワーク部　最後の 8ビットがホスト部

というのを見たことがあるかもしれません。

この知識だけだと、10.170.70.19　は10から始まるからクラスB、最後の16ビットが0なんだから　10.170.0.0　が答え。

ただこれだと選択肢に存在しません！

これはクラスフルアドレスなんですよ。

サブネットアドレスがあるからこれはクラスレスアドレスなんですよ。

クラスレスアドレスはサブネットマスクで1でマスクされているところがネットワーク部、0でマスクされたところがホスト部です。

10.170.70.19　を2進数で記載し、

00001010 10101010 01000110 00010011
10      .170     .70      .19


サブネットマスクが下記
　
11111111 11111111 11111111 11110000
255     .255     .255     .240

最後の4ビットがホスト部なので、10.170.70.19　の最後の4ビットを0にするとネットワークアドレスになります。

00001010 10101010 01000110 00010000

10.170.70.16　ですね。

#■例題4
応用情報技術者平成30年春期 午前問35

二つの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

##■頭の動き④

え、集約って何？192.168.0.0/23 も 192.168.2.0/23も判別できるのなら「エ」かな？

##■解き方④

集約は経路集約のことですね。

http://www.7key.jp/nw/routing/route_aggregation.html

複数のネットワークを共通するビットでサブネットマスクしたものを集約と言う訳です。

192.168.0.0/23 と 192.168.2.0/23　であれば

11000000 10101000 00000010 00000000
192     .168     .0       .0

11000000 10101000 00000000 00000000
192     .168     .2       .0

なので

11000000 10101000 000000

までがサブネットマスクになり

11000000 10101000 00000000 00000000
192     .168     .0       .0

が答えになります。なので「ア」が答えですね。

なんで経路集約をするのかというと、ルーティングテーブルを作るためですね。

https://www.atmarkit.co.jp/aig/06network/routingtable.html

ルートをまとめて、その単位でルーティングテーブルを作成し、経路探索をやりやすくしているわけです。

#■まとめ

例題1と2は「ブロードキャストアドレス」を問うている問題です。

例題3は「ネットワークアドレス」を問うている問題です。

例題4は「集約したネットワーク」を問うている問題です。

全部違うわけですね。

この辺りが全部わかっていないと、結局ごちゃごちゃになっていると正解が出ません。

#■レベルが低いとお思いでしょうが

いやあ、ダメですね。

それでも「ダメだと気が付いて」、「対策をとる」ということの繰り返しが重要です。

そうでないと勉強範囲が広い応用情報では、なかなか穴を埋めきるのは難しい！

こんな感じで次回からも私の勉強に付き合ってもらえるとうれしいです！

#■ゲームプロマネのブログ
http://game-pm.com/

こちらはプログラム要素は少なく、ゲーム開発に関するあれやこれやを話しております。

そちらに興味がある方はぜひのぞいてみてくださいね！

上記記事に関してご意見ご要望がある方は私のtwitterまでお願いいたしますー