サブネットマスクの覚書

グローバル・プライベートIPアドレス、サブネットマスク、CIDR

最終更新日 2009/8/3

IPアドレス(IP Address)ってなに?

クラスについて

 IPアドレスはインターネットに接続しているパソコンやルーターの、通し番号のようなもの、と考えたらわかりやすいかもしれません。
 現在広く利用されているIPアドレスはIPv4アドレスです。これはIPアドレスを32ビットで設定し、総数は4294967296(約43億)になります。
 これらはグローバルIPアドレスと呼ばれ、世界中でたった一台のノードに割り当てられます。誰かのパソコンと重複しないようになっています。
クラスA 0.0.0.0-127.255.255.255
クラスB 128.0.0.0-191.255.255.255
クラスC 192.0.0.0-223.255.255.255
クラスD 224.0.0.0-239.255.255.255
クラスE 240.0.0.0-255.255.255.255

 もしクラスAを利用しているなら。ネットワークアドレス部は8ビット、ホスト部は24ビットです。
 クラスBならネットワークアドレス部は16ビット、ホスト部は16ビット。
 クラスCならネットワークアドレス部は24ビット、ホスト部は8ビットです。
 クラスDはマルチキャスト用、クラスEはIANAが実験用に使っているそうです。

[注意]
 サブネッティングもCIDRも利用していないときのサブネットマスク(クラスCなら255.255.255.0)を、ナチュラルマスクと呼びます。サブネットマスクについては後述します。

 32ビットを8ビットずつ、つまり1バイトずつに分けて考えてください。それぞれ1バイトずつをオクテットとよびます。
 もし[199.112.113.114]のIPアドレスがあったとします(これはクラスCです)。とりあえず一番右の[114]の部分を第四オクテットと呼び、同様に[199.112.113]の部分を左から第一、第二、第三オクテットと呼びます。
 それぞれのオクテットは8ビット分です(32ビットの4分割分)、そしてオクテットは、十進法では0-255の範囲の数字で構成されます。これは二進法では00000000-11111111です。
 十進法での[255.255.255.255]は二進法の[11111111.11111111.11111111.11111111]になります。また十進法の[199.112.113.114]は二進法の[11000111.01110000.01110001.01110010]です。

 もしネットワークアドレスの部分が24ビットなら、左の3つのオクテットがネットワークアドレス部になります。十進法でまとめて表記しますと[199.112.113.0]の[199.112.113]の部分です。第4オクテットの[114]の部分はホスト部です。
 [199.112.113]の部分で一つのクラスCのネットワーク、[まとめて管理できる部分]ができます。もちろん分割して利用することもできるでしょう、でもその説明はあとにしますね。

 クラスCの[199.112.113.0] - [199.112.113.255]を割り当てられていて、それをまとめて管理しているなら(一つのセグメントで、サブネット分割していないなら)。
 一番右の第四オクテットの0-255の範囲が、一つのネットワーク内部で実際に利用できる範囲となります。でも末尾が0と255はノード(パソコンやルーター)には割り当てられないので、割り当てられるIPアドレスは1-254の254個になります(ゲートウェイを含みます)。
 このときの末尾が255のIPアドレスはブロードキャストアドレスで、ネットワーク内部の全てのノード(ノードとは、パソコンやLANプリンターと考えてください)を呼び出すのに用いられます。また末尾が0のIPアドレスは、そのネットワークそのものをあらわします(ネットワークアドレス)。

 ちなみに127.0.0.0-127.255.255.255はループバック。そのノード自身を表します。

 また0.0.0.0は特別な意味を持っています。Windowsで[netstat -r]の結果として表示される、デフォルトの経路の意味としても使われます。またDHCPサーバーからIPアドレスの取得に失敗したノードが「とりあえず仮に名乗る」IPアドレスです。

プライベートIPアドレス

 プライベートIPアドレスは、LAN内部でDHCPを利用したり、もしくは静的に割り当てて利用します。実際に利用する範囲としては、以下のIPアドレスが[推奨]されています。つまりLAN内部限定のIPアドレスです。
 これらはRFC1918で規定されています。
 「IANAが規定したプライベートIPアドレスを使いたくない」というひとは、違うものを利用してもいいのかもしれません(ルーターが対応していれば、の話です)。

 グローバルIPアドレスとプライベートIPアドレス(後述)の違いがわかりづらいですか?
 グローバルIPアドレスは電話番号、プライベートIPアドレスは内線番号のようなものです。内線番号に外部から、直接電話はかけられませんね?

クラス プライベートIPアドレス サブネットマスク CIDR表記では
クラスA 010.000.000.000-010.255.255.255 255.0.0.0 10.0.0.0/8
クラスB 172.016.000.000-172.031.255.255 255.240.0.0 172.16.0.0/12
クラスC 192.168.000.000-192.168.255.255 255.255.0.0 192.168.0.0/16

あなたの家庭内LANとプライベートIPアドレス

 ときどきLANを構築したばかりの時に、ルーターから[192.168.0.255]などへのブロードキャストが何十回も発生することがあります。これはDHCPという、プライベートIPアドレスを自動的にLAN内のノードに割り当てる仕組みが有効になっているからかもしれません。
 DHCPからはIPアドレスだけではなく、ゲートウェイアドレス(ルーターなどのIPアドレス)、サブネットマスク、参照するDNSサーバーのIPアドレスなども得られます。もちろんこの仕組みを利用しないで、ノードに個別にIPアドレスを割り当てることもできます。このときも、LAN内部に同じプライベートIPアドレスのノードができないように注意する必要があります。

 家庭向けブロードバンドルーターでは、クラスCのプライベートIPアドレスをサブネットマスク[255.255.255.0]で利用するケースが多いかもしれません。192.168.0.0/24です。
 ルーターのLAN側のIPアドレスが[192.168.0.1]なら、パソコンに割り当てられるのは(サブネットマスクが[255.255.255.0]なら)[192.168.0.2] - [192.168.0.254]の範囲になります。

例:WEB - ルーターのグローバールIPアドレス[199.112.113.114] - [ルーター] - ルーターのプライベートIPアドレス[192.168.0.1] - プライベートIPアドレスを利用したパソコン

169.254.x.xって?APIPA機能によるLINKLOCALアドレス

 このIPアドレスは、APIPAという機能により自動的に割り当てられるIPアドレスです。DHCPサーバーが不在の環境で、なにも設定していないパソコンをLANに接続したときに、利用されるかもしれません。LINKLOCAL Address(リンクローカルアドレス)ともよばれています。

 このIPアドレスはルーターを超えることはできないため、適切にルーティングされないでしょう。このままではメールの送受信などはできません。

 Special-Use IPv4 Addresses(RFC3330)により、169.254.0.0/16(169.254.0.0 - 169.254.255.255)の範囲が指定されています。

IPアドレス(IP Address)を管理するためのしくみ

サブネット(Subnet) - アドレス空間の分割

 プロバイダーの企業向け契約では、クラスCのIPアドレスが199.x.x.0-199.x.x.255ではなくてその一部だけ割り当てられることもあります。
 たとえばIPアドレスが[199.x.x.0/25]なら、ネットワークアドレス部は25ビット、ホスト部は7ビット(32-25=7)になります。この例では十進法でのサブネットマスクは[255.255.255.128](第4オクテットの十進法の128は、二進法では10000000)となり、利用できるIPアドレスは[199.x.x.0] - [199.x.x.127]です。この場合はネットワークアドレスは[199.x.x.0] 、ブロードキャストアドレスは [199.x.x.127]になります。
 また[199.x.x.128/25]なら、利用できるIPアドレスは[199.x.x.128] - [199.x.x.255]です。この場合のネットワークアドレスは[199.x.x.128] 、ブロードキャストアドレスは [199.x.x.255]になります

 IPアドレスの末尾の[/25]はスラッシュマスクで、ネットワークアドレス部が25ビットという意味です。この[25]などの数字をプリフィックス値と呼びます。現在のIPv4では32ビットでIPアドレスを指定しています。ですからネットワークアドレスを指定するビット数とホストを指定するビット数を足すと、32ビットとなります。

[注意]
 このスラッシュマスクによるサブネットマスクの書きかたを、CIDR表記と呼びます。ネットワーク プレフィックス長表記と呼ぶこともあるみたいです。

 [/29]ならサブネット数は32、サブネットごとで利用できるIPアドレスは8個(256を32で割ると8なので)ありますけど、ブロードキャストアドレスとネットワークアドレスの2つが引かれるので、6個のIPアドレスをノードに割り当てられます。この場合の第4オクテットは、下の表のようになります。

二進法 十進法 説明
10000000 128 ネットワークアドレス
10000001 129 個別のノードに割り当て可能。
(ゲートウェイのルーター等を含む)
10000010 130
10000011 131
10000100 132
10000101 133
10000110 134
10000111 135 ブロードキャストアドレス

 このような分割の仕組みをサブネット化(subnetting)と呼び、分割されたものをサブネット・もしくはサブネットワークと呼びます。これはサブネットマスクにより複数のサブネットに小分けする仕組みです。
 この時に用いられるサブネットマスクは、たとえばクラスCなら[255.255.255.0]ではなくて[255.255.255.128]や[255.255.255.64]などさまざま。このような末尾が128や64(二進法表記で00000000、十進法表記で0ではない)サブネットマスクを可変長サブネットマスク(Variable Length Subnet Mask)とよびます。

ビットマスク 二進法では第4オクテットは? サブネットの数 サブネットごとのIPアドレスの数 ノードに実際に割り当て可能なIPアドレスの数(ゲートウェイを含む)
24 00000000 1 256 254
25 10000000 2 128 126
26 11000000 4 64 62
27 11100000 8 32 30
28 11110000 16 16 14
29 11111000 32 8 6
30 11111100 64 4 2
31 11111110 - 2 利用できません
32 11111111 - 1 HOSTを表します
 アドレス空間のIPアドレスの数(n)から、ネットワークアドレスとブロードキャストアドレスの2つを引いた数が、実際に利用できるノード(ルーターやパソコン)の数になります(n-2)。

 わかりやすいように、二進法と十進法の一覧表を書いておきます。

二進法と十進法の一覧表
二進法 十進法 二進法 十進法
00000000 0 - -
10000000 128 10000000 128
11000000 192 01000000 64
11100000 224 00100000 32
11110000 240 00010000 16
11111000 248 00001000 8
11111100 252 00000100 4
11111110 254 00000010 2
11111111 255 00000001 1

 なぜわざわざ小分けにするのでしょう?もしプロバイダーがどこかの企業に、クラスCをまるごと一つ与える契約をしたとすると、利用できるIPアドレスは[199.x.x.0] - [199.x.x.255]です。でも254台(256個から0と255の分を引いた数)もノードがある会社なんて、それほど多くはないでしょ?もし100台しかないならば、残りの154個のIPアドレスが無駄になります(利用される機会がないという意味です)。
 現在のIPv4では約43億個のIPアドレスが作成されますけど、それでも十分ではないのです。IPアドレスは無限に存在するのではなく、枯渇する日が近づいています。つまりそれを回避するための仕組みです。
 
 でももうすぐIPv6が本格的に利用されるようになると、ほぼ無限の数のIPアドレスができるのでしょうね。IPアドレスの数は128ビットなので43億×43億×43億×43億個になります。
[注意]
 サブネット化はクラスCだけではなく、大企業や国の機関や大学が所有するクラスA、クラスBのアドレス空間でも行なわれます。
 ちょっとおさらいです。
 ある範囲のIPアドレスをアドレス空間とよびます。
 それをサブネット化(subnetting)によって分けたひとつひとつのかたまりを、サブネットとよびます。
 クラスCのアドレス空間から分割されたサブネットは、それぞれ別のアドレス空間をもつことになります、そしてそのひとかたまりをアドレスブロックとよびます。

 似ているので、セグメントと間違うひとも多いかもしれません・・・
 もしブロードバンドルーターに複数のルーターをセグメントルーターとして接続して、それぞれ異なるアドレス空間を使う環境があったとします。
 たとえばブロードバンドルーターのLAN側は192.168.0.0/24、そしてそれに接続するそれぞれのセグメントルーターの内側で192.168.1.0/24、192.168.2.0/24のアドレス空間をつかうとき。
 セグメントルーターの内側の範囲のひとまとめを、セグメントとよびます。

[注意]
 ルーターだけではなく、スイッチやリピーターで分けられた範囲をセグメントとよぶひともいます。
 わたしはルーターからルーティングされている範囲をセグメントと呼んでいますけど・・・

CIDR(Classless Inter-Domain Routing)

 既存のクラスA、B、CといったIPネットワークアドレス部とIPホストアドレス部の8ビット単位でのクラス分けをなくすものです。
 昔は大企業ならクラスBのアドレス空間をNICから割り当てられていたのに、IPアドレスが枯渇してきたため、クラスCのネットワークアドレスを複数もらってCIDRでまとめるようになっているそうです。

 例)192.1.2.0/23なら一つのネットワーク内部で192.1.2.1から192.1.3.254までのアドレス空間のIPアドレスを利用できるようになります。

 CIDRによりアドレス空間をまとめることを、スーパーネット化(supernetting)、そしてまとめられたものはスーパーネットとよびます(CIDR ブロックとよぶ例もあるみたいです)。

自分のパソコンのIPアドレスの調べ方

 パソコンが使っているIPアドレスは、このような方法で確認できます。
Windows 9x、Me
 [スタート] - [プログラム] - [MS-DOSプロンプト] - [winipcfg]と入力して[Enter]
Windows 2000、XP
 [スタート] - [プログラム] - [アクセサリ] - [コマンドプロンプト] - [ipconfig /all]と入力して[Enter]