IPv4 アドレス空間

BASIC

TCP/IP の基本、IPv4 アドレス周りの、クラスとか、サブネットとか、そのあたりのお話です。


IPv4 アドレス空間

TCP/IP ネットワークでは、現在は一般に、IPv4 というアドレス空間によって、ネットワークに接続されているコンピュータを区別しています。

IPv4 アドレス空間では、0 から 255 までの 256 個の数値を 4 個使った IP アドレスを使用して、それぞれのコンピュータを区別しています。256 個の数値というのは、ちょうど 1 Byte = 8 bit で表現できる範囲の数値です。よって、合計 8 x 4 = 32 bit のアドレス空間を持つことになります。

 

4 個の数字はそれぞれピリオドで区切られて、211.0.11.4 のように記述します。

それぞれのコンピュータを区別するためのものですので、基本的には他のコンピュータと重複しない約束になっています。重複した IP アドレスがないため、あるひとつの IP アドレスを示せば、ひとつのコンピュータを特定することができるというわけです。

インターネットの世界でも、この IP アドレスを使って、世界中のコンピュータの中から、特定の1台を選び出しています。インターネットで使用できる IP アドレスは JPNIC などの期間によって管理されていますので、基本的に、自分のコンピュータに対して、自由に IP アドレスを設定することはできません。

 

クラス

IP アドレスのつけ方には、約束事があります。

IP アドレスは、32 bit のアドレス空間を持っていますが、その空間の中には、【クラス識別子】、【ネットワークアドレス部】、【ホストアドレス部】 の 3 つの部分が存在しています。

 

【ネットワークアドレス部】 というのは、いわばネットワークのグループを示すようなもので、ネットワークアドレスの値が同一のコンピュータは、同じネットワークに接続されているということになります。逆にこのネットワークアドレスが異なるコンピュータは、まったく別のネットワーク上に存在していることになります。

【ホストアドレス部】 というのは、いわゆるコンピュータの番号です。【ネットワークアドレス部】 で指定されたネットワーク内の、何番目のコンピューターかというような感じです。

 

これら、【ネットワークアドレス部】 と 【ホストアドレス部】 が 32 bit のうちのどこで指定されているかを表すためのものが、【クラス識別子】 です。

この識別子によって、ネットワークアドレスとホストアドレスの範囲が変わってきます。このクラス識別子は、IP アドレスの 32 bit 空間のうちの先頭に記述され、これによって IP アドレスは 5 つのクラスに分類されます。

 

クラス 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
A 0                                                              
B 1 0                                                            
C 1 1 0                                                          
D 1 1 1 0                                                        
E 1 1 1 1                                                        

このうち、クラス D はマルチキャスト用のアドレスに、クラス E は実験用のアドレスに使用するそうです。l以下では一般的にネットワークで使用すると思われる、クラス A から、クラス C までについてお話しようと思います。

 

上記の表のうちで、青色っぽい部分が、【クラス識別子】 です。一番上の bit から何番目に初めて 0 が現れるかによってクラスわけされています。

クラスが決定すると、白色の部分の 【ネットワークアドレス部】 と黄色っぽい部分の 【ホストアドレス部】 の範囲が自動的に決まる仕組みになっています。

クラス クラス識別子 ネットワークアドレス部 ホストアドレス部
A 31 [1] bit 30-24 [7] bit ( 127 ) 23-00 [24] bit ( 16777216 )
B 31-30 [2] bit 29-16 [14] bit ( 16384 ) 15-00 [16] bit ( 65536 )
C 31-29 [3] bit 28-08 [21] bit ( 2097152 ) 07-00 [08] bit ( 256 )

 

クラス識別子によって決められたホストアドレス部によって、そのネットワークに参加できるホスト数が決まるのですが、ホストアドレス部で表現できるホスト番号のうち、最初と最後は特別な用途に使用されます。

最初の番号、つまりホストアドレス部のビットがすべて 0 である IP アドレスは、ネットワークアドレス と呼ばれ、そのネットワークアドレスの空間全体を (抽象的に) 示すのに使われます。たとえば、ルーティングなどで、このネットワーク宛てのパケットは破棄するとか、そういった指定に使用します。

最後の番号、つまりホストアドレス部のビットがすべて 1 である IP アドレスは、ブロードキャスト と呼ばれ、同一ネットワークに存在しているすべてのコンピュータに対して、データを送信するときに使われます。

 

【 クラス A 】

ネットワークアドレスは、0.0.0.0 から 127.0.0.0 までです。ただし、そのうちの 0.0.0.0 と 127.0.0.0 のネットワークは特別な用途に使用されるので、このネットワークは使用できません。0.0.0.0 のネットワークは経路情報などのために予約されていて、127.0.0.0 は、ループバックアドレスといって、自分自身を指すためのアドレスとして予約されているそうです。

ひとつのネットワークに所属できるホスト数は、先頭のネットワークアドレスと、最後のブロードキャストを除くと、全部で 16777214 個までです。

【 クラス B 】

ネットワークアドレスは、128.0.0.0 から 191.255.0.0 までです。ひとつのネットワークに参加できるホスト数は、ネットワークアドレスとブロードキャストを除くと 65534 個までです。

【 クラス C 】

ネットワークアドレスは、192.0.0.0 から 223.255.255.0 までです。ひとつのネットワークに参加できるホスト数は、ネットワークアドレスとブロードキャストを除くと 254 個までです。

 

ネットマスクで分離された空間

上記でもいいましたけど、IPv4 アドレス空間は、ネットワークアドレス部によってグループ化されています。

しかしながら、クラス A のように、多大なホストを抱えられるネットワークにおいて、すべての IP アドレスをホストに割り当てられているという状況はまずないと思います。クラス C でさえ、254 台ものホストが存在することは、おそらく非常にまれなことでしょう。

 

そこで、IP アドレスを効率よく使用できるようにするために、IPv4 では、サブネットマスクという仕組みが存在します。

これは、ホストアドレス部のうちの一部を、ネットワークアドレス部の一部 (サブネット) として利用できるようにするものです。これを利用することによって、ネットワークをさらに細かく分離して、効率よく IP アドレスを使用することができるようになります。

たとえば、2つの異なるネットワークを組む必要があるときに、それぞれのネットワークのホスト数が数十台程度であるならば、わざわざ クラス C のネットワークを2つ取得しなくても、1つの クラス C のネットワークをサブネットマスクを使用して 2 つのネットワークをまかなうことができるようになります。

 

IP アドレスとサブネットマスクはセットで使用され、サブネットマスクによって、IP アドレスのどの部分までがネットワークアドレスに使用されるかがわかるようになっています。

サブネットマスクは、IP アドレスを、いわゆるビットマスクによって、ネットワーク部とホスト部とに分離します。サブネットマスクのビットが 1 になっている部分がネットワークアドレス部、逆にビットが 0 になっている部分がホストアドレス部となります。

 

たとえば、クラス C のネットワークに、サブネットをつけると次のようになります。

IP アドレス: 192.168.143.0
サブネットマスク: 255.255.255.0

これを 2 進数に直してみると、次のようになります。

IP アドレス 11000000
[ 192 ]
10101000
[ 168 ]
10001111
[ 143 ]
00000000
[ 0 ]
サブネットマスク 11111111
[ 255 ]
11111111
[ 255 ]
11111111
[ 255 ]
00000000
[ 0 ]

クラス C では、最初から 28 ビットが、クラス識別子とネットワークアドレス部に使用されます。この部分がすべて 1 で埋まります。そして、のこりの 8 ビットはホスト部に使用されますので、この部分のサブネットはすべて 0 で埋めます。

ネットワークアドレス部が同一の IP アドレスが、同一ネットワーク内に存在します。よってサブネットマスクが 1 の部分がすべて一緒の IP アドレスが、同一ネットワークということになります。今回の例の場合では、192.168.143.[0-255] という IP アドレスが同一ネットワーク上に存在していることになります。

 

さて、ここまでが通常どおりのクラス C です。今度はサブネットマスクを変更して、クラス C を二つのネットワークに分離してみることにします。

2つに分離するということは、ネットワークアドレス部をもう 1 ビットだけ右にずらして、ネットワークアドレス部を一桁増やすことで実現できます。次のようにサブネットマスクを変更してみます。

IP アドレス 11000000
[ 192 ]
10101000
[ 168 ]
10001111
[ 143 ]
00000000
[ 0 ]
サブネットマスク 11111111
[ 255 ]
11111111
[ 255 ]
11111111
[ 255 ]
10000000
[ 128 ]

すると今度は、ネットワークアドレス部が 1 ビット増加します。逆にホストアドレス部が 1 ビット減少しますので、所属できるホスト数は、7 ビットで区別可能な 128 台までに限られてきます。

今回の例では IP アドレスが 192.168.143.0 なので、増えたサブネット部分のビットは 0 です。よって同一ネットワークの IP アドレスは、このビットが 0 である範囲の、192.168.143.[0-127] までとなります。

192.168.143.[128-255] は別のネットワークとして扱われるようになります。

 

サブネットマスクの表記

サブネットマスクには、いくつかの表記方法があります。

一般的なのは、上記のようにすべてを 10 進数によって、8 ビットごとにピリオド (.) をつかってあらわす方法です。192.168.143.0 MASK 255.255.255.0 とか、192.168.143.0/255.255.255.0 というような感じになります。

もうひとつの表現方法は、サブネットマスクの中の何個目までが 1 で埋まっているかを示すものです。今回の例の場合、サブネットマスクが、24 個まで 1 で埋まっているので、それを使って 192.168.143.0/24 というようにも表現します。

 

プライベートアドレス

冒頭で、IP アドレスは他とダブってはいけないといいましたが、一部に例外があります。

IP アドレスの範囲 通常のクラス 全範囲を示すサブネットマスク
10.0.0.0 ~ 10.255.255.255 class-A 255.0.0.0
172.16.0.0 ~ 172.31.255.255 class-B 255.240.0.0
192.168.0.0 ~ 192.168.255.255 class-C 255.255.0.0

これらは特別に、プライベートアドレスといって、インターネットでは使用しない決まりになっています。ですので、このアドレスをつかってインターネット上で通信することはできませんが、限られたイントラネット内では自由に使用することができます。

インターネットとは隔離された内部ネットワークでは、このプライベートアドレスを使いましょう。