【図解】IPアドレスの仕組み(クラス分類からサブネットまで)

インフラ

IPアドレスという言葉は聞いたことのある人も多いと思います。

開発の現場では外部の攻撃者からのアクセスを遮断したり、開発環境を外部からアクセスできないようにしたりする場合にIPアドレスの知識は必須となります。

IPアドレスの仕組みは初歩的な内容かもしれませんが、影響範囲のあるネットワークを理解するためにも必要な知識であるため改めて説明をしようと思います。

なお、今回の説明でいうIPアドレスとはIPv4のこと指します。

今回話すネットワークについてより詳しく学びたい場合は、ご存知の人も多いと思いますが「マスタリングTCP/ICP」の書籍をオススメします。

ネットワーク全般について体系的に学べますし、図も適宜掲載されていてわかりやすくなっています。

今回話すこと
  • ネットワーク部とホスト部について
  • グローバルIPアドレスとローカルIPアドレスの違い
  • IPアドレスのクラス、サブネットマスクの概念について
  • 172.20.0.0/16のようなCIDR表記が示す意味について

IPアドレスの概要

IPアドレスは32桁の二進数0と1の組み合わせで成り立っている32ビットの数字です。

8ビット1組とし、4組に分けて10進数で表示して人でも
わかりやすい形で表現されています。

例えば134.234.0.1というIPアドレスは実際には10000110111010100000000000000001という数字になります。

IPアドレスの詳細

IPアドレスの振り分け

IPアドレスは国やプロバイダごとに利用できる値が決まっています。

決め方ですが、IANAという機関が世界中のIPアドレスを一元管理しています。

そして、IANAからさらに細かな機関にIPアドレスが分配され、そこからさらに細かな・・・という感じでウォーターフォール式にIPアドレスが振り分けられます。


参考 https://www.cman.jp/network/support/IP_list.html

IPアドレスの構造

IPアドレスの中身についてもう少し説明をします。

IPアドレスはネットワーク部とホスト部に分かれており、「どのネットワークのどのコンピュータか」を識別できるようになっています。

そして、ネットワーク部、ホスト部の順番でIPアドレスの先頭から桁が割り振られています。

桁がどのように割り振られているかですが、例えば172.20.1.1/16のようにIPアドレスの後ろに”/16″のような表記で表現されています。

“/16″であれば先頭から16桁までがネットワーク部だということを表現しています。

なお、“/16″の部分はプレフィックス記法、CIDR(Classless Inter-Domain routing)などと呼びます。

図にすると以下のようになります。

IPアドレスのホスト部とネットワーク部について

なお134.234.0.1/16が存在する134.234というネットワークの中には134.234.0.0 ~ 134.234.255.255のホストが存在することができます。

後述しますが134.234.0.0/16 と134.234.255.255/16はホスト部における特別なIPアドレスなので、134.234というネットワークに存在できるホストは厳密には134.234.0.1(10000110 11101010 00000000 00000001) ~ 134.234.255.254(10000110 11101010 11111111 11111110)となります。

ネットワーク部とホスト部のルール

ネットワーク部とホスト部には主に2つのルールがあります。

それぞれ図で説明をします。

ネットワーク部はネットワークが違う場合は違う値でなければいけない

ネットワーク部のルール

緑で囲われた部分がネットワークとします。

この場合、ネットワークが異なると134.234134.235のようにネットワーク部の値が異なります。

ホスト部は同じネットワークであれば違う値でないといけない

ホスト部のルール

青で囲われた部分がホストだとします。

この場合、各ホストごとに0.1, 0.2のようにホスト部の値は異なります。

ホスト部の特別なアドレス

ネットワークアドレス

ホスト部が全て0で表現されるアドレスをネットワークアドレスといいます。

ネットワークアドレスはホスト部全てを示すアドレス、つまりネットワーク自身を示すものになります。

例えば、134.234.0.0/16というIPアドレスは132.234.xxxx.xxxで表現される134.234.0.0から134.234.255.255のホスト(厳密にはネットワークアドレスとブロードキャストアドレスをのぞいた134.234.0.1から134.234.255.254)が存在するネットワーク自身のことを指します。

ブロードキャストアドレス

ホスト部が全て1で表現されるアドレスをブロードキャストアドレスといいます。

ブロードキャストアドレスはホスト部すべてを示すもので、同一のネットワークに存在する全ホストに同一のパケットを送信するときなどに利用されます。

例えば、134.234.255.255/16というIPアドレスは134.234.0.0から134.234.255.255のホスト全てを指すことになります。

プライベートIPアドレス

IPアドレスは32ビットで構成されています。

32ビットだと約40億(2の32乗 = 4,294,967,296)台のコンピュータにIPアドレスを振り分けることができ、インターネットを利用することができます。

しかし、これだけだとIPアドレスは足りません。

そこでプライベートIPアドレスの概念が生まれました。

プライベートIPアドレスはローカルネットワーク内で利用されるIPアドレスです。

ローカルで利用されるものなのでプライベートIPアドレスではインターネットに接続することはできません。

一方、今まで説明をしてきたインターネットに接続するためのIPアドレスのことはグローバルIPアドレスと呼びます。

複数のプライベートIPアドレスがグローバルIPアドレスを共有することでコンピュータごとにIPアドレスを振り分けるのではなく、ネットワークごとに振り分けられるようになり、より多くのコンピュータがインターネットに接続できるようになります。

グローバルIPアドレスとローカルIPアドレスの対応関係

また、プライベートIPアドレスとして利用できるIPアドレス決まっており、以下のようになっています。

プライベートIPアドレスとして利用できるIPアドレス
  • 10.0.0.0 ~10.255.255.255(10.0.0.0/8)
  • 172.16.0.0 ~172.31.255.255(172.16.0.0/12)
  • 192.168.0.0 ~192.168.255.255(192.168.0.0/16)

なお、プライベートIPアドレスはネットワークが異なっていれば同じアドレスでも問題ありません。

プライベートIPアドレスのルール

IPアドレスのクラス

IPアドレスはネットワーク部とホスト部に分かれるという説明をしました。

ネットワーク部とホスト部に振り分ける桁数によってそのネットワークの規模が変わってきます。

具体的には、ホスト部に割り当てられる桁数が多いほど同一のネットワーク内に存在できるホスト数が多いことになるため、規模が大きいネットワークとなります。

クラスとはネットワークの規模によって利用できるIPアドレスを振り分けるための概念です。

クラスは大きく分けてA, B, Cというものがあります。

現在はサブネットマスク(後述)の概念が導入されているため、クラスよりも柔軟にネットワークの規模を決めることができています。

クラスの詳細

クラスの詳細を表にしたものが以下になります。

クラスA クラスB クラスC
ネットワーク規模  大規模向け 中規模向け 小規模向け
ネットワーク部 上位8ビット(/8) 上位12ビット(/12) 上位16ビット(/16)
ネットワーク数 256(2の8乗) 4096(2の12乗) 65536(2の16乗)
ホスト部 下位24ビット 下位20ビット 下位16ビット
ホスト数 16777216(2の24乗) 1048576(2の20乗) 65536(2の16乗)
グローバルアドレス

1.0.0.0 ~ 9.255.255.255 128.0.0.0 ~ 172.15.255.255 192.0.0.0 ~ 192.167.255.255
11.0.0.0 ~ 126.255.255.255 172.32.0.0 ~ 191.255.255.255 192.169.0.0 ~ 223.255.255.255
プライベートアドレス 10.0.0.0 ~10.255.255.255 172.16.0.0 ~172.31.255.255 192.168.0.0 ~192.168.255.255
プライベートアドレス(スラッシュ表記) 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

サブネットマスク

クラスの概念が導入された結果、ネットワークの規模によって利用できるIPアドレスは決まるという説明をしました。

しかし、クラスには問題点がありました。

まず、利用するクラスが集中するという点です。

規模が大きすぎず小さすぎないクラスBの利用に集中をしてしまいました。

先ほども説名した通り、クラスごとに利用できるIPアドレスが決まっているため利用するクラスが集中するとそのクラスの
IPアドレスが不足するという事態に陥ってしまいます。

次にホストが無駄に余るという点です。

クラスBのネットワークにおいてホスト数は1048576台まで設定できるが数的に大きすぎて現実的ではありません。

ですので、1つのネットワーク内で利用できるホストを余らせてしまい、その結果ネットワーク上でIPアドレスが余ってしまうという問題が起きました。

そこでサブネットマスクの概念が導入されました。

サブネットマスクはクラスに縛られることなくネットワーク部とホスト部に分けられるようにする識別子のことをいい、ネットワーク部を1、ホスト部を0で表現します。

クラスの場合だとIPアドレスの値によってCIDR(IPアドレスの後に続く”/”の部分)の値は必然的に決まりましたが、サブネットを導入することで柔軟にネットーワクの規模を変更することができます。

サブネットマスクによるネットワーク規模の変更

IPアドレスとサブネットマスクの対応は以下のようになります。

IPアドレスとサブネットマスクの対応

また、サブネットマスクによってネットワークを細分化することをサブネット化と呼んでいます。

クラスによるネットワークをサブネット化したイメージは以下のようになります。

クラスによるネットワーク

サブネット化されたネットワーク

まとめ

今回はIPアドレスについて説明をしました。

まとめると以下のようになります。

今回のまとめ
  • IPアドレスには
グローバルアドレスとプライベートアドレスがある
  • ホスト部が全て0のものはネットワークアドレス
  • ホスト部が全て1のものはブロードキャストアドレス
  • 元々IPアドレスはA, B, Cのクラスを持っており、
今はサブネットによってサブネット化されている
  • CIDR(/xx)をみることでネットワークの規模、
ホスト数がわかる。数が少ないほどホスト数は多い