調べて分かる道具箱

IPアドレスとサブネットの計算

192.0.2.0/24 のほか、192.0.2.10 255.255.255.0 のように空白で区切った書き方も読みます。

192.0.2.0/24 のビットの並び192020192020アドレス11000000000000000000001000000000マスク11111111111111111111111100000000ネットワーク11000000000000000000001000000000/24ネットワーク部24ビットホスト部8ビット
図が入りきらないときは、図の上で横に動かせます(キーボードでも動きます)。
ネットワークアドレス
192.0.2.0このまとまり自体の名前
ブロードキャストアドレス
192.0.2.255この線につながっている全員あて
使えるアドレスの範囲
192.0.2.1 〜 192.0.2.254機器に付けられるもの
使えるアドレスの数
254全部の数から2つ引いた数
全部のアドレスの数
2562の8乗
サブネットマスク
255.255.255.010進の書き方
プレフィックス長
/24CIDR の書き方
ワイルドカードマスク
0.0.0.255マスクの 0 と 1 を入れ替えたもの
入れたアドレスの役目
ネットワークアドレスそのものです。機器には付けられません。
特別な決まりのあるアドレスか
文書用 TEST-NET-1(このページの例に使っています)192.0.2.0/24・RFC 5737
昔の「クラス」(いまの決まりではありません)
クラスC昔は先頭24ビットがネットワークだった。1993年からの CIDR に置き換えられた考え方なので、 長さは書いてあるとおりに読みます

アドレスの範囲を CIDR に直す

「192.0.2.5 から 192.0.2.10 まで」のような範囲は、ふつう1つの CIDR には収まりません。 いくつに分かれるか、分かれたものを全部出します。

「〜」でも「-」でも「から」でも区切れます。192.0.2.5-192.0.2.10

192.0.2.5 〜 192.0.2.10 は 4個の CIDR に分かれます(全部で 6 個のアドレス)。

この範囲をちょうど覆う CIDR の一覧
CIDRその範囲個数
192.0.2.5/32192.0.2.51
192.0.2.6/31192.0.2.6
〜 192.0.2.7
2
192.0.2.8/31192.0.2.8
〜 192.0.2.9
2
192.0.2.10/32192.0.2.101

やってみる

1問目 / 全6問

192.0.2.0/24 で、実際に機器に付けられるアドレスはいくつですか?

よくある質問

「使えるアドレスの数」が全体より2つ少ないのはなぜですか?

いちばん先頭のネットワークアドレスと、いちばん最後のブロードキャストアドレスの2つが取られているからです。ネットワークアドレスは「このまとまり自体」を指す名前で、ブロードキャストアドレスは「この線につながっている全員あて」を意味します。RFC 1122 は、ホストの部分がすべて 0 やすべて 1 になるアドレスを機器に付けてはいけないと定めています。だから 192.0.2.0/24 なら 256 − 2 = 254 個です。

/31 だと使えるアドレスが0個になってしまいます。使えないのですか?

使えます。2個です。RFC 3021(2000年12月)が、ルータどうしを1本の線でつなぐ場所に限って31ビットのマスクを使ってよいと決めました。この2つのアドレスは「ホストのアドレスとして解釈しなければならない」と書かれています。線の両端は2つしかないのに、ネットワークとブロードキャストのぶんまで含めて4つ使うのは無駄だ、というのが理由です。500本の線がある網なら1000個のアドレスが浮きます。

/32 は何に使うのですか?

1台だけを名指しするときに使います。ホストのビットが0個なので、まとまりの中身はそのアドレス1個だけです。経路の書き方や、通信を許す相手を1台に限る設定で出てきます。「全体 − 2」の式を当てはめると −1 になってしまうので、この式は使いません。

255.255.0.255 のようなサブネットマスクは使えますか?

使えません。サブネットマスクは「上の位から 1 が続き、そのあと 0 が続く」形しか許されません。RFC 1812 は、正しいマスクを「上位に続く1の並び・下位に続く0の並び・その間に何も無いもの」と書いています。飛び飛びのマスクを受け取ると、ネットワークアドレスも使えるアドレスの範囲も違う答えになるので、この計算機は理由を出して断ります。

ワイルドカードマスクとサブネットマスクは何が違うのですか?

0 と 1 の意味が逆です。Cisco の資料は、ワイルドカードマスクの 0 を「このビットはぴったり一致すること」、1 を「このビットは見なくてよい」と説明しています。/24 のサブネットマスク 255.255.255.0 に対して、ワイルドカードマスクは 0.0.0.255 です。255.255.255.255 から引く、と覚えても同じ結果になります。アクセスリストや OSPF の設定ではこちらの書き方が出てきます。

アドレスの範囲を1つの CIDR で書けないことがあるのはなぜですか?

CIDR のまとまりは「2の何乗個」で、しかも切りのよい番地から始まらなければならないからです。192.0.2.5 から 192.0.2.10 までは、192.0.2.5/32・192.0.2.6/31・192.0.2.8/31・192.0.2.10/32 の4つに分かれます。無理に1つにまとめると、頼んでいないアドレスまで含んだ別の範囲になってしまいます。

192.0.2.0/24 のような書き方から、ネットワークアドレス・ブロードキャストアドレス・使えるアドレスの範囲・ホスト数・サブネットマスク・ワイルドカードマスクを一度に出します。 入れたアドレスはこの画面の中だけで計算していて、どこにも送りません。

使えるアドレスが2つ少ないのは、名前と呼び出しに取られているからです

192.0.2.0/24 には全部で256個のアドレスがありますが、 機器に付けられるのは254個です。減った2つには、それぞれ役目があります。

  • いちばん先頭(192.0.2.0)はネットワークアドレス。そのまとまり自体を指す名前です。人でいえば「一丁目」にあたるので、 そこに住むことはできません。
  • いちばん最後(192.0.2.255)はブロードキャストアドレス。この線につながっている全員あてという意味を持ちます。 1台に届けるための番地ではないので、こちらも機器には付けられません。

決まりとして書かれているのはRFC 1122 §3.2.1.3で、 ホストの部分がすべて 0のものとすべて 1のものは 特別な意味を持つアドレスなので、ふつうのあて先として使ってはいけない、とされています。 これが「2を引く」の中身です。

/31 は、線を1本つなぐのに4個も使うのがもったいなくて作られた例外です

ここがこのページでいちばん面白いところです。「全体 − 2」の式は、/31 では成り立ちません。/31 のアドレスは2個しかないので、式に当てはめると 2 − 2 =0個になってしまいます。

ルータとルータを1本の線で直接つなぐとき、その線に必要なアドレスは両端の2個だけです。ところが昔は、そこにネットワークアドレスと ブロードキャストアドレスのぶんも足して4個を割り当てていました。半分が使われないまま消えていくわけです。

そこで2000年12月、RFC 3021(新しいタブで開きます)が「点と点を結ぶ線に限って31ビットのマスクを使ってよい」と決めました。 この場合の2つのアドレスは「ホストのアドレスとして解釈しなければならない」(MUST be interpreted as host addresses)と書かれています。 だから答えは0個ではなく2個です。

効きめは、RFC 自身が数えています。1本の線あたり4個が2個になるので、 点と点を結ぶ線が500本ある網では1000個が浮きます。 RFC はこれを「クラスCのアドレス空間4つぶん」と書いています。

代わりに、その線にはブロードキャストアドレスが無くなります。 RFC はこれを困ったこととしてだけでなく、ある種の攻撃に少し強くなるという良い副作用としても挙げています ── ブロードキャストあてに大量の問い合わせを投げて返事を集中させる、 という古い手口が使えなくなるためです。

ちなみに/32 はアドレス1個です。ホストのビットが0個なので、 まとまりの中身はそのアドレスだけになります。ここでも式は成り立たず、 当てはめると −1 になります。多くの計算ツールが /31 で 0、/32 で −1 や空欄を出すのは、式をそのまま当てはめているからです。

サブネットマスクは「1が続いたあと0が続く」形しか使えません

255.255.0.255 は、一見それらしく見えますがサブネットマスクではありません。 マスクは2進で書くと 11111111 11111111 00000000 11111111 となり、 0 の並びのあとにまた 1 が出てきます。

RFC 1812(新しいタブで開きます) §2.2.5.2 は、正しいマスクを「上位に続く1の並び・下位に続く0の並び・その間に何も無いもの」と書いています。この形だからこそ「先頭から何ビットか」という1つの数(プレフィックス長)で言い換えられるわけです。

飛び飛びのマスクを受け取ってしまうと、ネットワークアドレスも、使えるアドレスの範囲も、 すべて違う答えになります。この計算機は、断る理由を画面に出します。黙って「たぶん /24 のことだろう」と読み替えると、間違いに気づけないからです。

範囲を CIDR に直すと、たいてい1つでは収まりません

「192.0.2.5 から 192.0.2.10 まで」を1つの CIDR で書きたくなりますが、書けません。CIDR のまとまりはRFC 4632(新しいタブで開きます) が定めていて、2の何乗個で、しかも切りのよい番地から始まる必要があります。

この範囲は、次の4つに分かれます。

  • 192.0.2.5/32 … 5 は奇数なので、1個ずつしか取れません
  • 192.0.2.6/31 … 6 と 7 の2個。6 は偶数なので2個まとめられます
  • 192.0.2.8/31 … 8 と 9 の2個。8 は4の倍数ですが、 4個取ると 11 まで含んでしまうので2個で止めます
  • 192.0.2.10/32 … 最後の1個

多くのツールは、ここを「いちばん近い1個」に黙って丸めます。 たとえば 192.0.2.0/28 と答えると、頼んでいない 192.0.2.0〜192.0.2.4 と 192.0.2.11〜192.0.2.15 まで含んだ別の範囲になります。 許可する相手の一覧としてそれを書き写すと、11台ぶん余計に開くことになります。 だからこのページは分かれたものを全部出します。

「クラスA・B・C」は、いまの決まりではありません

1981年の RFC 791 は、アドレスの先頭を見るだけでネットワークの長さが決まる仕組みを定めていました。 先頭が 0〜127 ならクラスA(先頭8ビット)、128〜191 ならクラスB(16ビット)、192〜223 ならクラスC(24ビット)です。

この仕組みは1993年の CIDR で置き換えられました。 いまの規定である RFC 4632(2006年8月)は、クラス A/B/C の割り当て方式を「クラスの無い(classless)階層的なブロック」に置き換えたと書いています。

つまり192.0.2.0/25 と書いてあれば、それは /25 です。「先頭が192だからクラスCで /24 のはず」と考えると答えを間違えます。 このページがクラスを出しているのは、昔の資料や試験問題を読むときの手がかりとしてだけです。

プレフィックス長の早見表(/0 〜 /32)

プレフィックス長・サブネットマスク・ワイルドカードマスクの対応です。下の2行(/31 と /32)だけ、引き算の式が当てはまりません。

プレフィックス長ごとのマスクとアドレス数
長さサブネットマスクワイルドカードマスク全部使える
/00.0.0.0255.255.255.2554,294,967,2964,294,967,294
/1128.0.0.0127.255.255.2552,147,483,6482,147,483,646
/2192.0.0.063.255.255.2551,073,741,8241,073,741,822
/3224.0.0.031.255.255.255536,870,912536,870,910
/4240.0.0.015.255.255.255268,435,456268,435,454
/5248.0.0.07.255.255.255134,217,728134,217,726
/6252.0.0.03.255.255.25567,108,86467,108,862
/7254.0.0.01.255.255.25533,554,43233,554,430
/8255.0.0.00.255.255.25516,777,21616,777,214
/9255.128.0.00.127.255.2558,388,6088,388,606
/10255.192.0.00.63.255.2554,194,3044,194,302
/11255.224.0.00.31.255.2552,097,1522,097,150
/12255.240.0.00.15.255.2551,048,5761,048,574
/13255.248.0.00.7.255.255524,288524,286
/14255.252.0.00.3.255.255262,144262,142
/15255.254.0.00.1.255.255131,072131,070
/16255.255.0.00.0.255.25565,53665,534
/17255.255.128.00.0.127.25532,76832,766
/18255.255.192.00.0.63.25516,38416,382
/19255.255.224.00.0.31.2558,1928,190
/20255.255.240.00.0.15.2554,0964,094
/21255.255.248.00.0.7.2552,0482,046
/22255.255.252.00.0.3.2551,0241,022
/23255.255.254.00.0.1.255512510
/24255.255.255.00.0.0.255256254
/25255.255.255.1280.0.0.127128126
/26255.255.255.1920.0.0.636462
/27255.255.255.2240.0.0.313230
/28255.255.255.2400.0.0.151614
/29255.255.255.2480.0.0.786
/30255.255.255.2520.0.0.342
/31RFC 3021 の例外255.255.255.2540.0.0.122
/32アドレス1個255.255.255.2550.0.0.011

特別な使い道が決まっているアドレス

次のアドレスには、あらかじめ使い道が決められています。 一覧の出どころは IANA のIPv4 Special-Purpose Address Registry(新しいタブで開きます)で、マルチキャストだけは別の登録簿なので RFC 5771 から取っています。

このページの例に 192.0.2.0 ばかり出てくるのは、RFC 5737 が文書用として取ってあるアドレスだからです。 説明のために実在のアドレスを書くと、それが誰かの機器を指してしまうことがあります。

特別な使い道が決まっているアドレスの一覧
アドレス使い道出どころ
0.0.0.0/8「このネットワーク」を指す予約RFC 791 §3.2
10.0.0.0/8プライベートアドレス(家や社内で自由に使える)RFC 1918
100.64.0.0/10共用アドレス(通信会社が加入者との間で使う)RFC 6598
127.0.0.0/8ループバック(自分自身を指す)RFC 1122 §3.2.1.3
169.254.0.0/16リンクローカル(DHCP から返事が無いとき自分で付ける)RFC 3927
172.16.0.0/12プライベートアドレスRFC 1918
192.0.2.0/24文書用 TEST-NET-1(このページの例に使っています)RFC 5737
192.168.0.0/16プライベートアドレスRFC 1918
198.18.0.0/15機器の性能をはかる試験用RFC 2544
198.51.100.0/24文書用 TEST-NET-2RFC 5737
203.0.113.0/24文書用 TEST-NET-3RFC 5737
224.0.0.0/4マルチキャスト(決まった集まりへ同時に送る)RFC 5771
240.0.0.0/4予約(将来のために取ってある)RFC 1112 §4
255.255.255.255/32限定ブロードキャスト(同じ線の全員あて)RFC 919 §7

数値と決まりの出どころ: 31ビットのマスクはRFC 3021(2000年12月・Standards Track)(新しいタブで開きます)、CIDR そのものは RFC 4632(2006年8月)、ホスト部がすべて 0 とすべて 1 のアドレスは RFC 1122 §3.2.1.3、マスクが連続していなければならないことは RFC 1812 §2.2.5.2、 文書用アドレスは RFC 5737、プライベートアドレスは RFC 1918、 ワイルドカードマスクの 0 と 1 の意味は Cisco のConfigure IP Access Lists(新しいタブで開きます)から取っています。ここでは計算しかしていません ── 入れたアドレスの持ち主や場所を調べる機能は、外への通信が増えるので作っていません。