First Creation: Unknown

Last Update: 2005/12/21

Top > Menu - C > IPv6 の概要と IPv4 についての考察

IPv6 の概要と IPv4 についての考察

IPv6 の説明をする前に、軽く IPv4 の説明をしておこう。

IPv4 が分からず IPv6 を理解しようなど、足し算を知らないくせに掛け算をするに等しい暴挙である。

まあ、気長に付き合っていただきたい。

Menu

  • IPv4
  • IPv6
  • 記事 - アドレスの枯渇は誤解(このやろう)

IPv4

IPv4 とは、現在(2005年11月時点)インターネットの主流であるインターネットプロトコルのことだ。例えば、www.odn.ne.jp というホスト名に 143.90.131.6 という IPアドレスが割り振られている。インターネットの世界では、すべて IPアドレスで通信が行われている。ホスト名はあくまで人間が覚えやすい名前に他ならない。http://www.odn.ne.jp と入力したときに、http://143.90.131.6 という変換が裏で行われているのである。

見ての通り、IPv4 は 0 〜 255 までのピリオドで区切った4つの数字で表記される。つまり、0.0.0.0 〜 255.255.255.255 までのアドレスだ。

しかし本来は、2進法で 32桁の数字なのだ。何のことかわからない? 私もこんな説明では分からない。というわけで、実例をお目にかけよう。その方が早い。

表1 - 10進と2進

見慣れたIPアドレスの形(10進法) 2進法に変換
202 248 20 68
202.248.20.68 1100 1010 1111 1000 0001 0100 0100 0100

202.248.20.68 = 11001010 11111000 00010100 01000100

となるのは理解してもらえただろうか。10進 ⇒ 2進にする方法は、10進の数を 2で割っていけば求められるのだが、windows に標準装備されてくる計算機を使おう。スタート→プログラム→アクセサリ→電卓を表示させて、表示メニューを関数電卓にすれば 10進 ⇒ 2進 だろうが 8進 ⇒ 16進だろうが思いのままだ。

さて、このことから IPv4 の IP アドレスは
00000000 00000000 00000000 00000000 から
11111111 11111111 11111111 11111111 までの範囲で存在すると察しがつく。

これがどれほどの個数になるのか、ざっと計算してみよう。

2^8 × 2^8 × 2^8 × 2^8 = 256 × 256 × 256 × 256 = 42億9496万7296 個、だ。(ちなみに、2^8 は 2 の 8 乗)。つまり、世界中に張り巡らせられたインターネット網に、IPアドレスは 43億個弱しか割り当てることができない。しかも 192.168系のアドレス等、グローバル IP に割り当てることができないアドレスがあるので、上記よりも少ない個数になる。(4,277,075,968個)

グローバル IP には使えないアドレス

表2 - プライベートアドレス

用途 ネットワークアドレス アドレス範囲
プライベートアドレス(クラスA) 10.0.0.0/8 10.0.0.0 〜 10.255.255.255 の中から 1677万7216台
プライベートアドレス(クラスB) 172.16.0.0/12 172.16.0.0 〜 172.31.255.255 から 65536台
プライベートアドレス(クラスC) 192.168.0.0/16 192.168.0.0 〜 192.168.255.255 から 256台

その他、研究機関用に押さえられていて、一般人が利用できない IPアドレスも存在する。

また、ちょっと大きな組織には、複数の IPアドレスを割り当てることが当たり前になっているので、一般ユーザが利用できる IPアドレスの幅はさらに狭まるのだ。

IPアドレスの枯渇について

近年のインターネットの爆発的普及により、早ければ 2005 年には IP アドレスが枯渇するのではないかとの噂がささやかれている。そうなれば一般ユーザのグローバルIP 取得はさらに難しくなるだろう。

2005/11/20 時点でまだ枯渇しそうな気配を見せないので、やはりこの記事が正しいのだろう。

ちなみに現在は 1個のアドレスを複数のパソコンがシェアする NAT やプライベートアドレスなどの対応策が採られている。しかしこのプライベートIP の利用により、インターネットの本質とも言うべき End to End の理念は歪められ、さまざまな不具合が生じている。ADSL に申し込みをしてルーターを使い始めてから MSN メッセンジャーでファイルが送れない、音声が届かない、等の不具合はないだろうか。このような現象は、プライベートアドレスを使用した不具合の典型的な症状だ。ファームウェアバージョンアップで、UPnP 機能が使えるようになることもあるが、そうでない場合もあるから注意が必要だ。

今はもうこういった現象はかなり減ったのだが、1〜2年前はむしろ日常的な不具合だった。このような人はどうしていたかというと、ルーターをブリッジモードにして、フレッツ接続ツールや広帯域接続等の PPPoE ソフトを使って接続し、何とかしていたわけだ。

表3 - ルーターモード

ルーターのモード PC の IPアドレス ルーターの IPアドレス
ルーターモード 接続前 192.168.0.2 192.168.0.1
接続後 61.1.2.3
ブリッジモード 接続前 - -
接続後 61.1.2.3 61.1.2.3

分かりにくいので補足しよう。

まずはブロードバンドルータを使っている場合を考える。

  1. PC を立ち上げるとそのルータから IPアドレスが払い出される。192.168.0.2 等のアドレスだ。これは LAN 内でしか通用しないアドレスである。つまりプライベートなアドレスだ。
  2. そしてルータが ISP(プロバイダ) に接続することで、61.1.2.3 のような IPアドレスが払い出される。これはグローバルなアドレスだ。(ここでちょっと注意したいのは、ルータが二つの IPアドレスを持っているという点である。これこそがルータの役割なのである。詳細は後日時間があるときにでも)。
  3. インターネット側から何か情報が送られるときは、61.1.2.3 というアドレスに対してデータが送られてくる。データを受け取ったブロードバンドルータは、LAN内のどの PC にデータを渡せばいいのか判断して、192.168.0.2 等の PC へデータを渡す。
  4. これがインターネット→プライベートアドレスへデータが渡されるときの流れだ。データがルータを通してプライベートアドレスに渡されるとき、ちょっとした変換(といって分かりづらければ欠落と言おう)が起こる。そのために、データが正常に PC に届かなかったり、PC からインターネット側にちゃんとデータが流れなくなって、さまざまな不具合が起こるわけだ。

さてブリッジモードの場合は、以下のような流れになる。

  1. PC を立ち上げても IPアドレスは払い出されない。
    もちろん LAN を組んでいて、DHCP サーバを自前で用意しているような人は別だが、一般的なユーザの利用法は、
    モジュラージャック - スプリッタ - ADSLルータ - PC
    というカンジだろうから、そういう構成で考えることにする。
  2. PPPoE のソフトを使って ISP に接続した時点で、PC は 61.1.2.3 のようなグローバル IPアドレスを得る。この場合、ブリッジモードのルータは PC からの認証を ISP へ橋渡ししているだけで、IPアドレスは PC自体に払い出される、と考えて欲しい。厳密には ISP側のルータが IPアドレスを持っているのだが・・・
  3. さて、PC が保持しているのはグローバルな IPアドレスであり、インターネット側から流れてきたデータは、何の変換もなく直接 PC に送られる。ただしブリッジモードで利用するとルーターのセキュリティ機能が働かないし、複数の PC からは接続できなくなるので不便ではあるが、そこは工夫次第でなんとかなるものだ。一台を中継地点(つまりプロキシ、ゲートウェイ)にしてページを見に行かせたりメールを受信したりすることもできるが、まあそんなことを思いつくひとはこのページを見てはいまい。

IPv4 を利用した現状が進行すれば、将来的にほとんどの端末がゲートウェイの向こう側に位置することになると予想される。つまりいっそうプライベート IP や NAT の利用が激しくなる。End to End の理念はもはや形骸化したと言ってよい。

IP アドレス → 16進数 → 10進数 でのページ表示

かなりどうでもいい話だが、思いついてしまったものので。

表4 - 進数の変換

10進数 16進数
211 D3
129 81
13 0D
200 C8

http://143.90.131.6/ をドメイン以外の方法で表示させようと思ったら、次のような手順で変換するといい。

D3810DC8 を 10進数に変換すると、2405073667 という数になる。

http://3548450248/

あら不思議 OCN が。(2005年 11月 20日時点の IPアドレス)

IPv6

IPv4 の枯渇アドレス問題を解決するのが IPv6 という 128 ビットアドレス空間だ。

ここでどうでも良さそうな疑問が発生する。なんで 4 の次に 6 なんだ、と。答えは単純。ST-II という TCP/IP 拡張機能のプロトコルがあり、それが IPv5 になっているからだ。面倒くさいから、とあるサイトからパクってきたものを掲載しておくから、ひまな人は読んで欲しい。まあこのページを見ている人はたいていひまなんだろうが・・・

IPv5

ST-II(Stream Protocol Version2)は、TCP/IPの拡張機能の一つで、通信のリアルタイム保証を提供するリソース予約プロトコルである。ST2ともいう。

コネクションレスIPと同じレイヤにおいて動作するコネクション型インターネットワーキング・プロトコルである。QoS 保証を要求するアプリケーションにおいて 1 つまたは複数の宛先へのデータストリームの効率的な配信をサポートするために開発された。

ST-IIは、通常のIPパケットと異なる特殊なフォーマットを利用するので、TCP/IPプロトコル・スタックの代わりに専用のプロトコル・スタックが必要である。このため、ST-IIは現状のIP(IPv4)とは異なるIPプロトコルとして扱われ、IPv5 と呼ばれている。

ST-IIは、ネットワークルートを横切るリアルタイムのストリームにバンド幅を確保するために使用でき、この予約によりプロトコルを実行しているすべてのノードでの適切なネットワークアクセスとパケットスケジューリングのメカニズムとともに QoS の明確な品質が ST-II アプリケーションに保証される。決められた時間内に相手に届くように、一定の間隔でリアルタイムにパケットが届くことを保証している。帯域予約は、ユーザーが取り消さない限り継続される。

ルーター、端末などのプロトコル・スタックに実装される。

IPv6 のアドレス表記は、0000 〜 FFFF までの 16ビットを 8個並べたものだ。(128ビットのアドレス空間と言うのは、16 bit × 8 = 128 bit ということだ)

アドレス的にはこんな感じである。『27c0:12:d8ab:0:3b8:f4ff:fe5e:756a』。蛇足だが、0 のブロックは省略可能らしいので、『27c0:12::d8ab::3b8:f4ff:fe5e:756a』でもいける。

ちなみに、IPv6 がどの程度のアドレス範囲を持つかというと、(FFFF)h= 65536 なので、

65536 × 65536 × 65536 × 65536 × 65536 × 65536 × 65536 × 65536 = 3.40282366920938 × e38 (10 の 38乗)

10 の 38乗という数字を、貴方は想像できるだろうか?

表5 - IPv6 のアドレス量

10 の位 記号(国際単位系 SI) 大数
10^3 K(キロ) 千
10^6 M(メガ) 100万
10^9 G(ギガ) 10億
10^12 T(テラ) 1兆
10^15 P(ペタ) 1000兆
10^18 E(エクサ) 100京(ケイ)
10^21 Z(ゼタもしくはゼッタ) 10垓(ガイ)
10^24 Y(ヨタもしくはヨッタ)

1禾弟(ジョまたはシ:)

(のぎへん(禾)に(弟)という字)

10^27

SI の接頭語にはこれ以上の単位がない・・・

1000禾弟
10^30 100穰
10^33 10溝
10^36 1澗

単位が大きすぎて国際単位系では表せない!

そこで中国から渡来して日本で使われるようになった大数で表記してみると、IPv6 の IPアドレス個数は、340澗という訳の分からない単位になることが分かった。

閑話休題

普段無意識に使っている大数。実は SI なんて目じゃないほどの単位を持つ。

胡蝶の夢や陰陽の思想など、中国人の想像力には脱帽するばかりだ。

表6 - 大数

一 十 百 千 万 億 兆 京 垓 禾弟 穰 溝 澗 正 載 極 恒河沙 阿僧祇 那由他 不可思議 無量大数
10^-1 10^1 10^2 10^3 10^4 10^8 10^12 10^16 10^20 10^24 10^28 10^32 10^36 10^40 10^44 10^48 10^52 10^56 10^60 10^64 10^68

10の倍数

10000 の倍数。万進という考え方。

万万進という考え方もあるようだが、万進に統一する。

大数については諸説あるようだが、これが最も一般的とされている単位だ。

ちなみに、1無量大数 = 100 × e68 になる。

続き

IPv6 のアドレス量、340澗、すなわち 3.4 × e38 は、天文学的数字といっても間違いではない。その証拠が以下の(どうでもいい)計算である。

試しに 1 IPアドレス = 1円玉の高さ、として、1円玉を積み上げてみた。なんとなく東京タワーか、地球圏を脱出するくらいの高さにはなるだろうと考えたが・・・私の驚きを、実際に計算して実感していただきたい。1円玉の高さは 1.5 mm として計算している。

表7 - 340澗

変換 IPv6 コメント

キロ [ Km ] に変換

1.5 × 3.40282366920938 × e38 [ mm ]

= 5.10423550381407 × e33 [ Km ]

単位が大きすぎてピンと来ない。

1天文単位 [ AU ] に変換

1AU = 太陽から地球までの距離 = 1.49597870 × e8 [ Km ]

5.10423550381407 e33 ÷ 1.49597870 e8

= 3.41197070774742 × e25 [ AU ]

これもピンとこないが、太陽系では収まりがつかないことくらいは e25 の部分で想像がつく。

1光年(光が 1年間に進む距離)に変換

1光年 = 9.4608 × e12 [ Km ]

5.10423550381407 × e33 [ Km ] ÷ 9.4608 × e12 [ Km ]

= 5.395141535403 × e17 [ 光年 ]

= 54 京光年!?

銀河系(直径 10万光年)どころの騒ぎではない。

宇宙誕生が 150億年(133億年、200億年未満など、諸説さまざま)にしても、54京年前に存在していたということはあるまい。

宇宙の直径ですら歯が立たない・・・

1円玉はサイズが大きすぎたようだ。変わりに水素原子(直径 1Å : 1.0 × e-9 = 1 [ nm ])を垂直に並べてみよう。

3.40282366920938e38(340澗) ×1.0e-9 [ m ](水素原子の直径) = 3.40282366920938 × e26 [ Km ] = 3.6 × e13 光年 = 36兆光年

またもや宇宙の直径(300億光年くらい)を越えてしまった。

結論

結論として、IPv6 が用意できるアドレスの個数『3.4 × e38』は、超天文学的数字であると言えるだろう。

これだけ IPアドレスがあれば、すべての PC に IPアドレスを割り振ることはおろか、すべての電化製品に対しても IPアドレスを割り当てることができる。実現しそうでしなかった、家の外からDVDレコーダーをコントロールしてデジタル放送を録画したり、携帯電話からお風呂を沸かすこともできるようになるかもしれない。となるとクラッカーどもが気に入らないやつの家の電子レンジと電磁調理器とエアコンとドライヤーを同時につけて停電させることもできるのか。なんとすごい世の中だろうか。

そういえばナイトライダーのキットは電子式でもない車のロックを ON にして犯人を車の中に閉じ込めたり、ホテルの鍵(電子式などではない)を開けてマイケルを不法侵入させたりしていたが、今にして思えば、ようやく彼らに現実が追いつきはじめたと言うところなのだろう。ただ、真にキットのレベルに追いつくためには、科学技術のブレイクスルーを 5段階ほど突破するか、現状の科学技術とは別の技術体系が必要となるなのは間違いない。

「高度に発展した科学は魔法と区別がつかない」

アーサー・C・クラーク

前へ上へ次へ