CIDR(Classless Inter-Domain Routing)表記とはIPアドレスの後ろにくっついている ” /24 ” のような数字の表記です。
例) 192.168.1.0/24
これがイマイチ分からなくてずっとモヤモヤしていました。
それがこの度めでたくやっと理解出来ましたので忘れないうちに備忘録代わりに投稿。
( ” CIDR ” と ” cider ” は、読み方は「サイダー」で同じです。なお写真はラムネ。)
はじめに前振りを
織田信長は有名は武将ですが、ここではこの名前を例に話を進めます。
普通は、 ” 織田 信長 ” などと、姓と名の間にスペースを入れて姓と名を区別しています。
しかしそうでない(姓と名がくっついて表記されている)場合もしばしばあり、その場合には有名人でない限りどこまでが姓でどこからが名かが分からないことがあります。
日本には2文字姓が多いですが、たまに1文字姓や3・4文字姓もありますので、姓と名の区別をしにくいこともあります。
姓と名の境目を表示する方法
そこである日ある人が姓と名を区別する解決方法を考えつきました。下記のように名前の最後に ” /数字 ” を付加する方法です。
例1)
織田信長/1
この表記の場合、姓が ” 織 “ 、名が ” 田信長 ” となります。 (そんな名は日本人には無いよ。というツッコミは無しで)
例2)
織田信長/2
この場合は、姓が ” 織田 “ 、名が ” 信長 ” です。
例3)
織田信長/3
この場合では、姓が ” 織田信 ” 、名が ” 長 ” となります。
例4)
織田信長/4
この場合は、 ” 織田信長 ” 全部が姓です。
つまり最後につけた数字は、先頭から何文字目までが姓なのかを表している訳です。そしてその残りの部分が自動的に名になります。
本題
IPアドレス(v4)は32bitの数字であり、普通(10進数)では0-255までの数字4つで表されます。
このIPアドレスは上位のネットワーク部と、下位のホスト部に分かれます。
例) 192.168.11.123
ここでたとえば、 ” 192.168.11 ” をネットワーク部、 ” 123 ” をホスト部と定義してみます。
ネットワーク部の数字は、そのネットワーク内に所属するコンピュータ達に共通しています。1つの家族が共通の ” 姓 ” を持っているのと同じですね。
ホスト部は、そのネットワーク内での1台1台のコンピューターに別々に割り振られています。つまり1つの家族内の一人一人の名に相当します。
この例ではこのコンピュータは、姓は ” 192.168.11 ” 。名は ” 123 ” となる訳です。
1台のルータがその配下のコンピューター達を家族として引率しているイメージです。(当然その家族内では ” 姓 ” は全員同一あり、 ” 名 ” は別々に名付けられています)
CIDRの表記方法
しかし実際には、姓の長さは(=その残りの名の長さは)様々であり、一定していません。なのでこの表示のままでは姓と名の境目を知ることはできません。
CIDRの表記で実際にどのようにネットワーク部とホスト部に分けられて表示されるかを例示します。
例1)
192.168.11.123/8
この例では、 ” 192 ” がネットワーク部(姓)で、 ” 168.11.123 ” がホスト部(名)
例2)
192.168.11.123/16
” 192.168 ” がネットワーク部(姓)で、 ” 11.123 ” がホスト部(名)
例3)
192.168.11.123/24
” 192.168.11 ” がネットワーク部(姓)で、 ” 123 ” がホスト部(名)
例4)
192.168.11.123/32
” 192.168.11.123 ” 全部がネットワーク部(姓)
最後の数字は ” 姓 ” と ” 名 ” の境目を表しています。
すなわち最後の数字はネットワーク部の境目までのビット数を表しています。残りがホスト部となります。
8の倍数以外の場合
上記の例におけるCIDRの数字が8の倍数なのは1つ分の数字が8ビット区切りだからです。(2進数で8桁ずつに区切ると丁度4つの数字との境目が一致します)
上記の例では全て8の倍数の場合を示しましたが(それが一番分かりやすいのですが)、そうでない数字でも区切ることができます。
例 /28 の場合
192.168.11.123/28
(赤がネットワーク部、黄色がホスト部)
3番目の数字までが2ビットで24桁なので、それよりも2ビットで4桁多い位置に境目があることになります。つまり4番目の数字 ” 123 ” の真ん中に境目があります。10進数ではわかりにくいです。
そこで10進数の ” 123 ” を2ビット表示(2進数表示)すると以下のようになります。
0111 1011
上記8桁の真ん中、上4桁と下4桁の間に境目があります。つまり4番目の ” 1 ” が28桁目となり、ここがネットワーク部の最後尾となります。残りの5番目から8番目がホスト部です。
全体を2進数で表記すると以下になります。
11000000 10101000 00001011 01111011
(最初から28桁がネットワーク部、残り4桁がホスト部)
CIDRが8の倍数以外では、10進数表記では難しく感じられますが、2進数表記にすると境目の位置が明瞭になります。
サブネットマスク表示について
サブネットマスク表示もCIDERと同様に ” ネットワーク部 ” と ” ホスト部 ” の境目を示す表示です。
全く同じことを意味していますが、表記方法が異なります。(サブネットマスクの方が古い表記方法です。)
2進数でネットワーク部の桁を1・ホスト部の桁を0で表して、これを10進数に変換した状態で表記されています。
下表は対比例です。
CIDR表示 | サブネットマスク表示 (参考:2進数での表示) |
/8 | 255.0.0.0 (11111111.00000000.00000000.00000000) |
/16 | 255.255.0.0 (11111111.11111111.00000000.00000000) |
/24 | 255.255.255.0 (11111111.11111111.11111111.00000000) |
/28 | 255.255.255.240 (11111111.11111111.11111111.11110000) |
CIDR表示では先頭からのビット数でネットワーク部をを示しており、サブネットマスク表示では2ビット表示した際に先頭からの1が続く位置までがネットワーク部を示しています。
nmapなどでの応用
nmapなどのツール内で、ターゲットIDを指定する場合にこの表記方法が使えます。
例
nmap -sP 192.168.11.0/24
上記の例では、同一ネットワーク内に所属する ” 192.168.11.0 ” から ” 192.168.11.255 ” までの全256台がターゲットとなります。
ちなみに数字の前の ” / ” はプレフィックスと読みます。(CIDRの表記方法をプレフィックス表記とも言います。)
お恥ずかしい話ながら、この意味がよく分からなかった時には ” /56 ” などとありえない表記をしてしまい、nmapから怒られていました。
まとめ
よく見かける192.168.0.0/24などの表記について。
その最後の数字が、IPアドレス(v4)中の姓と名(=ネットワーク部とホスト部)を分割する位置を示しており、境目が先頭から何ビット目であるかを表しています。
この表記方法をCIDR表記(又はプレフィックス表記)と言います。
全く同じ意味を表す旧式の表記をサブネットマスク表記と言い ” 255.255.255.0 ” などと表記します。
コメント