Contents
ネットワークエンジニアであれば、ある程度は IP アドレスを暗算していると思いますが、その際の脳内をできるだけ言語化してみようと思います。
前提となる数値
オクテット単位のサブネットマスクとマスク長
サブネットマスクは、IP アドレスをネットワーク部分とホスト部分に分割するために使用されるビットのパターンであり、IP アドレスと同じ長さのビット列で表されます。ネットワーク部分のビットを 1 にし、ホスト部分のビットを 0 にします。
オクテットは、8 ビットごとに IP アドレスを区切ります。IPv4 アドレスは 32 ビットであるため、4つのオクテットができます。マスク長は、ビットの数によってネットワーク部分を示し、CIDR 表記で使用されます。
2 進数での表記は視覚的にも理解しやすいため、参考までに記載していますが、今回意識する数値はサブネットマスクとマスク長のみで問題ありません。
また、この表のクラス A, B,C (クラスフルサブネット)は、古い概念であり、昔はクラスを前提としたネットワーク設計やネットワーク機器の仕様が存在していましたし、Windows や Linux などのネットワーク設定もそれに基づいてました。現在は CIDR に基づいた柔軟なアドレス設計が主流となっており(とは言ってもかなり前からです)、いまだにクラス A, B,C が云々と言っている人の知識はかなり古く、最新の知識に触れていない可能性が高いのであまり信用しない方が良いかもしれません。
クラス A, B,C の話をする際は、最新の文脈を意識して話すようにすると、余計な誤解を生まずに済むと思います。
クラス | サブネットマスク | マスク長 (bit) | 2 進数 |
---|---|---|---|
A | 255.0.0.0 | 8 | 11111111.00000000.00000000.00000000 |
B | 255.255.0.0 | 16 | 11111111.11111111.00000000.00000000 |
C | 255.255.255.0 | 24 | 11111111.11111111.11111111.00000000 |
サブネットとビットの関係
前述のオクテット単位のサブネットは、感覚的に理解しやすいですし、実際のネットワーク環境でも特に /24 は非常によく使われていると思います。
一方、感覚的に理解しづらいのは、/13, /18, /26 などの 8 ビット区切りではないサブネットかと思います。もちろん、慣れていればそうではないのですが、以下の表の構造を理解しておけば、IPv4 におけるサブネットの計算は簡単にできると思います。
この表の基本的な見方は、例えば 3rd Octet の mask の値が 192 である場合、マスク長は 18bit であるということです。サブネットマスクの原則として、前の値より、後の値が大きいことはありません。つまり、128.255.0.0 のようなサブネットマスクは存在しないということです。
別の角度で見てみましょう。各行の 1st, 2nd, 3rd, 4th Octet の値は、+8 で並んでいますね。これは、当たり前ですが、Octet が 8 ビット区切りだからです。
次に、1st Octet の列を見てみましょう。0 – 7 で 8 個の値がありますね(mask が 255 の行は除く)。これも Octet が 8 ビット区切りだからです。mask に 255 (0) と記載しているのは、 Octet の境界で値が重なるためです。
この関係性が理解できれば、IP アドレス計算はマスターしていると言っても良いと思います!
mask | 1st Octet (bit) | 2nd Octet (bit) | 3rd Octet (bit) | 4th Octet (bit) |
---|---|---|---|---|
0 | 0 | 8 | 16 | 24 |
128 | 1 | 9 | 17 | 25 |
192 | 2 | 10 | 18 | 26 |
224 | 3 | 11 | 19 | 27 |
240 | 4 | 12 | 20 | 28 |
248 | 5 | 13 | 21 | 29 |
252 | 6 | 14 | 22 | 30 |
254 | 7 | 15 | 23 | 31 |
255 (0) | 8 | 16 | 24 | 32 |
計算例
192.168.10.16/28
サブネットマスクは?
28bit であるため、255.255.255.240 です。
割り当て可能なサブネット数は?
- 256 から 240 を減算します。256 – 240 = 16
- つまり、4th Octet の値が 16 のブロックで区切られているということです。
- 255.255.255.0 での最大 IP アドレス数は 256 です。256 ^ 1 = 256
- 256 を 16 で除算します。256 / 16 = 16
- 割り当て可能なサブネット数は 16 です。
192.168.32.0/19
サブネットマスクは?
19bit であるため、255.255.224.0 です。
割り当て可能なサブネット数は?
- 256 から 224 を減算します。256 – 224 = 32
- 32 を 256 で乗算します。32 * 256 = 8192
- つまり、255.255.224.0 のサブネットは、IP アドレス数が 8192 個のブロックで区切られているということです。
- 255.255.0.0 での最大 IP アドレス数は 65536 です。256 ^ 2 = 65536
- 65536を8192で除算します。65536 / 8192 = 8
- 割り当て可能なサブネット数は 8 です。