ここでは,IPアドレスについて詳しく学習します。なお,最新のIPアドレスのプロトコルとしてIPv6がありますが,ここでは現在未だ広く使われているIPv4を対象にします。
グローバルIPアドレス,プライベートIPアドレス,NAT,NAPT(IPマスカレード),ネットワーク部,ホスト部,ネットワークアドレス,ブロードキャストアドレス,クラス,クラスレス,サブネットマスク,CIDR
ここでは2進数と10進数の変換が多く出てきます。次の表を使うと便利です。
0000=0 1000= 8 0000 0001= 1 1000 0000=128
0001=1 1001= 9 0000 0010= 2 1100 0000=192
0010=2 1010=10 0000 0100= 4 1110 0000=224
0011=3 1011=11 0000 1000= 8 1111 0000=240
0100=4 1100=12 0001 0000= 16 1111 1000=248
0101=5 1101=13 0010 0000= 32 1111 1100=252
0110=6 1110=14 0100 0000= 64 1111 1110=254
0111=7 1111=15 1000 0000=128 1111 1111=255
IPアドレスは,グローバルIPアドレスとプライベートIPアドレスに区分されます。グローバルIPアドレスは外線電話番号,プライベートIPアドレスは内線番号のようなものです。
インターネットに接続しているホストのIPアドレスをグローバルIPアドレスといいます。グローバルIPアドレスは世界中で一意でなければなりません。
そのために,IPアドレスの管理は体系的に行われています。国際的に全体の管理をしているのがICANN(Internet Corporation for Assigned Names and Numbers)です。その下に地域別の管理組織があり,アジア・太平洋地域ではAPNIC(Asia Pacific Network Information Centre)が管理しています。さらに各国の組織があり,日本ではJPNIC(Japan Network Information Center:(社)日本ネットワークインフォメーションセンター)が管理しています。そして,JPNICは,IPアドレスを管理するいくつかの事業者を指定しています。
このような体系により,ICANNから指定事業者までにIPアドレスが割り振られ,指定事業者は利用企業にIPアドレスを割り当てます。なお,IPアドレス管理組織間での分配を「割り振り」,管理組織から利用者への配分を「割り当て」といいます。
A社内のLAN,B社内のLANなどの中でだけに閉じており,インターネットと直接に接続していないならば,A社LAN内のホストとB社LAN内のホストならば互いに同じIPアドレスを用いても混乱することはありません。そのようなIPアドレスをプライベートIPアドレスといいます。グローバルIPアドレスは外線の電話番号,プライベートIPアドレスは内線番号のようなものだと理解すればよいでしょう。
グローバルIPアドレスとプライベートIPアドレスが混乱しないようにルールがあります。次の範囲がプライベートIPアドレスに指定されています。
プライベートIPアドレス用のIPアドレス
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.255.255
グローバルIPアドレスは,IPアドレスを管理する団体から割り当てられるので,企業の自由にはなりませんが,プライベートIPアドレスは上の範囲で企業が自由に割り当てることができます。
プライベートIPアドレスは,一つのIPアドレスを複数のホストで用いることにより,IPアドレスの枯渇を防ぐために効果的な手段ですが,それ以外にも,LAN内部でのIPアドレス管理が容易になること,外部から特定のコンピュータが特定できないので,セキュリティ対策にも有効であることなどの利点があります。
当然ながら,LANの内部にあるコンピュータでもインターネットが使えます。それは,一時的にプライベートIPアドレスをグローバルIPアドレスに変換しているからです。その代表的な技術に,NATとNAPT(IPマスカレード)があります。
他のホストで用いていない予備のグローバルIPアドレスをいくつか持っているとします。NATでは,LAN内のホストからの電文をルータが受け取ると,電文のIPヘッダに含まれる送信元(始点)IPアドレス(プライベートIPアドレス)を予備のグローバルIPアドレスに書換えて送信します。そのとき,ルータはプライベートIPアドレスとグローバルIPアドレスの対応表を保持しておき,受信時に外部から来た電文の送信先(終点)グローバルIPアドレスをプライベートIPアドレスに変換して,LAN内のホストに送ります。そして,一定時間利用されなくなると,その対応表を削除することにより,そのグローバルIPアドレスを他のLAN内ホストからの利用のために待機させます。このしくみにより,予備のグローバルIPアドレスの数だけ同時にインターネットに接続することができます。
IPマスカレード(IP masquerade)ともいいます。NAPTでは,ルータは,プライベートIPアドレスをグローバルIPアドレスに変換するとともに,特定のポート番号を設定して送信します。そして,グローバルIPアドレスとそのポート番号の組合せを一つのプライベートIPアドレスに対応づけます。これにより,NAPTでは,一つのグローバルIPアドレスを複数のプライベートIPアドレスに対応づけることができるのです。
以下,例示ではプライベートIPアドレスを用いていますが,特別な理由はありません。必要に応じて適宜グローバルIPアドレスの番号と置き換えて理解してください。
ある組織に複数のIPアドレスを割り当てるとき,その番号を連番で割り当てるほうが管理が容易です。また,インターネットはネットワークのネットワークだといわれます。前者のネットワークのことをサブネットワークといいます。すなわち,IPアドレスは,サブネットワークごとに連番で割り付けられています。
IPアドレスは,その前半をネットワーク部,後半をホスト部といいます。
172. 16. 10. 12
10101100 00010000 00001010 00001110
|------------------------| |------|
ネットワーク部 ホスト部
すなわち,この場合では,この組織(ネットワーク)に,
172.16.10.0~172.16.10.255
の範囲のIPアドレスを与えたことになります。
与えられたIPアドレス群の先頭のものはネットワークアドレス,最後のものはブロードキャストアドレスという特殊なIPアドレスで,ホストに割り付けることはできません。上の場合,ホストに割り付けられるIPアドレスは,
172.16.10.1~172.16.10.254
の254(=28-2)個になります。
ネットワークアドレスとは,そのサブネットワーク全体を表すIPアドレスです。ホスト部をすべて0にしたもの,すなわち与えられたIPアドレス群の先頭のものです。
172. 16. 10. 0
10101100 00010000 00001010 00000000
|------------------------| |------|
ネットワーク部 ホスト部
ブロードキャストアドレスとは,そのサブネットワークにある全ホストに一斉送信(ブロードキャスト。これに対して一つのIPアドレスを持つホストへの送信をユニキャストといいます)をするためのIPアドレスです。ホスト部をすべて1にしたもの,すなわち与えられたIPアドレス群の最後のものです。
172. 16. 10. 255
10101100 00010000 00001010 11111111
|------------------------| |------|
ネットワーク部 ホスト部
これらの関係は,プライベートIPアドレスでも同様ですし,後述するクラスレスの場合も同じです。
未だインターネット利用者が少ないときは,IPアドレスを8ビット(1バイト)ごとに区切ってクラス分けして割り当てていました。
区分 ネットワーク部 ホスト部
クラスA 0から始める8ビット 24ビット
クラスB 10から始まる16ビット 16ビット
クラスC 110から始まる24ビット 8ビット
なお,1110を先頭にするIPアドレスをクラスDといい,マルチキャスト用に割り付けられ,11110を先頭にするクラスEは将来の実験用として未使用になっています。
しかしこれでは,クラスAでは224=16,777,216個のIPアドレスを与えることになり,27=128の組織で,全IPアドレスの半分を占有することになります。最も小規模なクラスCでも,28=256個のIPアドレスがあり,ネットワークアドレスとブロードキャストアドレスを除いた254個のホストがインターネットに直接に接続できるほどの規模になります。これでは効率的なIPアドレスの配分ができず,配分される組織の数が限定されてしまいます。
それを解決するのがクラスレスの考えかたです。これは,ネットワーク部とホスト部の境界を任意にしたものです。そして,どこまでがネットワーク部なのかを示すためにサブネットマスクを設定します。サブネットマスクはネットワーク部を1にしてホスト部をすべて0にしたものです。
例えば,ネットワーク部を26ビット,ホスト部を6ビット(64個のIPアドレス)
172.16.10.64~172.16.10.127
を与えたときは,次のようになります。
先頭のIPアドレス(ネットワークアドレス)
172. 16. 10. 64
10101100 00010000 00001010 01000000
|---------------------------||----|
ネットワーク部 ホスト部
最後のIPアドレス(ブロードキャストアドレス)
172. 16. 10. 127
10101100 00010000 00001010 01111111
|---------------------------||----|
ネットワーク部 ホスト部
サブネットマスク
255. 255. 255. 192
11111111 11111111 11111111 11000000
|---------------------------||----|
ネットワーク部 ホスト部
なお,サブネットワークのIPアドレスとサブネットマスクを,
172.16.10.64/26
のように,「ネットワークアドレス/ネットワーク部のビット数」の形式で簡略に示します。
与えられたIPアドレス群をサブネットクラスにより,さらに分割することができます。例えば上のサブネットワークではネットワーク部が26ビット,ホスト部が6ビットでしたが,それをネットワークを28ビット,ホスト部を4ビット(16個のIPアドレス)に細分化することができます。
サブネットマスクを 255. 255. 255. 240 11111111 11111111 11111111 11110000 <----------------------------><---> ネットワーク部 ホスト部 とすれば, サブネットワークA 172.16.10.64~172.16.10.79 サブネットワークB 172.16.10.80~172.16.10.95 : : サブネットワークD 172.16.10.112~172.16.10.127 のように分割できます。
このように分割すれば,一つのサブネットワークに含むホスト数が少なくなりますが,きめの細かいルーティングをすることができます。しかし,経路情報が細分化するので効率は下がります。
CIDRはサイダーと読みます。クラスレスの方式に対応したルーティングの仕組みです。サブネットマスクを調整して細分化したりまとめたりする機能を持っています。