🙆

【ネットワーク基礎】サブネットマスクの計算方法

に公開

はじめに

サブネットマスクを使ってサブネットを計算する方法について、以下のような解説をみたことはあるでしょうか?

https://www.runsurunet.com/2017/10/11/サブネットマスクを理解する/ より一部画像引用

与えられたIPアドレスとサブネットマスクから、なぜこのようなネットワークアドレスを求めることができるか、疑問に思った方が多いのではないでしょうか?
本記事では、ネットワークアドレスを求めるまでの具体的な計算手順についてできるだけわかりやすく解説していきます。

サブネット計算の流れ(全体像)

サブネットを求める際に以下の4ステップを押さえます。

① IPアドレスとCIDR表記を確認する
② サブネットマスクをビットで表し、ネットワークアドレスを求める
③ 必要なホスト数やネットワーク数に応じてCIDRを調整
④ 必要ならサブネット一覧を計算して設計

このステップに沿って計算をしていきますが、前提として、ビット演算ANDについての理解が必要になります。

ビット演算

ビット演算とは、数値を2進数(ビット)に変換して、ビット単位で行なう、コンピュータがもっとも得意とする低レベルな計算方法のことを言います。
ビット演算を行う最大の理由は、コンピュータが「0と1(2進数)」しか扱えないためです。
コンピュータの内部では、電気が「流れている=1」「流れていない=0」として情報を表します。
この2つの状態(ビット)を組み合わせて数値や文字などを表現しているのです。
例えば、10進数の「5 + 10」は、コンピュータ内部では「00000101 + 00001010(2進数)」として処理され、その結果として「00001111(=15)」が得られます。

ビット演算には、論理積(&)や論理和(|)、排他的論理和(^)などがありますが、サブネット計算において使用するのは、このビット演算の中の論理積「&」です。
この論理積の基本ルールは、演算対象2つの両方が1なら結果は1、いずれか一方または両方が0なら結果は0になることです。これを各ビットごとに行ないます。
イメージとして以下のようになります。

縦に見たときに、1同士であれば結果は1、それ以外の場合は0になります。
この基本を押さえたうえで、計算の手順を見ていきましょう。

① IPアドレスとCIDR表記を確認する

まずは、対象のIPアドレスとサブネットマスク(CIDR表記)を確認します。
もし、サブネットマスクは分かっているがCIDR表記がない場合、サブネットマスクを2進数に直すことで1となっている箇所がネットワークであるため、ネットワーク部とホスト部の判断ができます。


https://www.runsurunet.com/2017/10/11/サブネットマスクを理解する/ より

上記の例では、10進数表記で
・IPアドレス: 192.168.11.1
・サブネットマスク: 255.255.255.0
が設定されています。これを2進数表記に直したものが青い編みかけ部分です。

サブネットマスクの2進数表記が先頭から24ビット分あることから、先頭24ビットがネットワーク部、残り8ビットがホスト部、CIDR表記は"/24"になるとわかります。

② サブネットマスクをビットで表し、ネットワークアドレスを求める

IPアドレスとサブネットマスクを(1)2進数に変換(上記で解説)し、(2)AND演算(ビット積)を行ないます。

(1)2進数に変換
先ほどの例を使用すると、IPアドレス・サブネットマスクの10進数表記は以下のような2進数表記になります。
ちなみに、この計算はオクテット(8ビット)ごとに行ないます。

・IPアドレス 192.168.11.1 → 11000000.10101000.00001011.00000001
・サブネットマスク 255.255.255.0 → 11111111.11111111.11111111.00000000

(2)AND演算(ビット積)
先ほど求めた2進数表記をIPアドレス・サブネットマスクの順に縦に並べます。
11000000.10101000.00001011.00000001
11111111.11111111.11111111.00000000

そして、この並びを縦にみて、上記で解説したAND演算を行ないます。
その結果として、 11000000.10101000.00001010.00000000 が得られます。
最後に、得られた結果は2進数表記であるため、これを10進数表記にすることで、ネットワークアドレスを求めることができます。
→ ネットワークアドレス:192.168.10.0

③ 必要なホスト数やネットワーク数に応じてCIDRを調整


https://envader.plus/article/52 より

用途に合わせて CIDR(≒サブネットマスク)を変更して、
・ネットワーク数を増やしたり
・ホスト数を確保したりします。
③はネットワーク部とホスト部の境界線をどこに引くかを決定する段階と言えます。

サブネットの大きさとホスト数は反比例の関係にあります。
すなわち、サブネットの数を増やすと、1つのサブネットで使用できるホスト数は減り、
サブネットの数を減らすと、1つのサブネットで使用できるホスト数は増えます。

「サブネットの数を増やす」とは、ネットワーク部分を増やす(CIDRを大きくする)、つまりサブネットマスクの1のビットが増え、ホスト部の0が減ることを意味します。
反対に、「サブネットの数を減らす」とは、ネットワーク部分を減らす(CIDRを小さくする)、つまりサブネットマスクの1のビットが減り、ホスト部の0が増えることを意味します。

なお、ネットワークアドレスとブロードキャストアドレスを除く必要があるため、ホスト数 - 2 の計算結果が実際に使用できるホスト数です。

④ 必要ならサブネット一覧を計算して設計

CIDRを調整したら、実際に使えるサブネット一覧を計算して設計します。
このステップは、実際のネットワーク設計で“使える範囲”や“使ってはいけないアドレス”を明確にするために行ないます。

例:192.168.1.0/26

サブネット名 ネットワークアドレス 使用可能IP範囲 ブロードキャスト ホスト数
Subnet A 192.168.1.0/26 192.168.1.1 ~ 192.168.1.62 192.168.1.63 62
Subnet B 192.168.1.64/26 192.168.1.65 ~ 192.168.1.126 192.168.1.127 62

この一覧化により、各サブネットの範囲(開始〜終了IP)の明確化、各サブネットの予約済みアドレスの把握が可能になります。

まとめ

今回の記事では、IPアドレスとサブネットマスクを使ったネットワークアドレスの計算方法を求めること、サブネットマスクを変更することでネットワークを分割できることについてまとめました。
これらを理解することで、サブネット設計に役立つことでしょう。
最後までお読みいただき、ありがとうございました。

参考・画像引用元URL

https://dev.mescius.jp/support/powernews/column/clang/019/page02.htm
https://w.atwiki.jp/kumikomi-yitjc/pages/17.html
https://happy-shibusawake.com/bit-operation/716/
https://envader.plus/article/52
https://atmarkit.itmedia.co.jp/ait/articles/0805/15/news134.html
https://maru-note.net/entry/2024/01/21/150318
https://thinkit.co.jp/story/2015/03/09/5713?page=0%2C1

Discussion