はじめに
バックエンドやインフラ、ネットワーク系のお仕事をしていればよくわかると思いますが、
フロントエンドの方には以外となじみがないかもしれません。
自分は当初なかなか理解できませんでした。
特に2進数の表記がよく出てくるので、パッとみて数字がイメージしにくい、というのが要因だったかなあと思います。
要点のみ、わかりやすくまとめましたので是非ご覧下さい。
サブネットマスクとCIDR
ざっくりいうと、ネットワーク(IPアドレス)の範囲を表せるようなものです。
例えば、192.168.128.0 ~ 192.168.128.255 の範囲を簡単に表すにはどうすればよいでしょう。
「192.168.128」までは固定で、ピリオドで区切った4つめの数字について 0~255 までの範囲という意味です。
192.168.128.0
192.168.128.1
192.168.128.2
・
・
192.168.128.255
要は上記を簡単にあらわす方法が、サブネットマスクとCIDRという表記です。
サブネットマスク
まずはサブネットマスクで表すと、以下になります。
192.168.128.0 / 255.255.255.0
なんとなーく、255.255.255.0 の 0 の部分ってあと255入りそうに思いませんか?
詳しい説明をします。
まずそもそもなんで255という数値が出てくるのかといいますと、
各ピリオド区切りは8bitを意味しており、全ての bit に1が立つと10進数では255になるからです。
10進数 | 2進数 |
---|---|
255 | 11111111 |
0 | 00000000 |
当たり前ですが、255.255.255.0 の 0 というのは8個の bit 全てが0ということですね。
つまりあと8個、1を立てられるよーということです。
CIDR表記
CIDR表記も考え方は同じです。こっちの方がよくつかわれると思います。
上述したIPアドレスの範囲を CIDRで表すと以下になります。
192.168.128.0 / 24
各ピリオド区切りは8bitを意味しているので、全部であわせると32bitになります。
その内の24個に1がたっていて、(32 - 24)であと8個1がたてられるよーということです。
11111111. 11111111.11111111.00000000
何度も255と書くのもわずらわしいので簡潔に24と書いているだけですね。
255.255.255.0 → 24
以上がサブネットマスクとCIDRの概要です。
ネットワーク部とホスト部
もう少し説明すると、192.168.128.0 / 24 の場合、
最初の24bitがあるネットワークのアドレスを表しており、ネットワーク部といいます。
そして、残りの8bitをホスト部といい、2^8 = 256
なので 0 ~ 255 まで計256個のIPアドレスを割り振れることになります。
ある端末のIPアドレスとあわせて、サブネットマスクまたはCIDERがわかれば、その端末がどのネットワークに属しているかがわかることになりますね。
ひとつ留意事項として、
ホスト部がすべて0のアドレスはネットワークアドレスといい、
ホスト部がすべて1のアドレスはブロードキャストアドレスといいます。
これらは特別な働きをするために予約されたアドレスなので、IPアドレスとしては使用できないです。
補足
例にあげた/24以外に、/16、/21など様々な範囲が出てきます。/24や/16などはちょうどピリオド区切りなので分かり易いのですが/21などはパッと見て数がイメージしにくいですよね。
この/21はAWSでVPCを作成する際によく指定されます。
慣れないうちはとりあえず32bitの形で書いてみることをお勧めします。/21であれば以下になります。
11111111.11111111.11111000.00000000
0が11個ならんでいますね。
なので2^11 = 2048
で2048個のIPアドレスが割り振れることになります。
※最初と最後は予約されていますが。
詳細は割愛しますが、この2048個のIPアドレスをさらにある単位で分類分けしたい、といったことがあるのです。
(AWSのVPCを学習している方はわかると思いますが「サブネット」という概念ですね)
その場合、2048 = 256 × 8 なので8個に分類分けをすることで数値として分かり易く都合がよいのです。
以上、サブネットマスクとCIDRの解説でした。指定するホスト部の範囲はある程度パターンが限られているので、学習していくうちに慣れてゆくものだと思います。本記事が少しでもお役に立てれば幸いです。