応用情報技術者試験の勉強をしていた時に、
サブネットマスクの過去問題がしばしば出てきたので、
解き方を整理してみます。
今回とりあげる問題はこちらです。
平成31年春期 午前問題34
出典
次の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
前提知識
サブネットマスクとは、IPアドレスを、ネットワークアドレス部分とホストアドレス部分の2つに分けて識別するための数値のことです。
二進法表記で、1が並んでいる部分がネットワークアドレスを、0が並んでいる部分がホストアドレスを表します。
具体的な使い方については、問題を解きながら見ていきます。
1.IPアドレスとサブネットマスクを二進法表記に置き換える
まずは十進法のIPアドレスとサブネットマスクを、
ドットで区切られた数ごとに二進法表記に置き換えます。
Windowsマシンがあれば、電卓のプログラマーモードを使えばすぐに変換できますが、
試験会場だと手で計算する必要があります。
十進法の数を、商が0になるまで2で割っていき、そのあまりを後ろから並べれば二進法に変換できます。
例:10
10÷2=5あまり0
5÷2=2あまり1
2÷2=1あまり0
1÷2=0あまり1
あまりを後ろから順番に並べると、1010
例:170
170÷2=85あまり0
85÷2=42あまり1
42÷2=21あまり0
21÷2=10あまり1
10÷2=5あまり0
5÷2=2あまり1
2÷2=1あまり0
1÷2=0あまり1
あまりを後ろから順に並べると、10101010
このように変換を繰り返すと、次のようになります。
IPアドレス:10.170.70.19
→00001010.10101010.01000110.00010011
サブネットマスク:255.255.255.240
→11111111.11111111.11111111.11110000
2.AND演算を用いて、ネットワークアドレスを求める
次に、回答となるネットワークアドレスを求めるために、
二進法に変換したIPアドレスとサブネットマスクでAND演算を行います。
AND演算では、1AND1のみが1となり、それ以外は0になります。
すなわち、
1AND1→1
1AND0→0
0AND1→0
0AND0→0
です。
与えられたIPアドレスのネットワークアドレス部分はそのまま持ってきて、
ホストアドレス部分はすべて0に置き換えているのと同じことです。
このようにして、ネットワークアドレス00001010.10101010.01000110.00010000が求められました。
3.求めたネットワークアドレスを、十進法表記に変換する
求めたネットワークアドレスの左からピリオド区切りで3つ目までの部分(第1~3オクテット)は、
与えられたIPアドレスと同じなので、10.170.70です。
一番右の部分(第4オクテット)の00010000を十進法に変換します。
二進法の位は一番右の桁から順に、
1桁目 2^0=1
2桁目 2^1=2
3桁目 2^2=4
4桁目 2^3=8
5桁目 2^4=16
6桁目 2^5=32
7桁目 2^6=64
8桁目 2^7=128
を表します。
例:11111111の場合は、上記すべての値を足し算して、
1+2+4+8+16+32+64+128=255が十進法表記になります。
00010000は、右から5桁目のみが1なので、
十進法表記は16になります。
第1~3オクテットまでと合わせて、
イ 10.170.70.16が今回の問題の答えです。
まとめ
今回取り上げた問題は基本問題でしたが、
進数変換やビット演算を理解して、段階を追って考える必要がありました。
サブネットマスクについての問題は頻出なので、まずは基本的な考え方を身に着けて、
一歩ずつ習得するといいと思います。