PR
IPアドレスとは?サブネットマスクなど基本的な仕組みを徹底解説!
この記事では「IPアドレスってなに?」という疑問に答えていきます。IPアドレスの考え方がわかれば、ネットワークの仕組みも理解しやすくなります。
IPアドレスは数字の羅列に見えるので、とっつきにくい感じがします…。が、仕組みがわかれば数字の意味もわかります。
- IPアドレスって?ネットワークとかでよく聞くけど、何?
- IPアドレスの現状や仕組みを詳しく知りたい
IPアドレスとは?
簡単に言うと「ネットワーク上の住所」です。
ネットワーク(インターネットを含む)上のデータをやり取りする際に「IPアドレス=住所」「データ=荷物」と考えればわかりやすいと思います。
例えば、インターネット上のサイトを見るとしましょう。まず「〇〇サイトを見せてください」とパソコンやスマホからリクエストしますが、サイトのデータを送る際に住所がわからないと送れませんよね?その送り先の住所の役割をするのが「IPアドレス」になります。
IPアドレスの仕組み
IPアドレスはv4という規格とv6という規格があります。両者の違いはビット数の違いですが、基本的な考え方は同じですので、以下ではIPv4で説明をしていきます。
上で話したように、IPアドレスは住所のようなものですが、次のような数字の羅列で表されています。ピリオドで区切られた4つの部分をフィールド、と呼びます。
192.168.100.2
実は、この数字は2進数表記されたものを10進数にしたものです。それぞれのフィールドの数字を2進数表記すると、
「192 → 11000000」 、「168 → 10101000」、「100 → 01100100」、「2 → 00000010」
なので、192.168.100.2を2進数表記すると、
11000000 . 10101000 . 01100100 . 00000010
となります。各フィールドは8ビット(桁)で表されます。IPアドレスは10進数の数字として捉えるよりも、この2進数表記の方が意味を理解しやすくなります。
見やすいのは10進数表記ですが、仕組みを理解するためにIPアドレスは「2進数=0と1の羅列」と思っておきましょう。
「2進数って?聞いたことあるけど、なんだっけ?」という人はこちらで解説しています。
IPアドレス(IPv4)の問題点
前述の通り、IPアドレスはネットワーク上の住所ですが、その正体は2進数表記で4フィールド×8ビット=32ビットの数字の羅列です。
そこで生じてくるIPv4の問題点は「使えるアドレスが少ない」というものです。32ビットの数字で表現できる数のパターンは、
\(2^{32}=4,294,967,296 \)通り(約43億通り)となります。
一見すると非常に大きな数字に見えますが、2021年の世界の人口は約78億7500万人です。全てのパターンを使っても世界の人口をカバーできませんし、ネットワーク上の住所なわけですから、情報端末1つにつき1つのアドレスが必要です。そう考えると、とてもではありませんが43億個では足りません。
そこで、問題の解決法としては、
- IPv6を使う。
- 上手いことIPv4のIPアドレスをやりくりする。
という方法があります。
1.については、かなり根本的な解決策です。IPv6は128ビットなので、同じように計算すると、\(2^{128} \)通りとなります。約340澗(かん)だそうです…聞いたこともない桁です。とにかく、IPアドレスの個数がほぼ無制限に近い感覚になります。詳しくはこちら。(外部リンクです)
ただ、問題はIPv4とIPv6には互換性がない、という点です。すべてのIPアドレスをサクッとIPv6に置き換えられれば良いのですが、当然一気に今使っている環境(IPv4)を廃止するのは不可能です。
そして、IPv4ではすでに2.の解決策で、問題ないレベルで運用ができています。なかなかIPv6への移行が進まないのはここが理由です。今問題なく運用できているものを、あえて新しいものに置き換えていく、というのはなかなかモチベーションが上がらないものです…。
ここでは、2についてもう少し詳しく説明していきます。
2.については、
- ネットワークを使うときだけIPアドレスを貸す。
- ローカルネットワークを構築する。
という方法で上手くやりくりをしています。
そこで重要になってくるのは、次の二種類のIPアドレスです。
- グローバルIPアドレス
- プライベートIPアドレス
これについて説明をしていきます。
グローバルIPアドレス
グローバルIPアドレスとは、インターネットに繋ぐ際に使うIPアドレスです。
グローバルIPアドレスはパソコンであればプロバイダ、スマホであれば携帯キャリアの会社から割り当てられますが、普通は動的に割り当てられます。つまり、インターネットを使うときにプロバイダ等からグローバルIPアドレスが適当に割り当てられ、不要になったら回収される、ということです。イメージ的には賃貸マンションみたいなものですね。
この動的なIPアドレスの割り当てにより、限られたIPアドレスを上手く運用しています。固定IPアドレス(つまり決まったグローバルIPアドレスをもらう。イメージ的には一戸建ての家みたいなものでしょうか)を契約することもできますが、普通は固定する必要性がないため、あまり意識することがないと思います。
プライベートIPアドレス
家庭や会社では、限られた数のグローバルIPアドレスしか割り当てられません(インターネットのプロバイダと1つ契約している家なら普通グローバルIPは1つ割り当てられる)。インターネットに接続する際にグローバルIPアドレス(つまり、それぞれの端末を示す住所)が必要なのに、「家にいるときに家族皆がWiFiに繋いでインターネットが見られる」というのはどういうことでしょうか…。
それは「家庭や会社でローカルネットワークを組んでいるから」です。
最近では、「WiFiルーター」を設置している家庭がほとんどだと思います。この「ルーター」というやつのおかげでローカルネットワークを組み、一つのグローバルIPアドレスで複数の情報機器をインターネットに繋ぐことができます。
そのローカルネットワークを支える仕組みが、プライベートIPアドレスです。
プライベートIPアドレスとは
プライベートIPアドレスとは、ローカルネットワーク上のみで使われるIPアドレスです。
住所で言えば「〇〇番地」のようなものだと思ってもらえればわかりやすいと思います。例えば「10番地」と言われても「どこの?」となりますよね。でも「〇〇県〇〇市〇〇町」の「10番地」といえば住所の特定ができます。つまりプライベートIPアドレスとは「ローカルネットワーク(ex. 家でのネットワーク)の中での番地の呼び名」というイメージです。これであれば、そのローカルネットワーク内で番地の重複がなければよく、また他のローカルネットワークで番地の重複があっても問題ないですよね。例えば「〇〇県〇〇市〇〇町」と「〇〇県〇〇市△△町」が違っていれば、それぞれで「10番地」という同じ番地名を使っても問題ないわけです。
クラスとは
IPアドレスは
192.168.100.2 → 11000000 . 10101000 . 01100100 . 00000010
という構造になっていますが、IPアドレスの中はさらにネットワーク部とホスト部というものに分かれます。
32ビットの数のどこをネットワーク部、ホスト部にするかによって、そのネットワークに繋げるホスト(=情報機器)の台数に違いが出てきます。このネットワーク規模によって、クラスというものに分けられます。
クラスA | ネットワーク部:8ビット、ホスト部:24ビット | 同一ネットワークに接続可能な台数:約1670万台 |
クラスB | ネットワーク部:16ビット、ホスト部:16ビット | 同一ネットワークに接続可能な台数:約6万5千台 |
クラスC | ネットワーク部:24ビット、ホスト部:8ビット | 同一ネットワークに接続可能な台数:256台 |
が、現在はあまりこのクラスを意識することはないかと思います。後述するサブネットマスクによって自由にネットワーク規模を調整できるからです。
ただし、現在のネットワークの組み方は、このクラスの概念によって慣習的に決まっている場合が多いです。
なぜなら、自由にネットワーク規模を調整できるからといって、細かく調整しないと運用できないケースはほぼないからです。ネットワーク部、ホスト部は自由に設定できますが、特別な理由がない限りはクラスに従ったネットワークの組み方で問題ないと思います。
一般的な家庭でのネットワークは10台も接続できれば十分ですが、「別に256台接続できるクラスCで組んでてもいいじゃん」という感じですね。
サブネットマスク、プレフィックスとは
ネットワーク部が同じ情報機器は同じネットワークに属して、ホスト部がそのネットワーク内での住所を表すものになります。
しかし、IPアドレスはただの数字の羅列なので、どこがネットワーク部なのかホスト部なのかわかりません。そこで、どこまでがネットワーク部で、どこまでがホスト部なのかを表すためにサブネットマスク、もしくはプレフィックスというものを設定します。
サブネットマスクとは
IPアドレス 192.168.100.2 → 11000000 . 10101000 . 01100100 . 00000010
について、24ビット分をネットワーク部に指定したいとします。
11000000 . 10101000 . 01100100 . 00000010 ←太字のところまで
このとき、該当のネットワーク部を「1」、ホスト部を「0」で埋めたIPアドレスのようなものを準備します。
11111111 . 11111111 . 11111111 . 00000000 → 10進法で 255.255.255.0
これをサブネットマスクといい、IPアドレスと組み合わせる(AND演算をする)ことで、どこまでがネットワーク部かがわかります。IPアドレスとサブネットマスクは必ず一組にして扱います。
プレフィックスとは
先頭から何ビットまでがネットワーク部かが分かれば良いので、そのビット数を数で指定したものがプレフィックスになります。例えば、先頭から24ビットがネットワーク部だとしたら、IPアドレスの後ろに「/ビット数」として指定します。
IPアドレス 192.168.100.2/24
何ビットまでがネットワーク部かを指定するという意味としては、サブネットマスクと同じです。
なぜネットワーク部とホスト部に分けるのか
ローカルネットワークを組むのなら、重複がなければどんなIPアドレスを割り振っても問題ないはずです。0.0.0.0〜255.255.255.255の数字を自由に使っても良いのですが、なぜIPアドレスをわざわざネットワーク部とホスト部に分けるのでしょうか。
一言でいうと「無駄を減らすため」です。
- 何も考えずに32ビットが取りうる全てのパターン数を考えると、IPアドレスは\(2^{32}=4,294,967,296\)個(約43億個)使えることになります。そんなに使いません。
- サブネットマスクを使うと、自由に小さなネットワークを組むことができます。通信障害が発生したときの原因特定やブロードキャスト(全ホストに通信を投げる)が容易になります。
ちなみに、ホスト部の全ての桁が0であるIPアドレスをネットワークアドレス、全ての桁が1であるIPアドレスをブロードキャストアドレス、と言います。特殊なIPアドレスとなるので、通常のホスト用のIPアドレスとして使うことはできません。
まとめ
長文になってしまったので、要点をまとめておきます。
- IPアドレスはインターネット上の住所。
- IPアドレスにはグローバル、プライベートの2種類がある。
- プライベートIPアドレスはローカルネットワーク内ならば、自由に割り当てることができる。
- IPアドレスは、サブネットマスクまたはプレフィックスを使って、ネットワーク部とホスト部に分けられる。
- 「ネットワーク部が同じ=同じネットワークに属している」、「ホスト部はそのネットワーク内での住所のようなもの」
これらの考え方はIPアドレスの考え方の基本です。実際にネットワークを組むときには、これに加えて、自動的にIPアドレスを割り当てたり、ローカルネットワークと外のネットワーク(インターネットなど)を繋ぐためにIPアドレス変換を行なったりしています。
IPアドレスの考え方がわかれば、ネットワークの仕組みがわかってきます。特にネットワーク部とホスト部に分かれる、という点は重要ですね。