サブネットとCIDRの計算方法

これまでサブネットやCIDRについて説明してきましたが、本項では計算方法について説明します。

全てをビットに直す

 サブネットは全てをビットに直して計算します。

 例えばIPアドレス172.16.1.1に対してサブネットマスクが255.255.255.0だった場合、全てを2進数に直すと以下になります。この1、0がビットを表しています。

【例1:アドレスをビットにする】
進数 IPアドレス
10進数 172 16 1 1
2進数 10101100 00010000 00000001 00000001

進数 サブネットマスク
10進数 255 255 255 0
2進数 11111111 11111111 11111111 00000000

 2進数への簡単な変換方法はWindowsの電卓を使う方法です。以下の動画はWindows7の場合ですが、電卓の種類をプログラマにして172と入力し、2進数に変換すると10101100と表示されます。

 16を2進数に変換すると10000と表示されますが8bitに満たないため左側を0で埋めて00010000となります。このように「.」で区切られた数字毎に全て2進数に直します。

 2進数に直した後はIPアドレスとサブネットマスクでAND計算します。ANDとはIPアドレスとサブネットマスクのビットで同じ列を比較して共に1のビットは1、それ以外は0が結果になります。

1
【例1:ANDをとる】
IPアドレス 10101100 00010000 00000001 00000001
サブネットマスク 11111111 11111111 11111111 00000000
ANDの結果 1010110000010000 00000001 00000000

 最後に8bit毎に2進数を10進数に戻します。

【例1:10進数に戻す】
ANDの結果 10101100 00010000 00000001 00000000
10進数 172 16 1 0

 上記で得られた結果である172.16.1.0がサブネット番号になります。

サブネットマスクが255でない場合の例

 もう1つ例を挙げます。IPアドレスが172.16.1.200に対してサブネットマスクが255.255.255.128だった場合です。

 まず2進数に直します。

【例2:アドレスをビットにする】
進数 IPアドレス
10進数 172 16 1 200
2進数 10101100 00010000 00000001 11001000

進数 サブネットマスク
10進数 255 255 255 128
2進数 11111111 11111111 11111111 10000000

 次にANDです。

【例2:ANDをとる】
IPアドレス 10101100 00010000 00000001 11001000
サブネットマスク 11111111 11111111 11111111 10000000
ANDの結果 10101100 00010000 00000001 10000000

 最後に10進数に直します。

【例2:10進数に戻す】
ANDの結果 10101100 00010000 00000001 10000000
10進数 172 16 1 128

 このようにサブネット番号は0が区切りにならない場合があります。

実際の計算方法

 毎回2進数に直して計算するのは面倒です。このため以下のように計算します。

 サブネットマスクで「.」で区切られた255の所はオール1bitのためANDをとってもIPアドレスそのままの数字、0の所はサブネット番号も0になります。

 255でも0でもない所は10000000、1100000、11100000等と1が1bit多くなる度に128、128の半分の64を足した192、64の半分の32を足した224がサブネットマスクに使われると覚えます。

【使われるサブネットマスクの数字】
2進数 使われる数字 上の数字との差
00000000 0 -
10000000 128 128
11000000 192 64
11100000 224 32
11110000 240 16
11111000 248 8
11111100 252 4

 ポイントは最初の128を憶える事、次はその半分の数字を足す事、その次からは足した半分の数字を足す事です。

 最初の128、若しくは足した数字ずつサブネット番号は増えて行きます。以下の表はネットワークアドレス172.16.0.0/16、サブネットマスクが255.255.255.192の場合で192部分で使われるサブネット番号を示しています。

【使われるサブネット番号】
サブネット番号 上の数字との差
0 -
64 64
128 64
192 64

 192は128に64を足した数字であるため、使えるサブネット番号は64づつ増えている事が分かります。

 IPアドレスはサブネット番号と次のサブネット番号の間の数字になるため、IPアドレスを越えない数字が求めるサブネット番号になります。

 例えばIPアドレスが172.16.1.200に対してサブネットマスクが255.255.255.224だった場合、サブネットマスクが255の所はIPアドレスそのままの数字、0の所はサブネット番号も0になるので以下まではすぐに分かります。

【実際の計算例1:255と0の判断】
IPアドレス 172 16 1 200
サブネットマスク 255 255 255 224
サブネット番号 172 16 1 ??

 ??の部分ですが、サブネットマスクの所が224になっていて、これは192に32を足した数字です。このため32ずつ増やして200を越えない192が求める番号となり、全体で172.16.1.192がサブネット番号になります。

 もう1つ例を挙げます。

 IPアドレスが172.16.1.70でサブネットマスクが255.255.255.240の場合、172.16.1.??まではすぐに分かると思います。

 ??部分でサブネットマスクが240は224に16を足した数字です。16ずつ増やして70を越えない64が求める番号となり、全体で172.16.1.64がサブネット番号になります。

 電卓がなくても計算出来ますが慣れるまでは面倒かもしれません。サブネットマスクの255でも0でもない部分は最後に何を足すとその数字になるかすぐ分かるようになると計算が早くなります。

 以下で計算の練習が出来ます。「答え」ボタンをクリックすると答えが表示されます。又、「クリア」ボタンをクリックすると違う問題が出ます。

 Q1.下の数字はサブネットマスクが0でも255でもない部分です。何を足すとその数字になりますか?

答え:

 Q2.サブネット番号を答えて下さい。(ヒント:Q1の答えずつ足していきます)

IPアドレス   :

サブネットマスク:

答え:

CIDRでの計算

 CIDRでの計算もサブネットの計算と同じです。但しCIDRでは/17等と表記されます。

 /17は1が17bit続くという意味のため、2進数で表すと11111111.11111111.10000000.00000000となります。IPアドレスを2進数にしてANDをとればネットワークアドレスが分かります。

 しかし毎回計算すると面倒なため、やはりサブネットと同じような計算をします。

 IPアドレスは8bit毎に「.」で区切られ/17では8bit間隔を示す「.」2つ目まではオール1になり、24bit以降はオール0になります。つまり、172.16.200.1/17の場合、172.16.??.0まではすぐに判断出来ます。

 ??部分もサブネットマスクの場合と同様で1が1bit多くなる度に128、128の半分の64を足した192、64の半分の32を足した224が使われると覚えます。/17では10000000が??部分になるため、128ずつ増やして200を越えない128が求める番号となり、全体で172.16.128.0がネットワークアドレスになります。

サイト関連1

応用編「IPアドレスの種類

キーマンズネット1

初級ネットワーク講座「IPアドレスを最大限に活用する方法
  • このエントリーをはてなブックマークに追加