はじめに
今回は、名前だけど分かりづらいと思われる『サブネットマスク』というものについて解説していきます。
では、『サブネットマスク』とは何なのでしょう?
結論から言えば、サブネットマスクとは『IPアドレスをより有効活用できる技術』になります。
『IPv4』という『IPアドレス』の前提
現在、広く普及しているIPアドレスである『IPv4』のグローバルIPアドレスは、その仕様が作られた当初から足りなくなることが懸念されていました。
その理由は、IPアドレスを2進法で表した数列の合計は32ビットであり、この総数は約43億個という数であったからです。
あなたは「43億個もあれば、足りなくなることはないだろう」と考えるかもしれませんが、グローバルIPアドレスを利用しようとするサーバーやコンピューターは今現在も常に増え続けている状況です。
実際にどのくらい増加しているかを調査しているInternet live statsを見てみると、なんとWebサイトだけで世界中に19億サイトもあることが分かります。(2018年)
サービス内のIPアドレスが使われている場合もあるため一概には言えませんが、単純計算19億サーバー、つまり19億グローバルIPアドレスが利用されているイメージだと捉えてもいいでしょう。
しかもこれはWebサイトだけです。
世界にはこの他にもあらゆるサービスのサーバーが稼働しているわけで、「そりゃ足りなくなるわ」と実感できる総数にまで達しています。
このような状況のため、IPv4のグローバルIPアドレスは、枯渇の危機を迎えました。
もちろん、この枯渇状態のままで進めば、いずれIPアドレスが無くなってしまうので、インターネット自体に制限を設けることになってしまいます。
そこで、そうはならないように先駆者達によってIPv4への対策が講じられてきました。
その1つが、グローバルIPアドレスのオクテット内を分けられる『サブネッティング』というもので、もう1つがIPアドレスそのものを柔軟に分けられる『クラスレスアドレッシング』というものです。
従来、IPアドレスは『クラスフルアドレッシング』という考え方であり、ネットワークの規模をそれぞれクラスとして分けてきました。
クラスA、クラスB、クラスCが一般的に使われるクラスであり、そのホストアドレスとなる数は、クラスAが1670万個、クラスBが65,536個、クラスCが256個という割合です。
つまり、クラスAはグローバルIPアドレスとして1670万個ものホストアドレス(個々のコンピューターの数)が使えるわけですが、そんなにホストアドレスを使うような大規模ネットワークの利用は限られます。
しかし、反対にクラスCの256個のホストアドレスでは少なく、もっとホストアドレスが欲しいという需要が高まりました。
すると、当然クラスBの利用が増えることになるので、その結果、クラスBが足りなくなるという状況に陥りました。
このような状況の中、IPアドレスには利用できる数にもっと柔軟性が求められ、クラスフルではなくクラスレスという、クラスを持たない概念へと向かっていくのです。
『サブネットマスク』とは、サブネッティングを数値で示した表記のこと
『サブネットマスク』という言葉をたまに聞いたことはあるでしょうか?
IPアドレスとセットになっているもので、ルーターの設定やネットワークの設定などでよく見かけるものです。
しかし、その意味は正直分かりづらいものであり、あまり触れたくないようなイメージが強いと思います。
サブネットマスクとは、IPアドレスのネットワークアドレス部分とホストアドレス部分を分ける際に、数値で示した際の表記です。
例えば、160.150.140.130というIPアドレスがあった場合、ネットワークアドレス部分は『160.150』、『140.130』がホストアドレスだとしましょう。
この場合のサブネットマスクの数値は『255.255.0.0』と表記されます。
つまり、オクテットが『255』と記されている場所がネットワークアドレス、オクテットが『0』と記されている場所をホストアドレス部というように見た目で分かるようにしているわけです。
そして、このサブネットマスクを利用することで、サブネットワークというものを作ることができます。
仮にあなたが、500台のコンピューターを使用して、グローバルIPアドレスでのネットワークを構築したいと考えたとしましょう。
すると、クラスCのホストアドレスでは256個では足りないため、クラスBを選択しなければなりません。
しかし、クラスBのホストアドレスは65,536個という、希望よりも遥かに多い個数のものが割り当てられてしまい、無駄なIPアドレスを保持してしまうことになります。
あなたは「別に使わなければいいのでは?」と思うかもしれませんが、色々とそうはいきません。
これだけのIPアドレスを保持してしまうと、例えば、ブロードキャストというネットワーク全体に向けてデータを発信する場合、必要のない範囲までデータを送ってしまい、ネットワーク自体に負荷がかかってしまうのです。
また、無駄な回線を使用することになるので、管理面でも問題が生じてしまいます。
そこで、必要のないホストアドレスの残りを、ネットワークアドレスとして使用してしまおうというのが、サブネッティングという考え方であり技術です。
ここからは、私たち個人個人の話ではなく、IPアドレスを管理する団体側の考え方になります。
サブネッティングは、IPアドレスを2進法にした数列の合計数である32ビットのうち、先頭からどこまでがネットワークアドレスであるかを指定することができものです。
つまり、クラスフルアドレッシングでネットワークアドレスとして指定されている、クラスAの8ビット、クラスBの16ビット、クラスCの24ビット内の中で、さらにネットワークアドレスを増やすことができるというものになります。
例えば、クラスBのIPアドレスで考えます。
『160.150』までの第1、第2オクテットまでがネットワークアドレスで、『140.130』の第3、第4オクテットまでがホストアドレスだとします。
この場合のサブネットマスクは、『255.255.0.0』となっており、最初から『16ビット』までがネットワークアドレスで、残りの『16ビット』がホストアドレスという意味合いになっています。
この残りの16ビットのうち、サブネットマスクで指定して第3オクテットを4ビット減らしたとします。
すると、ネットワークアドレスが4ビット増えたことにより合わせて20ビットとなり、このうち増やした4ビットはサブネットという扱いになります。
こうして利用しないホストアドレスを少なくすることで、ネットワークアドレスを増やしてIPアドレスを確保し、グローバルIPアドレスの枯渇を抑制できるわけです。
ただ、サブネッティングはオクテット内のアドレスの増減しか行えないので、さらに柔軟な考え方が必要でした。
『CIDR』によりクラスフルからクラスレスへ
上記のサブネッティングは、クラスフルアドレッシングに加えた考え方であり、オクテット内のアドレスの増減を行える技術です。
確かにこのサブネッティングは、少なくなっているIPアドレスをより利用可能にする有効な方法ではありますが、これでもまだ枯渇の問題が解消されるわけでもなく、次なる打開策が必要になりました。
それが『CIDR(サイダー:Classless Inter-Domain Routing)』という考え方であり技術でした。
CIDRの考え方は、もはや悠著なことは言ってられず、クラスフルに対し、クラスの概念を無くそうというものになります。
クラスがないのでレス、つまり『クラスレスアドレッシング』です。
CIDRはオクテットに関わらず、自由にIPアドレスをネットワークアドレスとホストアドレスとに分割することができるので、よりIPアドレスの有効活用がこうしてできるようになりました。
ちなみに、このクラスレスのIPアドレスの表記は、先頭からどこまでがネットワークアドレスなのかが不明になってしまうため、分かりやすいようにIPアドレスの後ろに『/』を付けるようにしています。
つまり、『160.150.140.130/24』というようになり、この場合24ビットまでがネットワークアドレスとみなされます。
これを『CIDR表記』と呼びます。
まとめ
サブネットマスクというのは、ただの表記なので一度知ってしまえば何のことはありません。
しかし、これが生まれた背景には、意外にもIPアドレスの枯渇という大きな問題が孕んでいたことによります。
今までは何とかサブネッティングやクラスレスで対処していましたが、IPv6の割合は年々増してきました。
枯渇に対しては一応の成果が見られているので、ひとまずは安心できる状況にはなってきています。