「IPアドレス」は、インターネット、つまり、
TCP/IPプロトコルのネットワークにおいて割り振られた
ネットワーク機器(ネットワークインターフェース)の識別番号で、
現在主流で使われているIPv4(インターネットプロトコルバージョン4)では、
32ビットの値で表します。
でも、32ビットそのままでは人間には訳が判らなくて表記も発音も面倒なので、
32ビットを8ビットずつ4つに区切り、
その各々の8ビットの値をピリオドで区切って10進法で表記、発音します。
(例)
10101100000100001111111000000001
↓
10101100 00010000 11111110 00000001
↓
172.16.254.1
利用出来るアドレスの数は2の32乗ですが、
これを順々に世界中の機器に割り当てていくのは非現実的なので、
この32ビットを「ネットワーク部」と「ホスト部」の2つに分け、管理します。
インターネットは、世界中に散在する組織(大学、官公庁、会社、など)単位の
ネットワークを結んだネットワークなので、
「ネットワーク部」は、インターネットに接続されている各々の組織のネットワークを識別するための、
「ホスト部」は、そのネットワーク内の機器を識別するための部分です。
乱暴に言えば、電話の市外局番と局番+番号、に似ています。
ネットワーク部の値が異なるIPアドレス同士は別のネットワークとみなされます。
以下のIPアドレスは特別な意味を持つので、機器への割り振りとしては、使用出来ません。
インターネットには、世界中の様々な規模のネットワークが接続されていますから、
ネットワーク部とホスト部のビット数を予め完全に固定してしまうのは、
使われないIPアドレスが増え、多くの無駄が出ることになります。
そこで、組織が大規模(機器が多い)なネットワークは世界には数が少なく、
小規模(機器が少ない)なネットワークは世界中に数が多いという前提に立ち、
乱暴に言えば電話の「市外局番-局番-番号」と同じ様な桁の割り振りの発想
(契約者の多い大都市は市外局番が短く、少ない離島は市外局番が長い)で、
32ビットの区切り方の違いによって、
クラスAからクラスEまで、5つのクラスが有ります。
大規模なネットワークを管理するためのクラスです。
左から数えて最初の1ビットが0で、
左から8ビット目までがネットワーク部、
9ビット目から右端の32ビット目までの24ビットがホスト部になります。
下図の、マゼンダのビットはネットワーク部、青のビットはホスト部です。
0
n n n n n n n
h h h h h h h h
h h h h h h h h
h h h h h h h h
クラスAの値の範囲は10進表記で、0.0.0.0 ~ 127.255.255.255 ですが、
機器への割り振りとして利用出来るクラスAのネットワーク部は、10進表記で、
1
(0は全てのビットが0になるので不可) から
126
(127はローカルループバック)、となり、
同様に、ホスト部は、10進表記にすると、
0
.
0
.
1
から
255
.
255
.
254
となります。(部で全てのビットが0か1になるのは不可)
中規模なネットワークを管理するためのクラスです。
左から数えて最初の2つのビットが10で、
左から16ビット目までがネットワーク部、
17ビット目から右端の32ビット目までの16ビットがホスト部になります。
1 0
n n n n n n
n n n n n n n n
h h h h h h h h
h h h h h h h h
クラスBの値の範囲は10進表記で、128.0.0.0 ~ 191.255.255.255 ですが、
機器への割り振りとして利用出来るクラスBのネットワーク部は、10進表記にすると、
128
.
0
から
191
.
255
ホスト部は、やはり16ビットを2つに区切り各々を10進表記にすると、
0
.
1
から
255
.
254
となります。
小規模なネットワークを管理するためのクラスです。
左から数えて最初の3つのビットが110で、
左から24ビット目までがネットワーク部、
25ビット目から右端の32ビット目までの8ビットがホスト部になります。
1 1 0
n n n n n
n n n n n n n n
n n n n n n n n
h h h h h h h h
クラスCの値の範囲は10進表記で、192.0.0.0 ~ 233.255.255.255 ですが、
機器への割り振りとして利用出来るクラスCのアドレスは、
ネットワーク部は、
192
.
0
.
0
から
233
.
255
.
255
ホスト部は、
1
から
254
となります。
マルチキャストに使われるクラスです。
左から数えて最初の4つのビットが1110で、
ネットワーク部とホスト部の区別は有りません。
主に実験用に使われるクラスです。
左から数えて最初の5つのビットが11110で、
ネットワーク部とホスト部の区別は有りません。
IPアドレスは世界中に散らばるネットワーク機器の識別番号ですから、
原則として、決して同じものが存在してはいけません。
しかし、インターネットの世界的な普及によりIPアドレスの不足が問題になって来た為、
1996年、RFC1918により、
各々のネットワークの中だけで有効なIPアドレスの範囲を取り決め、
それを使うことも出来る様に決めました。
これをプライベートアドレスといい、
これに対して、従来のアドレスをグローバルアドレスといいます。
当然、世界中に同じIPアドレスがあっては混乱しますから、
プライベートアドレスを利用しているネットワークと
グローバルアドレスを利用しているインターネットとの出入りの際には、
ルータがグローバルアドレスとプライベートアドレスの変換をしてやります
(詳しくは、「ネットワークに関するややこしい用語」のページを)。
プライベートアドレスは、絶対にそのネットワークから外側へ出てはなりません。
プライベートアドレスとするIPアドレスの範囲は、
クラスAでは、 10. 0.0.0/8 ( 10. 0.0.0 ~ 10.255.255.255)
クラスBでは、172. 16.0.0/12 (172. 16.0.0 ~ 172. 31.255.255)
クラスCでは、192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)
と決められており、つまり、一つの組織内において、
クラスAでは、 10. 0.0.0/8 の、1個、
クラスBでは、172. 16.0.0/16 ~ 172. 31. 0.0/16 の、16個、
クラスCでは、192.168.0.0/24 ~ 192.168.255.0/24 の、256個、
のネットワークを作る事が出来ます。
サブネットマスクは、基本的には、
各機器においてIPアドレスのネットワーク部とホスト部とを識別し、
その機器がどのネットワークに属している何というホストなのかを判断する基とする為に設定するものです。
サブネットマスクのうち、1のビットの範囲がネットワーク部、
0のビットの部分がホスト部になります。
ネットワーク部もホスト部も「こうしましょう」と決めたお約束事ですから、
此処をきちんと設定をしておかないと、思わぬトラブルに繋がったりします。
例えば、
192.1.5.0というクラスCのネットワークアドレスを持つ会社が有るとすると、
以下の様に設定します。(IPアドレスは、あくまでもフィクションです)
ネットワークアドレス(192.1.5.0)
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0
サブネットマスク(255.255.255.0)
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
一般的に使われるうちでもっともホスト部の少ないクラスCでも、
ホスト部には254個のアドレスを割り当てることが出来ます。
これは、ごく小規模の例えば10台程度の機器しか無い様なネットワークでは、
非常にもったいない事になります。
まして、クラスAやクラスBでは、もっと無駄になります。
そこで、ホスト部をサブネットマスクで自由自在に区切り利用する方法が考え出されています。
これをCIDRと言います。
当初、人間は、見た目で、ネットワークアドレスの左端のビットによってクラスを判断していましたが、
CIDRが使い出されると、何処までがネットワーク部で何処からがホスト部なのか判らなくなります。
いちいち、IPアドレスにサブネットマスクを併記するのも、面倒臭いです。
そこで、「IPアドレス/ネットワーク部のビット数」と表記する事で、判断出来る様にしています。
上記の例のネットワークは、192.1.5.0/24 という表記になります。
192.1.5.0というネットワークはクラスCで、
192.1.5.1から192.1.5.254まで、254個のIPアドレスを割り振る事が出来ます。
上記の会社の例で、このまま使っても良いのですが、
この会社には4つの部署が有るので、部署ごとに別のネットワークにしたいとします。
各部署には最大50個のIPアドレスが必要とします。
この様な場合、以下の様に設定します。
ネットワークアドレス(192.1.5.?/26)
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
n n
0 0 0 0 0 0
サブネットマスク(255.255.255.192/26)
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1
0 0 0 0 0 0
上記のn nの部分に2ビットを当てはめる事で、
経理部:ネットワークアドレス 192.1.5.0/26
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 0
0 0 0 0 0 0
開発部:ネットワークアドレス 192.1.5.64/26
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 1
0 0 0 0 0 0
営業部:ネットワークアドレス 192.1.5.128/26
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
1 0
0 0 0 0 0 0
総務部:ネットワークアドレス 192.1.5.192/26
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
1 1
0 0 0 0 0 0
という4つのネットワークを作ることが出来ます。
例えば、上から2番目の、開発部の、
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 1
h h h h h h
のネットワークで考えると、
ネットワークアドレスは、ホスト部が全て0の、192.1.5.64/26、
ブロードキャストは、ホスト部が全て1の、192.1.5.127/26、
よって、同じネットワークとして利用出来るIPアドレスは
192.1.5.65から192.1.5.126までの62個ということになります。
また、IPアドレスが192.1.5.100の端末は、
この開発部のネットワーク内で通信出来る事が判ります。
IPアドレス(192.1.5.100/26)
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 1
1 0 0 1 0 0
サブネットマスク(255.255.255.192/26)
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1
0 0 0 0 0 0
ネットワークアドレス(ホスト部が全て0。 - 192.1.5.64/26)
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 1
0 0 0 0 0 0
ブロードキャストアドレス(ホスト部が全て1。 - 192.1.5.127/26)
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1
0 1
1 1 1 1 1 1
この設定を間違えると、
本来、繋がってはならない機器に繋がってしまったり、
繋がらなければならないのに繋がらなかったり、といったトラブルになります。