CIDRについて

# はじめに
どうも、上司にサイダーって知ってるか？と言われ、
「〇〇矢サイダー」の方が頭に思い浮かんでしまった<a href="https://yzrh.jp/" target="_blank">株式会社YUZURIHA</a>のキムです。
ネットワークの基礎で大学の時に学んだはずですけどね。。改めて整理してみました。

# CIDRとは
### CIDR(Classless InterDomain Routing) ※サイダーと発音する
> <b>クラス</b>に縛られない組織間の経路制御を意味します。
クラス分けと違うところはネットワークアドレス部とホストアドレス部を柔軟に割り当てれるところです。

#### そもそも、クラスとは
1990年代半ばまでは、下記の<b>クラス単位</b>で各組織へのIPアドレスの割り当てが行われてました。
基本的に大規模なネットワークはクラスA、小規模なネットワークにはクラスCを使います。
```
クラス A：0.0.0.0 ~ 127.255.255.255 subnet mask 255.0.0.0
クラス B：128.0.0.0 ~ 191.255.255.255 subnet mask 255.255.0.0
クラス C：192.0.0.0 ~ 223.255.255.255 subnet mask 255.255.255.0
クラス D：224.0.0.0 ~ 239.255.255.255 ※IPマルチキャスト時に使用
クラス E：240.0.0.0 ~ 255.255.255.255 ※未使用
```
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961058/398731ff-30a2-4506-a426-8bdcc2a1db8b.png)
クラスAは全世界で128以下しか配布できず、クラスCは接続できるホストや最大で254台になるため、多くの組織がBを利用し、Bの絶対数(65534個)を配布しつくす可能性が出たため、クラス分けを廃止し、<b>任意のビット長でIPアドレスを配布するCIDR</b>を使うようになりました。

# CIDR表記
IPアドレスは基本的に0~32ビットで、8ビットごとの単位はOctetです。
合計4 Octetで、下記のような形ですね。※2進数の説明は割愛いたします。
![キャプチャ2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961058/d3b37020-9514-8a22-80b7-2351f790bd4d.png)
CIDR表記というのは、そのIP Adressの後ろに番号がつきます。
例えば、142.7.67.202/24の場合、緑の部分が使えるホストアドレス部になります。
![キャプチャ3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961058/3926096a-f112-5c6f-2a07-7cd968ca5884.png)
Octetの単位である/8、/16、/24、/32の場合は、計算方法が簡単ですが、
例) 142.7.67.202/16 = 142.7.0.0 ~ 142.7.255.255

Octetが微妙にかぶる場合は少しだけ複雑になります。<del><font color=gray>その場合、ネットワーク計算ツールを利用しましょう。</font></del>
例えば142.7.67.202//22の場合、黄色の部分が含まれて下記のような範囲になります。
![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961058/9135f571-6e8c-2636-979b-2ec79a9a8618.png)
調べてみると、もう少し簡単な計算方法などもありました。

CIDR表記、Host、 Maskの情報はWikiにまとめられていたため、下記を参考いたしました。
<table>
<tr>
 <td>CIDR</td><td>Host</td><td>Mask</td>
</tr>
<tr>
 <td>/1</td><td>2,147,483,648</td><td>128.000.000.000</td>
</tr>
<tr>
 <td>/2</td><td>1,073,741,824</td><td>192.000.000.000</td>
</tr>
<tr>
 <td>/3</td><td>536,870,912</td><td>224.000.000.000</td>
</tr>
<tr>
 <td>/4</td><td>268,435,456</td><td>240.000.000.000</td>
</tr>
<tr>
 <td>/5</td><td>134,217,728</td><td>248.000.000.000</td>
</tr>
<tr>
 <td>/6</td><td>67,108,864</td><td>252.000.000.000</td>
</tr>
<tr>
 <td>/7</td><td>33,554,432</td><td>254.000.000.000</td>
</tr>
<tr>
 <td>/8</td><td>16,777,216</td><td>255.000.000.000</td>
</tr>
<tr>
 <td>/9</td><td>8,388,608</td><td>255.128.000.000</td>
</tr>
<tr>
 <td>/10</td><td>4,194,304</td><td>255.192.000.000</td>
</tr>
<tr>
 <td>/11</td><td>2,097,152</td><td>255.224.000.000</td>
</tr>
<tr>
 <td>/12</td><td>1,048,576</td><td>255.240.000.000</td>
</tr>
<tr>
 <td>/13</td><td>524,288</td><td>255.248.000.000</td>
</tr>
<tr>
 <td>/14</td><td>266,144</td><td>255.252.000.000</td>
</tr>
<tr>
 <td>/15</td><td>131,072</td><td>255.254.000.000</td>
</tr>
<tr>
 <td>/16</td><td>65,536</td><td>255.255.000.000</td>
</tr>
<tr>
 <td>/17</td><td>32,768</td><td>255.255.128.000</td>
</tr>
<tr>
 <td>/18</td><td>16,384</td><td>255.255.192.000</td>
</tr>
<tr>
 <td>/19</td><td>8,192</td><td>255.255.224.000</td>
</tr>
<tr>
 <td>/20</td><td>4,096</td><td>255.255.240.000</td>
</tr>
<tr>
 <td>/21</td><td>2,048</td><td>255.255.248.000</td>
</tr>
<tr>
 <td>/22</td><td>1,024</td><td>255.255.252.000</td>
</tr>
<tr>
 <td>/23</td><td>512</td><td>255.255.254.000</td>
</tr>
<tr>
 <td>/24</td><td>256</td><td>255.255.255.000</td>
</tr>
<tr>
 <td>/25</td><td>128</td><td>255.255.255.128</td>
</tr>
<tr>
 <td>/26</td><td>64</td><td>255.255.255.192</td>
</tr>
<tr>
 <td>/27</td><td>32</td><td>255.255.255.224</td>
</tr>
<tr>
 <td>/28</td><td>16</td><td>255.255.255.240</td>
</tr>
<tr>
 <td>/29</td><td>8</td><td>255.255.255.248</td>
</tr>
<tr>
 <td>/30</td><td>4</td><td>255.255.255.252</td>
</tr>
<tr>
 <td>/31</td><td>2</td><td>255.255.255.254</td>
</tr>
<tr>
 <td>/32</td><td>1</td><td>255.255.255.255</td>
</tr>
</table>
以上です。

# さいごに
検索したら、ネットワーク計算ツールなど一発でヒットする世の中ですが、ちゃんと理解しておくことって本当に大事ですね。
勉強の足りなさを日々実感してるなうです。

# 参考
https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0TCP-IP%E2%80%95%E5%85%A5%E9%96%80%E7%B7%A8%E2%80%95-%E7%AC%AC6%E7%89%88-%E4%BA%95%E4%B8%8A-%E7%9B%B4%E4%B9%9F/dp/4274224473

https://namu.wiki/w/CIDR