戻る 次へ

付録 B アドレス空間のビット マスク

Helix Universal Server の多くの機能では、IP アドレスにビット マスクを割り当てることによって、一定範囲の IP アドレスを識別できます。Helix Universal Server はこのビット マスクを、単一の連続したブロックのアドレス空間として解釈します。この付録では、一定範囲の IP アドレスを識別するための、ビット マスクの作成方法について説明します。

IP アドレスの基本構成について

IP アドレスの構成についての基本的な概念を確認すると、ビット マスク機能の理解に役立ちます。IP アドレスは 32 ビットで、4 つの 8 ビット オクテットに分割されています。オクテットの各ビットには、左から順に 128 から 1 までの値が割り当てられています。値が使用されている場合は、ビットに 1 がセットされます。ドットで区切られたオクテットの 10 進数の値は、各オクテットのビット値の合計で決まります。オクテットの各ビット値を以下に示します。

ビット 1 ビット 2 ビット 3 ビット 4 ビット 5 ビット 6 ビット 7 ビット 8
ビット値 128 64 32 16 8 4 2 1

0 から 255 の数値は、オクテットの各ビットに 1 または 0 をセットして表現できます。以下の表記例は、両方とも同じ IP アドレスを表します。

ドット区切り 10 進数

192.0.1.2

同上 32 ビット 2進数 11000000 00000000 00000001 00000010

ビット マスクを使用したアドレス空間の識別

一定範囲の IP アドレスを示すには、最初に範囲内の「最小」の IP アドレスを識別し、続いて範囲内の最小の IP アドレスと最大の IP アドレスの間のビット数を示します。たとえば、192.0.1.255 から 192.0.1.0 までの IP アドレスを考えます。

これら 2 つのアドレスからなる範囲には、256 個のアドレスがあります (実際には、すべて 0 およびすべて 1 のアドレスは予約されているため 254 個です)。このアドレス範囲では、192.0.1.0 が最小です。また、最小アドレスと最大アドレスの先頭 3 オクテット、つまり先頭の 24 ビットは完全に一致しています。以下のアドレスとビット マスクの 2 進数表記を考えます。

アドレスおよびビット マスク
アドレスおよびマスク ドット区切り 10 進数 同左 32 ビット 2 進数
最大アドレス 192.0.1.255 11000000 00000000 00000001 11111111
最小アドレス 192.0.1.0 11000000 00000000 00000001 00000000
ビット マスク 24 ビット 11111111 11111111 11111111 00000000

ご覧のとおり、最大アドレスと最小アドレスの先頭 24 ビットは完全に同じです。アドレスの最後尾オクテットにどのような 10 進数 (0 から 255 まで) を使用しても、同じ結果になります。ビット マスクでは、1 はビットの評価を示し、0 はビットのマスクを示します。したがって、255.255.255.0 というビット マスクを上記の最小 IP アドレスに割り当てると、最大 256 個の IP アドレスを持つアドレス空間を示すことになります。

スラッシュ表記

上記の表では、ビット マスクはドット区切り 10 進数と 32 ビット 2 進数形式の両方で記載されています。ただし、この同じアドレス空間は、以下のような「スラッシュ表記」と呼ばれる形式で示すこともできます。

192.0.1.0/24

スラッシュ表記では、範囲内の最小 IP アドレス、スラッシュ、および評価対象のビット数を示す値が使用されます。Helix Universal Server ではこの方式でビット マスクを表記するため、上記の点を理解していると役に立ちます。ビット数 (0 ビットから 32 ビットまで) はプルダウン リストから選択します。

アドレス空間のサイズ

アドレス空間のサイズは、ビット マスクに含まれるビット数によって決まります。使用されるビット数が少ないほど、アドレス空間に含まれるアドレスは多くなります。8 ビット マスクの場合には 224 (2 の 24 乗) 個のアドレスが入りますが、24 ビット マスクの場合は 28 (2 の 8 乗) 個だけです。

ビット境界

ビット境界もまた、アドレス空間に含まれるアドレスを決定づける要因です。ビット境界のしくみを理解するには、各オクテットに 8 ビットが含まれていることと、各ビットには値が割り当てられていることを思い起こしてください。アドレス範囲は、オクテットの各ビット値に対応します。さらに、この範囲はビット境界を超えることはできません。たとえば、以下のアドレスについて考えます。

不適切なマスクによるビット境界
アドレスおよびマスク ドット区切り 10 進数 同左 32 ビット 2 進数
最大アドレス 192.0.0.2 11000000 00000000 00000000 00000010
最小アドレス 192.0.0.1 11000000 00000000 00000000 00000001
ビット マスク 31 ビット 11111111 11111111 11111111 11111110

上記表の範囲内には連続したアドレスが 2 つだけありますが、これらのアドレスを使用して範囲を作成することは不可能です。その理由は、「31 番目のビットが各アドレスで異なる」ためです。これをビット境界と呼びます。これらのアドレスに対する範囲を作成するには、4 番目のオクテットの 6 番目のビット、つまり 30 ビット マスクを使用します。ただし 30 ビットを使用すると、以下のように余分なアドレスが含まれてしまいます。

適切なマスクによるビット境界
アドレスおよびマスク ドット区切り 10 進数 同左 32 ビット 2 進数
最大アドレス 192.0.1.3 11000000 00000000 00000001 00000011
192.0.1.2 11000000 00000000 00000001 00000010
192.0.1.1 11000000 00000000 00000001 00000001
最小アドレス 192.0.1.0 11000000 00000000 00000001 00000000
ビット マスク 30 ビット 11111111 11111111 11111111 11111100

ビット境界の決定

下記の表に、有効なリテラル ビット範囲を示します。対象オクテットに対するビットを、左側の「ビット」欄から探します。次に、対応する「リテラル ビット範囲」欄の中から、各範囲で使用可能な 10 進数を探します。

たとえば、前述の問題では 4 番目のオクテットの 7 番目のビット (31 番目のビット) を最初に適用しようとしました。ただし、表の 7 行目には、10 進数の 1 から 2 を連続して含む範囲はありません。範囲にこれらを含めるには、4 番目のオクテットの 6 番目のビット (30 番目のビット) を使用する必要があります。表の 6 行目には、1 から 2 を含む 10 進数の範囲 (0〜3 の範囲) があります。

リテラル ビット範囲
ビット リテラル ビット範囲
1 0〜127、または 128〜255 の範囲
2 0〜63、64〜127、128〜191、または 192〜255 の範囲
3 0〜31、32〜63、64〜95、96〜127、128〜159、160〜191、192〜223、224〜255 の範囲
4 0〜15、16〜31、32〜47、48〜63、64〜79、80〜95、96〜111、112〜127、128〜143、144〜159、160〜175、176〜191、192〜207、 208〜223、224〜239、240〜255 の範囲
5 0〜7、8〜15、16〜23、24〜31、32〜39、40〜47、48〜55、56〜63、64〜71、72〜79、80〜87、88〜95、96〜103、104〜111、112〜119、120〜127、128〜135、136〜143、144〜151、152〜159、160〜167、168〜175、176〜183、184〜191、192〜199、200〜207、208〜215、216〜223、224〜231、232〜239、240〜247、248〜255 の範囲
6 0〜3、4〜7、8〜11、12〜15、16〜19、20〜23、24〜27、28〜31、32〜35、36〜39、40〜43、44〜47、48〜51、52〜55、56〜59、60〜63、64〜67、68〜71、72〜75、76〜79、80〜83、84〜87、88〜91、92〜95、96〜99、100〜103、104〜107、108〜111、112〜115、116〜119、120〜123、124〜127、128〜131、132〜135、136〜139、140〜143、144〜147、148〜151、152〜155、156〜159、160〜163、164〜167、168〜171、172〜175、176〜179、180〜183、184〜187、188〜191、192〜195、196〜199、200〜203、204〜207、208〜211、212〜215、216〜219、220〜223、224〜227、228〜231、232〜235、236〜239、240〜243、244〜247、248〜251、252〜255 の範囲
7 0〜1、2〜3、4〜5、6〜7、8〜9、10〜11、12〜13、14〜15、16〜17、18〜19、20〜21、22〜23、24〜25、26〜27、28〜29、30〜31、32〜33、34〜35、36〜37、38〜39、40〜41、42〜43、44〜45、46〜47、48〜49、50〜51、52〜53、54〜55、56〜57、58〜59、60〜61、62〜63、64〜65、66〜67、68〜69、70〜71、72〜73、74〜75、76〜77、78〜79、80〜81、82〜83、84〜85、86〜87、88〜89、90〜91、92〜93、94〜95、96〜97、98〜99、100〜101、102〜103、104〜105、106〜107、108〜109、110〜111、112〜113、114〜115、116〜117、118〜119、120〜121、122〜123、124〜125、126〜127、128〜129、130〜131、132〜133、134〜135、136〜137、138〜139、140〜141、142〜143、144〜145、146〜147、148〜149、150〜151、152〜153、154〜155、156〜157、158〜159、160〜161、162〜163、164〜165、166〜167、168〜169、170〜171、172〜173、174〜175、176〜177、178〜179、180〜181、182〜183、184〜185、186〜187、188〜189、190〜191、192〜193、194〜195、196〜197、198〜199、200〜201、202〜203、204〜205、206〜207、208〜209、210〜211、212〜213、214〜215、216〜217、218〜219、220〜221、222〜223、224〜225、226〜227、228〜229、230〜231、232〜233、234〜235、236〜237、238〜239、240〜241、242〜243、244〜245、246〜247、248〜249、250〜251、252〜253、254〜255 の範囲
8 完全一致のみ

0 ビット マスクと 32 ビット マスクの動作

0 ビット マスクと 32 ビット マスクを使用すると、特別な状況が生成されます。IP アドレスに 32 ビット マスクを適用すると、1 つだけのリテラル範囲が作成されます。たとえば、以下のアドレスに 32 ビット マスクを適用する場合を考えます。

192.0.1.1 /32

Helix Universal Server が着信 IP アドレスをこの IP アドレスに対して評価するときには、192.0.1.1 だけが一致します。着信アドレスの 32 ビットすべてが元のアドレスと一致する必要があります。

32 ビット マスクを適用するアドレスに一致するアドレスは 1 つしかなく、0 ビット マスクを適用するアドレスの場合はその逆となります。IP アドレスに 0 ビット マスクを適用するということは、すなわち Helix Universal Server にすべてのアドレスを一致させるよう指示することになります。必要でありませんが、以下のようにすべて 0 のアドレスを入力します。

0.0.0.0 /0

上記の入力で良い理由は、Helix Universal Server は BOOLEAN 型の and 演算を使用して、着信アドレスを評価するためです。and 演算のアルゴリズムでは任意の値と 0 の組み合わせは 0 になるため、すべての着信アドレスは、元アドレスに入力した 0 だけのアドレスと等しくなります。


RealNetworks, Inc. © 2002 RealNetworks, Inc. All rights reserved.
詳細については、RealNetworks を参照してください。
画面左側に目次フレームが表示されない場合は、ここをクリックしてください。
戻る 次へ