この連載では、Cisco CCENT/CCNAの資格試験対策とするために、Cisco Press公式ガイドブックに掲載されている例題を抜粋し、その例題の解答について解説を行っています。今回は、IPv4アドレスのサブネットマスクに関する問題について解説します。サブネットマスクとは、IPアドレスにおいてネットワーク部とホスト部の分け方を示したものです。
■サブネットマスクの変換
まず、サブネットマスクの変換に関する例題を2つ示します。
※問題2と4は『シスコ技術者認定試験 公式ガイドブック Cisco CCENT/CCNA ICND1 100-101J』 p.348より抜粋。
●サブネットマスクの表記方法
サブネットマスクは、ネットワークビット数とホストビット数を明らかにするために用いられます。ネットワークビットにあたる部分を1、ホストビットにあたる部分を0としてIPアドレスと同じように表記します。
例えばネットワークビット数が24、ホストビット数が8の場合、11111111 11111111 11111111 00000000となります。しかしこれでは見づらいですので、IPアドレスの表記と同様にオクテットごとに10進数に変換して 255.255.255.0 のように表記します。これがドットつき10進表記(DDN)です。
また、スラッシュの後にネットワークビット数を書き、 /24 のように表現することもあります。これはプレフィックス表記やCIDR表記と呼ばれます。この例のネットワークビット数が24、ホストビットが8の場合のそれぞれの表記をまとめると以下の表のようになります。
| 2進数表記 |
11111111 1111111 11111111 00000000 |
| ドットつき10進表記 |
255.255.255.0 |
| プレフィックス表記 |
/24 |
●2進数表記とドットつき10進表記の変換
それではこれらの相互変換について説明します。まず、ドットつき10進表記で登場する値は9つしかありません。それぞれの2進数の値、1の数との関係は次の表のようになります。
| 2進数 |
10進数 |
1の数 |
| 00000000 |
0 |
0 |
| 10000000 |
128 |
1 |
| 11000000 |
192 |
2 |
| 11100000 |
224 |
3 |
| 11110000 |
240 |
4 |
| 11111000 |
248 |
5 |
| 11111100 |
252 |
6 |
| 11111110 |
254 |
7 |
| 11111111 |
255 |
8 |
この表を利用して、2進数表記とドットつき10進表記の変換ができます。例えば、2進数表記で 11111111 11111111 11110000 00000000 の場合、各オクテットをこの表に従って変換すればよいので、255.255.240.0となります。255.255.255.192 は、11111111 11111111 11111111 1100000 です。
●プレフィックス表記に関する変換
プレフィックス表記からドットつき10進表記に変換する場合は、まず2進数表記に変換しドットつき10進表記に変換します。例えば、 /14 は 11111111 11111100 00000000 00000000 と変換し、255.252.0.0 と変換します。
ドットつき10進表記をプレフィックス表記に変換するには、先ほどの表の「1の数」の項目を利用します。例えば 255.255.255.248 の場合、1~3オクテット目の255は1が8個、4オクテット目の248は1が5個なので、1の数は8+8+8+5=29 と計算し、/29であるとわかります。
この「1の数」の項目は、プレフィックス表記からドットつき10進表記に変換するときにも利用できます。例えば、先ほどの /14 の場合は 14 = 8+6 より、1オクテット目が255、2オクテット目が252とすぐにわかるので、255.252.0.0と変換できます。
この2進数と10進数の変換表は覚えてしまうくらい練習を重ねましょう。
●例題
それでは例題の解答です。
例題2は、255.255.255.240 のプレフィックス表記を問われています。表の「1の数」を利用して各オクテットの1の数を求めます。255は8、240は4なので、8+8+8+4となり、正解は/28、つまりbです。
例題4はプレフィックス表記からドットつき10進表記への変換です。30 = 8+8+8+6 なので 255.255.255.252 、つまりbが正解です。