ネットワークの教科書NETWORK

第2章 アドレスのしくみ2-2コース全体 19回中6本目

入門読了 約7分

IPアドレスの構造 ― 32ビットをどう読むか

192.168.10.25 のような見慣れた表記が、実際には何を表しているのか。32ビットの数字1つを、オクテット・ネットワーク部・ホスト部の観点から整理します。

結論

IPアドレスの正体は、32ビットの数字1つ

192.168.10.25 のようなIPアドレス(IPv4)は、見た目は4つの数字がドットで 区切られていますが、コンピュータの内部では32ビットの2進数1つです。人間が読み書きしやすいように、 8ビットずつ4つに区切り、それぞれを10進数に変換して表示しているだけです。

この記事の核心IPアドレスは「4つの数字の集まり」ではなく「32ビットの1つの数字」です。この記事では、その32ビットが どう区切られ、どう読まれるかを整理します。
しくみ

32ビットをどう区切るか

32ビットを8ビットずつ4つに分けた、それぞれのかたまりをオクテットと呼びます。203.0.113.45 というアドレスを例に、各オクテットの2進数と10進数の対応を見てみます。

オクテット2進数10進数
第1オクテット11001011203
第2オクテット000000000
第3オクテット01110001113
第4オクテット0010110145

なぜ0〜255の範囲になるのか

1オクテットは8ビットです。8ビットで表せるパターンは 2⁸ = 256 通りで、 0から数え始めるので範囲は 0〜255 になります。10進数への変換は、 各桁(ビット)に割り当てられた重みを、1が立っている位置だけ足し合わせるだけです。 第4オクテットの 00101101(10進数で45)を例にすると、次のようになります。

1286432168421
00101101

1が立っているのは重み32・8・4・1の位です。32 + 8 + 4 + 1 = 45。 これが10進数表記の45と一致します。最大値の 11111111128+64+32+16+8+4+2+1 = 255 となり、これが1オクテットの上限です。

考え方

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

32ビットのIPアドレスは、さらに2つの役割に分かれています。住所を「地域」と「号室」に分けるように、 IPアドレスもネットワーク部(どのネットワークに属すか。地域にあたる)とホスト部(そのネットワーク内の何番目の機器か。号室にあたる)に分かれます。

どこまでがネットワーク部で、どこからがホスト部かという境界を決めるのがサブネットマスクです。 同じIPアドレスでも、サブネットマスクの値によってネットワーク部の広さは変わります。

境界を実際に計算する手順(プレフィックス長からホスト数を求める3ステップ)は、 次回「サブネットマスクの計算のやり方」で扱います。 この記事では「ネットワーク部とホスト部という2つの役割に分かれている」という考え方だけを押さえておけば十分です。
歴史

クラスという古い考え方

ネットワーク部とホスト部の境界は、現在はCIDR/24 のようなプレフィックス長表記)で 自由に決められます。しかし昔は、IPアドレスの先頭ビットパターンによって境界が固定されるクラスA・B・Cという仕組みが使われていました。今は使われていませんが、試験や古い資料には今も登場するため、 歴史的な経緯として簡潔に触れておきます。

クラス先頭ビットパターン第1オクテットの範囲デフォルトのネットワーク部
クラスA0xxxxxxx0 〜 1278ビット(/8)
クラスB10xxxxxx128 〜 19116ビット(/16)
クラスC110xxxxx192 〜 22324ビット(/24)

たとえば第1オクテットが210なら先頭ビットは 110xxxxx なのでクラスC、 デフォルトのネットワーク部は24ビット(先頭3オクテット)と決まっていました。 CIDRはこの固定の区切りをやめ、/24 のようにネットワーク部のビット数を アドレスごとに自由に指定できるようにしたものです。

クラスAの範囲のうち 0.0.0.0/8127.0.0.0/8 は特別な用途で予約されており、 実際に機器へ割り当てられるのは 1〜126 です(127.0.0.0/8 の使いみちは次のセクションで扱います)。 また、表にはないクラスD(224〜239、マルチキャスト用)やクラスE(実験用)もありますが、通常の機器には割り当てません。
例外

特別な意味を持つアドレス

IPアドレスの中には、機器に割り当てず特別な用途のために予約されているものがあります。

名称値・範囲意味
ループバックアドレス127.0.0.1
(127.0.0.0/8 全体が予約)
自分自身を指すアドレス。ネットワークに出て行かず、自分のマシンの中で折り返します。
APIPA(リンクローカルアドレス)169.254.0.0/16DHCPサーバーが見つからないとき、OSが代わりに自動で割り当てる仮のアドレス。
ネットワークアドレスホスト部が全部0そのネットワーク自体を指す名前。機器には割り当てません。
ブロードキャストアドレスホスト部が全部1そのネットワーク全員への呼びかけに使う宛先。機器には割り当てません。
発展

IPv6では128ビットになる

ここまで扱ってきた32ビットのアドレスはIPv4のものです。IPv4は約43億個(2³²個)しかアドレスを作れず 枯渇が問題になったため、IPv6ではアドレス長が128ビットに拡張されました。表記も変わり、 16ビットずつ8組に区切って16進数で表し、コロン(:)で区切ります (例:2001:0db8:0000:0000:0000:0000:1234:5678)。表記には省略ルールが2つあります。 1つは各グループ先頭の0を省略できること(0db8db8)、 もう1つは連続する0だけのグループを :: という記号でまとめて1回だけ省略できることです。 この2つを使うと、上の例は 2001:db8::1234:5678 と短く書けます。1つのアドレスの中で:: を2回使うと、どちらのグループを何個省略したのか分からなくなるため、使えるのは1回だけです。

練習

練習問題(全5問)

選んでから「採点する」を押すと、解説つきで答え合わせができます。

Q12進数 10110100 を10進数にすると?
Q2210.10.1.5 というIPアドレスは、クラスでいうとどれ?
Q3クラスBのデフォルトのネットワーク部は何ビット?
Q4169.254.25.10 というアドレスが割り当たっている機器を見つけた。何が起きている可能性が高い?
Q52001:0db8:0000:0000:0000:0000:0000:0001 を省略して書くと?
次の回

コースを読み進める