ネットワーク層アドレスは相互接続されたネットワーク全体で重複しないように設定します。つまり,相互に接続された多数のネットワークのコンピュータすべてに別々のアドレスを割り当てます。そうでないと,相手のコンピュータを一意に指定できません。


Pict2.階層的にアドレスを管理
アドレスをネットワーク番号とホスト番号に分けて,それぞれを別々に管理します

[画像のクリックで拡大表示]

アドレスを二つに部分に分けて管理する

 ただ,世界規模のネットワークにつながるすべてのコンピュータのアドレスを,一人の管理者が管理するのは不可能です。そこでIPアドレスをはじめとするネットワーク層アドレスは,階層的に管理されるようになっています(pict.2[拡大表示])。個別のアドレスは,ネットワーク番号とホスト番号という二つの部分に分けて管理されます。図ではアドレスの前半3けたをネットワーク番号,後半3けたをホスト番号になっています。

 インターネットは,一つひとつ自立したネットワークが集まって全体を構成しています。ということは,相互接続されたネットワークにはそれぞれ管理者がいるはずです。そこで,ネットワーク層アドレス全体を統括する管理者は,個々のネットワークに「ネットワーク番号」を割り当て,異なるネットワークに同じネットワーク番号が割り当てられないように管理します。

 ホスト番号を含むアドレスを個々のコンピュータに割り当てていくのは,それぞれのネットワークの管理者の仕事です。管理者は,ホスト番号が重複しないように注意しながら,自分のネットワークのコンピュータにアドレスを割り当てていきます。当然ですが,ネットワーク番号はすべてのコンピュータで共通です。

 このようにすることで,世界中で一つしかないアドレスがそれぞれのコンピュータに割り当てられます。アドレスをネットワーク番号とホスト番号という二つの部分に分けて階層的に管理することで,間違いなくこうした割り当てが可能になるわけです。

ネットワーク番号の桁数を変える

 みなさんもご存じのように,実際のIPアドレスは,例えば「192.168.0.1」のように表記されます。IPアドレスはそもそも32けたの2進数,つまり32ビットの数字なのですが,これをすべて2進数や10進数で表記してもわかりにくいので,8ビットずつ10進数に直して「 . ドット」で四つに区切っているのです。一つの区切りは8ビットの数値ですから,0から255までの値を取ります。つまり,IPアドレスは「0.0.0.0」で始まり,最後は「255.255.255.255」になります。

 pict.1やpict.2のアドレスでは,「002-005」のようにアドレスの中央でネットワーク番号とホスト番号を区切っていました。この方法では所属するコンピュータの数が多くても少なくても一つのネットワークに割り当てられるアドレスの数が同じになります。

 しかし実際は,ネットワークによって所属するコンピュータの台数は大きく異なります。例えば,10台しかコンピュータがないネットワークにネットワーク番号「002-xxx」を割り当てると,「002-011」以降のアドレスが無駄になります。そこでIPアドレスではネットワークに所属するコンピュータの台数で32ビットの区切り方を変え,アドレスの無駄使いを減らしました。


Pict3.柔軟に運用できるCIDR方式
以前のクラス方式と違って,現在使われているCIDRはアドレスを自由に割り当てられます

[画像のクリックで拡大表示]

 インターネットが普及し始めた当初は,3種類のクラスで区切り方を変える「クラス方式」が使われていました(pict.3[拡大表示])。上位8ビットだけをネットワーク番号として使う方式をクラスA,16ビット使うのをクラスB,24ビット使うのをクラスCと呼びます。

 この方式では「192.168.0.1」のような表記をしたときに,ネットワーク番号の部分がちょうどドットで区切られます。クラスCのネットワークなら頭の3ブロック「192.168.0.」までがネットワーク番号になります。

 クラス方式では,IPアドレスを見るだけで,どこまでがネットワーク番号かひとめで分かります。先頭の3けたが0~127であるアドレスをクラスA,128~191をクラスB,192~223をクラスCとして使うことになっていたからです。

区切る場所を自由に設定するCIDR方式

 しかし,当初のもくろみとは異なり,クラス方式は区切りが大ざっぱすぎて,IPアドレスの無駄使いが多くなることがわかりました。

 例えば,一つのクラスCで使えるIPアドレスの数は256個です。これよりコンピュータの数が多いネットワークではクラスBを使うことになりますが,その場合に使えるIPアドレスの数は約6万5000個にもなり,たいていのネットワークには多すぎます。

 そこで現在はクラス方式ではなく,「CIDR(サイダー)」(classless inter-domain routing)方式が使われています(pict.3の右)。CIDRでは8ビット単位のブロックにこだわらず,先頭から何ビット分をネットワーク番号に使うかを自由に決めます。

 例えば,先頭から23ビットをネットワーク番号として使う場合は「202.208.0.0/23」のように,「 / (スラッシュ)」の後ろにネットワーク番号として使うビット数を表記します。区切りは「255.255.254.0」のようにサブネット・マスクでも表現できます。

 /23の場合は,32ビットのうち23ビットがネットワーク番号になります。このため,32ビットから23ビットを引いた残りの9ビット分,つまり512個のIPアドレスがこのネットワークで使えるわけです。


●筆者:水野 忠則(みずの ただのり)氏
静岡大学創造科学技術大学院 大学院長・教授。情報処理学会フェロー,監事。現在の研究分野はモバイル&ユビキタス・コンピューティング,情報ネットワークなど
●筆者:佐藤 文明(さとう ふみあき)氏
東邦大学 理学部 情報科学科。東北大学大学院工学研究科修了。現在の専門分野は通信ソフトウエアの開発方法。
●イラストレータ:なかがわ みさこ
日経NETWORK誌掲載のイラストを,創刊号以来担当している。ホームページはhttp://creator-m.com/misako/