イーサネットLAN（４）【サブネット化】

CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

サブネット化
-
#### ■サブネット化の概要

サブネット化とは、1つの大きなネットワークを分割して小さなネットワークの集合体にすることです。
ネットワークを分割する事で、セキュリティの向上やブロードキャストの制御、IPアドレスの節約などのメリットがあります。

・セキュリティの向上 - 同一のネットワークに所属している端末はスイッチングハブなどを介して、
　直接通信が出来てしまう為、見られたくないデータなどが見れてしまう可能性がでてしまいます。
　が、<b>ネットワークを分けて、ルータを中継させる事でアクセス制御</b>する事が出来ます。

・ブロードキャストの制御 - 同一のネットワークに所属している端末が多いと、ブロードキャストパケットが、
　通信に影響を与えてしまう可能性があります。そういった影響を、分割してルータを通すことで減らすことが出来ます。
　<b>ルータは、ブロードキャストを通さない為、ブロードキャストの届く範囲を制限</b>出来ます。

・IPアドレスの節約 - ネットワークを分割することで、それぞれのネットワーク上で無駄になる
　アドレスを減らす事が出来る。
<br>

#### ■サブネット化の例

IPアドレスは、どのネットワークかを示すネットワーク部とどのコンピュータを示すホスト部で構成されています。
サブネット化をする事というのは、IPアドレスのホスト部の一部をサブネット部として、
ネットワーク部とサブネット部を合わせた部分をネットワーク部とみなすというものです。

<img width="1000" alt="ファイル名" src="https://i.gyazo.com/6102211984c3c465f363e0b434cd8ac1.png">
<font color="DarkTurquoise">※上記の画像は、[こちらの記事](http://www5e.biglobe.ne.jp/%257eaji/3min/23.html)から参照させて頂きました</font>
<br>

例えばIPアドレス

192.168.0.2

があったとします。

このIPアドレスは人が、
分かりやすいよう10進数で書いてありますが、実際には0と1だけの2進数です。
このIPアドレスを2進数に直すと
`11000000.10101000.00000000.00000010`
です。

これは、クラスCに割り当てられる為、
ネットワーク部が24ビット、
ホスト部が8ビット
となりますので、

前半部分の
`11000000.10101000.00000000`
がネットワーク部を表す情報

後半部分の
`00000010`
がホスト部を表す情報となります。
<br>

これをサブネット化します。
4ビットサブネット化してみると、

前半部分の
`11000000.10101000.00000000.0000`
がネットワーク部を表す情報で

後半部分の
`0010`
がホスト部を表す情報となります。

つまり、このIPアドレスは、
<font color="Red">11000000.10101000.00000000ネットワークの中にある
0000ネットワークの
0010コンピュータという意味になります。</font>

そして、AND演算を使ってネットワークアドレスを求めると、

```
// IPアドレス
11000000.10101000.00000000.00000010
// サブネットマスク
11111111.11111111.11111111.11110000
```
※サブネットマスクは、ネットワーク部に概要する部分を1、ホスト部に該当する部分を0と表します。
今回4ビットサブネット化しているので、元々24ビットに4ビットを足して合計28ビットが
ネットワーク部になるので、
サブネットマスクは、先頭から1を28個並べて、残りの4個が0になります。

AND演算すると

```
11000000.10101000.00000000.00000000
// 10進数にすると
192.168.0.0
```
※IPアドレスとサブネットマスクを比較して、同じ位置のビットが両方とも1の時1、それ以外は0とします
<br>

#### ■サブネット化した際のサブネット数とホスト数

- サブネット数

今回は4ビット増えたという事で、
2の4乗で16個のネットワークに分割されたことになります。
なので、サブネット数は 16個となります。

ここで注意点として、サブネット部が全て0と1のアドレスは、
利用出来ない場合があります。
その為、実際に割り当てられるサブネット数は、-2個の14個になります。
<br>

- ホスト数

ネットワークに接続できる最大ホスト数はホスト部のビット数で求めらる。

32(IPv4は32ビット) - 24(ネットワーク部) - 4(サブネット部) = 4

ホスト部のビット数は、4なので
2の4乗で16です。

また、全て0と1のアドレスは、ホストに割り当てらない為、
2を引いた14個が最大ホスト数になります。

<br>

#### ■FLSMとVLSM

- FLSM

FLSMとは、<b>固定長サブネットマスク</b>のことをいい、
ネットワークをサブネット化する際に、分割されたネットワークで全て同じプレフィックス長を使う事。

各サブネットでサブネットマスクの値を同じにする為、最も多くのIPアドレスを必要とする
ホスト数の一番多いものに合わせるようになる。
それゆえ、無駄なIPアドレスが増えるデメリットがある。
<br>

- VLSM

VLSMとは、<b>可変長サブネットマスク</b>のことをいい、
IPアドレスの付与に関して、サブネットマスクを可変長にして、ネットワーク部とホスト部の大きさを
自由に変えて規模に応じて効率的にIPアドレスを利用できるようにしたもの。

<img width="1000" alt="ファイル名" src="https://i.gyazo.com/a27c7b317f2c7b141f4f5d4488b626b0.png">
『VLSMを使用しない場合、必要なホストの台数に関係なく、
すべてのサブネットで同じサブネットマスクを使用しています。しかし、
ルータ間を接続するサブネットでは2つのIPアドレスがあれば十分です。
/24のサブネットマスクで割り当てた場合、252台分のIPアドレスが無駄になります。
こうしたアドレス浪費を解決するのが、
サブネット化したアドレスをさらにサブネット化するVLSMです。』
<font color="DarkTurquoise">※上記の画像及び『』の中の文書は、[こちらの記事『可変長サブネットマスク（VLSM）と経路集約』](https://shinmeisha.co.jp/newsroom/2020/06/08/ip)から
参照</font>
<br>

#### ■ネットワークアドレスとブロードキャストアドレスの求め方

- 2進数に変換して求める方法（クラスフルなIPアドレスの場合）

例：クラスCの、`192.168.12.1` の場合

プレフィックス長（ネットワーク部）は、24ビット
ホスト部は、8ビット
となる。
※理由は<font color="DarkTurquoise">[『IPアドレスとは』](http://ipnetwork.web.fc2.com/ip-address.html)</font>という記事参照

その為、IPアドレスの4オクテット目がホスト部になり、
これを全て0にした `192.168.12.0` が
<b>ネットワークアドレス</b>

全て1にした `192.168.12.255` が
<b>ブロードキャストアドレス</b>
となります。
<br>

- 2進数に変換して求める方法（サブネット化を行った場合）

この場合のネットワークアドレスの求めるには、
サブネットマスクを求めて、IPアドレスとAND演算を行います。
例：クラスCの、`192.168.213.77/27` の場合
ホスト部は、5ビット

数字を2進数に変換すると、
`11000000.10101000.11010101.01001101`

サブネットマスクを求めると、
`11111111.11111111.11111111.11100000`

AND演算すると、
※IPアドレスとサブネットマスクを比較して、同じ位置のビットが両方とも1の時1、それ以外は0とします
`11000000.10101000.11010101.01000000`
となります。
これを、10進数に変換すると`192.168.213.64` が<b>ネットワークアドレス</b>となります。
<br>

ブロードキャストアドレスは、ネットワークアドレスのホスト部を全て1に
することで求められます。
`11000000.10101000.11010101.01011111`
※ホスト部は、5ビットなので後ろから5個目迄がホスト部です
これを、10進数に変換すると
`192.168.213.95` が<b>ブロードキャストアドレス</b>となります。
<br>

- 2進数に変換せず求める方法（クラスフルなIPアドレスの場合）

この方法では、IPアドレスの4オクテットの内、ネットワーク部とホスト部の
境界を含むオクトッテを計算の対象とします。

例：`172.16.201.33/19` というIPアドレスの場合
/19なので、第3オクトッテにネットワーク部3ビットはみ出しているので、
よって、計算対象は、<b>第3オクテット</b>になります。

①計算対象となるオクテットに残っているホスト部のビット数だけ2の累乗計算する

　第3オクテットに5ビットホスト部があるので、2の5乗となり
　計算結果は、32となります。

②対象のオクテットの数字を①の計算結果で割る

　第3オクテットが、201
　これを、①の答えである32で割ると、
　計算結果は、6となります。

③①の結果と②の計算結果を掛け算した結果を計算対象オクテットの値とし
　右側のオクテットを0にするとネットワークアドレスになる

　32 × 6 = 192
　掛け算した結果が、192となる為、第3オクテットを192とし
　右側のオクテットを全て0にした
　`172.16.192.0` が<b>ネットワークアドレス</b>となります。

④③の答えと①の答えを足して-1をした結果を計算対象オクテットの値とし
　右側のオクテットを255にするとブロードキャストアドレスになる

　192 + 32 - 1 = 223
　計算結果が、223となる為、第3オクテットを223とし
　右側のオクテットを全て1にした
　`172.16.223.255` が<b>ブロードキャストアドレス</b>となります。

<br>
過去投稿記事
-
[ネットワークの基礎（１）【接続形態と通信方法】](https://qiita.com/k-yasuhiro/items/38d643ec262a0309db06)
[ネットワークの基礎（２）【プロトコル(OSI参照モデル)】](https://qiita.com/k-yasuhiro/items/0e5accf951223e2332e4)
[ネットワークの基礎（３）【プロトコル(TCP/IPモデル)】](https://qiita.com/k-yasuhiro/items/401630a552221d19ac13)
[イーサネットLAN（１）【LANケーブル】](https://qiita.com/k-yasuhiro/items/9c339643070d4db1e6ac)
[イーサネットLAN（２）【LAN内の機器】](https://qiita.com/k-yasuhiro/items/199d108007c6e1c2dbfc)
[イーサネットLAN（３）【ネットワーク層の機能と概要/IPアドレス】](https://qiita.com/k-yasuhiro/items/56598d2611b41762b8f3)