ドット十進表記(IPv4)完全ガイド:仕組み・サブネット計算・互換性と運用上の注意点

ドット十進表記とは何か

ドット十進表記(ドットじっしんひょうき、英: dotted decimal notation)は、主にIPv4アドレスを人間が読み取りやすい形で表現するための表記法です。32ビットのIPアドレスを8ビットずつ4つに分け、それぞれを10進数で表し「.(ドット)」で区切った形式、例:192.168.0.1が典型です。しばしば「ドットクアッド(dotted quad)」とも呼ばれます。

基本の仕組み

IPv4アドレスは内部的には32ビットの数値です。これを左から8ビットずつ区切ると4つのオクテット(バイト)に分かれます。各オクテットは0〜255の範囲の整数として表され、ドットで区切ることで人間にとって見やすくなります。

  • 例:192.168.0.1 → 各オクテットは 192, 168, 0, 1
  • 2進表現:11000000.10101000.00000000.00000001
  • これを一続きの32ビット値として扱うと、3232235521(10進)などになる

歴史と由来

ドット十進表記は初期のTCP/IP実装で採用され、UNIXやネットワークツールの普及とともに事実上の標準になりました。RFC 791(1981年)で定義されたIPv4の仕様に基づく表現方法として広まっています。

ネットワークプレフィックス(/プレフィックス長)とネットマスク

アドレス単体だけでなく、ネットワークを表す際には「プレフィックス長(例:/24)」や「サブネットマスク(例:255.255.255.0)」を併用します。プレフィックス長は先頭から何ビットがネットワーク部かを示す数値(0〜32)。サブネットマスクはドット十進表記で同じ情報を表現したものです。

  • /24 は 255.255.255.0 に相当(11111111.11111111.11111111.00000000)
  • 変換のやり方:左から連続した1ビットをプレフィックス長だけ並べ、残りを0にして8ビットずつ10進に変換

ネットワーク計算の基本(例で理解する)

例:アドレス 192.168.10.130/26 の場合

  • プレフィックス長 /26 → マスクは 255.255.255.192(11111111.11111111.11111111.11000000)
  • ネットワークアドレス = アドレス AND マスク → 192.168.10.128
  • ブロードキャスト = ネットワークアドレス | (~マスク) → 192.168.10.191
  • ホスト有効範囲 = 192.168.10.129 〜 192.168.10.190(ブロードキャストとネットワークアドレスは通常ホストに割り当てない)

こうした計算は、ルーティングやACL(アクセス制御リスト)を設計する上で必須の基礎技術です。

表記の揺らぎと互換性の注意点

ドット十進表記は一般的ですが、歴史的な互換性のために他の表記や曖昧さも存在します。

  • 単一の10進数で32ビット全体を表すことも可能(例:3232235521 = 192.168.0.1)
  • オクテットを3つや2つで表記する「a.b.c」や「a.b」形式を受け付ける実装もある(古いinet_atonの振る舞い)
  • 先頭に0があると「8進(オクタル)」として解釈される実装もあり、セキュリティ上の曖昧性を生む(例:010 = 8 と解釈される場合がある)
  • 0xで始めると16進として扱う実装も見られる

そのため、特にプログラミングや設定ファイルでは常に標準的な「四つの10進オクテット」表記を用いることが推奨されます。古いライブラリ関数(inet_aton/inet_addr)の挙動に注意してください。

クラスフル vs クラスレス

かつてはIPv4アドレスはクラスA/B/Cなどの範囲で割り当てられていました(例:クラスAは1.0.0.0〜126.255.255.255 等)。この「クラスフル」方式はアドレスの浪費を招いたため、1990年代にCIDR(クラスレス)方式が導入され、任意長のプレフィックス(/xx)による柔軟なサブネット設計が一般化しました。今日のインターネットではCIDRが標準です。

特殊なアドレスとその意味

  • 0.0.0.0:未割当のアドレスやデフォルトルートの指定で使われることがある
  • 127.0.0.0/8:ループバック(127.0.0.1 が代表)
  • 255.255.255.255:限定ブロードキャスト(全ホストへのブロードキャスト)
  • プライベートアドレス(RFC 1918):10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 など

運用上のポイントと落とし穴

ドット十進表記を扱う際の実務的注意点:

  • 設定ファイルやスクリプトで先頭の0や異なるフォーマットを渡すと、想定外の解釈になることがある(特に古いCライブラリ系)
  • ネットワーク機器やOSによっては、マスクをドット十進で指定するかプレフィックスで指定するかの違いがある。どちらも正しく扱えることを確認する
  • CIDRを理解していないと、誤ったネットワーク分割やアクセス制限をしてしまう可能性がある
  • IPv6ではドット十進表記は使わず16進のコロン表記だが、IPv4マッピングや移行技術の際にIPv4のドット十進表記に遭遇する

実務での利用例(コマンドや設定)

運用現場では以下のように現れることが多いです。

  • ホスト設定:ifconfig/ip addr show で 192.0.2.1/24 のような表示
  • ルーティング:ルーティングテーブルにネットワークとマスク(または/プレフィックス)を記述
  • ファイアウォール:ACLで「192.168.1.0/24」を指定してアクセス制御
  • DNS逆引き:in-addr.arpa ドメインはドット十進を逆順にした表現を使う(例:1.0.168.192.in-addr.arpa)

まとめ — なぜ覚えておくべきか

ドット十進表記はIPv4ネットワーク設計・運用の基礎言語です。アドレスの読み書き、ネットワーク/ホストの区別、プレフィックスとマスクの相互変換、特殊アドレスの意味などを理解しておけば、ルーティング、サブネット設計、トラブルシューティングが円滑になります。逆に表記の曖昧さや古い実装の挙動に無頓着だと、セキュリティや可用性の問題を招くことがあります。

参考文献