第2章 アドレスのしくみ|2-3|コース全体 19本中7本目
サブネットマスクの計算のやり方
サブネットマスクの
前の記事 ・2-2 IPアドレスの構造 ― 32ビットをどう読むか
サブネットマスクの計算は、3ステップで終わります
/26 のようなプレフィックス長から、そのネットワークに何台の機器を接続できるかを求めるには、次の3ステップを踏むだけです。
- 1
ホスト部の
ビット数を 出す 32 − プレフィックス長
- 2
アドレス総数を
出す 2 のホスト部ビット数乗
- 3
ホスト数を
出す アドレス総数 − 2
ネットワークアドレスとブロードキャストの2つを除きます。
例:/26 ならホスト部は 32 − 26 = 6ビットです。アドレス総数は 2⁶ = 64個です。ホスト数は 64 − 2 = 62台です。
この3ステップを、実例を使って順に説明します。
なぜ「ネットワーク部」と「ホスト部」に分けるのか
IPアドレスは32ビットの数字です。そのままでは、どのネットワークの何番目の機器かを区別できません。そこで、住所を町名と番地に分けるように、IPアドレスもネットワーク部とホスト部に分けます。ネットワーク部はどのネットワークかを、ホスト部はその中の何番目の機器かを表します。
どこまでがネットワーク部かを示す境目が、サブネットマスクです。この境目は、/26 のようなプレフィックス長でも表せます。
プレフィックス長とサブネットマスクの変換
/26 のようなプレフィックス長と、255.255.255.192 のようなサブネットマスクは、同じ境目を別の書き方で表したものです。変換の方法は次のとおりです。
- 1
プレフィックス長 → サブネットマスク
先頭からプレフィックス長の数だけ1を並べ、残りは0にします。最後に、8ビットごとに10進数へ変換します。
- 2
サブネットマスク → プレフィックス長
各オクテット(8ビットの区切り)を2進数に戻し、先頭から1が続く個数を数えます。たとえば255なら8ビット、0なら0ビットです。
| プレフィックス長 | 2進数の | サブネットマスク |
|---|---|---|
| /24 | 11111111.11111111.11111111.00000000 | 255.255.255.0 |
| /26 | 11111111.11111111.11111111.11000000 | 255.255.255.192 |
/26 は、先頭から26個が1なので、最初の3オクテットはすべて255になります。残りの8ビットは11000000で、先頭2ビットだけが1です。
これを10進数に変換すると、128 + 64 = 192 です。したがって、サブネットマスクは255.255.255.192になります。
3ステップの中身
192.168.10.130/26 を例に、1ステップずつ説明します。
ステップ1:プレフィックス長からホスト部のビット数を出す
IPアドレスは全部で32ビットで、プレフィックス長はネットワーク部のビット数です。32からプレフィックス長を引けば、ホスト部のビット数が分かります。
ステップ2:2のべき乗でアドレス総数を出す
ホスト部が n ビットなら、そのビットで表せる組み合わせは 2ⁿ 通りです。これが、そのネットワークに含まれるアドレスの総数で、ネットワークアドレスとブロードキャストも含みます。
ステップ3:ネットワークアドレスとブロードキャストを引いてホスト数を出す
64個のアドレスのうち、先頭の1つはネットワークアドレスで、そのネットワーク自体を表します。末尾の1つはブロードキャストアドレスで、そのネットワークの全員に送るときに使います。
どちらも機器には割り当てないので、2を引きます。
| 項目 | 値 |
|---|---|
| IPアドレス | 192.168.10.130 |
| ネットワークアドレス | 192.168.10.128 |
| ブロードキャストアドレス | 192.168.10.191 |
| 割り当て可能な範囲 | 192.168.10.129 〜 192.168.10.190 |
| ホスト数 | 62台 |
計算機で答え合わせをする
まず、自分で3ステップを計算してください。そのあと、次の計算機に同じ値を入力して答え合わせをします。IPアドレスとプレフィックス長を変えれば、別の問題でも試せます。
- CIDR表記
- 192.168.10.128/26
- サブネットマスク
- 255.255.255.192
- ネットワークアドレス
- 192.168.10.128
- ブロードキャスト
- 192.168.10.191
- 割り当て可能な範囲
- 192.168.10.129
〜 192.168.10.190 - ホスト数
- 62 台
- アドレス総数
- 64
- 入力したIPアドレスの種別
- プライベート
2進表記 11000000.10101000.00001010.10000010
太字の上位26ビットがネットワーク部で、残りがホスト部です。
IPアドレスやプレフィックス長を何度も変えて試したいときは、サブネット計算機のページも使えます。練習問題を解くときは、別のタブで開いておくと便利です。
2進数で見るとどうなるか
3ステップは10進数のまま計算できます。一方、コンピュータの内部では、IPアドレスとサブネットマスクのAND(論理積)でネットワークアドレスを求めています。
なぜそれで求められるのかを、先ほどの例の第4オクテットで確認します。
| 値 | 第4オクテットの |
|---|---|
| IPアドレス(130) | 10000010 |
| サブネットマスク(192) | 11000000 |
| AND の結果(128) | 10000000 |
ANDは、両方が1のときだけ1になる演算です。表の太字はホスト部で、マスク側が0なので、ANDを取ると0になります。
一方、上位2ビットはマスク側が1なので、IPアドレスの値がそのまま残ります。
このようにANDは、ネットワーク部を残してホスト部だけを0にする計算です。結果は 128 で、ステップ3で使ったネットワークアドレスの第4オクテットと一致します。
ブロックサイズで、AND計算をせずに一気に求める
ANDを毎回2進数で計算しなくても、ネットワークアドレスとブロードキャストアドレスは暗算で求められます。使うのは、次の式で求めるブロックサイズという値です。
サブネットマスクを左から見て、最初に255でなくなるオクテットを境目のオクテットと呼びます。IPアドレスの同じ位置のオクテットを見て、その値がブロックサイズの倍数のどの範囲に入るかを判定します。
境目より左のオクテットは、そのままコピーします。境目より右のオクテットは、ネットワークアドレスならすべて0に、ブロードキャストアドレスならすべて255にします。
192.168.10.130/26 で試します。サブネットマスク255.255.255.192 を左から見ると、最初に255でなくなるのは第4オクテットの192 です。ブロックサイズは256 − 192 = 64です。
IPアドレスの第4オクテットは 130 です。この値が64の倍数のどの範囲に入るかを探します。
64の倍数は 0, 64, 128, 192 です。130 は、128 以上 192 未満に入ります。
ネットワークアドレスは、そのブロックの先頭の 192.168.10.128 です。ブロードキャストアドレスは、次の倍数192の1つ前の 192.168.10.191 です。どちらも、ステップ3の表にあった値と一致します。
プレフィックス長が短ければ、境目のオクテットはもっと左になります。172.16.37.10/20 の例で確認します。
/20 のサブネットマスクは255.255.240.0です。左から見て最初に255でなくなるのは、第3オクテットの240です。ブロックサイズは256 − 240 = 16です。
IPアドレスの第3オクテットは37で、16の倍数の32以上48未満に入ります。
第3オクテットは、ネットワークアドレスでは32、ブロードキャストアドレスでは47です。境目より右の第4オクテットは、ネットワークアドレスなら0、ブロードキャストアドレスなら255です。したがって、ネットワークアドレスは172.16.32.0、ブロードキャストアドレスは172.16.47.255になります。
基本例:1つのネットワークを分割する
サブネットマスクの計算は、1つのネットワークを複数の小さなネットワークに分けるときにも使います。この分け方をサブネット化と呼びます。
たとえば部署ごとにネットワークを分けるのは、無駄な通信を減らし、届く範囲を限定するためです。192.168.10.0/24 を4つに分けると、次のようになります。
プレフィックス長を/24から/26に2大きくすると、ホスト部が2ビット減ります。そのため、1つのネットワークのアドレス総数は256個から64個へと4分の1になり、その分、ネットワークの数は4つに増えます。
この例は、同じ大きさに等分する分け方です。拠点ごとに台数が違う場合の分け方は、VLSMの記事で説明しています。
分割後にどのIPアドレスがどのネットワークに属するかは、ブロックサイズで判定できます。2つの機器が同じネットワークにあるかどうかの判定は、ゲートウェイの記事で説明しています。ルータが多い組織では、ネットワークをまとめた単位をエリアとして、経路情報の範囲を区切ることもあります。この区切り方は、OSPFの記事で説明しています。
間違えやすい点
なぜ −2 するのか
引く2つのアドレスには、それぞれ役割があります。1つは、ホスト部がすべて0のネットワークアドレスです。そのネットワーク自体を表すもので、特定の1台を指しません。
もう1つは、ホスト部がすべて1のブロードキャストアドレスです。そのネットワークの全員に送るときの宛先なので、1台に割り当てることはできません。そのため、機器に割り当てられるのは、その間のアドレスだけです。
ブロードキャストアドレス宛てのパケットが誰に届き、どこまで届くかは、ユニキャスト・ブロードキャスト・マルチキャストの記事で比べています。
/31 と /32 は例外(−2 しない)
/32 はホスト部が0ビットなので、アドレス1個だけを指します。特定の1台を指定するときに使います。たとえば、通信を許可・拒否するルールの一覧であるACL(Access Control List)で使います。CiscoのルータのACLでは、送信元・宛先の指定に、サブネットマスクを反転させたワイルドカードマスクを使います。読み方はACLの記事で説明しています。
/31 はホスト部が1ビットで、アドレスは2個しかないので、−2すると0台になってしまいます。
そこでRFC 3021により、/31 は例外になっています。ネットワークアドレスとブロードキャストという考え方を持たず、2個とも機器に割り当てます。この例外は、ルータ同士を直結する区間などで使われます。
プレフィックス長の数字が大きいほど、ネットワークは小さくなる
/25 や /26 のように数字が大きくなると、範囲が広がるように思えますが、実際は逆です。
ホスト部のビット数は 32 − プレフィックス長 なので、プレフィックス長が大きくなるほどホスト部のビット数は減ります。その結果、ネットワークは小さくなります。
サブネットマスク早見表(/8〜/32)
プレフィックス長ごとに、サブネットマスク・アドレス数・使えるホスト数を並べました。使えるホスト数は、アドレス数から2を引いた値です。
| プレフィックス長 | サブネットマスク | アドレス数 | 使える |
|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 | 16,777,214 |
| /9 | 255.128.0.0 | 8,388,608 | 8,388,606 |
| /10 | 255.192.0.0 | 4,194,304 | 4,194,302 |
| /11 | 255.224.0.0 | 2,097,152 | 2,097,150 |
| /12 | 255.240.0.0 | 1,048,576 | 1,048,574 |
| /13 | 255.248.0.0 | 524,288 | 524,286 |
| /14 | 255.252.0.0 | 262,144 | 262,142 |
| /15 | 255.254.0.0 | 131,072 | 131,070 |
| /16 | 255.255.0.0 | 65,536 | 65,534 |
| /17 | 255.255.128.0 | 32,768 | 32,766 |
| /18 | 255.255.192.0 | 16,384 | 16,382 |
| /19 | 255.255.224.0 | 8,192 | 8,190 |
| /20 | 255.255.240.0 | 4,096 | 4,094 |
| /21 | 255.255.248.0 | 2,048 | 2,046 |
| /22 | 255.255.252.0 | 1,024 | 1,022 |
| /23 | 255.255.254.0 | 512 | 510 |
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
| /31 | 255.255.255.254 | 2 | 2(例外) |
| /32 | 255.255.255.255 | 1 | 1(例外) |
/31 と /32 は、2を引きません。/31 は、RFC 3021 により2個とも機器に割り当てられます。ルータ同士を1対1で結ぶ回線に限った例外です。/32 は、アドレス1個そのものを指します。理由は、間違えやすい点の節で説明しています。
練習問題(全5問)
正解:4ビット
32 − 28 = 4ビットが
正解:32個
ホスト部は 32 − 27 = 5ビットです。
正解:172.16.5.0
/25 の
正解:2台
アドレス総数は 2^(32−30) = 4個で、
正解:ネットワークアドレスと
/31 は
選んでから「採点する」を押すと、解説つきで答え合わせができます。
さらに練習したい場合は、サブネット計算の練習問題(全23問)を使ってください。
ツールも試す
おすすめの本 PR
この記事の内容を扱っている本です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
