ネットワーク上でデバイスを識別するためには、IPアドレスとサブネットマスクの理解が不可欠です。IPアドレスはインターネットや社内ネットワークで通信相手を特定するための「住所」であり、サブネットマスクはネットワークを効率的に分割・管理するための仕組みです。
本記事では、IPアドレスとサブネットマスクについて以下の内容を解説します。
- IPv4アドレスとIPv6アドレスの構造と表記方法
- クラスフルアドレッシングとCIDR表記の違い
- サブネットマスクの役割とサブネット計算の方法
- プライベートIPアドレスとグローバルIPアドレスの使い分け
この記事を読むことで、IPアドレスの構造を正しく理解し、サブネット計算ができるようになります。
前提条件
- 2進数と10進数の変換について基本的な知識がある
- OSI参照モデルまたはTCP/IPモデルの概要を理解している(前回記事参照)
特別な環境構築は不要です。Windowsのコマンドプロンプト、macOS/Linuxのターミナルがあれば、自分のIPアドレスを確認できます。
期待される学習成果
本記事を読み終えると、以下のことができるようになります。
- IPv4アドレスを2進数と10進数の両方で表現できる
- サブネットマスクからネットワーク部とホスト部を特定できる
- CIDR表記から利用可能なIPアドレス数を計算できる
- プライベートIPアドレスの範囲を正しく判別できる
IPアドレスとは何か
IPアドレス(Internet Protocol Address)は、ネットワークに接続されたデバイスを一意に識別するための論理アドレスです。郵便配達における住所と同様に、IPアドレスによってデータの送信先を特定します。
IPアドレスは、OSI参照モデルの第3層(ネットワーク層)、TCP/IPモデルのインターネット層で使用されます。
graph LR
A["送信元<br/>192.168.1.10"] -->|パケット| B["ルータ"]
B -->|転送| C["宛先<br/>203.0.113.50"]
style A fill:#e1f5fe
style C fill:#e8f5e9IPアドレスには2つのバージョンがあります。
| バージョン | ビット長 | アドレス数 | 現在の状況 |
|---|---|---|---|
| IPv4 | 32ビット | 約43億個 | 枯渇済み、現在も主流 |
| IPv6 | 128ビット | 約340澗個 | 普及拡大中 |
本記事では、まずIPv4アドレスを中心に解説し、その後IPv6について説明します。
IPv4アドレスの構造
IPv4アドレスは32ビットの数値で構成されています。人間が読みやすいように、8ビットずつ4つに区切り、10進数で表記します。これをドット付き10進表記(dotted decimal notation)といいます。
graph TB
subgraph "2進数表記(32ビット)"
B["11000000.10101000.00000001.00001010"]
end
subgraph "10進数表記"
D["192.168.1.10"]
end
B --> Dオクテットとは
IPv4アドレスを構成する8ビットの各部分をオクテット(octet)と呼びます。各オクテットは0から255までの値を取ります。
| オクテット | 2進数 | 10進数 | 取りうる範囲 |
|---|---|---|---|
| 第1オクテット | 11000000 | 192 | 0-255 |
| 第2オクテット | 10101000 | 168 | 0-255 |
| 第3オクテット | 00000001 | 1 | 0-255 |
| 第4オクテット | 00001010 | 10 | 0-255 |
2進数と10進数の変換
IPアドレスを理解するためには、2進数と10進数の変換が必要です。各ビットの位置には以下の重みがあります。
| ビット位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 重み | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
例として、2進数「11000000」を10進数に変換します。
11000000
= 1×128 + 1×64 + 0×32 + 0×16 + 0×8 + 0×4 + 0×2 + 0×1
= 128 + 64
= 192
逆に、10進数「168」を2進数に変換する場合は、大きい重みから順に引いていきます。
168 ÷ 128 = 1 余り 40 → 1
40 ÷ 64 = 0 余り 40 → 0
40 ÷ 32 = 1 余り 8 → 1
8 ÷ 16 = 0 余り 8 → 0
8 ÷ 8 = 1 余り 0 → 1
0 ÷ 4 = 0 → 0
0 ÷ 2 = 0 → 0
0 ÷ 1 = 0 → 0
結果: 10101000
ネットワーク部とホスト部
IPアドレスは、ネットワーク部とホスト部の2つの部分で構成されています。
graph LR
subgraph "IPアドレス: 192.168.1.10"
N["ネットワーク部<br/>192.168.1"]
H["ホスト部<br/>.10"]
end
N --- H
style N fill:#bbdefb
style H fill:#c8e6c9| 部分 | 役割 | 例 |
|---|---|---|
| ネットワーク部 | どのネットワークに属するかを示す | 192.168.1 |
| ホスト部 | ネットワーク内のどのデバイスかを示す | 10 |
同じネットワーク部を持つデバイス同士は、ルータを経由せずに直接通信できます。異なるネットワーク部を持つデバイスとの通信には、ルータ(デフォルトゲートウェイ)を経由する必要があります。
クラスフルアドレッシング
1990年代まで使用されていたクラスフルアドレッシングでは、IPアドレスの先頭ビットによって自動的にネットワーク部の長さが決まっていました。
graph TB
subgraph "クラスフルアドレッシング"
A["クラスA<br/>0.0.0.0 - 127.255.255.255<br/>先頭1ビット: 0"]
B["クラスB<br/>128.0.0.0 - 191.255.255.255<br/>先頭2ビット: 10"]
C["クラスC<br/>192.0.0.0 - 223.255.255.255<br/>先頭3ビット: 110"]
D["クラスD(マルチキャスト)<br/>224.0.0.0 - 239.255.255.255<br/>先頭4ビット: 1110"]
E["クラスE(予約)<br/>240.0.0.0 - 255.255.255.255<br/>先頭4ビット: 1111"]
end各クラスの特徴
| クラス | 先頭ビット | ネットワーク部 | ホスト部 | ネットワーク数 | ホスト数/ネットワーク |
|---|---|---|---|---|---|
| A | 0 | 8ビット | 24ビット | 128 | 約1,677万 |
| B | 10 | 16ビット | 16ビット | 16,384 | 65,534 |
| C | 110 | 24ビット | 8ビット | 約209万 | 254 |
クラスフルアドレッシングの問題点は、アドレスの無駄が発生しやすいことです。たとえば、1,000台のホストが必要な組織には、クラスBを割り当てる必要があり、約64,000個のアドレスが未使用になります。
CIDR表記とサブネットマスク
CIDRとは
CIDR(Classless Inter-Domain Routing、サイダー)は、1993年に導入された柔軟なIPアドレス割り当て方式です。クラスに縛られず、任意の位置でネットワーク部とホスト部を区切ることができます。
CIDR表記では、IPアドレスの後ろにスラッシュとネットワーク部のビット数を付加します。
192.168.1.0/24
この表記は、先頭24ビットがネットワーク部であることを示しています。
サブネットマスクとは
サブネットマスクは、IPアドレスのどの部分がネットワーク部で、どの部分がホスト部かを示すための32ビットの値です。
ネットワーク部に対応するビットは1、ホスト部に対応するビットは0になります。
| CIDR表記 | サブネットマスク(2進数) | サブネットマスク(10進数) |
|---|---|---|
| /8 | 11111111.00000000.00000000.00000000 | 255.0.0.0 |
| /16 | 11111111.11111111.00000000.00000000 | 255.255.0.0 |
| /24 | 11111111.11111111.11111111.00000000 | 255.255.255.0 |
| /25 | 11111111.11111111.11111111.10000000 | 255.255.255.128 |
| /26 | 11111111.11111111.11111111.11000000 | 255.255.255.192 |
| /27 | 11111111.11111111.11111111.11100000 | 255.255.255.224 |
| /28 | 11111111.11111111.11111111.11110000 | 255.255.255.240 |
ネットワークアドレスとブロードキャストアドレス
各サブネットには、使用できないアドレスが2つあります。
| 種類 | 説明 | 例(192.168.1.0/24の場合) |
|---|---|---|
| ネットワークアドレス | ホスト部がすべて0のアドレス。ネットワーク自体を表す | 192.168.1.0 |
| ブロードキャストアドレス | ホスト部がすべて1のアドレス。ネットワーク内の全ホストに送信 | 192.168.1.255 |
したがって、実際にホストに割り当てられるアドレス数は「2^(ホスト部のビット数) - 2」となります。
graph TB
subgraph "192.168.1.0/24 のアドレス範囲"
NA["192.168.1.0<br/>(ネットワークアドレス)"]
H1["192.168.1.1"]
H2["192.168.1.2"]
HN["..."]
H254["192.168.1.254"]
BA["192.168.1.255<br/>(ブロードキャストアドレス)"]
end
NA --> H1
H1 --> H2
H2 --> HN
HN --> H254
H254 --> BA
style NA fill:#ffcdd2
style BA fill:#ffcdd2
style H1 fill:#c8e6c9
style H254 fill:#c8e6c9サブネット計算の実践
計算例1: /24ネットワーク
192.168.1.0/24 のサブネット情報を計算します。
IPアドレス: 192.168.1.0
サブネットマスク: 255.255.255.0 (/24)
ネットワーク部: 24ビット
ホスト部: 32 - 24 = 8ビット
アドレス総数: 2^8 = 256
使用可能ホスト数: 256 - 2 = 254
ネットワークアドレス: 192.168.1.0
最初のホストアドレス: 192.168.1.1
最後のホストアドレス: 192.168.1.254
ブロードキャストアドレス: 192.168.1.255
計算例2: /26ネットワーク
10.0.0.0/26 のサブネット情報を計算します。
IPアドレス: 10.0.0.0
サブネットマスク: 255.255.255.192 (/26)
ネットワーク部: 26ビット
ホスト部: 32 - 26 = 6ビット
アドレス総数: 2^6 = 64
使用可能ホスト数: 64 - 2 = 62
ネットワークアドレス: 10.0.0.0
最初のホストアドレス: 10.0.0.1
最後のホストアドレス: 10.0.0.62
ブロードキャストアドレス: 10.0.0.63
計算例3: 任意のIPアドレスからネットワークアドレスを求める
172.16.45.123/20 のネットワークアドレスを求めます。
手順は以下のとおりです。
- IPアドレスを2進数に変換
- サブネットマスクを2進数に変換
- 論理AND演算を実行
172.16.45.123 を2進数に変換:
172 = 10101100
16 = 00010000
45 = 00101101
123 = 01111011
IPアドレス: 10101100.00010000.00101101.01111011
サブネットマスク: 11111111.11111111.11110000.00000000 (/20)
--------------------------------------------------
AND演算結果: 10101100.00010000.00100000.00000000
結果を10進数に変換: 172.16.32.0
ネットワークアドレス: 172.16.32.0
プライベートIPアドレスとグローバルIPアドレス
グローバルIPアドレス
グローバルIPアドレスは、インターネット上で一意に識別されるアドレスです。IANA(Internet Assigned Numbers Authority)によって管理され、ISP(インターネットサービスプロバイダ)を通じて割り当てられます。
プライベートIPアドレス
プライベートIPアドレスは、組織内のネットワーク(LAN)で自由に使用できるアドレスです。インターネットに直接ルーティングされないため、異なる組織で同じアドレスを使用しても問題ありません。
RFC 1918で定義されているプライベートIPアドレスの範囲は以下のとおりです。
| クラス | アドレス範囲 | CIDR表記 | アドレス数 |
|---|---|---|---|
| クラスA | 10.0.0.0 - 10.255.255.255 | 10.0.0.0/8 | 約1,677万 |
| クラスB | 172.16.0.0 - 172.31.255.255 | 172.16.0.0/12 | 約104万 |
| クラスC | 192.168.0.0 - 192.168.255.255 | 192.168.0.0/16 | 約6.5万 |
graph TB
subgraph インターネット
G1["グローバルIP<br/>203.0.113.1"]
G2["グローバルIP<br/>198.51.100.1"]
end
subgraph "企業A社内LAN"
R1["ルータ/NAT<br/>グローバル: 203.0.113.1"]
P1["192.168.1.10"]
P2["192.168.1.20"]
end
subgraph "企業B社内LAN"
R2["ルータ/NAT<br/>グローバル: 198.51.100.1"]
P3["192.168.1.10"]
P4["192.168.1.20"]
end
G1 --- G2
R1 --- P1
R1 --- P2
R2 --- P3
R2 --- P4
G1 --- R1
G2 --- R2
style P1 fill:#e3f2fd
style P2 fill:#e3f2fd
style P3 fill:#fff3e0
style P4 fill:#fff3e0企業Aと企業Bで同じプライベートIPアドレス(192.168.1.10)を使用していても、それぞれのネットワーク内で完結するため問題は発生しません。
特殊なIPアドレス
プライベートIPアドレス以外にも、特別な用途に予約されているアドレスがあります。
| アドレス範囲 | 用途 |
|---|---|
| 127.0.0.0/8 | ループバック(自分自身への通信)。127.0.0.1がlocalhostとして使用される |
| 169.254.0.0/16 | リンクローカル(DHCP取得失敗時に自動割り当て) |
| 0.0.0.0/8 | 「このネットワーク」を表す |
| 255.255.255.255 | 限定ブロードキャスト |
IPv6アドレスの基礎
IPv4アドレスの枯渇に対応するため、IPv6が開発されました。IPv6は128ビットのアドレス空間を持ち、事実上無限に近いアドレス数を提供します。
IPv6アドレスの表記
IPv6アドレスは、16ビットずつ8つのブロックに分け、16進数で表記します。各ブロックはコロン(:)で区切ります。
2001:0db8:85a3:0000:0000:8a2e:0370:7334
表記を簡略化するルールがあります。
- 各ブロックの先頭の0は省略可能
- 連続する0のブロックは「::」で1回だけ省略可能
元の表記: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
簡略化: 2001:db8:85a3::8a2e:370:7334
IPv6アドレスの種類
| 種類 | プレフィックス | 説明 |
|---|---|---|
| グローバルユニキャスト | 2000::/3 | インターネットでルーティング可能 |
| リンクローカル | fe80::/10 | 同一リンク内でのみ有効 |
| ユニークローカル | fc00::/7 | プライベートネットワーク用 |
| ループバック | ::1 | 自分自身への通信 |
| マルチキャスト | ff00::/8 | グループへの一斉送信 |
IPv4との主な違い
| 項目 | IPv4 | IPv6 |
|---|---|---|
| アドレス長 | 32ビット | 128ビット |
| 表記 | 10進数(ドット区切り) | 16進数(コロン区切り) |
| アドレス数 | 約43億 | 約340澗(3.4×10^38) |
| ヘッダ長 | 可変(20-60バイト) | 固定(40バイト) |
| チェックサム | あり | なし(上位層で処理) |
| NAT | 必要 | 原則不要 |
IPアドレスの確認方法
Windowsでの確認
コマンドプロンプトで以下のコマンドを実行します。
|
|
詳細情報を表示する場合は以下を使用します。
|
|
実行結果の例:
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.10
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
macOS/Linuxでの確認
ターミナルで以下のコマンドを実行します。
|
|
または従来のコマンド:
|
|
実行結果の例:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::1 prefixlen 64 scopeid 0x20<link>
まとめ
本記事では、IPアドレスとサブネットマスクの基礎について解説しました。
重要なポイントを振り返ります。
- IPアドレスの構造: IPv4は32ビット、IPv6は128ビットで構成され、ネットワーク上のデバイスを一意に識別する
- ネットワーク部とホスト部: IPアドレスはサブネットマスクによって2つの部分に分けられる
- CIDR表記: /24のようなプレフィックス長でネットワーク部のビット数を表現する
- サブネット計算: ネットワークアドレス、ブロードキャストアドレス、使用可能ホスト数を計算できる
- プライベートIPアドレス: 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16の3つの範囲が組織内で自由に使用可能
次回の記事では、パケットがどのようにネットワーク間を転送されるか、ルーティングとデフォルトゲートウェイの仕組みについて解説します。