クラスBのサブネット化で第3オクテットが動く理由【応用編】
クラスBの例を考えていたとき、「クラスBのアドレスに/24を適用すると、こうなります」と説明しようとして、うっかり192.168.0.0を例に使ってしまったことがあります。
192.168.0.0はクラスCなので、この説明はそもそも成立しません。
この自分の間違いがきっかけで、「同じプレフィックスでも、クラスによって意味がまったく違う」ということに気づきました。この記事では、その違いを整理していきます。
こんにちは、ハチイチです。
この記事は、40代からネットワーク学習のためにCCNA資格取得をめざす学習ブログです。初心者の目線で、学習で学んだ「つまずき」や「気づき」を書いています。
この記事で分かること
- クラスCに/24を適用しても、何も変わらない理由が分かる
- クラスBのアドレスをサブネット化すると、なぜ第3オクテットまでサブネット部になるのか計算できるようになる
- /19や/22のような、オクテットの途中で区切られるプレフィックスも、計算編のブロックサイズ法でそのまま計算できるようになる
この記事で整理したいこと
前編で、クラスごとのデフォルトマスク(クラスA=/8、クラスB=/16、クラスC=/24)を整理しました。ここで気になったのが、「同じプレフィックスなのに、クラスによって触れる場所が違うのはなぜか」という点です。
なぜクラスCに「/24」を設定しても変化がないのか?
クラスCのデフォルトマスクは/24です。
つまり、「/24でサブネット化してください」と言われても、第1〜3オクテットが固定、第4オクテットがホスト部という構造は、最初から変わっていません。
クラスBに/24を適用すると、第3オクテットに何が起きるのか
クラスBのデフォルトマスクは/16です。
第1・第2オクテットが固定(ネットワーク部)、第3・第4オクテットがホスト部という構造になっています。
ここに/24を適用すると、デフォルトより右側にある8ビット(第3オクテットまるごと)を、ホスト部からネットワーク部(サブネット部)に借りることになります。

第3オクテットの全8ビットがネットワーク部になるので、サブネット数は2の8乗=256個、各サブネットのホスト数は2の8乗−2=254台になります。
プレフィックスで決まる「触れていい場所」の3つのルール
前編・計算編を通して整理できたルールは、次の3つです。
- デフォルトのネットワーク部は触れない(固定)
- デフォルトより右側のビットを借りて、サブネット部にする
- サブネットマスクで0になっている部分がホスト部

このルールは、クラスA・B・Cのどれでも共通です。クラスが違うのは「デフォルトがどこまでか」だけで、そこから先の考え方は同じでした。
/24の先へ:第3オクテットの途中に仕切り線が入るパターン
/24の計算に慣れてきたところで、参考書や問題集には172.16.0.0/19や/22のような、オクテットの途中で区切られるプレフィックスがよく出てきます。
172.16.x.xは、前編で整理したクラスBのプライベートIP範囲(172.16.0.0/12)としてよく見かけるアドレスです。
最初は「/24のときと勝手が違う」と戸惑いましたが、考え方は同じで、計算編のブロックサイズ法をそのまま第3オクテットに当てはめるだけでした。
実践!172.16.70.0/19の範囲を5つの手順で暗算する
172.16.x.xはクラスBなので、デフォルトは/16です。/19は第3オクテットの中に仕切り線が入るプレフィックスです。
計算の手順は、次の通りです。
- 仕切り線があるオクテットを確認する
/19は、第1・第2オクテット(16ビット)の次、第3オクテットの中に仕切り線がある - ブロックサイズを求める
/19のサブネットマスクは255.255.224.0なので、256−224=32 - 第3オクテットを32ずつ区切る
0, 32, 64, 96…… - ターゲットの数字が入る範囲を確認する
70は64〜95の範囲に入る - ネットワークアドレスとブロードキャストアドレスを求める
172.16.64.0〜172.16.95.255


暗算結果をダブルチェック!2進数の重み表で確認する
ブロックサイズの足し算だけでも答えは出ますが、念のため2進数の重み表でも確認してみます。
128 64 32 16 8 4 2 1
0 1 0 0 0 1 1 0
「1」になっているのは「64」「4」「2」の3つなので、64+4+2=70です。
上位3ビット「010」は10進数で2にあたり、サブネット番号2(64〜95のブロック)に入ることが、この重み表からも確認できます。
ブロックサイズの計算と、答えが一致しました。

まとめると、こうなります。
- ネットワークアドレス:172.16.64.0
- ブロードキャストアドレス:172.16.95.255
- 使用可能なホスト範囲:172.16.64.1〜172.16.95.254(8,190台)
つまずきポイント
クラスBの例のつもりで、クラスCのアドレスを使ってしまった
冒頭で書いた通り、クラスBの説明をするつもりで192.168.0.0を例に出してしまいました。
192.168.x.xは先頭が192〜223の範囲に入るので、クラスCです。
「よく見るプライベートIP」というだけで、クラスを確認せずに例に使ってしまったのが原因でした。
例を出すときは先頭の数字がどのクラスの範囲に入るか、一度確認するようにしています。
なぜ第3オクテットまで触れられるのか、最初はピンとこなかった
「/24なんだから、変更できるのは第4オクテットだけでは」と思い込んでいました。 これは、クラスCの場合はその通りなのですが、クラスBの場合は違います。
「デフォルトより右側だけ触れる」というルールに当てはめると、クラスBのデフォルトは/16なので、/24までの間(第3オクテット)はすべて触れる対象になる、と考えると整理できました。
ホスト数を、第3オクテットの残りビットだけで計算してしまった
/19の例では、変化している第3オクテットに意識が集中してしまい、第4オクテットの存在をうっかり忘れそうになりました。
第3オクテットの残り5ビットだけを見て「2の5乗−2=30台」と計算してしまうミスです。
- 正しいホスト部のビット数:第3オクテット5ビット+第4オクテット8ビット=13ビット
- 正しいホスト数:2の13乗−2=8,190台
ホスト部が2つのオクテットにまたがるケースでは、変化しているオクテットだけでなく、後ろのオクテットの8ビットも忘れずに合算する、という意識が必要でした。
プライベートIPでも、同じ考え方が使える
10.x.x.xはクラスA、172.16.x.xはクラスB、192.168.x.xはクラスCと、プライベートIPにも同じクラスの分類がそのまま当てはまります。
だからこそ、普段からよく触るアドレスであっても、基本に立ち返ってクラスを意識することが大切だと実感しました。
まとめ
- クラスCへの/24適用は、デフォルトがすでに/24なので何も変わらない
- クラスBへの/24適用は、第3オクテットがまるごとサブネット部になり、256個のサブネットができる
- /19や/22のように第3オクテットの途中で区切られる場合も、ブロックサイズ法で同じように計算できる
- 2進数の重み表でも、ブロックサイズの計算と同じ答えを確認できる
- ホスト部が2つのオクテットにまたがるときは、ビット数を合計してから計算する
これで、サブネットマスク・サブネット・クラスの基礎から計算、応用まで一通り整理できました。
