IP アドレスとは — IPv4 / IPv6 / サブネット / ルーティング のサムネイル

IP アドレスとは — IPv4 / IPv6 / サブネット / ルーティング

⏱ 約 15 分 view 59 like 0 LOG_DATE:2026-05-09
目次 / TOC

Internet Protocol (IP) #

Internet Protocol (IP) は、ネットワーク上のホストにアドレスを与え、パケットを宛先まで転送するための通信プロトコルである。TCP/IP スタックの中核を担い、Web、メール、API、ストリーミング、ゲーム — インターネットを流れるあらゆる通信は最終的に IP パケットとしてルーティングされる。OSI 参照モデルでは 第 3 層 (ネットワーク層) に位置し、コネクションレス・ベストエフォート (best-effort) の単方向データグラム配送を提供する。

1. IP の歴史 #

1.1 ARPANET 時代の限界 #

1969 年に登場した ARPANET は、当初 NCP (Network Control Program) という独自プロトコルで動いていた。NCP は「同質のネットワーク内」での通信を前提にしており、異なるネットワーク間 (例えば衛星通信網と有線網) を相互接続する設計にはなっていなかった。1970 年代に研究ネットワークが多様化するにつれ、異種ネットワーク同士をつなぐ共通プロトコルが必要になっていく。

1.2 TCP/IP の設計 (1974) #

1974 年、ヴィント・サーフ (Vint Cerf)ボブ・カーン (Bob Kahn) が論文 "A Protocol for Packet Network Intercommunication" で TCP の原型を発表 (RFC 675)。当初は TCP に「アドレス指定 + 信頼性のある配送」両方を持たせる設計だったが、後に アドレス指定とルーティングは IP に分離、信頼性は TCP に残す 二層分離が採用された。これが現在まで続く TCP/IP の基本設計である。

1.3 IPv4 の標準化 (RFC 791, 1981) #

1981 年に RFC 791 で IPv4 が正式標準化。32 bit アドレス (約 43 億通り) を持ち、当時としては事実上無限のアドレス空間とみなされていた。1983 年 1 月 1 日、ARPANET は NCP から TCP/IP に「フラグデー」で全面切替し、現代インターネットの基盤が確定した。

1.4 アドレス枯渇と IPv6 の登場 #

1990 年代に入り、商用インターネットの爆発的拡大で IPv4 アドレス枯渇が現実の問題になる。短期対策として CIDR (RFC 1519, 1993) によるアドレスの効率割当、NAT (RFC 1631, 1994) によるプライベート IP の共有が導入された。長期対策として 1998 年に IPv6 (RFC 2460) が標準化、現行は 2017 年の RFC 8200。128 bit アドレスで「事実上枯渇しない」(2^128 ≈ 3.4×10^38) アドレス空間と、ヘッダの簡素化を実現した。

1.5 アドレス枯渇の現実 #

IANA の IPv4 中央在庫は 2011 年に枯渇。各地域インターネットレジストリ (RIR) も順次枯渇し、現在は使用済みアドレスの売買・再配布で凌ぐ状態。IPv6 への移行が長期的な解決策で、Google の統計では 2026 年時点で全世界クライアントの 約 45% が IPv6 で接続している。

2. IP の役割と OSI 上の位置 #

+----------------------+
| Application 層       | HTTP / SSH / DNS / SMTP ...
+----------------------+
| Transport 層         | TCP / UDP / QUIC
+----------------------+
| Network 層           | ★ IP (本記事) / ICMP
+----------------------+
| Data Link 層         | Ethernet / Wi-Fi / PPP
+----------------------+
| Physical 層          | 銅線 / 光ファイバ / 電波
+----------------------+

IP の特徴は次の 3 点。

  • コネクションレス: 事前のセッション確立なしにパケットを送る。各パケットは独立して扱われる。
  • ベストエフォート: 配送・順序・重複なしの保証はしない。これらは上位の TCP が担う (UDP は何も保証しない)。
  • ルーティング: 宛先 IP アドレスを基に、ホップごとのルータが最適経路を選択して中継する。

つまり IP は「封筒に住所を書いて、各郵便局がリレー配送する仕組み」に近い。確実に届く保証はないが、シンプルで拡張しやすく、世界規模で動く。

3. IPv4 #

3.1 アドレス構造 #

IPv4 アドレスは 32 bit (4 オクテット = 4 byte)。慣習的に ドット区切りの 10 進数 で表記する。

IPv4 アドレス 32 bit = 8 bit × 4 オクテット 例: 192.168.1.10 をビット列に展開 192 octet 1 (8 bits) . 168 octet 2 (8 bits) . 1 octet 3 (8 bits) . 10 octet 4 (8 bits) 2 進数表記 (32 bit raw) 11000000 = 192 10101000 = 168 00000001 = 1 00001010 = 10 理論上の総アドレス数: 2^32 ≈ 42.9 億 (実質はクラス A/B/予約等で減る) 表記範囲: 各 octet が 0〜255 → 0.0.0.0 〜 255.255.255.255 人間用の便宜表記であって、CPU はあくまで 32 bit 整数として扱う

3.2 アドレスの種類とプライベート IP (RFC 1918) #

実用上、IPv4 アドレスは複数の用途別に予約された範囲を持つ。

範囲 用途
0.0.0.0/8 「このホスト/このネットワーク」予約 0.0.0.0
10.0.0.0/8 プライベート IP (RFC 1918) 大規模社内 LAN
127.0.0.0/8 ループバック 127.0.0.1
169.254.0.0/16 リンクローカル (DHCP 失敗時の自動割当) APIPA
172.16.0.0/12 プライベート IP (RFC 1918) 中規模社内 LAN
192.168.0.0/16 プライベート IP (RFC 1918) 家庭・SOHO
224.0.0.0/4 マルチキャスト RIP / OSPF / mDNS
255.255.255.255 リミテッド・ブロードキャスト DHCP DISCOVER

プライベート IP は RFC 1918 で定義された「インターネット上では使われない」範囲で、社内 LAN・家庭ルータの内側で自由に割り当てられる。インターネットへ出るときは NAT がプライベート IP をルータの公開 IP に書き換える。

3.3 サブネットマスクと CIDR #

IPv4 アドレスは 「ネットワーク部 + ホスト部」 に分かれる。境界を示すのが サブネットマスク

192.168.1.10 / 24
  ↓
ネットワーク部 = 192.168.1.0/24  (上位 24 bit)
ホスト部       = .10            (下位 8 bit、最大 254 ホスト)

/24 のような表記が CIDR (Classless Inter-Domain Routing, RFC 1519)。元々は IP アドレスを A (8 bit), B (16 bit), C (24 bit) という固定クラスで割り当てていたが、1993 年の CIDR 導入で任意のビット長で分割できるようになり、アドレスを大幅に効率化した。

主な CIDR 表記とホスト数:

CIDR サブネットマスク ホスト数 (使用可) 用途
/8 255.0.0.0 1,677万 大規模ネットワーク
/16 255.255.0.0 65,534 中規模
/24 255.255.255.0 254 一般的な LAN
/28 255.255.255.240 14 小規模
/30 255.255.255.252 2 ルータ間 P2P
/32 255.255.255.255 1 単一ホスト

3.4 IPv4 ヘッダ構造 #

IPv4 パケットは固定 20 byte ヘッダ (オプションありなら最大 60 byte) + データで構成される。

IPv4 ヘッダ — 標準 20 byte (RFC 791) 5 行 × 32 bit、各行 4 byte。Options を含めると最大 60 byte bit 0 8 16 24 31 Version 4 bits IHL 4 bits ToS / DSCP+ECN 8 bits Total Length 16 bits (パケット全長) 行 1 Identification 16 bits (フラグメント識別) Flags 3 Fragment Offset 13 bits 行 2 TTL 8 bits (ホップ上限) Protocol 8 bits (1=ICMP 6=TCP 17=UDP) Header Checksum 16 bits 行 3 Source IP Address 32 bits (送信元 IP) 行 4 Destination IP Address 32 bits (宛先 IP) 行 5 Options (任意, ある場合のみ) 最大 40 bytes — Record Route, Strict Source Route 等 行 6+ Payload TCP / UDP / ICMP セグメントなど可変長データ 可変長 Total Length − IHL × 4 = ペイロード長 (最大 65,515 B) 主要フィールドの読み方 • Version = 4 (IPv6 なら 6) • IHL (Internet Header Length) = ヘッダの 32-bit ワード数 → ×4 でバイト長 (通常 5 = 20 bytes) • Total Length = ヘッダ + ペイロードの合計バイト数 (最大 65,535) • TTL = 中継ルータが 1 ずつ減らす → 0 で破棄 + ICMP Time Exceeded を返す (traceroute の原理) • Protocol = 上位層プロトコル番号 (1: ICMP / 6: TCP / 17: UDP / 41: IPv6 / 47: GRE / 50: ESP) • Flags = DF (Don't Fragment) / MF (More Fragments)。DF=1 で大きすぎると ICMP Fragmentation Needed • Header Checksum = ヘッダのみの誤り検出 (ペイロードは TCP/UDP の checksum が担当) 合計 20 byte = 160 bit、4 byte (32 bit) ずつ 5 行に並ぶ「カード」のような構造

3.5 フラグメント化と TTL #

IP パケットの長さは経路上の MTU (Maximum Transmission Unit、Ethernet なら 1500 byte) を超えられない。それより大きいパケットは送信元か中継ルータがフラグメント化 (分割) して送り、宛先で再構成される。ただし現代では:

  • Path MTU Discovery (PMTUD) で送信元が事前に最小 MTU を知り、最初から分割して送る
  • フラグメントは攻撃に悪用されやすいので、Don't Fragment (DF) フラグを立て、超過時は ICMP "Fragmentation Needed" で送り直す方式が主流

TTL (Time To Live) はパケットが転送されるたびにルータが 1 ずつ減らす値。0 になったルータはパケットを破棄して送信元へ ICMP Time Exceeded を返す (traceroute はこれを利用)。経路ループの暴走を防ぐ安全装置。

3.6 NAT (Network Address Translation) #

家庭やオフィスのプライベート IP (192.168.x.x など) はインターネットに直接出られない。ルータが内側のパケットを通すとき、送信元 IP/ポートを「自分の公開 IP + 動的ポート」に書き換えて中継する仕組みが NAT (RFC 1631)。応答は逆変換で内側ホストに戻す。

NAT のおかげで 1 つの公開 IP で何百ものデバイスをぶら下げられる、IPv4 アドレス枯渇への決定的な延命策となった。一方でピアツーピア通信を阻害する(STUN/TURN/ICE が回避策)、エンドツーエンド原則を破る、といった副作用もある。

4. IPv6 #

4.1 アドレス構造 (128 bit) #

128 bit = 16 byte のアドレス。16 進数を 4 桁ずつコロン区切り (8 グループ) で表記する。

2001:0db8:85a3:0000:0000:8a2e:0370:7334

圧縮表記:

  • 各グループの先頭の 0 は省略可: 2001:db8:85a3:0:0:8a2e:370:7334
  • 連続する全ゼロは :: で 1 回だけ省略可: 2001:db8:85a3::8a2e:370:7334

総アドレス数は 2^128 ≈ 3.4×10^38 (=340 澗)。地球上の全砂粒に IP を割り当ててもなお余る。

主なアドレス種別:

  • Global Unicast (2000::/3): インターネット上で一意な公開アドレス
  • Link-Local (fe80::/10): 同一リンク内のみ有効、SLAAC 等で自動付与
  • Unique Local (fc00::/7): IPv4 のプライベート IP に相当 (RFC 4193)
  • Multicast (ff00::/8): 複数受信者へ
  • Loopback (::1): IPv4 の 127.0.0.1 に相当

4.2 IPv6 ヘッダ構造 #

IPv4 と比べてヘッダは 大幅に簡素化 され、固定 40 byte。可変長フィールドや checksum を排除し、ルータの処理を高速化した。

フィールド サイズ 役割
Version 4 bits 6
Traffic Class 8 bits QoS (DSCP / ECN)
Flow Label 20 bits 同一フローを識別
Payload Length 16 bits ペイロード長
Next Header 8 bits 次ヘッダの種類 (上位プロトコル / 拡張ヘッダ)
Hop Limit 8 bits IPv4 の TTL に相当
Source Address 128 bits 送信元
Destination Address 128 bits 宛先

IPv4 から消えたもの:

  • Header Checksum — Ethernet と TCP/UDP が誤り検出を担うので冗長
  • Identification / Flags / Fragment Offset — 中継ルータでの分割を禁止し、PMTUD で送信元側の責任に
  • Options — 拡張が必要なら別途「拡張ヘッダ」を Next Header で繋ぐ

4.3 SLAAC とアドレス自動設定 #

IPv6 では DHCP 不要でアドレスを自動取得 できる仕組み (Stateless Address Autoconfiguration, SLAAC) が標準。

  1. ホストはリンク参加時に Router Solicitation (RS) を送信
  2. ルータが Router Advertisement (RA) で「このリンクのプレフィックスは 2001:db8:abcd::/64」と告知
  3. ホストはプレフィックス + 自分の MAC ベースの Interface ID (EUI-64) または乱数 (Privacy Extension) で 128 bit アドレスを組み立てる

これらは ICMPv6 で実装されており、IPv6 が「IP + ICMPv6」と一体である理由。

4.4 IPv4 との共存 #

完全な IPv6 移行はまだ途上で、当面は両方を併用する。

  • Dual-Stack: ホスト・ルータが IPv4 と IPv6 両方を持ち、宛先に応じて使い分ける (最も主流)
  • NAT64 / DNS64: IPv6 のみホストから IPv4 のみサーバへ通信させるため、ルータが IPv6→IPv4 変換、DNS が IPv4 アドレスを 64:ff9b::xxxx 形式の IPv6 にラップする
  • 6to4 / Teredo: IPv4 ネットワーク経由で IPv6 通信をトンネリングする旧方式 (現在は非推奨)

5. ルーティング #

5.1 ルーティングテーブル #

すべてのホスト・ルータは「この宛先範囲はこのインターフェースから出す」を決めるルーティングテーブルを持つ。最長プレフィックスマッチで宛先 IP に最も合致するエントリを選択する。

$ ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
10.0.0.0/8 via 192.168.1.254 dev eth0

default (= 0.0.0.0/0) は「他に該当しない宛先のデフォルトゲートウェイ」。

5.2 主要ルーティングプロトコル #

プロトコル 用途 スコープ
RIP (Routing Information Protocol) 古典的、ホップ数で経路選択 小規模社内 (ほぼ廃止)
OSPF (Open Shortest Path First) リンクステート、Dijkstra で最短経路 中〜大規模社内 (IGP)
IS-IS OSPF と同じくリンクステート ISP / キャリア内
BGP (Border Gateway Protocol) パスベクトル、AS 間の唯一の標準 インターネット全体 (EGP)

インターネットそのものは BGP が支えている。世界中の AS (Autonomous System、ISP や大企業の単位) が BGP で経路を交換し、グローバルなルーティングテーブル (現在 100 万経路以上) を構築している。

6. 主要コマンドと使用例 #

6.1 ip — モダンなネットワーク設定 (Linux) #

ifconfig の置き換え。iproute2 パッケージ。

# インターフェースとアドレス
ip addr show
ip -br addr             # 簡易表示
ip addr add 192.168.1.50/24 dev eth0
ip addr del 192.168.1.50/24 dev eth0

# リンク (NIC) の上下
ip link set eth0 up
ip link set eth0 down

# ルーティングテーブル
ip route show
ip route add 10.0.0.0/8 via 192.168.1.254
ip route del 10.0.0.0/8

# ARP / NDP テーブル
ip neigh show

# 統計
ip -s link show eth0

6.2 ping / traceroute / mtr #

ICMP を利用した疎通・経路確認 (詳細は ICMP 記事参照)。

ping -c 4 example.com
traceroute example.com
mtr example.com

6.3 netstat / ss — ソケット一覧 #

ssnetstat の高速・モダンな置き換え。

ss -tunlp        # TCP/UDP listen 中のポート + プロセス
ss -tan          # 全 TCP 接続
ss -an state established  # 確立済み接続のみ

6.4 nmap — IP スキャン #

# ホスト発見
nmap -sn 192.168.1.0/24

# TCP SYN スキャン
nmap -sS -p 1-1000 192.168.1.50

# OS フィンガープリント
nmap -O 192.168.1.50

# IPv6
nmap -6 2001:db8::1

6.5 tcpdump — パケットキャプチャ #

# eth0 で IP パケットを観察
sudo tcpdump -i eth0 -nn ip

# 特定ホスト宛
sudo tcpdump -i eth0 host 192.168.1.50

# ポート絞り込み
sudo tcpdump -i eth0 'tcp port 80'

# IPv6
sudo tcpdump -i eth0 ip6

6.6 whois — IP アドレスの登録情報 #

whois 8.8.8.8        # → Google LLC
whois 93.184.216.34  # → Edgecast / Verizon

7. セキュリティ — 主な攻撃と防御 #

7.1 IP Spoofing #

送信元 IP を偽装して攻撃元を隠したり、信頼関係を悪用する。

  • DDoS 増幅攻撃: 被害者 IP を送信元に偽装し、DNS / NTP / Memcached 等のリフレクタへ問い合わせ → 大量応答で被害者を圧迫
  • TCP Sequence Number 攻撃: かつての rlogin / rsh のホストベース信頼を悪用 (現代ではほぼ使われない)

対策: BCP 38 (RFC 2827) に従って ISP が送信元アドレス検証を行う (自分の AS から出るパケットは正しい送信元のみ通す)。

7.2 DDoS #

大量の IP パケットでサービスを飽和させる。代表的な手法:

  • Volumetric: 帯域を埋める (UDP flood, ICMP flood, amplification)
  • Protocol: TCP/UDP のステートを枯渇 (SYN flood, ack flood)
  • Application: HTTP リクエストでアプリを過負荷に

対策: 上流 ISP のスクラビング / Cloudflare・Akamai 等の DDoS 保護 / Anycast による負荷分散。

7.3 IPsec — IP レイヤの暗号化 #

IPsec (RFC 4301-4309) は IP パケット自体を暗号化・認証する仕組み。VPN の事実上の標準。

  • AH (Authentication Header): 認証のみ
  • ESP (Encapsulating Security Payload): 暗号化 + 認証
  • IKE (Internet Key Exchange): 鍵交換

トランスポートモード (ペイロードのみ暗号化) とトンネルモード (パケット全体を暗号化して新しい IP ヘッダで包む) がある。

7.4 IP-based Access Control #

ファイアウォールやサーバが「特定の IP / サブネットからのアクセスのみ許可」する制御。家庭の最初のセキュリティ層は事実上この iptables / nftables / Windows Defender Firewall。

# iptables の例 — 22/tcp は社内 LAN のみ
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

IP は地味で、誰もが当たり前のように使う。しかし「どのパケットがどの経路でどう届くか」を理解しておかないと、ネットワークトラブルの原因究明も、セキュリティ設計も、根本のところで詰む。インターネットすべての土台として、IPv4 のヘッダ構造と IPv6 への移行 (§3〜§4)、ルーティングプロトコルの違い (§5)、そして spoofing / DDoS / IPsec を含むセキュリティ層 (§7) の 3 つを地続きで掴んでおくと、ネットワークの問題に向き合うときの解像度が一段変わる。