IPv4とは|仕組み・アドレス表記・サブネット・NAT・IPv6移行まで完全ガイド

IPv4とは

IPv4(Internet Protocol version 4)は、インターネット上でホストを一意に識別し、パケットを送受信するための論理アドレッシングとルーティングを定義するプロトコルです。32ビットのアドレス空間を持ち、ドットで区切った10進表記(例:192.0.2.1)で人間に読みやすく表現されます。設計は1970年代末から1980年代初頭にかけて行われ、正式仕様はRFC 791(1981年)で定義されました。

歴史と背景(概観)

IPv4はARPANETや初期のTCP/IPネットワークのために設計され、長年にわたりインターネットの基盤を形成してきました。当初はアドレス資源の利用効率があまり問題視されておらず、クラスフル(A/B/Cクラス)という単純な区分でアドレス割当が行われていました。インターネットの急成長に伴いアドレスの枯渇が顕在化し、CIDR(Classless Inter-Domain Routing)やプライベートアドレス、NATの導入、最終的にはIPv6への移行検討が進みました。

IPv4の基本的な数値

  • アドレス長:32ビット
  • 理論上の総アドレス数:2^32 = 4,294,967,296(約43億)
  • ヘッダ最小長:20バイト(IHL=5)
  • ヘッダ最大長:60バイト(IHL最大値 = 15 × 4バイト)

アドレス表記とサブネット

IPv4アドレスは「ドット十進表記(dotted decimal)」が一般的です(例:203.0.113.5)。ネットワークとホストの境界はサブネットマスク(例:255.255.255.0)またはプレフィックス長(例:/24)で示します。プレフィックス長はネットワーク部のビット数で表し、ホスト部のビット数は 32 − プレフィックス長 です。

ホスト数の計算(一般的なケース):2^(32 − プレフィックス長) − 2(ネットワークアドレスとブロードキャストアドレスを除く)。ただし、/31はRFC 3021によりポイントツーポイントリンクで有効に使えるケースがあり、/32は単一ホストを示すために使われます。

クラスフルアドレッシングとCIDR(実務上の変遷)

歴史的にはクラスA/B/Cという区分がありました(デフォルトマスク:/8, /16, /24)。しかしルーティングテーブル増大とアドレス浪費を防ぐため、1993年にCIDR(RFC 1519)が導入され、可変長プレフィックスで柔軟にアドレスを割り当て・集約(サマリ)できるようになりました。今日のインターネットでは基本的にクラスフルは使われず、CIDRによるルーティングが主流です。

特殊アドレスと予約範囲(代表例)

  • プライベートアドレス(RFC 1918)
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • ループバック:127.0.0.0/8(代表例:127.0.0.1)
  • リンクローカル(自動構成):169.254.0.0/16
  • ブロードキャスト(限定ブロードキャスト):255.255.255.255
  • マルチキャスト:224.0.0.0/4(224.0.0.0 – 239.255.255.255)
  • 実験・将来利用:240.0.0.0/4(多くは未割当/実験的)
  • 未指定アドレス:0.0.0.0(ソースが未割当のとき等)

IPv4パケットの構造(ヘッダの主要フィールド)

主なヘッダフィールド(概略):

  • Version(4ビット) — 値 4 がIPv4を示す。
  • IHL(Internet Header Length、4ビット) — ヘッダ長を32ビット語数で示す(最小=5で20バイト)。
  • Type of Service / DSCP(8ビット) — トラフィック分類に使用。
  • Total Length(16ビット) — ヘッダ+データを含むパケット長(バイト)。
  • Identification(16ビット)、Flags(3ビット)、Fragment Offset(13ビット) — フラグメンテーション制御。
  • TTL(Time To Live、8ビット) — パケット寿命(ルータでデクリメント)。
  • Protocol(8ビット) — 上位のプロトコル識別(例:ICMP=1, TCP=6, UDP=17)。
  • Header Checksum(16ビット) — ヘッダのみの誤り検出。
  • Source Address / Destination Address(各32ビット)
  • Options(可変長) — 必要時のみ。最大ヘッダ長を超えない範囲で使用。

フラグメンテーション

IPv4はパケットが経路中のあるリンクのMTU(最大転送単位)より大きい場合、DF(Don't Fragment)ビットが0ならルータがパケットを分割(フラグメント)します。フラグメントはIdentification、Fragment Offsetで識別・再構築され、再組立ては宛先ホストで行われます。フラグメンテーションは性能やセキュリティ(フラグメント攻撃)上の課題があるため、パスMTU探索(PMTUD)で送信側が最適なサイズに調整するのが一般的です。

IPv4と関連プロトコル(運用面)

  • ARP(Address Resolution Protocol、RFC 826) — 同一リンク上でIPv4アドレスをMACアドレスに解決。
  • DHCP(Dynamic Host Configuration Protocol、RFC 2131) — IPv4アドレスおよび関連情報(デフォルトゲートウェイ、DNSなど)を動的に割り当て。
  • ICMP(Internet Control Message Protocol、RFC 792) — エラーメッセージ(Destination Unreachableなど)や診断(Echo Request/Reply=ping)。
  • 上位プロトコル:TCP/UDP — IPv4はこれらをカプセル化して転送。

NATとアドレス枯渇への対応

IPv4のアドレス不足に対する現実的な対策としてNAT(Network Address Translation)が広く使われています。NATはプライベートアドレス空間を用いて多数の内部ホストを1つ(または少数)のグローバルIPv4アドレスにマッピングすることでアドレス需要を緩和します。ポート番号を用いるPAT(Port Address Translation)は家庭用ルータでよく使われます。

しかしNATはエンドツーエンドの接続性を損ない、プロトコルやアプリケーションがIPアドレスを埋め込む場合に問題を起こすことがあります。キャリアグレードNAT(CGN)など大規模NATの導入はログ管理やトラブルシューティング、パフォーマンスに影響するため注意が必要です。

IPv4アドレス枯渇と移行の流れ

IPv4アドレス空間は有限であり、インターネットの普及により枯渇問題が顕在化しました。IANAは残るIPv4ブロックを地域インターネットレジストリ(RIR)へ割り当て、2011年にIANAによる残余/8の配布が完了しました。その後、各RIRは順次プールが枯渇し、APNICやRIPE、ARINなどで配布方針や最後の割当ルールが適用されました。枯渇への対応としては、NATの普及、IPv4アドレスのマーケット(再配布)、そして長期的にはIPv6への移行が進められています。

IPv6は128ビットアドレスを持ち、アドレス供給問題を本質的に解決しますが、完全移行は既存インフラとの互換性や運用の複雑さのため容易ではありません。現実にはデュアルスタック運用、トンネリングや翻訳技術(NAT64/Teredo等)による過渡的な共存が続いています。

運用上の注意点とセキュリティ

  • IPヘッダのチェックサムはヘッダのみを保護するため、上位データの整合性確認は上位プロトコル(TCP/UDPやアプリケーション)に依存します。
  • IPフラグメントはセキュリティ機構(ファイアウォールやIDS)で正しく処理されないと誤検出・回避を生むことがあるため注意が必要です。
  • IPスプーフィング(送信元偽装)やICMPを使った攻撃、UDPの反射攻撃など、IPv4環境ではネットワーク層での脅威が存在します。フィルタリング、ACL、RA(ルータ広告)保護、BGPセキュリティ対策(RPKI等)など多層的防御が求められます。
  • NAT環境ではログとトレースの整備が重要(誰がどのセッションを使ったか追跡できるようにする)。

まとめ

IPv4はインターネットの根幹をなすプロトコルであり、その設計や運用の知識はネットワーク技術者にとって必須です。同時に、32ビットアドレスの制約やフラグメンテーション、NATによる副作用、セキュリティ上の留意点など実務上の課題も多くあります。現代のネットワーク運用ではIPv4の理解に加え、CIDRやサブネット設計、NATの挙動、IPv6移行手法を含めた俯瞰的な知見が重要です。

参考文献