IPアドレスはネットワークIDとホストIDから成っており、アドレスクラスによって両者の区切りは異なります。どこからどこまでがネットワークIDで、どこからがホストIDかを示すために、ネットマスクという数値が存在します。
- ビットパターンでアドレスを切り離す -
ネットマスクは「ビットパターン」と呼ばれる特別な数値で、「IPアドレスのネットワークID部分がすべて1」となっている値です。これによって、IPアドレスとサブネットマスクを元に2進数の論理演算を行い、IPアドレスからネットワークIDだけを取り出せるようになっています。
10進数の255は、オクテットを構成する8ビットすべてが1となります。0は10進数でも2進数でも0です。この0と1の値を使って、アドレスとサブネットマスクとの論理積を取ります。
論理積はAND演算とも呼ばれ、「2つの値の両方が1または両方が0なら答は1、それ以外は0」となります。
例えば、ネットマスク255.255.255.0(2進数では先頭の24ビットがすべて1、残りの4ビットが0)の場合、IPアドレス192.168.1.3との間で論理積を取ると、以下のようになります。
アドレス 192.168. 1.3 11000000.10101000.00000001.00000011
マスク 255.255.255.0 11111111.11111111.11111111.00000000
And)
2進数 11000000.10101000.00000001.00000000
10進数 192 168 1 0
演算結果の“11000000.10101000.00000001=192.168.1”がネットワークIDです。
- クラスC未満のマスク -
クラスC未満のネットワークでは、最後の4オクテット目が254未満の値となり、それを複数のドメインに割り当てることになります。例えば210.252.151というクラスCのネットワークIDを持つネットワーク内に、さらに4オクテット目を80から95までの16個のIPアドレスとなるドメインなら、以下のように4オクテット目のマスクが必要になります。
アドレス 210.252.151. 86 11010010.11111100.10010111.01010110
マスク 255.255.255.240 11111111.11111111.11111111.11110000
And)
2進数 11010010.11111100.10010111.01010000
10進数 210 252 151 80
マスクに4オクテット目の値を指定しているため、IPアドレス“210.252.151.86”のネットワークIDは“210.252.151.80”であることが分かります。4オクテット目のマスク値240は、割り当てられる最大数から使用可能な(割り当てられている)アドレス数を差し引いた値(256-16)です。
このような場合のネットワークIDは、マスク値を先頭からONにする(1となっている)ビットの数を付け足し、"210.252.151.80/28"のように表記します。“11111111.11111111.11111111.11110000”では、先頭から1が28個並んでいることがお分かりでしょう。
IPアドレスが8個割り当てられたドメインなら、マスク値の4桁目は248(256-8)となり、“210.252.151.80/29”と表記することになります。
図1:サブネットマスクでネットワークIDとホストIDを分離する
- ブロードキャストアドレス -
ネットマスクとは逆に「IPアドレスのホスト部がすべて1」となっている値を、ブロードキャストアドレスと言います。
先の例なら“0.0.0.15”(2進数では、最後の4ビットのみ1)という値です。IPアドレスとこの値との論理和を取ると、ホスト部分がすべて1となった値が取り出せます。論理和はOR演算と呼ばれ、2つの値のいずれか一方が1なら結果は1になります。
これによって得られた結果はネットワーク内の最終IPアドレスとなり、全ホストに共通のパケットを送る際に使用されます。
アドレス 210.252.151. 86 11010010.11111100.10010111.01010110
マスク 0. 0. 0. 15 00000000.00000000.00000000.00001111
Or)
2進数 11010010.11111100.10010111.01011111
10進数 210 252 151 95
|