サブネットマスクとは

 ホストアドレスは、2進数で全て「0」のものと、「1」のものは、使用できませんから、使用できるIPアドレスは、以下のようになります。

  • クラスA ・・・ 224 - 2 = 16,777,214
  • クラスB ・・・ 216 -2 = 65,534
  • クラスC ・・・ 28 - 2 = 254

 クラスCのIPアドレスを丸ごと使って、254台に割り振るのは、まあ、問題ないかもしれませんが、ブロードキャストの問題やセグメント内で帯域を共有するという点では、あまり望ましいとはいえません。

 ましてや、クラスBの65,534台、クラスAの16,777,214台ともなると、そんなに大規模なネットワークは、世界中を探しても多くないと思われますし、1つのセグメント内にそんなにたくさんの端末が存在すると輻輳が発生してしまいます。

では、クラス内のアドレスを全て使わずに、一部だけ使用して、残りを使わなかったらどうでしょうか?

  • クラスAで、100個だけ使用したとします。残りが、16,777,114個が無駄になってしまいます。
  • クラスBで、100個だけ使用したとします。残りが、6,5434個が無駄になってしまいます。
  • クラスCで、100個だけ使用したとします。残りが、154個が無駄になってしまいます。

 これでは、貴重なIPアドレスが、無駄遣いになってしまうばかりか、こんな使い方をしていると、あっという間にIPアドレスが、枯渇してしまします。

この問題を解決するために、サブネットマスクというものが存在します。

 サブネットマスクを使うと1つのネットワークアドレスを複数のネットワークに分割することができます。この分割されたネットワークのことをサブネットと言います。

 1つのネットワークアドレスを適切なサイズに分割し、割り当てることで、ネットワークの効率と運用性を高めることができます。

デフォルトのサブネットマスク

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

 それでは、どうやって、ネットワークアドレス部分とホストアドレス部分の間仕切りの位置を示すのかというと、以下のようなルールでサブネットマスクを作成します。

 ネットワーク部分 ・・・ 1
 ホスト部分     ・・・ 0

サブネットマスクは、IPアドレスと同じく、32ビットで構成されます。

例えば、クラスCのIPアドレス、「192.168.123.45」のデフォルトのサブネットマスクは、以下のようになります。

クラスCのデフォルトのネットワークアドレスは、上位3オクテットの24ビット分です。

その24ビットを「1」にします。

クラスCのデフォルトのホストアドレスは、最後の1オクテットの8ビット分です。

その8ビットを「0」にします。

つまり、「192.168.123.45」のデフォルトのサブネットマスクは、「255.255.255.0」になります。

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

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

サブネットマスクは、連続した「1」と「0」の組み合わせになります。

「10101010」のようには、なりません。「1」が続いた後に、「0」が続きます。

 しかし、サブネットマスクが、デフォルトのサブネットマスクしか使用できないのであれば、効率が良いとは言えません。それは、ネットワークへは、適切なサイズのネットワークアドレスを割り当てた方が、効率が良いし、運用が容易だからです。

サブネット分割

サブネット分割をクラスBのネットワークアドレスを使って説明して行きます。

 クラスBは、最初の16ビットがネットワークアドレスで、残りの16ビットがホストアドレスです。クラスBのアドレスを例にとると、最初の16bitがネットワークアドレスで残りの16bitがホストアドレス、この16ビット目と17ビット目の境目がネットワークアドレスとホストアドレスの境界になります。

クラスBのホストアドレス数は、65,534個あります。

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

 ホストアドレスが、16ビット分も必要がない時、ネットワークアドレスとホストアドレスの境界をホストアドレス側にずらして、ネットワークアドレス部分を拡張するのが、サブネット分割です。

この分割されたネットワークのことをサブネットといいます。

ホストアドレス側に8ビット分をずらすと下の図のようになります。

 例えば、ネットワークアドレス「150.10.0.0」は、デフォルトのサブネットマスクが、「255.255.0.0」で、ホスト数は、65,534の大きなクラスBのネットワークアドレスです。

サブネットマスクを、

「255.255.0.0」→「255.255.255.0」にすることで、

サブネットアドレス部のビット数は、8ビット分確保されます。

その8ビットの組み合わせは、0~255までの256種類あります。

28 = 256種類

分り易くするため、下図で分割されたサブネットを表してみます。

 ホストアドレスから8ビット借りて、ネットワークアドレスを拡張したことによって、256個のサブネット分割に分割されます。

 150.10.0.0/24 (第0サブネット)
 150.10.1.0/24 (第1サブネット)
 150.10.2.0/24 (第2サブネット)
      ・
      ・
 150.10.254.0/24 (第254サブネット)
 150.10.255.0/24 (第255サブネット)

1つのサブネットに付き、256(28)個のホストアドレスを持ちます。 ※端末に割り振れるのは、254個。

 このように、サブネット分割を行うことによって、ネットワークの規模に合わせたサブネットを作成することが可能になります。

「/24」という表記は、この後の「サブネットマスク(CIDR表記)」で説明していきます。

サブネットマスク・CIDR表記

 スラッシュ(/)によるサブネットマスクの書き方をCIDR表記と呼びます。「/」の右側には、サブネットマスクの1の個数を書き、IPアドレスの右側に付け加えます。

書き方の例)

 サブネットマスク 「255.0.0.0」 → 「/8」
 サブネットマスク 「255.255.0.0」 → 「/16」
 サブネットマスク 「255.255.255.0」 → 「/24」
 サブネットマスク 「255.255.255.240」 → 「/28」
 サブネットマスク 「255.255.255.252」 → 「/30」

クラスCのIPアドレス、「192.168.123.45/24」を使ってCIDR表記を説明してゆきます。

「/24」は、サブネットマスクを意味します。

「24」は、左から連続する「1」の個数を表しています。つまり、「/24」は、「255.255.255.0」と同じ意味になります。

CIDR表記をするメリットは、何なのでしょうか?

デフォルトのサブネットがあるので、サブネットマスクを表示する必要がないのでは?

と思われるかもしれません。

 しかし、現在では、デフォルトのサブネットマスクではなく、サブネット分割したネットワークアドレスを使用するケースの方が増えています。つまり、IPアドレスと共にサブネットマスクの情報が必要となってきます。

CIDR表記をすることで、IPアドレスとサブネットマスクの情報を簡略した形で表現できます。