こんにちは!ハンズオンラボ運営のわたるです。
「IPv6対応」という表示をルーターやスマホの設定画面で見たことはあっても、「なぜ今さらIPv6なんてものが必要なのか」、ピンと来ていない人は多いのではないでしょうか。
この記事では、IPv4とIPv6の違いを、「電話番号の枯渇問題」 というたとえで解説します。
この記事を読むと、以下のことができるようになります
- なぜIPv4だけでは足りなくなったのか、根本原因が説明できる
- IPv4とIPv6のアドレスの見た目の違いが理解できる
- IPv6への移行で何が変わるのか、実務レベルで説明できる
IPv4アドレスとは何か——「割り振れる電話番号の総数」
インターネットに接続する機器には、住所にあたるIPアドレスが必要です。従来から使われているIPv4は、この住所を192.168.1.1のような4つの数字の組み合わせで表します。
一見、43億通りもあれば十分に思えます。しかし、これは**「日本全国で使える電話番号の総数が、最初から43億件しか用意されていない」**ようなものです。世帯・企業だけでなく、スマホ・PC・IoT機器・サーバーなど、インターネットにつながる機器の1台1台がそれぞれ電話番号(IPアドレス)を必要とする時代になると、あっという間に番号が足りなくなってしまいます。
なぜ足りなくなったのか:機器の爆発的な増加
IPv4が設計された当初は、インターネットにつながる機器がここまで爆発的に増えるとは想定されていませんでした。
実際に、地域ごとにIPアドレスを管理する組織では、新規に割り当てられるIPv4アドレスの在庫がすでに底をついている状態が続いています。新しく電話回線を引きたくても、もう空いている電話番号がほとんど残っていないという状況に近いイメージです。
IPv6とは何か——「桁数を大幅に増やした新しい電話番号体系」
この枯渇問題を根本的に解決するために作られたのがIPv6です。IPv6は、住所の表現方法を2001:0db8:85a3:0000:0000:8a2e:0370:7334のように、大幅に桁数を増やした形式に変更しました。
電話番号でたとえるなら、「市外局番・市内局番・加入者番号」という短い桁数の体系から、桁数を大幅に増やした新しい採番方式に切り替えるようなものです。これにより、地球上のあらゆる機器1台1台に、重複を気にせず番号を振り続けられるようになります。
実際にコードで見た目の違いを確認する
PythonでIPアドレスを扱う標準ライブラリを使って、IPv4とIPv6の違いを実際に確認してみます。
import ipaddress
ipv4 = ipaddress.ip_address("192.168.1.1")
ipv6 = ipaddress.ip_address("2001:0db8:85a3::8a2e:0370:7334")
print(f"IPv4: {ipv4}, バージョン: {ipv4.version}")
print(f"IPv6: {ipv6}, バージョン: {ipv6.version}")
print(f"IPv4アドレスの総数: {2**32:,}")
print(f"IPv6アドレスの総数: {2**128:,}")
実行結果:
IPv4: 192.168.1.1, バージョン: 4
IPv6: 2001:db8:85a3::8a2e:370:7334, バージョン: 6
IPv4アドレスの総数: 4,294,967,296
IPv6アドレスの総数: 340,282,366,920,938,463,463,374,607,431,768,211,456
IPv4が「約43億」なのに対し、IPv6は桁が違いすぎて実感が湧かないほどの数であることが、数字を見るとよくわかります。
今すぐ全部IPv6に切り替わらない理由
「そんなに便利なら、今すぐIPv6に全部切り替えればいいのでは」と思うかもしれませんが、現実にはIPv4とIPv6が併存する期間が長く続いています。
入力内容を要約・構造化し、日本語ゴシック体でインフォグラフィック画像を生成して。公式のアイコンがあれば使い視覚化すること。30文字以上の文章が入力された場合には、内容をまず要約して構造化してから画像生成してください。背景は白でタイトルは不要。
世界中の古い機器・ネットワーク機器・サービスの中には、まだ新しい電話番号体系(IPv6)に対応していないものも多く残っているため、片方だけを一気に切り替えると通信できなくなる相手が出てきてしまいます。そのため、**新旧2つの電話番号体系を両方使えるようにしておく(デュアルスタック)**という移行方法が広く採用されています。
IPv6アドレスの表記ルール:桁数が多すぎるから省略する
IPv6アドレスは桁数が非常に多いため、そのまま書くと長すぎて読みにくいという問題があります。そこで、いくつかの省略ルールが使われます。
これは、電話番号の市外局番部分がずっと同じ場合、まとめて省略して案内するようなイメージです。実際にPythonで確認してみます。
import ipaddress
full = ipaddress.ip_address("2001:0db8:0000:0000:0000:0000:0000:0001")
print(f"省略前の入力に対する内部表現: {full}")
print(f"圧縮表記: {full.compressed}")
print(f"展開表記: {full.exploded}")
実行結果:
省略前の入力に対する内部表現: 2001:db8::1
圧縮表記: 2001:db8::1
展開表記: 2001:0db8:0000:0000:0000:0000:0000:0001
::という記号は、**「0が連続する部分を1箇所だけまとめて省略してよい」**という特別なルールで、これによってIPv6アドレスは実用上扱いやすい長さに収まっています。
移行技術:トンネリングという橋渡し
デュアルスタック以外にも、**IPv6専用の区間を、既存のIPv4ネットワークの中に橋渡しする「トンネリング」**という移行技術があります。
これは、新しい体系の電話番号宛のメッセージを、いったん従来の電話網が扱える形の封筒に入れて運び、届いた先で開封してもとの形に戻すような仕組みです。ネットワーク全体を一気にIPv6化できない場合でも、部分的にIPv6の通信を実現する橋渡し役として使われます。
IPv4アドレス枯渇への現実的な対処:NAT
IPv6への移行が完全に進むまでの「つなぎ」として、既存のIPv4環境では**NAT(Network Address Translation)**という仕組みで、限られた電話番号を使い回す工夫がされています。
【NATのイメージ】
社内の複数の機器(内線)
→ 会社の代表番号(グローバルIPv4アドレス)1つを共有して外部と通信
これは、社内の内線番号を、外部からは1つの代表電話番号として見せる仕組みに近く、限られたグローバルIPv4アドレスを、複数の機器で共有して使い回すための工夫です。ただし、これはあくまで枯渇問題の応急処置であり、根本的な解決にはなっていません。
よくある勘違い:「IPv6の方が速い」わけではない
「IPv6は新しい規格だから通信速度が速い」と思われがちですが、IPv6の主な目的はアドレス空間の拡大であり、速度向上そのものが目的ではありません。実際の通信速度は、経路やネットワーク機器の対応状況など、他の要因に左右される部分が大きく、「IPv6=高速」と単純に結びつけるのは誤解です。
ビフォーアフター
【ビフォー】
- IPv4とIPv6 → 「なんとなく新しいバージョンがある」程度の認識
- 枯渇問題 → 「アドレスが足りないと聞くが、実感が湧かなかった」
- 移行 → 「今すぐ全部IPv6に切り替わるはず」と思っていた
【アフター】
- IPv4とIPv6 → 「桁数を大幅に増やして、枯渇問題を根本解決する新しい電話番号体系」
- 枯渇問題 → 「機器の爆発的増加で、約43億通りでは足りなくなった」
- 移行 → 「新旧を両方使えるデュアルスタックで、段階的に移行が進んでいる」
まとめ
この記事では、IPv4とIPv6の違いを整理しました。
- IPv4は約43億通りしかアドレスを作れず、機器の急増で枯渇が進んでいる
- IPv6は桁数を大幅に増やし、事実上枯渇しない規模のアドレス空間を持つ
- 古い機器との互換性のため、IPv4とIPv6は当面併存する(デュアルスタック)
- NATは、限られたIPv4アドレスを使い回すための応急的な工夫
- IPv6は速度向上ではなく、アドレス不足の根本解決が主目的
自宅や職場のルーター設定画面で「IPv6」という項目を見かけたら、この「電話番号の枯渇問題」を思い出してみてください。
ハンズオンラボでは、未経験からでも「作って覚える」をモットーにしたITハンズオンイベントを定期開催しています。
面白かったら
「👇いいね」で応援

