【IPアドレスとは】ネットワーク上の住所です

about-ip-address-part1

この記事のポイント
  • IPアドレスはネットワーク上の住所

  • 元はコンピュータが理解出来る2進数の数字

  • サブネットマスクをつけてセグメント情報も付与

ネットワークの教科書に出てくるIPアドレス。何となくで見ているけど、ちゃんと理解できていないかも・・・

チャーチルさん

ポン先生

IPアドレスはネットワークだけじゃなく、全てのITエンジニアが知っておくべき基本的な知識だね。

本記事ではIPアドレスの基本から解説します。全員が履修すべき基礎知識なので必ず理解しましょう。

IPアドレスとは

IPアドレスとは

IPアドレスとはネットワーク上の住所

まず結論から。IPアドレスはネットワーク上の住所です。住所が無いと相手に何も送ることができないのと同じでネットワーク上でも住所が必要になります。アドレス=Address=住所ですしね。

ただし現実世界の住所と違うのはその表現方法です。人間が分かる住所は例えば

東京都港区芝公園4丁目2−8

のような文字列ですがIPアドレスは

192.168.100.1

のような数字です。

ネットワークは直接的には人間ではなくコンピュータが接続するので、コンピュータが理解できる数字で表現されます。どういった規則で表現されるのか具体的に見ていきましょう。

IPアドレスの表現方法

IPアドレスの表現方法

2進数について

IPアドレスの前にまずは進数について説明します。普段皆さんが使っている数字は10進数と言われるものです。なぜ10かと言うと1桁あたり0~9の10種類の数で表現されるためです。

例えば123という数字は

123 = 1×100+2×10+3×1

と分解できます。100の位は1、10の位は2、1の位が3個という組み合わせで123は表現されます。ここはすんなり理解できるでしょう。

ですがコンピュータはこの10進数を直接的には理解できません。コンピュータの世界では0と1(OFFかONか)しか無いのです。普段PCやスマートフォンで数字や文字を入力していても内部ではこのように0 or 1に変換されています。

このように0と1だけの数字は2進数と言います。10進数と同じ言い方をすれば、一桁あたり0~1の2種類の数で表現されます。
※以降は便宜上、()内の数字で進数を示します。

例えば6(10)= 110(2)です。これは

6(10)= 1×4+1×2+0×1 = 110(2)

という意味になります。10進数のときは各桁は1、10、100、1000ですがこれは

100=1、101=10、102=100、103=1000

から来ています。
※0乗がなぜ1になるか知らない人は不思議に思うかもしれませんが、ここでは割愛します。とりあえずそうなるんだなぁ程度で大丈夫です。

同様に2進数の世界では

20=1、21=2、22=4、23=8

のため各桁は1、2、4、8・・・となります。以下は0~10の比較表です。

10進数2進数
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
101010

ポン先生

人間の感覚だと分かりにくいけどコンピュータはデジタルな電気信号で動いているから0or1の方が都合が良いのだね

IPアドレスの表現

2進数について分かったところでIPアドレスについて見ていきましょう。IPアドレスは元は以下のような32bitの数字です。
※bitというのは2進数の場合の各桁の事です。32bitは2進数で32桁ということですね。

① 11000000101010000110010000000001

このままだと分かりにくいので8bit×4グループに分割します。

② 11000000.10101000.01100100.00000001

これを8bitずつ10進数へ変換します。

③ 192.168.100.1

これでIPアドレスの完成です。

①、②だとさすがに普段は人間目線では使いにくいですが③であればドキュメントに書いたり機器に設定したりも楽ですよね。②も③も情報としては同じ内容ですが一般的にIPアドレスといえば③で記載されます。

.(ドット)で区切られた8bitのグループをオクテットと言います。そのため1オクテットあたり256個(0~255)あります。256というのは28ですね。

そのため全て書こうとすればIPアドレスは(実際はこうゆう使い方はしませんが)0.0.0.0~255.255.255.255の範囲となります。

ネットワークセグメント

もう少しネットワークやIPアドレスの表記について深堀りしていきます。現実世界の住所は

東京都港区芝公園4丁目2−8

のように書きますが、これは

東京都 > 港区 > 芝公園 > 4丁目2−8

のように階層化できます。例えば東京都に行く、と言うよりも東京都の港区に行く、さらには東京都の港区の芝公園の4丁目2−8に行くと言った方が具体的で分かりやすく正確ですよね。

ネットワークの世界でもある程度の大きさでグループ分けした方が管理しやすいのです。具体的には複数のIPアドレスを束ねてグルーピングします。これをネットワークセグメントと言います(以下セグメント)。例えば128個でまとめたり、256個でまとめたりです。
※2進数なので2の累乗個になります。

次の章で具体的な書き方を見ていきます。

サブネットマスク

上記のセグメントとIPアドレスを紐付けるのがサブネットマスクです。先に書き方だけ記載します。例えば192.168.100.0~192.168.100.255のIPアドレス256個のセグメントを表現する場合は

192.168.100.0/24

と記載します。この/24がどういった意味なのかを説明します。まず、IPアドレスにはネットワーク部ホスト部があります。

192.168.100.1
   ネットワーク部 ホスト部

ネットワーク部はセグメントを表す情報です。例えば192.168.100.0~192.168.100.255の例だと192.168.100は共通部分ですよね。この共通部分のことをネットワーク部と呼びます。

ホスト部はIDのようなものです。上記の例だと192.168.100のセグメントの中の1番ということです。

上記は192.168.100.1が/24の場合の説明です。しかし単純に192.168.100.1と書かれているだけではどこまでがネットワーク部でどこからがホスト部か分かりませんよね?そこで追加される情報がサブネットマスクです。サブネットマスクによってネットワーク部とホスト部の境界が分かるようになります。

一言で言うと、サブネットマスクはネットワーク部を1にした32bitの数字です。ちょっとこれだけだと分からないので以下解説です。

まず、サブネットマスクもIPアドレスと同様32bitの数字です。そしてIPアドレスのネットワーク部に相当する位置を1に、ホスト部に相当する位置を0にします。IPアドレスとサブネットマスクを掛け算すると、サブネットマスクの1の部分だけが残るのでその部分がネットワークアドレスになります。

IPアドレス(192.168.100.1)・・・・・11000000.10101000.01100100.00000001
                          ×(掛け算)
サブネットマスク(255.255.255.0)・・11111111.11111111.11111111.00000000
                            || ​
ネットワーク部(192.168.100.0)・・・11000000.10101000.01100100.0000000
0

上記の255.255.255.0がサブネットマスクになります。このままでも良いですが、長いので/24と書く方が多いです。/xxの書き方をCIDR表記と言います。

2進数の掛け算についてはイメージしにくいかもしれませんが以下パターンしか無いです。

  • 1×1=1
  • 1×0=0
  • 0×1=0
  • 0×0=0

要は1×1以外は全て0になるということだね

チャーチルさん

以下はサブネットマスクの一覧です。/xxの数字が小さいほど、「利用可能なIPアドレスの数が多い=大きいセグメント」であることが分かります。

サブネットマスクCIDR表記IPアドレス数
128.0.0.0/12147483648
192.0.0.0/21073741824
224.0.0.0/3536870912
240.0.0.0/4268435456
248.0.0.0/5134217728
252.0.0.0/667108864
254.0.0.0/733554432
255.0.0.0/816777216
255.128.0.0/98388608
255.192.0.0/104194304
255.224.0.0/112097152
255.240.0.0/121048576
255.248.0.0/13524288
255.252.0.0/14262144
255.254.0.0/15131072
255.255.0.0/1665536
255.255.128.0/1732768
255.255.192.0/1816384
255.255.224.0/198192
255.255.240.0/204096
255.255.248.0/212048
255.255.252.0/221024
255.255.254.0/23512
255.255.255.0/24256
255.255.255.128/25128
255.255.255.192/2664
255.255.255.224/2732
255.255.255.240/2816
255.255.255.248/298
255.255.255.252/304
255.255.255.254/312
255.255.255.255/321

諸々踏まえると、192.168.100.1/24と書けば以下情報が分かります。

  • IPアドレスは192.168.100.1であること
  • ネットワーク部は192.168.100であること

因みに上記の場合、IPアドレスの範囲は192.168.100.0~192.168.100.255の256個ですが実際に端末で利用可能なIPアドレスは192.168.100.1~192.168.100.254の254個です。残りの2個はそれぞれ以下になります。

  • 192.168.100.0・・・ネットワークアドレス(セグメントそのものを表す)
  • 192.168.100.255・・ブロードキャストアドレス(セグメント内全体と通信する時に使う)

そのためセグメント自体を表す時は192.168.100.0/24と記載します。実際の会話の中では192.168.100.0/24の前提があれば192.168.100.1 = 192.168.100.1/24であることは分かるので、わざわざ192.168.100.1/24と書かなくても済みます。

まとめ
  • IPアドレス
    • IPアドレスはネットワーク上の住所
    • コンピュータが理解できるよう中身は2進数(表示上は10進数で書いてOK)
    • 8bit×4グループの数字で表現される
  • セグメント
    • IPアドレスの集合体がセグメント
    • セグメント情報も表現できるようサブネットマスクを記載する

今回はIPアドレスの基本についてまとめました。正確に書こうとするとどうしても数式や計算も出てきますが、全ITエンジニア必須知識なので必ず理解しておきましょう。特にネットワークエンジニアであれば2進数世界と10進数世界を行ったり来たりできるようにもしておきましょう。