1-6 IP アドレスとサブネットマスク
IPv4 アドレスの 32 ビット構造、ネットワーク部とホスト部を分けるサブネットマスク、CIDR 表記、特殊用途アドレスを 1 ページで整理する。
1. IP アドレスとは
IP アドレスとは、ネットワーク層で機器を識別するために割り当てられる論理アドレスです。IPv4 では 32 ビット長で表され、8 ビットずつ 4 組をピリオドで連結する ドット 10 進表記 で記されます (例: 192.168.1.10)。1 オクテットの値は 0〜255 で、全体で理論上およそ 43 億通りのアドレスが存在します。
MAC アドレスがインタフェースに焼き込まれた識別子であるのに対し、IP アドレスは管理者またはプロトコルが 論理的に割り当てる識別子 です。同じ機器でも接続先ネットワークが変われば異なる IP アドレスが付与されます。
2. ネットワーク部とホスト部
IP アドレスは、上位ビットの ネットワーク部 と下位ビットの ホスト部 に分割されます。ネットワーク部はそのアドレスが属するネットワークを、ホスト部は当該ネットワーク内の個々の機器を識別します。
ネットワーク部が同一のアドレス同士は同じネットワークに属し、L2 のフレーム転送で直接通信できます。異なるネットワーク部同士の通信には必ずルーターが介在します。機器が IP アドレスを見て最初に行うのは「宛先は自分と同じネットワーク部か否か」の判定であり、その結果でフレームを直接送るかデフォルトゲートウェイへ渡すかが決まります。

3. サブネットマスクと CIDR 表記
IP アドレスのどこまでがネットワーク部かを示すのが サブネットマスク です。IP アドレスと同じ 32 ビット長のビットパターンで、ネットワーク部のビットを 1、ホスト部のビットを 0 で表します。たとえば 255.255.255.0 は上位 24 ビットがネットワーク部であることを示します。
このビット数をスラッシュで併記する短縮表記を CIDR 表記 (Classless Inter-Domain Routing 表記) と呼びます。192.168.1.0/24 と書けば、192.168.1 までがネットワーク部、残り 8 ビットがホスト部を意味します。
ホスト部のビット数を n とすると当該ネットワーク内のアドレスは 2^n 個ありますが、先頭は ネットワークアドレス、末尾は ブロードキャストアドレス として予約されるため、ホストに割り当てられるのは 2^n - 2 個となります。/24 の利用可能ホスト数は 254、/30 は 2 です。なお /31 はポイントツーポイントリンク専用に 2 アドレスとも利用でき(RFC 3021)、/32 は単一ホストを指すホストルートとして扱われるため、2^n - 2 はこれらを除いた通常サブネットでの式となります(/31 の詳細は 3-1)。
4. クラスフルからクラスレスへ
IPv4 の運用初期には、アドレスを A から E までのクラスに分けて管理する クラスフルアドレッシング が用いられていました。クラス A は /8、クラス B は /16、クラス C は /24 と、ネットワーク部の境界がクラスごとに固定されていました。
この方式は組織規模に対して粒度が粗すぎ、アドレス枯渇を加速させました。これを解消するため 1993 年に標準化されたのが CIDR です。クラス境界に縛られずサブネットマスクを任意位置に置けるため、必要数に応じた粒度で割り当てられます。現在の IPv4 ネットワークはすべて CIDR を前提としています。
5. プライベートアドレスと特殊用途
IPv4 アドレス空間の一部は、特定用途のために予約されています。代表的な範囲は以下のとおりです。
| 範囲 | 用途 | 概要 |
|---|---|---|
10.0.0.0/8 | プライベート(RFC1918) | 組織内で自由に利用可。インターネットへは直接ルーティングされない |
172.16.0.0/12 | プライベート(RFC1918) | 同上。中規模組織で用いられることが多い |
192.168.0.0/16 | プライベート(RFC1918) | 同上。家庭用ルーターの既定値として広く採用 |
127.0.0.0/8 | ループバック | 自ノード内通信用。127.0.0.1 が代表例 |
169.254.0.0/16 | リンクローカル | DHCP からアドレスを取得できなかった場合の自動設定 |
255.255.255.255 | 限定ブロードキャスト | 同一セグメント全体への送信に用いる |
プライベートアドレスはそのままではインターネットへルーティングされないため、外部へ出る通信では通常 NAT (Network Address Translation) でグローバルアドレスへ変換します。IPv4 アドレス空間は事実上枯渇しており、これを 128 ビットに拡張した後継規格 IPv6 が定義されています。
6. 次節
続く 1-7 TCP・UDP・ポート番号 では、同一ホスト上で動作する複数アプリケーションを区別する ポート番号 と、その上に立つ TCP・UDP の役割を整理していきます。
192.168.1.10 みたいなやつりん。見たことはあるけど…この点で区切られた4つの数字、何を意味してるりん?ただの番号りん?192.168.1.10 のどこが「町」でどこが「番地」りん?
255.255.255.0 なら、上の24ビットが町名ですよ、という意味になる。255.255.255.0…毎回これ書くの長いりん。もっと短くできないりん?192.168.1.0/24 と書けば「上24ビットが町名」── さっきの 255.255.255.0 と同じ意味になる。この対応を図で見ておこう。/24 で一発りん、すっきりしたりん!…ご主人、番地(ホスト部)が8ビットなら、家は256軒入るりん?2^n 個のアドレスがあるけど、先頭は「ネットワークアドレス」、末尾は「ブロードキャストアドレス」として予約されて、家に使えない。だから、ふつうのサブネットで実際に割り当てられるのは 2^n - 2 軒。/24 なら 256 から2を引いて 254 軒だよ。(厳密にはルータ同士をつなぐ /31 みたいな例外もあるけど、それは後の章で扱う。今は「2 軒は予約席」で十分だ。)/8、B は /16、C は /24 と、町名の区切りが固定だった。でもこれは組織の規模に対して粒度が粗すぎて、アドレスがどんどん枯渇した。それを解消するために1993年に標準化されたのが、いま話した CIDR ── クラスレスな世界だ。好きな位置で区切れるから、必要な分だけ無駄なく割り当てられる。今の IPv4 は全部この CIDR が前提だよ。192.168 で始まるアドレス、おうちのルーターでよく見るりん。あれは特別りん?10.0.0.0/8・172.16.0.0/12・192.168.0.0/16 はプライベートアドレスといって、組織の中で自由に使っていい代わりに、そのままではインターネットへ出られないんだ。外に出るときは NAT という仕組みでグローバルアドレスに変換する。他にも自分自身を指す 127.0.0.1(ループバック)なんかの特殊な予約アドレスもあるよ。ちなみに IPv4 は事実上もう枯渇していて、128ビットに拡張した IPv6 が後継として控えているんだ。