1つのネットワークアドレスを複数のサブネットに分割する方法
複数のネットワークを利用数場合、別々のネットワークアドアドレスを設定する必要があります。通常、それぞれ重複しないように設定していきますが、1つのネットワークアドレスしか割り当てられない場合があります。
このような場合、1つのネットワークアドレスを複数に分割しなければなりません。
IPアドレスはネットワークアドレス部分とホストアドレス部分で構成されています。
ホストアドレス部分の数ビットをネットワークアドレスとして流用することで、1つのネットワークアドレスを複数のサブネットに分割することができます。
今回は、1つのネットワークアドレスを複数に分割する方法について具体的に説明します。
まず、この記事は以下のような人を対象としています。
対象者・ネットワークを複数のネットワークに分割する理由を知りたい人
・1つのネットワークアドレスを複数に分割する方法を知りたい人
この記事を読むと、次のようなことが理解できるようになります。
この記事を読むとできること・1つのネットワークアドレスを複数に分割する理由が理解できる
・ネットワークアドレスの分割方法が理解できる
1つのネットワークで利用するよりも複数のサブネットワークに分割したほうが良いと聞いたのですが、何が良いのでしょうか。
その際、1つのネットワークアドレスを複数のネットワークアドレスに分割すると聞きました。どういうことですか?
まずは、サブネットワークを利用する利点について説明します。
その後、ネットワークアドレスの分割方法について説明します。
アドレス計算ですから、2進数の計算が必要です。大丈夫ですか?
2進数の計算ですか?ちょっと自信がないです・・・
心配しなくても大丈夫です。
図を交えながら、順番に説明していきます。
ネットワーク全般について勉強したい人は次の書籍がおススメです!!
より詳細に勉強したい人は図式が満載な次の書籍がおススメです!!
サブネットに分割する利点
ネットワークの世界では、ネットワーク内の全ての端末に向けてデータを送信する「ブロードキャスト通信」というものがあります。
IPアドレスの設定を自動的に行う「DHCP」を設定している場合、端末の電源を入れると同時にDHCPサーバにIPアドレスの貸し出しを依頼するため、ブロードキャスト通信が行われます。
また、実際にデータを送信する場合、次にデータを送信する端末のMACアドレスを調べるためにブロードキャスト通信が発生します。
したがって、1つのネットワーク内に接続される端末数が多くなればなるほど、通信の渋滞(輻輳:ふくそう)が発生し、ネットワークのパフォーマンスが低下してしまいます。
複数のサブネットワークに分割すると、このブロードキャスト通信が送られる範囲を分割(縮小化)することができ、パフォーマンスの低下を防ぐことができます。
1つのネットワークに全ての端末を接続した場合、ある端末から送信されたブロードキャスト通信は他の全ての端末に送信されます。そのため、他の端末はこのブロードキャスト通信に対する処理を行わなければならないので、自分の通信を始めることができません。
一方、複数のサブネットに分割した場合、ある端末のブロードキャスト通信はその端末が所属しているサブネット内の端末にのみ送信されます。したがって、他のサブネットはブロードキャスト通信の影響を受けません。
このように、1つのネットワークを複数のサブネットに分割すると、ブロードキャスト通信の影響を受ける範囲を狭めることができ、通信を効率よく行うことができるようになります。
なお、このようにブロードキャスト通信の影響を受ける範囲を「ブロードキャストドメイン」と呼びます。
サブネットに分割する欠点
サブネットに分割すると、ブロードキャストドメインを分割し、ネットワークを効率的に利用することができますが、欠点もあります。
それぞれにサブネットに別々のネットワークアドレスを設定するため、サブネット間で相互通信が行えなくなります。
したがって、相互接続を行いたい場合、別途レイヤ3スイッチングハブかルータを設置しなければなりません。
導入コストや設定・管理するための知識が必要となるのが、欠点と言えます。
ネットワークアドレスを分割する方法
では、実際に1つのネットワークアドレスを複数のサブネットに分割する方法を説明していきます。
その前にIPアドレスの構造について確認します。
IPアドレスの構造 (IPv4の場合)
IPアドレスは同時に指定されるサブネットマスクの値からネットワークアドレス部分とホストアドレス部分に分けることができます。
IPアドレスとサブネットマスの値を一度2進数に変換し、AND計算します。求められた2進数をドット付10進数表記すると、ネットワークアドレス部分が求められます。
AND計算とは、2つのビットのうち、「どちらも1の時だけ1、それ以外の時は0を返す」計算です。
例えば、IPアドレス「172.16.0.0」、サブネットマスク「255.255.0.0」の場合は以下のようになります。
①.IPアドレス「172.16.0.0」を2進数に直すと「10101100.00010000.00000000.00000000」
②.サブネットマスク「255.255.0.0」を2進数に直すと「11111111.11111111.00000000.00000000」
③.この2つの値を1ビットずつAND計算を行うと、計算結果は「10101100.00010000.00000000.00000000」
④.計算結果をドット付10進数表記に戻すと「172.16.0.0」
この求められたアドレス「172.16.0.0」が「ネットワークアドレス」を示しています。
一方、ホストアドレス部分は「ビットが0の部分」なので、17ビット目から32ビット目までの合計16ビットがホストアドレス部分を表しています。
ホストアドレス部分が16ビットなので、このネットワークに接続できる端末の最大数は「2の16乗-2」の「65534台」となります。
ホストアドレス部分のうち、「全てが0」の値はネットワークアドレスを表現するため、「全ての1」の値はブロードキャストを表現するためにそれぞれ使われるので、端末にIPアドレスとして設定することができません。その2台分を「-2」する必要があります。
分割するネットワークの数によるネットワークアドレスの拡張
IPアドレスの構造について説明しましたので、実際に分割する方法について説明します。
ネットワークアドレスを複数のサブネットに分割する場合、本来端末に設定するために使われるホストアドレス部分の一部をネットワークアドレスとして流用します。
ここで考えなければならないのは、「何ビット流用すれば良いか?」です。
まず、いくつのサブネットに分割したいのか、サブネットの数を考えます。その後、そのサブネットの数を2進数で表現した場合、何ビット必要かを計算します。
例えば、サブネットの数が「4つ」の場合、「2の1乗は2」なので、目的のサブネットの数4より小さいため不適切となります。次に「2の2乗は4」なので目的のサブネットの数4と合致します。更に「2の3乗は8」となり、目的のサブネットの数を網羅することができるのですが、「2の2乗の4」で足りているので、除外します。したがって、ネットワークを4つのサブネットに分割する場合、ホストアドレス部分の2ビットを流用します。
サブネットの数が「9つ」の場合、「2の3乗は8」なので、目的のサブネットの数9より小さいため不適切です。「2の4乗は16」となり、目的のサブネットの数を網羅しているので、流用するビット数は「4ビット」となります。
この場合、実際には16個のサブネットに分割されることになります。16個のサブネットのうち、9つを利用し、残りの7つのサブネットは予備として使われないで残っています。
このように、「何個のサブネットに分割するか」を元に「何ビット必要か」を求めます。
求めた後は、そのビット数分だけホストアドレス部分の左側からネットワークアドレスとして流用していきます。
拡張後のネットワークアドレスの値
ホストアドレス部分の先頭数ビットを流用することを説明したので、今度は実際にネットワークアドレスがどのような値になるのかを説明します。
IPアドレス「172.16.0.0」、サブネットマスク「255.255.0.0」を4つのサブネットに分割する場合で考えてみます。
4つのサブネットに分割する場合、2ビットを流用します。
この2ビットで表現できる値は「00」「01」「10」「11」の4種類となります。
これらを実際のIPアドレスに割り当ててみると、以下のようになります。なお、ネットワークアドレスを求めるので、ホストアドレス部分は全て「0」とします。
①.「00」→「172.16.00000000.00000000」
②.「01」→「172.16.01000000.00000000」
③.「10」→「172.16.10000000.00000000」
④.「11」→「172.16.11000000.00000000」
最終的に2進数の部分を10進数に変換すると、分割されたネットワークアドレスが求められます。
①.「172.16.00000000.00000000」→「172.16.0.0」
②.「172.16.01000000.00000000」→「172.16.64.0」
③.「172.16.10000000.00000000」→「172.16.128.0」
④.「172.16.11000000.00000000」→「172.16.192.0」
①のネットワークアドレスは元々の「172.16.0.0」と同じ値ですが、実際はサブネットマスクの値が異なるため、違うネットワークアドレスとして扱われます。
サブネットマスクの値
最後にサブネットマスクの値を求めてみましょう。
元々のサブネットマスクの値は「255.255.0.0」でした。
サブネットマスクの値は「左から1が何ビット連続しているか」を表しています。この1のビットが設定されている部分が「ネットワークアドレス」を示しています。
「255.255.0.0」を2進数に変換すると「11111111.11111111.00000000.00000000」です。
今回、このネットワークアドレスを4つに分割するために、ホストアドレス部分の先頭2ビットをネットワークアドレスとして流用しています。したがって、新しいサブネットマスクの値は以下のようになります。
「11111111.11111111.11000000.00000000」
この2進数をドット付10進数に変換すると「255.255.192.0」となります。つまり、この値が分割した新しいサブネットワークのサブネットマスクの値になります。
①.ネットワークアドレス「172.16.0.0」、サブネットマスク「255.255.192.0」
②.ネットワークアドレス「172.16.64.0」、サブネットマスク「255.255.192.0」
③.ネットワークアドレス「172.16.128.0」、サブネットマスク「255.255.192.0」
④.ネットワークアドレス「172.16.192.0」、サブネットマスク「255.255.192.0」
なお、サブネットマスの値を指定する際、ドット付10進数表記では長いので、「CIDR表記」を使う場合があります。
「CIDR表記」とは、「連続する1の数を/を付けて記述する表記法」です。
今回のサブネットマスクの値は「1が18個連続」しているので、「/18」となります。
以上を踏まえて、各ネットワークアドレスをCIDR表記で表現すると、次のようになります。
①.ネットワークアドレス「172.16.0.0/18」
②.ネットワークアドレス「172.16.64.0/18」
③.ネットワークアドレス「172.16.128.0/18」
④.ネットワークアドレス「172.16.192.0/18」
以上が1つのネットワークアドレスを複数のサブネットに分割する手順です。
1つのネットワークアドレスを複数に分割する方法は理解できましたか?
何となくわかったような気がします。
でも、自力でできるかどうか、まだ不安です。
では、1つ演習をしてみましょう!!
演習
ネットワークアドレス「192.168.0.0/24」を5つのサブネットに分割する場合、それぞれのサブネットに設定するネットワークアドレスを求めなさい。
なお、分割したネットワークアドレスを順番に5つのサブネットに設定すること。
答えは、このページの最後に記載しておきます。
まとめ
今回は、1つのネットワークアドレスを複数に分割する方法について説明しました。
・ネットワークを分割すると、ブロードキャストドメインも分割されるため通信効率が上がる
・サブネットに分割する場合、ホストアドレスの何ビットを流用するのかを求める
・流用するビット数が分かったら、実際にそれぞれのパターンを書いてみてアドレスを求める
・分割すると、サブネットマスクの値も変わる
いかがでしたか?
最初は難しいかも知れませんが、手順さえ知っていれば、簡単に求めることができます。
自分でもいくつか問題を解く練習をしてみます!!
演習の解答
では、演習の解答です。
1.5つのサブネットに分割するために必要なビット数は「3ビット」(2の3乗=8)
2.したがって、ホストアドレス部分で流用するビット数は「3ビット」
3.3ビット流用した場合の5つのネットワークアドレスは以下の通り。
①.「192.168.0.00000000」→「192.168.0.0」
②.「192.168.0.00100000」→「192.168.0.32」
③.「192.168.0.01000000」→「192.168.0.64」
④.「192.168.0.01100000」→「192.168.0.96」
⑤.「192.168.0.10000000」→「192.168.0.128」
4.サブネットマスクのCIDR表記は「/27」(元々の24+流用した3ビット)
5.実際に設定するサブネットマスクの値は「255.255.255.224」
基本情報技術者試験の午前問題のうち、IPアドレスに関する問題を集中的に解説している記事がありますので、是非合わせて確認してみて下さい。