こちらの記事ではサブネット・サブネットマスクについて解説します。
まずはじめに、サブネットが誕生した理由からサブネットの概要を説明します。そして、サブネットの利点と欠点、サブネットマスクの仕組みや使い方を説明します。
また、こちらの記事はIPアドレスに関しての前提知識が必要となります。IPアドレスに関しては以下の記事をご覧ください。
https://envader.plus/article/51
サブネットが誕生した理由
初期のTCP/IPのIPアドレス(IPv4)は、IPアドレスの枯渇問題を抱えていました。この問題の対策として、IPアドレスの割り当てをクラスフルアドレッシングという仕組みが導入されました。
クラスフルアドレッシングにはユーザに割り当てられるアドレスクラスが3種類しかなく、いずれのアドレスクラスもユーザにとって「丁度良いアドレスクラス」ではありませんでした。そのため、「3種類の中では」大きすぎず、小さすぎないクラスBにユーザからのIPアドレスの割り当て要求が集中しました。クラスBの割り当てを受けたからといって、クラスBの接続可能最大数(65,534台)のホストが同時に接続することが稀なネットワークも存在し、IPアドレスが無駄に消費される結果となりました。
このように、クラスフルアドレッシングではIPアドレスの枯渇問題を解決することができませんでした。そのため、「サブネット」という概念が誕生しました。
「サブネット」とは、ネットワーク内の分割されたネットワークのことを指し、ネットワークを分割することを「サブネット化」と呼びます。
サブネット化とは
サブネット化は、ネットワークを分割し、収納するホストの台数に適したネットワーク(サブネット)を構築することができます。ネットワークを分割することで収納できるホスト数は減少しますが、より多くのネットワークを使用することができます。
上記の図のように従来のクラスフルアドレッシングのクラス(クラスA、クラスB、クラスC)のネットワークを分割することをサブネット化と表現することもありますが、クラスの定義に関わらず単にネットワークを分割することもサブネット化すると表現します。
サブネット化の利点
サブネット化を行うと、IPアドレスの無駄な消費以外に、以下の利点があります。
- 通信トラフィックの緩和
- ネットワークの効率化
- ネットワーク障害が起きた箇所を特定できる
通信トラフィックの緩和
例えば、ある企業がクラスフルアドレッシングで用いられるクラスBのプライベートIPアドレス「172.18.0.0~172.18.255.255
」を使用してネットワークを構築し、クラスBの接続可能最大数である65,534台のホストが接続したと仮定します。
クラスBでは65,534台のホストを収容することは可能ではありますが現実的ではありません。なぜなら、1つのネットワークに65,534台のホストを収容した場合、通信トラフィックが多すぎてネットワークが飽和状態(データ処理が限界に達してそれ以上速度が出ない状態)になり、通信自体ができなくなる可能性もあります。また、ホストの台数が膨大になることで管理も増大します。
この問題は、クラスBのネットワークを更に分割し、それぞれのネットワーク間をルータで相互に接続する方法、つまりサブネット化を行うことで解決することができます。サブネット化を行うと、通信トラフィックを局所化して全体的な負担を緩和し、管理の手間も軽減することができます。
ネットワークの効率化
サブネット化されていないネットワークの場合、ホストの台数が増えるごとに余計な通信や通信の渋滞(輻輳)が発生します。
例えば、クラスBのネットワークでARP(IPアドレスからMACアドレスを調べるブロードキャストの1種)を送ったとします。この時、該当のホスト以外はARPで送られてきた通信を破棄します。これが余計な通信です。
サブネット化することでブロードキャストが送られる範囲を分割(縮小化)することができ、余計な通信自体の量を減らすことができます。また、輻輳も緩和され、全体的なネットワークのパフォーマンスが向上します。
ネットワーク障害が起きた箇所を特定できる
大規模ネットワークの場合、収納するホストの台数が数千から数万になるものもあります。この大規模ネットワークの中で障害が発生した場合、ホストの台数が多すぎることが原因でどの機器で障害が発生したかを特定しにくくなります。
サブネット化を行いネットワーク部を分割することにより、障害が発生した際にどの範囲で障害が発生したのかを容易に特定することができます。
サブネットの欠点
サブネットに分割すると、様々な利点が得られますが、欠点も存在します。
1つのネットワークから分割したサブネットそれぞれに別々のネットワークアドレスを設定するため、ルータ等を介さずに直接通信することができなくなります。相互接続を行いたい場合、別途レイヤ3スイッチングハブかルータを設置する必要があります。
また、相互接続のための導入コストや機器の設定・管理をする必要があることが欠点です。
サブネットマスク
サブネットマスクとは、IPアドレスを分割して、どこがネットワークアドレス部分で、どこが端末を表すホストアドレス部分かを識別するために使う数値です。サブネットマスクをIPアドレスと組み合わせることで、サブネット化を行います。
サブネットマスクの仕組み
サブネットマスクは、一般的には「255.255.255.0
」のような10進数とピリオドの組み合わせで表記します。このサブネットマスクを2進数で表記すると、「11111111.11111111.11111111.00000000
」となります。これは、「1
」の部分がネットワーク部で、「0
」の部分がホスト部であることを示しています。また、サブネットマスクは左端から1つ以上の「1
」が連続している必要があります。
該当のIPアドレスのネットワーク部を決めるためには、「IPアドレスとサブネットマスクの論理積(AND)」を取ります。
論理積の特性を利用し、サブネットのネットワーク部が決まる仕組みを以下の図にまとめました。
サブネットマスクを使ったサブネット化
サブネットマスクを使ったサブネット化の例を、CIDR(クラスレスアドレッシング)を用いて説明します。以下の図と表をご覧ください。
10進数表記 | 2進数表記 | |
---|---|---|
IPアドレス | 126.129.182.0 | 01111110.10000001.10110110.00000000 |
サブネットマスク | 255.255.255.192 | 11111111.11111111.11111111.11000000 |
サブネットマスク | 255.255.255.224 | 11111111.11111111.11111111.11100000 |
サブネットマスク | 255.255.255.240 | 11111111.11111111.11111111.11110000 |
ISP(Internet Service Provider:インターネットサービスプロバイダー)はサブネットマスクを使用することで、従来のクラスフルアドレッシングのアドレスクラスに該当するIPアドレスを割り当てるのではなく、①のようにユーザが必要なネットワーク規模に応じてIPアドレスを割り当てることができます。
また、ISPからIPアドレスの割り当てを受けたユーザは、サブネットマスクを使用することで最大62台が収納可能なネットワークを図の②、③、④のような複数のネットワークに分割することが可能です。
また、表を見て分かるように、IPアドレスのホスト部の一部をネットワーク部とみなして、IPアドレスの範囲に収容できるネットワークの数を増やすことでサブネット化を行います。
サブネットマスクはどんな時に設定する必要があるのか?
サブネットマスクは、グローバルIPアドレスとプライベートIPアドレスそれぞれで管理方法が異なります。それぞれの管理を以下の表にまとめました。
IPアドレス | サブネットの管理 |
---|---|
グローバルIPアドレス | ISPなどが管理・割り当てを行う(ユーザは自由に割り当てできない) |
プライベートIPアドレス | 企業や一般家庭で管理・割り当てすることができる |
上記の表のように、ユーザはプライベートIPアドレスのサブネットの管理や割り当てを行います。現在はルータに搭載されたDHCP機能により自動でIPアドレスが割り振られるので、手動でIPアドレスやサブネットマスクを設定することは少なくなりました。しかし、異なるネットワークはルータを介さずに直接通信できないことを利用し、以下のような場合にサブネットマスクを手動で設定します。
- ①企業内の部署間でデータの参照を制限する場合
- ②ホストやサーバの台数が多く、分割して管理する場合
- ③開発環境と本番環境を分けるなど、環境を切り離す場合
ルータが参照するサブネットマスク
上の図のネットワークAとネットワークBが相互に通信を行いたい場合は、互いが異なるネットワークなのでルータを介して通信を行うことになります。この時、ルータがどのようにして宛先まで通信を届けるかを説明します。
ルータはまず、送られてきた通信の宛先が同一ネットワークか、異なるネットワークかを判断します。そこで、コンピュータ同士のデータのやり取りに使われる「IPパケット」の詳細構造を以下にまとめましたのでご覧ください。
図を見て分かるように、IPパケットの中にはネットワークマスクの情報は入っていません。つまり、送信元のサブネットマスクの情報を知ることができません。
そのため、送られてきた通信が同一ネットワークかどうか(宛先ネットワークアドレスの算出)を、「IPパケットの中の宛先IPアドレス」と「ルータ自身に設定されたサブネットマスク」の論理積を取ることで判断しています。
そして、送られてきた通信が同一ネットワークだった場合はネットワーク内のホストに通信を届け、異なるネットワークだった場合は次のルータに通信を任せます。
まとめ
こちらの記事ではサブネット・サブネットマスクについて解説しました。
普段生活しているだけではサブネットの構築をすることやサブネットマスクを変更する機会などあまりないかもしれません。しかし、企業などによっては部署ごとにサブネットを構築することや、開発環境・本番環境を分ける、といったことは珍しくありません。
そういった場合に対応・実装できるようになるためにも、サブネット・サブネットマスクの知識に限らず、IPアドレスやCIDR(クラスレスアドレッシング)に関する知識も合わせて学習していきましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.12.03
初心者向け!図解で説明する通信のカプセル化
通信におけるカプセル化について、「名前は聞いたことがあるけど、実際に何をしているのかよくわからない」という方向けに、図解でわかりやすく徹底解説。
- ネットワーク
2022.12.28
【徹底解説】サーバーレスのメリットデメリット
サーバーレス(FaaS)ってつまり何?メリットとデメリットを丁寧に解説します。
- ネットワーク
2024.10.26
【Zabbix入門】統合監視ソフトウェア Zabbixの基本を理解する
この記事では、Zabbixの基本的な機能と、どのような役割を果たすのかについて解説します。
- インフラエンジニア
- ネットワーク