16進数形式のIPアドレス

IPv4アドレスが16進数でどのように表現されるかを学びます。パケットキャプチャやネットワークプログラミングで使用されるドット付き10進表記とhex表記の間の変換方法を解説します。

Debugging

Hex

C0 A8 01 01

ASCII

192.168.1.1

詳細な説明

IPv4アドレスは32ビットの数値で、4つの10進オクテット(おなじみのドット表記)、単一の32ビット整数、または4つの16進バイトとして表現できます。ネットワークパケットキャプチャ、hexエディタ、低レベルネットワークプログラミングでは、IPアドレスは生のhex形式で表示されます。この変換の理解はネットワークトラフィックの分析に不可欠です。

192.168.1.1をhexに変換:

ドット付き10進IPアドレスの各オクテットを独立して2桁のhex値に変換します:

  1. 192C0(12 × 16 + 0 = 192)
  2. 168A8(10 × 16 + 8 = 168)
  3. 101
  4. 101

結果: C0 A8 01 01

一般的なIPアドレスのhex表現:

IPアドレス Hex 用途
0.0.0.0 00 00 00 00 デフォルト/未指定
127.0.0.1 7F 00 00 01 ループバック(localhost)
192.168.1.1 C0 A8 01 01 一般的なルーターゲートウェイ
10.0.0.1 0A 00 00 01 プライベートネットワーク
255.255.255.0 FF FF FF 00 /24サブネットマスク
255.255.255.255 FF FF FF FF ブロードキャスト
8.8.8.8 08 08 08 08 Google DNS

hexでのプライベートIP範囲の認識:

  • 10.0.0.0/8: 0Aで始まる — hex 0Aで始まるアドレスはクラスAプライベート範囲
  • 172.16.0.0/12: AC 10からAC 1Fで始まる — hex第2バイトが10から1F
  • 192.168.0.0/16: C0 A8で始まる — パケットキャプチャで最もよく見られる2バイトプレフィックス

パケットヘッダー内のIPアドレス:

生のIPv4パケットでは、送信元IPアドレスはIPヘッダーの先頭からオフセット12-15に、宛先IPアドレスはオフセット16-19にあります。hexエディタでパケットキャプチャを表示する際、これらの4バイトフィールドを直接読み取れます。

URLとAPIでのhex表現:

一部のシステムはIPアドレスを単一のhex数として表現します。IP 192.168.1.1を32ビットhex整数として表すと0xC0A80101です。このコンパクト形式はデータベースストレージ、ファイアウォールルール、ネットワークプログラミングAPIで使用されることがあります。

IPv6 — ネイティブに16進数:

IPv6アドレスは128ビットで、ネイティブにhex表記で記述されます(例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)。4つのhex桁の各グループは16ビットを表します。IPv4のhexからIPへの変換の理解は、IPv6アドレスの読み取りに自然に拡張されます。

ユースケース

ネットワークエンジニアは、WiresharkやtcpdumpでRAWパケットキャプチャを分析する際、ファイアウォールルールの記述時、ソケットレベルでのネットワークプログラミングのデバッグ時にIPアドレスをhexとの間で変換します。

試してみる — Hex Editor

フルツールを開く