ここでは,IPアドレスについて詳しく学習します。なお,最新のIPアドレスのプロトコルとしてIPv6がありますが,ここでは現在未だ広く使われているIPv4を対象にします。
グローバルIPアドレス,プライベートIPアドレス,NAT,NAPT(IPマスカレード),ネットワーク部,ホスト部,ネットワークアドレス,ブロードキャストアドレス,クラス,クラスレス,サブネットマスク,CIDR
IPアドレスは電話番号のようなもので、インターネットやLANに接続している機器(パソコン、サーバ、ルータなど)を一意に認識する番号です。ネットワーク層(IP層)に属します。
機器を一意に認識する番号には、データリンク層(イーサネット層)のMACアドレスがありますが、MACアドレスはLANカード事業者別に付番されています。相手機器を探すには、電話番号のように地域やネットワークで階層化している必要があり、それにはMACアドレスは不適切です。
IPアドレスは、次の民間組織体系で割り振られ管理されています。これによりIPアドレスは連続した番号がブロック化しやすいのです。
ICANN 世界全体
APNIC アジア太平洋地区
JPNIC 日本
ISPなどの事業者
利用者
電話に外線番号と内線番号があるように、IPアドレスも世界中で同じ番号がない(一意)グローバルIPアドレスとLAN内で自由に付番できるプライベートIPアドレスがあります。上記のIPアドレスはグローバルIPアドレスに関する説明です。
LANは、理論的にはデータリンク層(イーサネット層)までで構築できます。しかし、インターネットとの連携が重要になってきたので、ネットワーク層(IP層)で構築するのがむしろ一般的になっていました。そのときに重要になるのがプライベートIPアドレスです。
プライベートIPアドレスはLAN管理者が管理します。個々の機器のプライベートIPアドレスは機器に固定したものではなく、管理者が付番したものですし変更できますので、物理的に機器を特定するにはMACアドレスを用います。IPアドレスとMACアドレスの変換プロトコルにARP/RARPがあります。
プライベートIPアドレスもLAN内では一意でなければなりません。その管理は案外面倒なものです。DHCPは,IPアドレス設定を自動化したり一元管理するプロトコルです。
従来、IPアドレスはIPv4体系で4バイトでしたが、インターネットの急速な普及により、すでに番号が枯渇してしまいました。それで6バイトのIPv6体系を導入しました。しかし、IPv4→IPv6移行は遅れており、両者が混在している状況です。
IP(Internet Prfotocol)の説明では、IPv4のほうが簡単で説明しやすいので、ここではIPv4を想定した説明にします。
ARPはIPアドレス→MACアドレス、RARPはMACアドレス→IPアドレスの変換プロトコルです。
MACアドレスはホストにハードウェアとして付けられた番号です。ネットワークを物理的にホストに接続するにはMACアドレスを使います。
ところが,インターネットでは相手のホストをIPアドレスで指定していますので,IPアドレスをMACアドレスに変換する必要があります。
単純には,その対応表を個々のホストあるいは制御用のサーバに作成しておけばよいのですが,それではホストの追加や廃止のたびに対応表を書換えなければなりません。それよりも個々のホストに自分のIPアドレスを覚えさせる(変更できる)ほうが管理しやすいでしょう。ARPはこれをうまく活用しています。
ARPの用途と仕組みは次のようになります。
発信元ホストAが受信先ホストBに送信するとします。IPパケットはパケットの先頭にイーサーネットヘッダがあり、イーサーネットヘッダにBのMACアドレスを入れることになっているのですが、Aは、BのIPアドレスは知っているがMACアドレスは知りません。
RARPは、ホストを接続しようとしたときにIPアドレスを知らない場合です。パソコンなどはIPアドレスをDHCPなの手段で指定できるので、おそらくHDDなどの記憶装置をもたない機器でしょう。稀のケースだと思いますので省略します。
DHCPは,IPアドレス設定、ホスト名や経路情報、DNSサーバの情報など、通信に必要な設定情報を自動的に割り当てることにより、一元管理をサポートするプロトコルです。特にIPアドレス自動付与では、次のような問題の解決に効果があります。
新規にクライアントをネットワークに接続して,動的にIPアドレスを取得する手順は次の通りです。
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アドレスを管理するいくつかの事業者(ISPなど)を指定しています。
このような体系により,ICANNから指定事業者までにIPアドレスが割り振られ,指定事業者は利用企業にIPアドレスを割り当てます。なお,IPアドレス管理組織間での分配を「割り振り」,管理組織から利用者への配分を「割り当て」といいます。
A社内のLAN,B社内のLANなどの中でだけに閉じており,インターネットと直接に接続していないならば,A社LAN内のホストとB社LAN内のホストならば互いに同じIPアドレスを用いても混乱することはありません。そのようなIPアドレスをプライベートIPアドレスといいます。プライベートIPアドレスを使うことにより、LAN内ホストに外部からアクセスさせない効果もあります。
グローバルIPアドレスとプライベートIPアドレスが混乱しないようにルールがあります。次の範囲がプライベートIPアドレスに指定されています。
プライベートIPアドレス用のIPアドレス
クラスA 10.0.0.0~10.255.255.255
クラスB 172.16.0.0~172.31.255.255
クラスC 192.168.255.255
LLB 127.0.0.0~127.255.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アドレスの数だけ同時にインターネットに接続することができます。
NATでは、一つのグローバルIPアドレスは一つのホストしか使えません。多くのホストがインターネット接続したいときには困ります。
一つのグローバルIPアドレスでも送信元のポート番号を異なる番号にすれば、複数の送信元が同一の一つのグローバルIPアドレスでインターネットにアクセスすることができます。それを利用して、複数のホストからの要求に、プライベートIPアドレスをグローバルIPアドレスに変換するとともに,一時的に異なるポート番号を付与することにより、一つのグローバルIPアドレスで対応できる仕組みをNAPTといいます。IPマスカレード(IP masquerade)ともいいます。
NATやNAPTの効果は、限られたグローバルIPアドレスを有効に活用ができるだけではありません。ホストのプライベートIPアドレスやポート番号も外部からは見えなくなります。それで、利用者パソコンなどを外部からの攻撃から防ぐことにも役立ちます。
以下,例示ではプライベートIPアドレスを用いていますが,特別な理由はありません。必要に応じて適宜グローバルIPアドレスの番号と置き換えて理解してください。
ここでは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アドレスは,その前半をネットワーク部,後半をホスト部といいます。
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
|------------------------| |------|
ネットワーク部 ホスト部
ブロードキャストアドレスとは,ホスト部をすべて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
|---------------------------||----|
ネットワーク部 ホスト部
このようにサブネットマスクは、1が続いた後に0が続く形式になります。そのため、
255.255.255.128の128は 10000000 なので適切
255.255.255.64 の 64は 01000000 で、1の前に0があるので不適切
です。
上のように、172.16.10.64から始まり、ネットワーク部が26ビットであるネットワークを
172.16.10.64/26
のように,「ネットワークアドレス/ネットワーク部のビット数」の形式で簡略に示します。
このときのホスト部のビット数は、32-26=6ビットになります。
サブネットマスクは、末尾の6ビットが0、それ以前は1ですから、
ネットワーク部 ホスト部
|---------------------------||----|
11111111 11111111 11111111 11000000
255. 255. 255. 192
のようにしてもとめることができます。
上のケースでは、ホスト部は6ビットですから、26=64個のIPアドレスが利用できます。
このうち、ホスト部がすべて0のIPアドレスはネットワークアドレス、すべて1のIPアドレスはブロードキャストアドレスに割り当てられています。
ネットワークアドレス: 172.16.10.64
ブロードキャストアドレス: 172.16.10.127
(1111112 = 27 - 1 = 127)
それで、このネットワークに接続できるパソコン個数は、64-2=62個になります。
ホスト部をnビットとして一般化すると、次のようになります。
・接続できるパソコン個数=2n-2
・ブロードキャストアドレス=ネットワークアドレス+2n+1-1
与えられたIPアドレス群をさらに複数の長さのサブネットマスクに分割することができます。それを可変長サブネットマスク(Variable Length Subnet Mask:VLSM)といいます。
例えば上のサブネットワークではネットワーク部が26ビット,ホスト部が6ビットでしたが,それをネットワークを28ビット,ホスト部を4ビット(16個のIPアドレス)に細分化することができます。
このように分割すれば,一つのサブネットワークに含むホスト数が少なくなりますが,きめの細かいルーティングをすることができます。しかし,経路情報が細分化するので効率は下がります。
CIDR(Classless InterDomain Routing)は、クラスレスの方式に対応したルーティングの仕組みです。サブネットマスクをさらに細分化したりまとめたりする機能を持っています。
172.16.10.64/26のネットワークに接続できるパソコンのIPアドレスとして正しいものはどれか。
ア 172.16.10.38 イ 172.16.10.64 ウ 172.16.10.90 エ 172.16.10.127
172.16.10.64は、このネットワーク内の先頭のIPアドレスである
172. 16. 10. 64
10101100 00010000 00001010 01000000
/26は、ネットワーク部の個数である(サブネットマスクを 255.255.255.192としたのと同じ)
255. 255. 255. 192
11111111 11111111 11111111 11000000
|-------------- 26 ---------|
|---------------------------|-----|
ネットワーク部 ホスト部
すなわち、このネットワークに属するIPアドレスは、
ホスト部をすべて0 10101100 00010000 00001010 01000000 172.16.10.64
ホスト部をすべて1 10101100 00010000 00001010 01111111 172.16.10.127
の間の64個となる。
ここで、172.16.10.64はネットワークアドレス。172.16.10.127はブロードキャストアドレスだから、ネットワークに接続できるパソコンのIPアドレスは172.16.10.65~172.16.10.126の62個である。
アは×。172.16.10.38:このネットワークに属さない
イは×。172.16.10.64:ネットワークアドレス
ウは○。172.16.10.90:172.16.10.65~172.16.10.126の間にある
エは×。172.16.10.127:ブロードキャストアドレス