ネットワークの基礎講座
IP(インターネット・プロトコル)
IPアドレス
インターネットのアドレスは、たとえばyourname@cresc.co.jpのように文字列で表現される場合もあるし、10.9.1.8などのように数字で表現される場合もある。数字表現はこのように32ビットのバイナリ値を8ビットづつカンマで区切り各々を10進数で表現するのが一般的である。いずれにしても元は32ビットのバイナリ値である。文字列表現とのマッピングはドメイン名システム(DNS: Domain Name System)が行う。数字表現のアドレスのことをIPアドレスという。
IPアドレスに関する仕様はRFC 1166 (Internet Numbers)に記されているので、より詳細に理解したい人はこのドキュメントを参照されたい。
インターネット上のホストを識別するために、各ホストにはIPアドレス(あるいはインターネット・アドレスともいう)が付与される。ルータのようにそのホストが複数のネットワークと接続している場合は、そのホストはマルチ・ホーム(multi-homed)だといい、各ネットワーク・インターフェイスごとにひとつのIPアドレスが付される。IPアドレスは前に説明したとおりネットワーク番号とホスト番号との組み合わせである。すなわち:
IPアドレス = <ネットワーク番号><ホスト番号>
ネットワーク番号はIPアドレスの一部であり、インターネット・ネットワーク・情報センタ(日本の場合はJPNIC: Japan Network Information Center)が一元的に管理し、インターネット上において唯一で重複が生じないよう付与されている。
IPアドレスは32ビット長で、通常ドットつき10進数表記(Dotted Decimal)法で表現することは前述のとおりである。たとえば128.1.10.1というIPアドレスは後述のとおり128.1がネットワーク番号で10.1がホスト番号となる。このIPアドレスをバイナリで表現すると、
10000000 00000001 00001010 00000001
となる。
IPアドレスはIPプロトコルでインターネット上のホストを識別するために使われる。IP層で送られるデータグラムは、そのホストに接続された物理ネットワーク経由で送信されるが、それには送信元(Source)IPアドレスと宛先(Destination)IPアドレスが付されている。相手先のIPアドレスにデータグラムを送信するときに、相手のIPアドレスがある物理アドレスに変換あるいはマッピングされないといけない。そのために、宛先の物理アドレスを探し出すためのネットワーク上の情報の伝送が必要となる。たとえばLANの場合は、アドレス解決プロトコル(ARP: Address Resolution Protocol)がIPアドレスからMACアドレスに変換するために使われている。(ARPについては別途説明する)
バイナリ表記されたIPアドレスで、最初の部分のビットが、残りのビットのネットワーク番号とホスト番号の切り分けがどうなっているかを示す。IPアドレスには下図のように5つのクラスが存在する。
Class A
0
1 2 3
4 5 6
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 |
network |
host number |
Class B
0
1 2 3
4 5 6
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1 0 |
network |
host number |
Class C
0
1 2 3
4 5 6
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1 1 0 |
network |
host number |
Class D
0
1 2 3
4 5 6
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1 1 1 0 |
multicast address |
Class E
0
1 2 3
4 5 6
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1 1 1 1 |
reserved |
· クラスAアドレスでは、ネットワーク番号に7ビットが割り当てられているので最大126のネットワークに付与できる。残りの24ビットがホスト番号となっているので2の24乗から2を引いた16,777,214台までのホストが収容できるので、クラスAというのは相当大きなネットワークを対象としていることが判る。
· クラスBアドレスでは、ネットワーク番号に14ビットが割当てられており、最大16,382ネットワークまで対応できる。16ビットがホスト番号となっているので、ネットワークあたり65,534台までのホストを収容できる。
· クラスCはネットワーク番号に21ビット、ホスト番号に8ビット割当てられているので収容できるネットワークは2,097,150でホストは254である。一般の企業は通常このクラスCアドレスを取得する。
· クラスDアドレスはマルチキャスト用、すなわちあるグループに属するホストのすべてにあるデータグラムを送信するときに使われる。マルチキャスト・アドレスはそのグループのアドレスである。
· クラスEアドレスは将来の拡張のために予約されている。
問題はクラスBとクラスCの中間のサイズのネットワークが増加しており、クラスBアドレスが枯渇する危険性があることだが、最近の企業ネットワークはクラスCアドレスを取得し、内部はファイアウオールで遮蔽しプライベート・アドレスを使用するのが一般的である。
前述のようにネットワーク番号は公的な機関が管理・付与するが、ホスト番号の管理はそのネットワークの管理者の責任である。後述のサブネットワークの管理も同様である。
クラスA,B,Cにおいて、全部のビットが1または全部のビットが0のネットワーク番号とホスト番号などあらかじめ定められているアドレスが存在する。
アドレス |
意味 |
|
ネットワーク番号 |
ホスト番号 |
|
0 |
0 |
このネットワークのこのホスト |
ネットワーク番号 |
0 |
指定ネットワークのこのホスト |
0 |
ホスト番号 |
このネットワークの指定ホスト番号を持つホスト |
全ビット1 |
全ビット1 |
ブロードキャスト |
ネットワーク番号 |
全ビット1 |
指定ネットワークに対するブロードキャスト |
127(クラスA) |
任意 |
内部ループバック |
全部のビットが0を「この(This)」と解釈する。「このホスト」、「このネットワーク」「このサブネット」などである。この値は実際の値が不明の場合にのみ使うべきである。例えば、あるホストが自分自身のIPアドレスをリモート・サーバから取得しようとする場合に、発信元のアドレスにはオール0を入れる。
全部のビットが1を「全部(All)」と解釈する。「全部のホスト」、「全部のネットワーク」、全部の「サブネット」といった具合である。例えば128.10.255.255はクラスBの10というネットワーク番号のネットワークのなかの総てのホストを意味する。「全部」はブロードキャスト(放送)に使われる。
なお全ビットが1のクラスAのネットワーク番号(127)は「ループバック・アドレス(Loopback Address)」という特別の意味を持つ。このアドレスをもつデータグラムはネットワーク上に送出されないで、そのホストのネットワーク・ドライバのところで折り返される。このことは、折り返しテストや、ローカル・ホスト(自分自身がクライアントであり且つサーバである)の場合に有用である。