IPv4マップドIPv6アドレス(::ffff:0:0/96)
::ffff:192.168.1.1のようなIPv4マップドIPv6アドレスについて学びます。デュアルスタックシステムがIPv6ソケットを通じてIPv4接続をどのように処理するかを理解します。
IPv6 Transition
詳細な説明
IPv4マップドIPv6アドレス
IPv4マップドIPv6アドレスはIPv6アドレス形式内にIPv4アドレスを埋め込み、プレフィックス::ffff:を使用します。デュアルスタックシステムがIPv6コンテキストでIPv4アドレスを表現するために使用されます。
形式
::ffff:a.b.c.d
例:
::ffff:192.168.1.1 (IPv6形式の192.168.1.1)
::ffff:10.0.0.1 (IPv6形式の10.0.0.1)
::ffff:127.0.0.1 (IPv6形式のループバック)
展開形式
::ffff:192.168.1.1
展開:
0000:0000:0000:0000:0000:ffff:c0a8:0101
c0a8:0101 = 192.168.1.1の16進数:
192 = 0xc0, 168 = 0xa8, 1 = 0x01, 1 = 0x01
プログラミング例
// IPv6ソケット上のNode.jsサーバーがIPv4接続を受信:
server.on('connection', (socket) => {
console.log(socket.remoteAddress);
// IPv4クライアントの場合 "::ffff:192.168.1.100"
// ネイティブIPv6クライアントの場合 "2001:db8::1"
});
重要な注意点
- IPv4マップドアドレスはネットワーク上で送信されません — OS内部の表現です
- 実際のネットワークトラフィックは標準IPv4パケットを使用
- 一部のアプリケーションはアドレス表示時に
::ffff:プレフィックスを除去します
ユースケース
IPv6デュアルスタックソケットで実行されているNode.js WebサーバーがIPv4訪問者のクライアントIPを::ffff:203.0.113.50、IPv6訪問者を2001:db8::1として記録し、レート制限のためにアドレスの正規化が必要になります。