サブネットマスクとの論理積

 サブネットマスクは、IPアドレス上のネットワークアドレス部分とホストアドレス部分の間仕切り位置を示すために使用します。

 サブネットマスクでは、ネットワークアドレス部分を「1」、ホストアドレス部分を「0」と表現することで、ネットワークアドレス部分とホストアドレス部分の間仕切り位置を表します。

 また、サブネットマスクは、ネットワークアドレス部分とホストアドレス部分の間仕切り位置を示す以外にも、IPアドレスとの論理積をとることで、IPアドレスが所属するネットワークアドレスを知ることができます。

まずは、計算が楽な8ビット刻みの、サブネットマスクを使って説明します。

まず、始めに「150.10.1.1/16」を使って説明します。

 「150.10.1.1/16」は、クラスBで、デフォルトのサブネットマスクである「255.255.0.0」を使っていることがわかります。

「150.10.1.1/16」と「255.255.0.0」との論理積(AND演算)を求めます。

論理積とは、

 0 AND 0 = 0
 0 AND 1 = 0
 1 AND 0 = 0
 1 AND 1 = 1

となる演算のことです。表にまとめるの以下のようになります。

AB論理積
000
010
100
111

 「150.10.1.1/16」と「255.255.0.0」とのAND演算を行うには、2進数に変換すると理解しやすいので、2進数に変換します。※8ビット刻みのサブネットの場合は、暗算ですぐに計算できます。

AND演算で求められた「150.10.0.0」が「150.10.1.1」の所属するネットワークアドレスになります。

次に、「150.10.1.1/24」を使って説明します。基本的には、先ほどのやり方と同じです。

 「150.10.1.1/24」と「255.255.255.0」とのAND演算を行うには、2進数に変換すると理解しやすいので、2進数に変換します。※8ビット刻みのサブネットの場合は、暗算ですぐに計算できます。

AND演算で求められた「150.10.1.0」が「150.10.1.1」の所属するネットワークアドレスになります。

このように、サブネットマスクを使うと、そのIPアドレスが所属するネットワークアドレスを求めることができます。

サブネットマスクが、8ビット刻みだと計算が簡単です。

それは、

 (255)10 = (11111111)2

「255」とのAND演算は、必ず、その数そのものになるからです。

また、「0」とのAND演算は、必ず、「0」になります。

 つまり、サブネットマスクが、8ビット刻みだと、2進数に変換して計算するまでもなく、見ただけで所属するネットワークが分かるようになっています。

 上の例では、計算が楽な8ビット刻みの、サブネットマスクを使って説明してゆきました。ここでは、8ビット刻みではないサブネットマスクを使って、説明します。

例1

始めに、「192.168.1.33/28」を使って説明します。

 「192.168.1.33/28」は、クラスCで、サブネットマスクとして「255.255.255.240」を使っていることがわかります。

「192.168.1.33/28」と「255.255.255.240」との論理積(AND演算)を求めます。

 「192.168.1.33/28」と「255.255.255.240」とのAND演算を行うには、2進数に変換すると理解しやすいので、2進数に変換します。

AND演算で求められた「192.168.1.32」が「192.168.1.33」の所属するネットワークアドレスになります。

「192.168.1.32/28」は、「192.168.1.0/24」ネットワークの第2サブネットです。

 つまり、「192.168.1.33/28」は、「192.168.1.0/24」ネットワークの第2サブネットに所属することがわかります。

例2

次に、「192.168.1.33/26」を使って説明します。

 「192.168.1.33/26」は、クラスCで、サブネットマスクとして「255.255.255.192」を使っていることがわかります。

「192.168.1.33/26」と「255.255.255.192」との論理積(AND演算)を求めます。

 「192.168.1.33/26」と「255.255.255.192」とのAND演算を行うには、2進数に変換すると理解しやすいので、2進数に変換します。

AND演算で求められた「192.168.1.0」が「192.168.1.33」の所属するネットワークアドレスになります。

「192.168.1.32/26」は、「192.168.1.0/24」ネットワークの第0サブネットです。

 つまり、「192.168.1.33/26」は、「192.168.1.0/24」ネットワークの第0サブネットに所属することがわかります。

 ここで、同じIPアドレス「192.168.1.33」なのに、「192.168.1.33/28」と「192.168.1.33/26」とでは、所属するネットワーク(サブネット)が違うということに気付きます。

 つまり、IPアドレスを表記する時、IPアドレスの表記だけだと、そのIPアドレスが所属するネットワークを知ることができないということです。IPアドレスの右横に「/」でサブネット長を加えておくことで、そのIPアドレスが所属するネットワークを知ることができます。

 IPアドレスとサブネットマスクを使えば、そのIPアドレスが所属するネットワークアドレスを知ることができると説明しました。この作業は、コンピュータが通信する際に行われています。

サブネット化の利点

 サブネットマスクを使用することによって、サブネット分割を行うことができます。ネットワークの規模に合わせたサブネットを作成することで、効率よくネットワークを運用することが可能となります。

下の図のネットワークでその利点を説明します。

IPアドレスの各クラスのデフォルトのサブネットマスクは、以下のようになります。

クラスA ・・・ 255.0.0.0
クラスB ・・・ 255.255.0.0
クラスC ・・・ 255.255.255.0

ということは、デフォルトで使用できる各クラスのホストのIPアドレスは、以下のようになります。

クラスA ・・・ 224 - 2 = 16,777,214

クラスB ・・・ 216 -2 = 65,534

クラスC ・・・ 28 - 2 = 254

 上の図では、クラスBのIPアドレスを使用しています。デフォルトのサブネットマスクのままでは、65,534台の大規模なネットワークになってしまいます。そんなネットワークは、世界中を探しても多くないと思われますし、1つのセグメント内にそんなにたくさんの端末が存在すると輻輳が発生してしまいます。

 上のネットワークでは、「/16」から「/24] へ8ビット拡張することでクラスBのIPアドレスを、あたかもクラスCのIPアドレスであるかのように利用しています。