本文とサイドメニューへジャンプするためのナビゲーションスキップです。

スタートアップガイド

J-Net21 中小企業ビジネス支援サイト

  • J-Net21とは
  • スタートアップガイド
中小機構
  • メルマガ登録
  • RSS一覧
  • お問い合わせ

HOME > 製品・技術を開発する > デジ・ステーション

デジ・ステーション


初級ネットワーク講座
第4回 IPアドレスの構造とサブネット

前回は、TCP/IP通信の中核部分であるIPというプロトコルにどんな機能があり、どんな役割を果たしているのかを説明した。4回目となる今回は、IPで重要な機能の1つであるIPアドレスについて調べてみよう。IPアドレスの構造や、ネットワークの規模に応じた「クラス」の概念、また限られたネットワークリソースを有効利用するための「サブネット」などについて学ぶ。
 なお、IPにはいくつかバージョンがあるが、今回は現在多く利用されているIPv4をもとに説明する。

1 IPアドレスとサブネット

1-1 IPアドレスとは

まず、第2回第3回講座で分析したパケットを見てみよう。図1が、パケットキャプチャツールでキャプチャしたダンプである。

図1 <<パケット4>>のダンプ

そして、図1のダンプコードの部分を取り出したものが図2である。

図2 <<パケット4>>のダンプコードの全体構造

各部のダンプコードは、スペースの都合で2行に渡って表記している。

前回(第3回)講座で解説した通り、このパケットのIPヘッダを各フィールドに分解すると以下のようになる。

表1 <<パケット4>>のIPヘッダの内容

前回説明した通り、Source Address送信元IPアドレスDestination Addressあて先IPアドレスを表す。図3を見ると、このパケットは「192.168.1.143」というIPアドレスを持つホストから「210.225.230.82」というIPアドレスを持つホストに向けて送出されていることがわかる。ホストとは、TCP/IPの世界では、通信を行うコンピュータや通信機器のことを指す。
 では、IPアドレスとはなんだろうか?「アドレス」は日本語ではもちろん「住所」を意味する言葉だ。それでは一体何の住所なのかというと、「送信元IPアドレス」「あて先IPアドレス」とあるように、ホストを1台1台識別するための符号である。
 送信元ホストに棲む妖精「パケトくん」は、送り出すパケット1つ1つに目的のホストを識別する「あて先IPアドレス」を設定する。通信途中にあるルータの「るー太くん」は、ルータに届いたパケットの「あて先IPアドレス」を見て、適切な方向へパケットを導いてくれる。
 こういった「パケトくん」と「るー太くん」などの連係プレー(「連携」ではない)によって、パケットは目的のホストへ到達する。 もし「パケトくん」が間違った「あて先IPアドレス」を設定してしまうと、パケットは間違ったホストに到達したり、途中で迷子になってしまうことになる。

では、Destination Address、あて先IPアドレスの部分を詳しく見てみよう。表1の最下行に、16進法で「D2E1E652」と示されている。
 IPアドレスは、IPv4の場合32ビットである(IPv6の場合128ビット)。32ビットでいえば、"0"か"1"で表現する2進数32桁である。では、このIPアドレスを16進数から2進数に置き換えてみよう。16進数1桁は2進数4桁である。
 16進数も2進数も、あまりわかりやすいとはいえない。そこで、表記ルールとして32ビットあるIPアドレスを8ビットずつ4ブロックに分けてから、ブロックごとに10進数に変換する(図3)。

図3 あて先IPアドレスの変換

こうしてできた10進数の数字4つをドット( . )で区切ってつないだもの、この場合は「210.225.230.82」が、IPアドレスとなる。

IPv4とIPv6
 IPには、IPv4IPv6などいくつかのバージョンが使われている。IPv4の場合、IPアドレス長は32ビットである。2の32乗は4,294,967,296だから、32ビットだと約43億通りの組み合わせがあることになる。
 はたしてこの数字は大きいのか、それとも小さいのか?
 IPというプロトコルが開発された今から40年前ころは、それは、天文学的な数字だったことだろう。しかし、インターネットが急速に普及した現在では、この数字は小さすぎる。
 先代の技術者たちは、TCP/IPというすばらしいプロトコルを開発したのだが、自分たちの開発したプロトコルがこれほどまでに全世界に普及するとは、まさに想定外!だったのだろう。
 現在は、IPアドレス長が128ビットあるIPv6の普及が待たれる。

1-2 IPアドレスの構造

IPアドレスは、基本的にネットワークアドレス部とホストアドレス部からの構造になっている。ネットワークアドレス部はネットワークを指定するもので、実際の住所で言えば「地名」に相当する。ホストアドレス部は、そのネットワーク内の通信機器を指定するもので、実際の住所で言えば「番地」に相当する。

例えば、これから「東京都中央区銀座8-4-17」に行くとする。最寄り駅の駅員「るー太くん」に問い合わせる際、「東京都中央区銀座8-4-17に行くにはどうしたらいいですか?」と尋ねることはあまりない。「東京都中央区銀座」までの行き方を問い合わせれば、「るー太くん」は「地下鉄銀座駅」に向かうための経路を調べることができる。
 この住所では、「東京都中央区銀座」がネットワークアドレス、「8-4-17」がホストアドレスということになる。るー太くんには、ネットワークアドレスのみで問い合わせるほうが効率がいいというわけだ。

「東京都中央区銀座」というのも、ちょっとまどろっこしい場合がある。たとえば、現在の地点が東京近郊ならば、「銀座」だけで十分なケースもあるだろう。九州や北海道であれば「東京」だけでもよい。実は、効率よくアドレスを伝えるために経路集約という技術があるのだが、これについては別の機会に説明する。

さて、IPアドレスの構造の話に戻ろう。IPアドレス32ビットのうち、上位ビットがネットワークアドレス部、下位ビットがホストアドレス部と決まっている。それでは、いったいどこまでがネットワークアドレス部なのだろうか?実は、次項で説明するクラスによって、ネットワークアドレス部のビット数が異なるのだ。

1-3 クラスの概念

TCP/IPが開発された当時から長い間、IPアドレスのネットワークアドレスは規模別にクラスという概念でネットワークを分類していた。ネットワークを「大規模」「中規模」「小規模」と分類し、以下の表2のように、それぞれクラスA、クラスB、クラスCのIPアドレスを割り付ける。クラスDはネットワーク規模に関係なく、IPマルチキャスト通信に使われる。

表2 クラスごとのIPアドレス

※NL:ネットワークアドレス部の長さ(ビット) HL:ホストアドレスの長さ(ビット)
※割当可能ホスト台数には、ネットワークアドレス・ホストアドレスは含まれない

前述のIPアドレス、2進数表記なら「1101 0010 1110 0001 1110 0110 0101 0010」(10進数表記だと「210.225.230.82」)は、表2に照らし合わせると上位ビットが「110」なので、 ネットワークアドレス部24ビット、ホストアドレス部8ビットのクラスCに相当することがわかる(図4)。

図4 クラスCのIPアドレス構成

IPアドレス:
( 2 進数表記)1101 0010 1110 0001 1110 0110 0101 0010
(10進数表記)210.225.230. 82
ネットワークアドレス:
( 2 進数表記)1101 0010 1110 0001 1110 0110 0000 0000
(10進数表記)210.225.230. 0
ホストアドレス:
( 2 進数表記)0000 0000 0000 0000 0000 0000 0101 0010
(10進数表記)0. 0. 0. 82

仮に、クラスBのネットワークアドレスが割り付けられた場合、約65,000台までホストが接続可能である。しかし、1つのネットワークに65,000台のホストという規模のネットワークは、1つの町内会に65,000軒の家があるのと同様で、現実にはありえない。同様にクラスAの約1700万台という数字もありえない。実際には、1つのネットワークに数台〜数十台、多くても数百台というのが現実的である。
 となると、例えばクラスAのネットワークアドレスを割り当てられたネットワークが、数百台のホスト数の規模であれば、ほとんどのアドレスが他のネットワークでは使用できないので無駄になってしまうことになる。
 もしIPアドレスが無尽蔵にあるのならば、この無駄は問題とはならない。しかし、IPアドレスを用いるインターネットが急速に普及したため、数に限りのあるIPアドレスが、近い将来に枯渇してしまうことが予想される。このため、使用されていないIPアドレスなどの無駄なアドレス空間の有効利用が図られることになった。
 IPアドレスの枯渇問題の解決策は、歴史的に、サブネットからCIDRへと発展してきた。次項では、このサブネットについて詳しく見ていこう。

1-4 サブネットとは

サブネットとは、クラスA、クラスB、クラスCの3段階にしか分類できなかったものを、それぞれのネットワークアドレスに対して細分化することができるようにして、ネットワーク資源を有効活用しようという考え方だ。細分化を表すために、ホスト部をサブネット部とホスト部に分けて、ネットワークアドレス部ホストアドレス部に加えサブネット部を設ける。
 実際の住所で考えてみよう。ネットワークアドレスを実際の住所で言えば「地名」、例えば「銀座」に相当する。その場合、サブネットは「東」「西」「南」「北」のようなものだ。ネットワークアドレスとサブネットを組み合わせて、「銀座北」「銀座南」という町名になるわけだ(図5)。

図5 IPアドレスを実際の住所に当てはめた例

IPアドレスでは、サブネット部の長さによって、ホストアドレスを何分割できるかが決まる。1つのネットワークアドレスのうちサブネット部の長さを1ビットとすると2分割、2ビットとすると4分割、3ビットとすると8分割、4ビットとすると16分割できる。
 例えば、ネットワーク規模254台のクラスCを4分割して、ネットワーク規模60台程度の4つのサブネットとしたい場合には、サブネット部の長さを2ビットとすればよい。この場合、クラスCでは8ビットあったホスト部は、2ビットがサブネット部、6ビットがホスト部となる。
 サブネット部の長さを示すため、またIPアドレスのうち「ネットワークアドレス部」「サブネット部」「ホストアドレス部」の3つの部分を区別するために、サブネットマスクを用いる。サブネットマスクは、「ネットワークアドレス部」および「サブネット部」のビットを"1"で、「ホストアドレス部」のビットを"0"で表す(図6)。

図6 前述のIPアドレスをサブネットの長さを3ビット(8分割)とした場合

クラスCで、サブネットを3ビットとした場合には、サブネットマスクは2進数表記で「1111 1111 1111 1111 1111 1111 1110 0000」となる。これをIPアドレス同様に10進数で表記すると、「255.255.255.224」となる。
 例として、クラスBにおけるサブネット長とサブネットマスクの対応表を表3に掲げる。

表3 クラスBにおけるサブネット長のサブネットマスク対応表 

※割当可能ホスト台数は、ネットワークアドレス・ホストアドレスを含まない

上の表からわかるように、サブネットの長さが1ビット増えると、ホストアドレスの長さが1ビット減り、ネットワーク規模が半分となる。逆にサブネットの長さが1ビット減ると、ホストアドレスの長さが1ビット増え、ネットワーク規模が倍となる。
 例えば、クラスB(最大接続ホスト台数65,534)のネットワークアドレス「172.16.0.0」を4分割する場合、サブネット部の長さを2ビットとする。すると、接続ホスト台数16,382までのネットワークが4つできる。

10進数表記:
172. 16. 0. 0
2進数表記:
1010 1100 0001 0000 0000 0000 0000 0000
**** **** **** **** \\++ ++++ ++++ ++++
サブネットマスク:
1111 1111 1111 1111 1100 0000 0000 0000

*:ネットワークアドレス部、\:サブネット部、+:ホストアドレス部

◎ネットワークアドレス[172.16.0.0]のサブネットの1番目
10進数表記:172. 16. 0. 0
2進数表記:1010 1100 0001 0000 0000 0000 0000 0000
サブネットマスク:1111 1111 1111 1111 1100 0000 0000 0000
アドレス割当可能範囲:172.16. 0.0 - 172.16. 63.255

◎ネットワークアドレス[172.16.0.0]のサブネットの2番目
10進数表記:172. 16. 64. 0
2進数表記:1010 1100 0001 0000 0100 0000 0000 0000
サブネットマスク:1111 1111 1111 1111 1100 0000 0000 0000
アドレス割当可能範囲:172. 16. 64.0 - 172. 16.127.255

◎ネットワークアドレス[172.16.0.0]のサブネットの3番目
10進数表記:172. 16. 128. 0
2進数表記:1010 1100 0001 0000 1000 0000 0000 0000
サブネットマスク:1111 1111 1111 1111 1100 0000 0000 0000
アドレス割当可能範囲:172. 16.128. 0 - 172. 16.191.255

◎ネットワークアドレス[172.16.0.0]のサブネットの4番目
10進数表記:172. 16. 192. 0
2進数表記:1010 1100 0001 0000 1100 0000 0000 0000
サブネットマスク:1111 1111 1111 1111 1100 0000 0000 0000
アドレス割当可能範囲:172. 16.192. 0 - 172. 16.255.255

このようにして、ネットワークの規模に応じて、きめ細かくネットワークアドレスとサブネットを割り当てることができ、無駄なくアドレスを割り当てることが可能となる。
 例えばホスト台数が20台程度のネットワークを構築する場合、「クラスA + サブネット19ビット」または「クラスB + サブネット11ビット」、または「クラスC + サブネット3ビット」を割り当てると、割当可能ホスト台数が30台なので、20台にちょうどよい、ということになる。

今回は、IPアドレスの構造とクラスの概念に加え、枯渇してきたIPアドレス空間をやりくりするためのサブネットという技術を学んだ。次回の初級ネットワーク講座では、同じくIPアドレス空間を有効に利用する目的でサブネットの次に登場したVLSMCIDRという技術を、詳しく紐解いていくことにする。

サブネットは左詰め?
 表3を見ると、サブネットマスクはすべて左詰めで、上位ビットから"1"となっている。しかし、実は「サブネットマスクを左詰めにせよ」という規程はない。
 極端に言えば、こんなサブネットマスクも理論的には可能である。

  (10進法)255.255.170.170   (2進法)1111 1111 1111 1111 1010 1010 1010 1010
  (10進法)255.  0.  0.255   (2進法)1111 1111 1111 1111 0000 0000 1111 1111

 しかし、かつてこうしたサブネットマスクによって、設定が複雑になったり、運用においてもトラブルが頻発したりという過去がある。そこで左詰めにする慣例が生まれ、左詰めしか設定できないネットワーク機器が登場し、事実上、左詰めにするものとなった。
 次回で説明するCIDRには、左詰めの規定がある。

取材協力 : 株式会社アイテック

掲載日:2008年12月10日

キーマンズネット

出典元:株式会社リクルート キーマンズネット 2008年2月12日掲載分

検索

このページの先頭へ