前回はネットワーク層の役割が、『複数存在するネットワーク同士を結び付ける』ことであるという説明をしました。今回は、複数存在するネットワークと、その中にある機器を判別するための重要な情報源となる「IPアドレス」について紹介します。ネットワーク層の動作を支えるIPが通信の送信元と宛先を識別するために、どのようにアドレスを割り当てて利用するのか、具体例を交えながら考えてみましょう。→連載「ネットワークの超基本! エンジニア1年目の教科書」のこれまでの回はこちらを参照

IPアドレスと表記方法

前回に紹介したとおり、「IP」はインターネットで使われているプロトコルで、世界中のコンピュータの中から目的のコンピュータを特定してデータを送り届ける役割を担っています。このとき「送信元である機器(自分自身)」と「宛先となる機器」を判別するために『IPアドレス』が用いられます(図1)。

  • 図1:IPヘッダ内の送信元/宛先アドレス

    図1:IPヘッダ内の送信元/宛先アドレス

IPアドレスは、32ビット(2進数で表すと32桁の「0」と「1」の組み合わせ)で表現されますが、そのままでは人間にとって読み解きづらく、管理が非常に難しくなってしまいます。そこで私たち人間がIPアドレスを取り扱う場合、桁数を短くするために以下の手順で10進数のアドレスとして表現します。

  1. 32ビットを8ビットずつ4ブロックに分ける
  2. それぞれのブロックは「.(ドット)」で区切る
  3. それぞれのブロックの8ビットを10進数に変換する

8ビットの2進数“00000000~11111111”は、10進数で表すと“0~255”です。これを4つのブロックとして書き表すことになります。この流れを次の図で確認しましょう。

  • 図2:IPアドレスの表し方

    図2:IPアドレスの表し方

IPアドレスが意味するもの

IPアドレスを考えるにあたり、ネットワーク層が「複数存在するネットワーク同士を結び付ける」という役割を持っていたことを思い出してください。

複数のネットワークを実現するには、それぞれのネットワークに何かしらの区別をつける必要があります。IPに限らず、ネットワーク層で動作するプロトコルが定めるアドレスには必ず「ネットワークを区別するための番号」が含まれています。さらに、同じネットワークに所属している機器の中から「特定の個体を識別するための番号」も含まれています。

IPアドレスでは、32ビットのうち先頭から特定ビット目までは「所属するネットワークを識別するための範囲(ネットワーク部)」としてネットワークの区別に、その特定ビットの次から最後までのビットを「特定の個体を識別するための範囲(ホスト部)」として機器の区別に用いています。

  • 図3:IPアドレスの表現

    図3:IPアドレスの表現

IPは通信の宛先を探す際、最初から世界中のすべての機器から目的の相手を探すわけではありません。まずは所属しているネットワークを、その上で宛先となる機器を、という2段構えで探しています。その探し方を実現させるために、1つのアドレスの中に「ネットワーク部」と「ホスト部」という2段構えの表現になっているわけです。

  • 図4:ネットワーク部とホスト部の境目はどこか

    図4:ネットワーク部とホスト部の境目はどこか

境界線となるビット数は、所属する個体(ホスト)数が多いネットワークにも、逆に個体数が少ないネットワークにも対応するため、「必ず○ビット目が境界である」とは固定せず、柔軟に決められるようになっています。

例えば、個体数の多いネットワークではホスト部に用いるビット数を多くし、ネットワーク部のビット数を少なくする必要があります。一方、個体数の少ないネットワークではホスト部のビットを減らし、ネットワーク部のビット数を増やすことになります。

IPv4は当初から「クラス」という考え方を基に、境界線となるビット数を3種類とするルールが策定されました。まずすべてのIPアドレスを「クラスA」から「クラスE」の5種類に分類します。32ビットの2進数でアドレスを見たときに区別がつくよう、以下の分類方法が決められています。

クラスA:先頭のビットが“0” クラスB:先頭から2ビットが“10” クラスC:先頭から3ビットが“110”
クラスD:先頭から4ビットが“1110”
クラスE:先頭から4ビットが“1111”

次に、それぞれのクラスへ用途を定めていきます。

クラスA:個体数の非常に多い大規模ネットワークを表すためのアドレス
(先頭から8ビットをネットワーク部、残りの24ビットをホスト部とする)

クラスB:個体数の多い中規模ネットワークを表すためのアドレス
(先頭から16ビットをネットワーク部、残りの16ビットをホスト部とする)

クラスC:個体数の少ない小規模ネットワークを表すためのアドレス
(先頭から24ビットをネットワーク部、残りの8ビットをホスト部とする)

クラスD:マルチキャスト通信に用いるため、特定のホストを表す用途としない

クラスE:研究用途に用いるため、特定のホストを表す用途としない

これらIPアドレスのクラス分けのイメージを図で確認しましょう。

  • 図5:IPアドレスのクラス分け

    図5:IPアドレスのクラス分け

「A」「B」「C」3つのクラスについて、それぞれ考えてみましょう。

クラスAはホスト部が24ビットとなるため、1つのネットワークにおよそ1600万台のホストを収容することができます。ホスト部が16ビットとなるクラスBでは、1つのネットワークにおよそ65,000台、そしてホスト部が8ビットとなるクラスCでは、1つのネットワークにおよそ250台のホストを収容できます。

このように、必要なホストの数に応じて利用するアドレスを選べるよう考えられたのが、IPアドレスの「クラス」という定義です。各クラスのアドレス範囲を10進数に変換すると下表のようにまとめられます。

  • 図6:各クラスのアドレス範囲

    図6:各クラスのアドレス範囲

IPアドレスを10進数で表す4つのブロックのうち、先頭ブロックの数値を覚えると、10進数のIPアドレスも一目でどのクラスなのか見分けが付けられるようになります。

IPアドレスとネットワークへの割り当て

ここまでIPアドレスの表記方法と意味、クラス分けについて説明しました。次はネットワークに参加する機器に対してIPアドレスの割当てを行ってみましょう。

IPの仕組みを正しく機能させるため、アドレスの割り当てには2つの原則があります。

  1. ネットワーク部は、全世界の中で唯一の番号であること。世界に同じ番号のネットワークが複数あっては、正しい目的地に到達できません。

  2. ホスト部は、同一ネットワーク内で唯一の番号であること。この場合も、同じ番号が複数存在すると、正しい宛先に到達できません。

この原則を踏まえ、IPアドレスをどのように割り当てればよいかを具体例で確認しましょう。以下の要件を満たすように、アドレスを割り当てることとします。

要件1:あるネットワークはホスト数が500~1000台必要なので、クラスBのネットワークを割り当てたい。

要件2:もう一つのネットワークはホスト数が100~200台程度なので、クラスCのネットワークを割り当てたい。

要件3:2つのネットワークの境界には、IPルータを配置し、ネットワーク間で必要な通信ができるようにする。

この場合、図7のような割り当てが考えられます。

  •  図7:クラスBのネットワークとクラスCのネットワークの割り当て例

     図7:クラスBのネットワークとクラスCのネットワークの割り当て例

この例では、クラスBのネットワーク(左側)として172.16.0.0~172.16.255.255のアドレス範囲を、クラスCのネットワーク(右側)としては192.168.1.0~192.168.1.255のアドレス範囲を割り当てています。

アドレスを範囲で記載するのは非効率なため、以降はアドレスの先頭部分でネットワークを示します。この場合では「172.16.0.0のネットワーク」と「192.168.1.0のネットワーク」という言い方になります。また、図7のネットワークの境界にある機器のアイコンはIPルータです。ルータの役割や機能については、今後紹介します。

先ほど説明した『アドレス割り当ての2大原則』にあてはまっているかを確認します。

  1. 「分離されたネットワークで、ネットワーク部のアドレスは唯一であること」。両者のネットワークは番号が異なり、重複していないことがわかります。

  2. 「同一ネットワーク内で、ホスト部のアドレスは唯一であること」。これは「同じネットワーク内にある機器は、ネットワーク部は共通であり、ホスト部は重複してはならない」と読み替えることもできます。

同じネットワーク内で別々のアドレスが正しく(※)割り当てられています。

(※):ルータのインタフェースもネットワークの参加者として、他のPCと同様にIPアドレスの割り当てを行います。

このように2つの原則を守ることで、異なるネットワーク間の通信が正しく行われるようになります。

割り当てができない例外アドレス

最後に、アドレスの割り当てに使うことのできない二種類の例外を紹介します。これも覚えておきたい重要なルールです。

一つ目は、クラスごとに定義されている「割り当てできないネットワーク番号」という例外です。これらは、別の用途での利用を想定しているネットワークです。(図8)

・クラス「A」における先頭と末尾のネットワーク
(0.0.0.0ネットワーク と、127.0.0.0ネットワーク)

・クラス「B」の先頭と最後のネットワーク
(128.0.0.0ネットワーク と、191.255.0.0ネットワーク)

・クラス「C」における先頭と末尾のネットワーク
(192.0.0.0ネットワーク と、223.255.255.0ネットワーク)

  • 図8:例外として利用できないネットワーク部のアドレス

    図8:例外として利用できないネットワーク部のアドレス

二つ目は、ネットワークごとに定義されている「割り当てできないホスト番号」という例外です。

・ホスト部のビットが全て「0」のアドレス:ネットワークそのものの存在を示すための「ネットワークアドレス」として用います。

・ホスト部のビットが全て「1」のアドレス:ネットワーク内の全ホストへ一斉通信する「ブロードキャストアドレス」として用います。

  • 図9:例外として利用できないホスト部のアドレス

    図9:例外として利用できないホスト部のアドレス

まとめ

・ネットワーク層で使われる「IP」プロトコルは、相手を特定するために「IPアドレス」を用いる

・IPアドレスは32ビットの大きさを持っている。人間は一般的にこれを8ビットごとに分けてピリオドで区切り、それぞれを10進数で表したものを使用する

・IPアドレスはネットワーク部とホスト部に分かれ、クラスの定義によって、ネットワーク部とホスト部の境目が決まっている

・アドレスは重複しないように割り当てる必要がある

・割り当て可能なアドレスはクラス「A」「B」「C」の範囲だが、その中にも割り当てできない例外がある

次回は、今回紹介した「クラス」の考え方に対して新しく考え出された「クラスレス」というアドレス割り当ての方法と、その実現の中心的な役割を持つサブネットマスクについて紹介します。

著者プロフィール


中平 忠芳(なかひら ただよし)


ネットワンシステムズ株式会社
ビジネス開発本部イノベーション推進部ネットワークアカデミーチーム所属
エキスパート
2004年ネットワンシステムズ入社。市場投入前のセキュリティ製品に対する技術的な検証業務、顧客ネットワーク向けの設計・構築業務、社内システムのインフラ管理業務に携わったのち、現在は顧客向けの技術インストラクターとして勤務。シスコシステムズ社認定インストラクターとして、これまでの幅広い業務経験を活かした研修を実施している。