ネットワークの必須知識!サブネットマスクを基礎から徹底解説:「とは?」から役割、計算方法まで
インターネットが私たちの生活に欠かせないインフラとなった現代において、ネットワーク技術の理解はますます重要になっています。Webサイトの閲覧、メールの送受信、オンラインゲーム、ビデオ会議など、私たちが日常的に行っているこれらのデジタルな活動は、すべてネットワーク上での「通信」によって成り立っています。
ネットワーク通信の主役とも言えるのが「IPアドレス」です。IPアドレスは、インターネットに接続された個々のコンピューターやスマートフォン、サーバーなどの機器を識別するための「住所」のようなものです。しかし、IPアドレスだけでは、ネットワーク上のすべての機器が効率的に通信を行うことは困難です。そこで登場するのが、本記事の主役である「サブネットマスク」です。
サブネットマスクは、IPアドレスをより効率的に管理し、ネットワークを適切に分割するために不可欠な要素です。ネットワークエンジニアだけでなく、ネットワークの仕組みに関心のある方、自宅やオフィスのネットワーク設定を行う方にとっても、サブネットマスクの理解は非常に役立ちます。
本記事では、「サブネットマスクとは何か?」という最も基本的な疑問から始め、その役割、表現方法、そして実際の計算方法に至るまで、サブネットマスクのすべてを徹底的に解説します。約5000語というボリュームで、初心者の方にも分かりやすいように、丁寧な説明と具体的な例を交えながら深掘りしていきます。
さあ、複雑に思われがちなサブネットマスクの世界へ一緒に飛び込んでいきましょう!
1. なぜサブネットマスクが必要なのか?IPアドレスの限界とネットワーク管理の課題
まず、なぜサブネットマスクという概念が必要になったのかを理解するために、IPアドレスの基本的な仕組みと、それが持つ課題について考えてみましょう。
1.1. IPアドレスの基本構造(IPv4)
現在、最も広く使われているIPアドレスのバージョンは「IPv4(Internet Protocol Version 4)」です。IPv4アドレスは32ビットの二進数で表現されます。人間が扱いやすいように、この32ビットの二進数を8ビットずつ区切り、「.(ドット)」で区切った4つの10進数で表記するのが一般的です。これを「ドット10進数表記」と呼びます。
例えば、「192.168.1.1」というIPv4アドレスは、それぞれが8ビットの二進数を表しています。
* 192 は 二進数で 11000000
* 168 は 二進数で 10101000
* 1 は 二進数で 00000001
* 1 は 二進数で 00000001
したがって、「192.168.1.1」という32ビットのIPv4アドレスは、二進数では 11000000 10101000 00000001 00000001
となります。
この32ビットのIPアドレスは、大きく二つの部分に分けられます。
1. ネットワーク部 (Network Portion / Network ID): どのネットワークに所属しているかを示す部分です。同じネットワークに所属する機器は、ネットワーク部が同じになります。
2. ホスト部 (Host Portion / Host ID): そのネットワーク内で、どの機器(ホスト)であるかを具体的に示す部分です。ネットワーク部が同じであれば、ホスト部はユニーク(一意)である必要があります。
例えるなら、ネットワーク部が「〇〇市△△町」のような地域情報、ホスト部が「番地」のようなものです。同じ町内に住む人は「〇〇市△△町」までが共通で、その後の番地で個々を区別する、といったイメージです。
1.2. クラスフルアドレッシングとその問題点
かつて、IPアドレスは「クラス」という概念に基づいて、ネットワーク部とホスト部の区切りがあらかじめ決められていました。これが「クラスフルアドレッシング」です。IPアドレスの最初の数ビットを見ることで、そのアドレスがどのクラス(A、B、C、D、E)に属するかを判断し、ネットワーク部とホスト部の区切りを知ることができました。
- クラスA: 最初のビットが
0
で始まるアドレス。ネットワーク部は最初の8ビット、ホスト部は残りの24ビット。0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
- ネットワークアドレス範囲: 1.0.0.0 〜 126.0.0.0
- ネットワーク数: 126 個 (非常に少ない)
- 各ネットワークに収容できるホスト数: 2^24 – 2 = 約1670万台 (非常に多い)
- クラスB: 最初の2ビットが
10
で始まるアドレス。ネットワーク部は最初の16ビット、ホスト部は残りの16ビット。10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
- ネットワークアドレス範囲: 128.0.0.0 〜 191.255.0.0
- ネットワーク数: 2^14 = 約16,000 個 (中程度)
- 各ネットワークに収容できるホスト数: 2^16 – 2 = 約65,000台 (中程度)
- クラスC: 最初の3ビットが
110
で始まるアドレス。ネットワーク部は最初の24ビット、ホスト部は残りの8ビット。110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
- ネットワークアドレス範囲: 192.0.0.0 〜 223.255.255.0
- ネットワーク数: 2^21 = 約200万個 (多い)
- 各ネットワークに収容できるホスト数: 2^8 – 2 = 254台 (少ない)
- クラスD: マルチキャスト用 (224.0.0.0 〜 239.255.255.255)
- クラスE: 実験用、将来のために予約 (240.0.0.0 〜 255.255.255.255)
※ホスト数の「- 2」は、ホスト部が全て0のアドレス(ネットワークアドレス)と、ホスト部が全て1のアドレス(ブロードキャストアドレス)は通常ホストに割り当てられないためです。これらについては後述します。
このクラスフルアドレッシングには、いくつかの大きな問題がありました。
- IPアドレスの無駄: クラスAは1つのネットワークで約1670万台ものホストを収容できますが、実際にそれほど大規模なネットワークはごく限られています。多くの組織では、クラスAアドレスを取得しても、その大部分のホストアドレスが使われずに無駄になってしまいました。逆に、クラスCは254台しか収容できません。数百台以上の機器を持つ組織では、複数のクラスCアドレスを取得する必要があり、管理が煩雑になりました。
- ルーティングテーブルの肥大化: インターネット上のルーターは、ネットワーク部を見てパケットを転送します。クラスフルでは、ネットワーク部が8ビット、16ビット、24ビットのいずれかに固定されていたため、ルーターはインターネット上のすべての「ネットワークアドレス」を個別に管理する必要がありました。ネットワーク数が増えるにつれて、ルーターのルーティングテーブルが肥大化し、処理能力を圧迫する問題が発生しました。
- 柔軟性の欠如: 組織の規模や構造に合わせて、ネットワークを柔軟に分割したり統合したりすることが困難でした。
これらの問題を解決し、IPアドレスをより効率的に利用し、ルーティングを改善するために開発された技術が、サブネットマスクと、それに深く関連する「サブネット化」および「CIDR(Classless Inter-Domain Routing)」です。
2. サブネットマスクとは何か?定義と基本的な考え方
サブネットマスク(Subnet Mask)は、IPアドレスのどの部分がネットワーク部で、どの部分がホスト部であるかを識別するために使用される32ビットの数値です。IPアドレスと同様に、ドット10進数表記(例: 255.255.255.0)や、より簡潔なプレフィックス長表記(例: /24)で表現されます。
サブネットマスクの32ビットは、以下のルールで構成されます。
- ネットワーク部に対応するビット: すべて
1
- ホスト部に対応するビット: すべて
0
つまり、サブネットマスクは、ネットワーク部を示す「1」の連続と、ホスト部を示す「0」の連続で構成される数値です。例えば、サブネットマスクが 11111111 11111111 11111111 00000000
という二進数である場合、これはドット10進数では 255.255.255.0
となります。このマスクは、IPアドレスの最初の24ビットがネットワーク部、残りの8ビットがホスト部であることを示しています。
IPアドレス (例: 192.168.1.100) | 11000000 10101000 00000001 01100100 (32ビット) |
---|---|
サブネットマスク (例: 255.255.255.0) | 11111111 11111111 11111111 00000000 (32ビット) |
対応関係 | ネットワーク部 ホスト部 |
サブネットマスクは、IPアドレスと組み合わせて使用されます。IPアドレス単体では、ネットワークとホストの区別ができませんが、サブネットマスクと組み合わせることで、そのIPアドレスがどのネットワークに所属しているのか、そしてそのネットワーク内でどの機器に割り当てられているのかを特定できるようになります。
3. サブネットマスクの主要な役割と重要性
サブネットマスクは、ネットワーク管理において非常に重要な役割を果たします。その主な役割は以下の3点です。
-
IPアドレスからネットワークアドレスを特定する:
サブネットマスクを使うことで、任意のIPアドレスが所属するネットワーク全体の「ネットワークアドレス」を計算できます。ネットワークアドレスとは、そのネットワーク自体を識別するための特殊なIPアドレスであり、ホスト部がすべて0のアドレスです。ネットワークアドレスは、そのネットワーク内のすべての機器で共通になります。
この計算には、「論理積(AND演算)」という二進数計算が用いられます。IPアドレスのビット列とサブネットマスクのビット列を並べ、各桁ごとに以下のルールで計算します。- 1 AND 1 = 1
- 1 AND 0 = 0
- 0 AND 1 = 0
- 0 AND 0 = 0
つまり、サブネットマスクが「1」になっている桁のIPアドレスのビットはそのまま保持され、サブネットマスクが「0」になっている桁のIPアドレスのビットは強制的に「0」になります。これにより、IPアドレスのホスト部がすべて0に変換され、ネットワークアドレスが得られます。
例: IPアドレス 192.168.1.100 と サブネットマスク 255.255.255.0 の場合
第1オクテット 第2オクテット 第3オクテット 第4オクテット IPアドレス (192.168.1.100) 11000000
10101000
00000001
01100100
サブネットマスク (255.255.255.0) 11111111
11111111
11111111
00000000
AND演算結果 11000000
10101000
00000001
00000000
ドット10進数 192 168 1 0 したがって、IPアドレス 192.168.1.100 が所属するネットワークのネットワークアドレスは 192.168.1.0 であると特定できます。同じネットワーク(192.168.1.0/24)に所属するすべての機器(例: 192.168.1.50, 192.168.1.200など)は、このAND演算を行うとすべてネットワークアドレス 192.168.1.0 になります。
-
効率的なIPアドレス管理とネットワークの分割(サブネット化):
これがサブネットマスクの最も重要な役割の一つです。先述のクラスフルアドレッシングの問題点を克服するために、「サブネット化(Subnetting)」が行われます。サブネット化とは、本来ホスト部であったIPアドレスの一部のビットを「ネットワーク部」として使用することで、一つの大きなネットワークアドレス空間を、より小さく管理しやすい複数の「サブネット」に分割することです。サブネット化によって、以下のようなメリットが得られます。
* ブロードキャストドメインの縮小: 同じネットワークに所属するすべての機器に一斉に送信される「ブロードキャスト」という通信があります。ネットワークが巨大すぎると、このブロードキャストトラフィックがネットワーク全体にあふれかえり、パフォーマンスを低下させたり、セキュリティリスクを高めたりします。サブネット化によってネットワークを分割することで、ブロードキャストが届く範囲(ブロードキャストドメイン)が狭まり、ネットワークの負荷が軽減されます。
* ネットワーク管理の容易化: ネットワークを複数の小さなセグメントに分割することで、問題が発生した場合の原因特定やトラブルシューティングがしやすくなります。また、部門やフロアごとにネットワークを分けるといった論理的な構成も容易になります。
* セキュリティの向上: 異なるサブネット間の通信は通常、ルーターやファイアウォールを介して行われます。これにより、アクセス制御やセキュリティポリシーの適用が容易になります。
* IPアドレスの有効活用: 組織の規模やニーズに合わせて、必要な数のホストアドレスを持つサブネットを割り当てることで、IPアドレスの無駄遣いを減らすことができます。サブネット化は、サブネットマスクを変更することで実現されます。具体的には、本来ホスト部を示す「0」が並んでいたサブネットマスクのビットの一部を、「1」に変えることで、その部分をネットワーク部として利用します。
例: 元のネットワークが 192.168.1.0/24 (サブネットマスク 255.255.255.0)だったとします。これはクラスCアドレス相当で、ネットワーク部は最初の24ビット、ホスト部は残りの8ビットです。このネットワークを二つのサブネットに分割したい場合、ホスト部の8ビットのうち最初の1ビットをネットワーク部として借用します。
- 元のサブネットマスク (24ビットがネットワーク部):
11111111 11111111 11111111
00000000
(255.255.255.0) - ホスト部の1ビットをネットワーク部に借用:
11111111 11111111 11111111 1
0000000
新しいサブネットマスク:11111111 11111111 11111111 10000000
(255.255.255.128)
この新しいサブネットマスク (255.255.255.128) は、ネットワーク部が25ビットであることを意味し、プレフィックス長表記では
/25
となります。ホスト部として残ったビットは 32 – 25 = 7ビットです。
この変更により、元の 192.168.1.0/24 ネットワークは、以下の二つのサブネットに分割されます。-
サブネット1: ネットワーク部が
11000000 10101000 00000001 0
で始まるアドレス群- ネットワークアドレス: 192.168.1.
0
(11000000 10101000 00000001 00000000
) - ブロードキャストアドレス: 192.168.1.
127
(11000000 10101000 00000001 01111111
) - 利用可能なホストアドレス範囲: 192.168.1.1 〜 192.168.1.126
- ホスト数: 2^7 – 2 = 126台
- ネットワークアドレス: 192.168.1.
-
サブネット2: ネットワーク部が
11000000 10101000 00000001 1
で始まるアドレス群- ネットワークアドレス: 192.168.1.
128
(11000000 10101000 00000001 10000000
) - ブロードキャストアドレス: 192.168.1.
255
(11000000 10101000 00000001 11111111
) - 利用可能なホストアドレス範囲: 192.168.1.129 〜 192.168.1.254
- ホスト数: 2^7 – 2 = 126台
- ネットワークアドレス: 192.168.1.
このように、サブネットマスクを変更することで、一つのネットワークを複数の小さなネットワークに分割し、それぞれのネットワークに適切なIPアドレス範囲を割り当てることができます。これにより、IPアドレスの管理がより細やかになり、ブロードキャストドメインの縮小などのメリットが得られます。
- 元のサブネットマスク (24ビットがネットワーク部):
-
ルーティングの効率化:
ルーターは、パケットがどのネットワーク宛てかを判断し、適切な経路に転送する役割を担います。この判断において、サブネットマスクが重要な役割を果たします。ルーターは、パケットの宛先IPアドレスと、自身の持つルーティングテーブルに登録されている各ネットワークの「ネットワークアドレス」と「サブネットマスク」を照合します。ルーターは、宛先IPアドレスに各ルーティングエントリのサブネットマスクをAND演算し、ネットワークアドレスを計算します。そして、その計算結果が、ルーティングテーブルに登録されているネットワークアドレスと一致するかを確認します。最も長く一致するネットワーク部を持つ経路が選択されます(これを「最長一致の原則」と呼びます)。
サブネット化によってネットワークが分割されると、ルーターのルーティングテーブルは、個々のホストアドレスではなく、より小さなネットワーク(サブネット)単位で経路情報を管理できるようになります。これは、電話帳で個人の名前を一つ一つ調べるのではなく、「〇〇市」という単位でグループ化された情報を見るようなものです。これにより、ルーティングテーブルのエントリ数を削減し、ルーターの処理負荷を軽減し、インターネット全体のルーティング効率を向上させることができます。この技術は、次に説明するCIDRと密接に関連しています。
4. サブネットマスクの表現方法
サブネットマスクは、主に二つの方法で表現されます。
-
ドット10進数表記 (Dotted Decimal Notation):
IPアドレスと同様に、32ビットを8ビットずつ区切り、それぞれのオクテット(8ビット)を10進数に変換し、ドットで区切って表現する方法です。
例: 255.255.255.0, 255.255.255.128, 255.255.0.0, 255.0.0.0それぞれのオクテットは、8ビットの二進数の値に対応します。例えば、「255」は二進数で
11111111
、「128」は10000000
、「0」は00000000
です。
ドット10進数表記では、サブネットマスクの「1」は常に左詰めで連続し、「0」は右詰めで連続するというルールがあります。つまり、255.255.255.0
(11111111 11111111 11111111 00000000
) は正しいサブネットマスクですが、255.255.0.255
(11111111 11111111 00000000 11111111
) のように、「1」と「0」が混在する形になるドット10進数は、通常サブネットマスクとして使用されません(これを不定長サブネットマスクと呼ぶことがありますが、一般的なIPv4ルーティングでは扱えません)。 -
プレフィックス長表記 (Prefix Length Notation / CIDR Notation):
サブネットマスクの「1」が何ビット連続しているかを示す数値(プレフィックス長)を、IPアドレスの後に/
(スラッシュ)を付けて表現する方法です。この表記はCIDRの導入によって一般的になりました。
例: /24, /25, /16, /8プレフィックス長は、ネットワーク部のビット数を直接示します。
*/24
は、ネットワーク部が24ビット、ホスト部が 32 – 24 = 8ビットであることを意味し、ドット10進数では 255.255.255.0 に対応します。
*/25
は、ネットワーク部が25ビット、ホスト部が 32 – 25 = 7ビットであることを意味し、ドット10進数では 255.255.255.128 に対応します。
*/16
は、ネットワーク部が16ビット、ホスト部が 32 – 16 = 16ビットであることを意味し、ドット10進数では 255.255.0.0 に対応します。
*/8
は、ネットワーク部が8ビット、ホスト部が 32 – 8 = 24ビットであることを意味し、ドット10進数では 255.0.0.0 に対応します。プレフィックス長表記は、サブネットマスクをより簡潔に表現できるため、ネットワークの設計や設定において広く利用されています。
よく使われるサブネットマスクとプレフィックス長、ホスト数の関係
プレフィックス長 ドット10進数 2進数 (下位オクテット) ホスト部ビット数 収容可能ホスト数 (2^n – 2) /8 255.0.0.0 00000000.00000000.00000000 24 16,777,214 /16 255.255.0.0 00000000.00000000 16 65,534 /24 255.255.255.0 00000000 8 254 /25 255.255.255.128 10000000 7 126 /26 255.255.255.192 11000000 6 62 /27 255.255.255.224 11100000 5 30 /28 255.255.255.240 11110000 4 14 /29 255.255.255.248 11111000 3 6 /30 255.255.255.252 11111100 2 2 /31 255.255.255.254 11111110 1 0 (ポイントツーポイントリンク用) /32 255.255.255.255 11111111 0 0 (単一ホスト) ※収容可能ホスト数の (2^n – 2) は、ホスト部ビット数を n とした場合の計算です。ネットワークアドレスとブロードキャストアドレスを除いた数です。
/31
と/32
は特殊なケースで、通常ホストには割り当てません。
5. サブネットの計算方法(実践編)
ここでは、具体的なIPアドレスとサブネットマスクが与えられた場合に、そのネットワークに関する情報を計算する方法を、いくつかの例を通して詳しく見ていきましょう。
計算のステップ:
1. IPアドレスとサブネットマスクを32ビットの二進数に変換します。
2. IPアドレスの二進数とサブネットマスクの二進数を使ってAND演算を行い、ネットワークアドレスの二進数を求めます。
3. ネットワークアドレスの二進数をドット10進数に変換します。
4. ブロードキャストアドレスを計算します。ブロードキャストアドレスは、ネットワークアドレスの「ホスト部」に対応するビットをすべて「1」にしたものです。
5. ブロードキャストアドレスの二進数をドット10進数に変換します。
6. 利用可能なホストアドレスの範囲を特定します。これは、ネットワークアドレスの次のアドレスから、ブロードキャストアドレスの直前のアドレスまでです。
7. 収容可能なホスト数を計算します。これは、ホスト部のビット数を n とすると、通常 2^n – 2 で求められます。
例1: IPアドレス 192.168.1.100, サブネットマスク 255.255.255.0 (/24)
-
二進数変換:
- IPアドレス 192.168.1.100:
11000000.10101000.00000001.01100100
- サブネットマスク 255.255.255.0:
11111111.11111111.11111111.00000000
- IPアドレス 192.168.1.100:
-
ネットワークアドレス計算 (AND演算):
IP: 11000000.10101000.00000001.01100100
MASK: 11111111.11111111.11111111.00000000
----------------------------------------
NET : 11000000.10101000.00000001.00000000
ネットワーク部は最初の24ビット(マスクが1の部分)で、ホスト部は残りの8ビット(マスクが0の部分)です。 -
ネットワークアドレス (ドット10進数):
11000000.10101000.00000001.00000000
->192.168.1.0
-
ブロードキャストアドレス計算:
ネットワークアドレスのホスト部(最後の8ビット)をすべて1にします。- ネットワークアドレス:
11000000.10101000.00000001.
00000000
- ホスト部をすべて1に:
11000000.10101000.00000001.
11111111
- ネットワークアドレス:
-
ブロードキャストアドレス (ドット10進数):
11000000.10101000.00000001.11111111
->192.168.1.255
-
利用可能なホストアドレス範囲:
ネットワークアドレス (192.168.1.0) の次から、ブロードキャストアドレス (192.168.1.255) の直前まで。- 範囲:
192.168.1.1
から192.168.1.254
まで
- 範囲:
-
収容可能ホスト数:
ホスト部は8ビットです。 2^8 – 2 = 256 – 2 = 254台。
結果:
* ネットワークアドレス: 192.168.1.0
* サブネットマスク: 255.255.255.0 (/24)
* ブロードキャストアドレス: 192.168.1.255
* 利用可能ホストアドレス範囲: 192.168.1.1 ~ 192.168.1.254
* 収容可能ホスト数: 254台
例2: IPアドレス 172.16.20.50, サブネットマスク 255.255.255.128 (/25)
この例では、クラスBのプライベートIPアドレス空間の一部を使用し、サブネット化されたネットワークを考えます。サブネットマスク /25
は、ネットワーク部が25ビット、ホスト部が7ビットであることを意味します。
-
二進数変換:
- IPアドレス 172.16.20.50:
- 172:
10101100
- 16:
00010000
- 20:
00010100
- 50:
00110010
->10101100.00010000.00010100.00110010
- 172:
- サブネットマスク 255.255.255.128 (/25):
- 255:
11111111
- 255:
11111111
- 255:
11111111
- 128:
10000000
->11111111.11111111.11111111.10000000
ネットワーク部は最初の25ビット(最初の3オクテットすべて + 第4オクテットの最初の1ビット)、ホスト部は残りの7ビットです。
- 255:
- IPアドレス 172.16.20.50:
-
ネットワークアドレス計算 (AND演算):
IP: 10101100.00010000.00010100.00110010
MASK: 11111111.11111111.11111111.10000000
----------------------------------------
NET : 10101100.00010000.00010100.00000000
最後のオクテットに注目:00110010
AND10000000
=00000000
-
ネットワークアドレス (ドット10進数):
10101100.00010000.00010100.00000000
->172.16.20.0
-
ブロードcastアドレス計算:
ネットワークアドレスのホスト部(最後の7ビット)をすべて1にします。- ネットワークアドレス:
10101100.00010000.00010100.
0000000
(ホスト部7ビット) - ホスト部をすべて1に:
10101100.00010000.00010100.
1111111
最後のオクテットのホスト部7ビットが1111111
なので、これは二進数で01111111
となり、10進数では 127 です。
- ネットワークアドレス:
-
ブロードキャストアドレス (ドット10進数):
10101100.00010000.00010100.01111111
->172.16.20.127
-
利用可能なホストアドレス範囲:
ネットワークアドレス (172.16.20.0) の次から、ブロードキャストアドレス (172.16.20.127) の直前まで。- 範囲:
172.16.20.1
から172.16.20.126
まで
- 範囲:
-
収容可能ホスト数:
ホスト部は7ビットです。 2^7 – 2 = 128 – 2 = 126台。
結果:
* IPアドレス 172.16.20.50 は、
* ネットワークアドレス: 172.16.20.0
* サブネットマスク: 255.255.255.128 (/25)
* ブロードキャストアドレス: 172.16.20.127
* 利用可能ホストアドレス範囲: 172.16.20.1 ~ 172.16.20.126
* 収容可能ホスト数: 126台
例3: IPアドレス 192.168.100.150, サブネットマスク 255.255.255.240 (/28)
この例では、さらに細かくサブネット化されたネットワークを考えます。サブネットマスク /28
は、ネットワーク部が28ビット、ホスト部が4ビットであることを意味します。
-
二進数変換:
- IPアドレス 192.168.100.150:
- 192:
11000000
- 168:
10101000
- 100:
01100100
- 150:
10010110
->11000000.10101000.01100100.10010110
- 192:
- サブネットマスク 255.255.255.240 (/28):
- 255:
11111111
- 255:
11111111
- 255:
11111111
- 240:
11110000
->11111111.11111111.11111111.11110000
ネットワーク部は最初の28ビット(最初の3オクテットすべて + 第4オクテットの最初の4ビット)、ホスト部は残りの4ビットです。
- 255:
- IPアドレス 192.168.100.150:
-
ネットワークアドレス計算 (AND演算):
IP: 11000000.10101000.01100100.10010110
MASK: 11111111.11111111.11111111.11110000
----------------------------------------
NET : 11000000.10101000.01100100.10010000
最後のオクテットに注目:10010110
AND11110000
=10010000
-
ネットワークアドレス (ドット10進数):
11000000.10101000.01100100.10010000
->192.168.100.144
(10010000
は 1128 + 064 + 032 + 116 + 08 + 04 + 02 + 01 = 128 + 16 = 144) -
ブロードキャストアドレス計算:
ネットワークアドレスのホスト部(最後の4ビット)をすべて1にします。- ネットワークアドレス:
11000000.10101000.01100100.1001
0000
(ホスト部4ビット) - ホスト部をすべて1に:
11000000.10101000.01100100.1001
1111
最後のオクテットのホスト部4ビットが1111
なので、これは二進数で10011111
となり、10進数では 1128 + 064 + 032 + 116 + 18 + 14 + 12 + 11 = 128 + 16 + 8 + 4 + 2 + 1 = 159 です。
- ネットワークアドレス:
-
ブロードキャストアドレス (ドット10進数):
11000000.10101000.01100100.10011111
->192.168.100.159
-
利用可能なホストアドレス範囲:
ネットワークアドレス (192.168.100.144) の次から、ブロードキャストアドレス (192.168.100.159) の直前まで。- 範囲:
192.168.100.145
から192.168.100.158
まで
- 範囲:
-
収容可能ホスト数:
ホスト部は4ビットです。 2^4 – 2 = 16 – 2 = 14台。
結果:
* IPアドレス 192.168.100.150 は、
* ネットワークアドレス: 192.168.100.144
* サブネットマスク: 255.255.255.240 (/28)
* ブロードキャストアドレス: 192.168.100.159
* 利用可能ホストアドレス範囲: 192.168.100.145 ~ 192.168.100.158
* 収容可能ホスト数: 14台
これらの計算例からわかるように、サブネットマスクのビット列(特に「1」がどこまで続いているか)が、ネットワークとホストの境界を決定し、ネットワークアドレス、ブロードキャストアドレス、そして利用可能なホストアドレス範囲を計算するための鍵となります。
6. CIDR (Classless Inter-Domain Routing) とサブネットマスク
サブネットマスクの理解において、CIDR (Classless Inter-Domain Routing) は避けて通れない重要な概念です。先述のクラスフルアドレッシングの問題点を根本的に解決するために、1993年にCIDRが導入されました。
CIDRの最も重要な点は、「IPアドレスをクラスという固定的な枠組みにとらわれず、ネットワーク部とホスト部の区切りを任意のビット位置で決定できるようにした」ことです。この「任意のビット位置」を示すために使われるのが、サブネットマスクのプレフィックス長表記(/nn)です。
例えば、以前はクラスBアドレスは常に /16、クラスCアドレスは常に /24 でした。しかしCIDRでは、192.168.1.0 というアドレス空間を /24 だけでなく、/25, /26, /27 といったより長いプレフィックス長で分割したり、あるいは複数のクラスCアドレスブロックをまとめて 192.168.0.0/22 のように、より短いプレフィックス長で表現したりすることが可能になりました。
CIDRのメリット
- IPアドレスの有効活用: 組織が必要なホスト数に応じて、柔軟なサイズのネットワーク(サブネット)を割り当てられるようになりました。例えば、数百台の機器が必要な組織には /23 (510ホスト)、数十台なら /26 (62ホスト) といったように、無駄なくアドレス空間を利用できます。これは「VLSM (Variable Length Subnet Masking)」と呼ばれる技術を可能にしました。VLSMとは、一つのネットワーク内で、異なるサブネットマスク長のサブネットを混在させることを許可するものです。
- ルーティングテーブルの集約化: CIDRでは、複数の連続したネットワークアドレスブロックを、より大きな単一のプレフィックス長で表現し、ルーターに登録することができます。これを「経路集約(Route Aggregation / Supernetting)」と呼びます。例えば、192.168.0.0/24 から 192.168.3.0/24 までの4つのネットワークは、192.168.0.0/22 という単一の経路情報としてルーターに登録できます。これにより、インターネットのコアを担うルーターのルーティングテーブルのエントリ数が劇的に削減され、ルーティング効率が向上しました。
CIDRは、IPアドレス枯渇問題を緩和し、インターネットの持続的な成長を支える上で不可欠な技術となりました。そして、このCIDRの仕組みを支える根幹にあるのが、ネットワーク部とホスト部の区切りを柔軟に定義できるサブネットマスクなのです。プレフィックス長表記 /nn
は、CIDRアドレスブロックの標準的な表現方法であり、そのプレフィックス長 nn がそのままサブネットマスクの「1」の数を示しています。
7. 特別なIPアドレスとサブネットマスク
ネットワーク内には、通常ホストには割り当てられない特別なIPアドレスが存在します。
-
ネットワークアドレス:
特定のネットワーク全体を識別するためのアドレスです。そのサブネットマスクにおいて、ホスト部に対応するすべてのビットが0
になっているIPアドレスです。
例: サブネット 192.168.1.0/24 のネットワークアドレスは 192.168.1.0 です。
このアドレスは、そのネットワーク全体を指し示すためにルーティングなどで使用されます。個々の機器に割り当てることはできません。 -
ブロードキャストアドレス:
特定のネットワークに所属するすべての機器に同時にデータを送信するためのアドレスです。そのサブネットマスクにおいて、ホスト部に対応するすべてのビットが1
になっているIPアドレスです。
例: サブネット 192.168.1.0/24 のブロードキャストアドレスは 192.168.1.255 です。
このアドレス宛てに送信されたパケットは、同じネットワーク内のすべての機器に届きます。個々の機器に割り当てることはできません。
これらの特別なアドレス(ネットワークアドレスとブロードキャストアドレス)が存在するため、ホスト部のビット数が n の場合、収容可能なホストアドレスの数は 2^n からこれら2つのアドレスを除いた 2^n – 2 となります。ただし、/31
(ホスト部1ビット) や /32
(ホスト部0ビット) のようにホスト数が2未満になる場合は、このルールが適用されず、特殊な用途(/31
はポイントツーポイントリンク、/32
は特定のホストを指す場合など)で使用されることがあります。
プライベートIPアドレスとサブネットマスク
インターネットに直接接続されない組織内ネットワーク(LAN)では、「プライベートIPアドレス」と呼ばれる特定の範囲のアドレスが使用されます。これらのアドレスはインターネット上では重複して使用できますが、インターネットとの境界にあるルーター(NATなど)でグローバルIPアドレスに変換されて外部と通信します。
プライベートIPアドレスの範囲は以下の通りです。
* クラスA: 10.0.0.0 ~ 10.255.255.255 (/8)
* クラスB: 172.16.0.0 ~ 172.31.255.255 (/12)
* クラスC: 192.168.0.0 ~ 192.168.255.255 (/16)
これらのアドレス範囲は、通常対応するプレフィックス長(/8, /12, /16)で一つの大きなネットワークとして扱われることが多いですが、実際にはサブネットマスクを用いて、さらに小さなサブネットに分割して利用するのが一般的です。例えば、自宅や小規模オフィスでは 192.168.1.0/24 のように、クラスCのプライベートIPアドレス空間を /24 でサブネット化して使用することが非常に多いです。大規模な企業では、10.0.0.0/8 の空間を /16 や /24 など、必要なサイズに細かくサブネット化して部門ごとに割り当てる、といった運用が行われます。
8. IPv6とサブネットマスクの概念
現在、IPv4アドレスは枯渇が進んでおり、次世代のIPアドレスである「IPv6 (Internet Protocol Version 6)」への移行が進められています。IPv6アドレスは128ビット長であり、IPv4の32ビットと比較して膨大な数のアドレス空間を提供します。
IPv6アドレスは、8オクテット(16進数4桁のグループ)をコロン :
で区切って表記するのが一般的です。
例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
省略記法として、0の連続を ::
で表したり、各オクテットの先頭の0を省略したりすることもできます。
例: 2001:db8:85a3::8a2e:370:7334
IPv6においても、IPアドレスはネットワーク部とホスト部に分けられますが、その概念はIPv4とは少し異なります。
- ネットワークプレフィックス (Network Prefix): IPv4のネットワーク部に相当します。
- インターフェースID (Interface ID): IPv4のホスト部に相当し、通常はMACアドレスなどから生成されるユニークな値です。
IPv6では、ネットワーク部とホスト部の区切りを示すのに、IPv4のようなドット10進数のサブネットマスクは使用しません。代わりに、IPアドレスの後に /
とプレフィックス長を付けて表記します。これはIPv4のCIDR表記と同じ考え方です。
例: 2001:db8:abcd::/48
これは、ネットワークプレフィックスが48ビットであることを示します。残りの128 – 48 = 80ビットがインターフェースID(ホスト部)となります。
IPv6では、一つのLANセグメントやサブネットに割り当てられるネットワークプレフィックス長は、通常 /64 です。これは、IPv6のステートレスアドレス自動構成(SLAAC)という機能が、インターフェースIDに64ビットを想定しているためです。/64 のプレフィックスを持つネットワークでは、2^64 個という、実質的に無限とも言える数のホストを収容できます。
サイト全体や組織には /48 や /56 といった短いプレフィックス長が割り当てられ、その中から /64 のサブネットを多数作成して、各LANセグメントに割り当てて使用するのが一般的なIPv6の運用スタイルです。IPv4のように、ホスト数を節約するために /64 より長いプレフィックス長(例: /112)を使用することも技術的には可能ですが、SLAACが利用できなくなるなどのデメリットがあるため、特殊な場合を除き推奨されません。
したがって、IPv6におけるサブネットマスクの概念は、プレフィックス長 /nn
の形で表現され、主にネットワークプレフィックスとインターフェースIDの区切りを示すものとして機能します。IPv4のようなドット10進数のマスク値を用いたAND演算によるネットワークアドレス計算といった作業は通常行いません。
9. サブネットマスクに関するよくある疑問
Q1: なぜサブネットマスクは「255」や「192」「128」のような値になるのですか?
A1: サブネットマスクは、ネットワーク部を示す連続した「1」と、ホスト部を示す連続した「0」で構成される32ビットの二進数です。ドット10進数表記は、この32ビットを8ビットずつ区切って10進数に変換したものです。
8ビットの二進数を10進数に変換すると以下のようになります。
* 11111111
= 255
* 11111110
= 254
* 11111100
= 252
* 11111000
= 248
* 11110000
= 240
* 11100000
= 224
* 11000000
= 192
* 10000000
= 128
* 00000000
= 0
サブネットマスクは「1」の連続の後に「0」の連続が続く形になるため、各オクテットがこれらの値のいずれかになります。例えば、/24
は最初の24ビットが1なので、最初の3つのオクテットが 11111111
(255) となり、最後のオクテットが 00000000
(0) となって、255.255.255.0 となります。/26
は最初の26ビットが1なので、最初の3つのオクテットが255、4つ目のオクテットが 11000000
(192) となって、255.255.255.192 となります。
Q2: サブネットマスクを間違えて設定するとどうなりますか?
A2: サブネットマスクの設定を間違えると、同じネットワーク内にいるはずの機器と通信できなくなったり、あるいは本来通信できないはずの異なるネットワークの機器と直接通信しようとしてしまったりする可能性があります。
- ホスト部のビットを誤ってネットワーク部として認識する: 誤ったサブネットマスクによって、本来ホスト部として認識されるべきビットがネットワーク部として認識された場合、同じ物理ネットワーク上にいる機器でも、IPアドレスは連続しているのにサブネットマスクによるネットワークアドレス計算結果が異なってしまい、「別のネットワークにいる」と判断してしまいます。その結果、直接通信ができず、パケットがルーターへ送られてしまいますが、ルーターもそのネットワークを正しく認識できないため、通信が失敗します。
- ネットワーク部のビットを誤ってホスト部として認識する: この場合、本来異なるネットワークにいる機器同士を同じネットワークにいると誤解し、直接通信しようと試みますが、物理的にネットワークが分かれているため通信は成功しません。
ネットワーク内のすべての機器(コンピューター、サーバー、プリンター、ルーターのインターフェースなど)は、同じネットワークセグメントに接続されている限り、まったく同じサブネットマスクを使用する必要があります。
Q3: ネットワークアドレスやブロードキャストアドレスはなぜホストに割り当てられないのですか?
A3: これらのアドレスは、特定のネットワーク内の通信制御のために予約されているからです。
* ネットワークアドレス (ホスト部すべて0): そのネットワーク全体を代表するアドレスとして使用されます。ルーターがルーティングテーブルを参照する際に、ネットワークの宛先として使用されます。もしホストに割り当ててしまうと、ネットワーク全体への通信なのか、その特定のホストへの通信なのかを区別できなくなってしまいます。
* ブロードキャストアドレス (ホスト部すべて1): そのネットワーク内のすべてのホストへ同時にデータを送信するために使用されます。もしホストに割り当ててしまうと、そのホスト宛ての通信なのか、ネットワーク全体へのブロードキャスト通信なのかを区別できなくなってしまいます。
これらのアドレスは、ネットワークの仕組み上特別な意味を持つため、一般的なエンドポイント(コンピューターやプリンターなど)には割り当てられません。
Q4: VLSM (Variable Length Subnet Masking) とは何ですか?
A4: VLSMは、「可変長サブネットマスク」と訳され、一つの大きなネットワークアドレス空間内で、異なる長さのサブネットマスクを持つ複数のサブネットを共存させる技術です。CIDRの導入によって可能になりました。
クラスフルアドレッシングでは、一つのネットワークはすべて同じサブネットマスク長である必要がありました。しかし、VLSMを利用することで、ホスト数が少ないリンクには /30 のような短いアドレス空間を、多くのホストが必要なLANセグメントには /24 のような広いアドレス空間を割り当てるといった、より効率的なIPアドレスの割り当てが可能になります。
これにより、IPアドレス空間の無駄を最小限に抑えることができます。現在のネットワークでは、VLSMが広く利用されています。
10. まとめ:サブネットマスク理解の重要性
ここまで、サブネットマスクが何であるか、そしてその役割、計算方法、関連技術(CIDR, VLSM)について詳しく見てきました。サブネットマスクは、単なる数値の羅列ではなく、IPアドレスのネットワーク部とホスト部を区別し、ネットワークを効率的に分割・管理し、ルーティングを最適化するための非常に強力なツールです。
サブネットマスクを理解することで、以下のことが可能になります。
- 与えられたIPアドレスが、どのネットワークに所属しているかを正確に判断できる。
- ネットワークアドレス、ブロードキャストアドレス、利用可能なホストアドレス範囲を計算できる。
- ネットワーク設計において、必要な規模のネットワークを効率的に構築・管理できる。
- ネットワークの問題が発生した場合に、IPアドレスとサブネットマスクの関係から原因を切り分けられる。
- ルーターやスイッチなどのネットワーク機器の設定を適切に行える。
現代のIPネットワークは、サブネットマスクとCIDRによって支えられています。インターネット全体も、組織内のLANも、この技術なしには成り立ちません。
もしあなたがネットワークの学習を始めたばかりであれば、最初はサブネットマスクの計算やビット演算に戸惑うかもしれません。しかし、繰り返し計算練習を行い、なぜその計算結果になるのか(特にAND演算の仕組みや、ホスト部のビットがネットワークアドレスとブロードキャストアドレスにどう影響するか)を理解しようと努めることで、徐々に腑に落ちてくるはずです。
この記事が、サブネットマスクの基本を理解し、さらに深くネットワークの世界を探求するための一助となれば幸いです。複雑なネットワークも、基本となるIPアドレスとサブネットマスクの理解があれば、きっとその仕組みが見えてくるでしょう。