TCP/IPの世界においては、各計算機(正確には ノード)をMACアドレスではなく IPアドレスで識別します。IPアドレスは、 4バイト(=32ビット)の長さを持っています(*1)。IPアドレスの値は、 ネットワーク管理者が計算機の設置時に決定し、各計算機に対して ソフト的に設定しておきます。(*2)
(*1)…… | これは、現在普及しているIPバージョン4における大きさです。 現在実験中のIPバージョン6においては、IPアドレスは16バイト (=128ビット)に拡張されることが決まっています。 |
(*2)…… | 自分のIPアドレスを自動設定するしくみもあります。この場合には、 IPアドレスは設定しません。 |
IPアドレスは、通常は 12.34.56.78 のように4バイトの10進数を ドット('.')で区切って表されます。各桁は実際は1バイト(8ビット) ですので、各桁の範囲は0〜255となります。このため、単純には、 2の32乗個のノード(0.0.0.0〜255.255.255.255)を識別することが できます。
ネットワーク上の各パケットには、各パケットの先頭にある イーサネット・ヘッダの次にIPヘッダ と呼ばれる部分があり、ここに送信元と受信先のIPアドレスが 埋め込まれています。ただし、各ノードでは、受信したパケットの 宛先MACアドレス(IPではない)が自分のMACアドレスと一致した場合にのみ、 このパケットを取り込むようになっています。
ちょっとごちゃごちゃしてきたので、以下に図示してみます。
イーサネット・ヘッダ
IPヘッダ 実データ部
宛先MAC
アドレス
送信元MAC
アドレス
宛先IP
アドレス
送信元IP
アドレス
任意データ
(なくてもよい)
(*3)…… | 実際には、もっといろいろな情報を含んでいます。 |
IPアドレスを使えば、2の32乗個のノード (0.0.0.0〜255.255.255.255)を識別することができるとお話しましたが、 それを単純にそのまま使ってしまうと、前章で述べた
これらを4バイトの中のどこで分けるのかというと、単純にバイトの 区切りで分けることにします。たとえば、下図のように先頭1バイトを ネットワーク・アドレス、後ろの3バイトをホスト・アドレスとすると、 このアドレス体系を使用すれば、2の8乗(=256)個のネットワークが 定義され、各々のネットワークの中に2の24乗(=16、777、216) 個のホストアドレスを定義できるようになります。
ネットワーク ・アドレス | ホスト・アドレス | ||
---|---|---|---|
1バイト目 | 2バイト目 | 3バイト目 | 4バイト目 |
ただ、これだと無駄が多い(1つのLAN上に1600万台のノード?) し実状に合わない(世界中にネットワークが256では、 いかにも少なすぎる)ので、実際には以下のようなクラスが定義されています。
クラス | 第1バイト (*4) | アドレス範囲 | ネットワーク部 のビット数 | 最大ネット ワーク数 | 最大ホスト 数(*5) |
---|---|---|---|---|---|
A | 0xxxxxxx | 0.0.0.0〜127.255.255.255 | 7(+1) | 2^7(128)(*6) | 16,777,216 |
B | 10xxxxxx | 128.0.0.0〜191.255.255.255 | 14(+2) | 2^14(16,384) | 65,536 |
C | 110xxxxx | 192.0.0.0〜223.255.255.255 | 21(+3) | 2^21(2,097,152) | 256 |
D | 1110xxxx | 224.0.0.0〜239.255.255.255 | マルチキャスト・アドレス(*7) | ||
E | 1111xxxx | 240.0.0.0〜255.255.255.255 | 予約 |
なお、実際に閉じた LAN の中で IP アドレスを割り振る場合は、 プライベート・アドレス を割り振る必要があります。これは、インターネット上に存在しないことが 保証されているアドレス群です。逆に言えば、これらのアドレスを 決してインターネット上に流してはなりません。
アドレスクラス | 割り当て可能範囲 |
---|---|
A | 10.0.0.0 〜 10.255.255.255 |
B | 172.16.0.0 〜 172.31.255.255 |
C | 192.168.0.0 〜 192.168.255.255 |
プライベート・アドレスにおいても、前述の 「ネットワーク・アドレス」や「ブロードキャスト・アドレス」に 関する決め事はそのまま当てはまります。
さて、問題の「宛先のノードがそのLAN上にあるかどうか」 を知る方法ですが、以下の判断により可能となります。
ここで、送信元/宛先IPアドレスのうち、どこまでが ネットワーク部かを識別するための情報(ネットワーク部のビット数) が必要となります。前掲の表によれば、
ところが、たとえばクラスAを考えてみましょう。クラスAでは最大 16,777,216(-2)のホストが存在しうることになりますが、 そのネットワーク上で1パケット送信するたびごとに1600万台に 送信していたのではたまりません。またイーサネットの制約により、 そのような台数のノードを1つのケーブル上に設置することもできません。
通常は、1つのLAN上に接続して運用できるノード数は 50台〜100台といわれています。では、クラスAにおいて、 1600万台のノードを設置するためにはどうすればいいでしょうか?
です。