1. 序章

ネットワークを設計するときは、このネットワークに必要なアドレスの数を常に知る必要があります。 また、ネットワーク内の各デバイスにアドレスを割り当てることができるように、ネットワーク内のIPアドレスの範囲を知りたいと思います。

このチュートリアルでは、サブネットマスクを指定してIPアドレスの範囲を見つける簡単な方法を示します。

2. 問題の説明

IPv4では、IPアドレスは32ビットの数値で構成されます。 そして、それを4オクテット(それぞれ8ビット)で表します。 通常、ネットワークを参照するときは、サブネットも参照します。 このサブネットは数値(例:/ 24)にすることができ、IPアドレス(例/255.255.255.0)のように書くことができます。 このサブネットから、このネットワークのIPアドレスを調べたいと思います。

たとえば、ネットワーク192.168.0.1/24(またはサブネット255.255.255.0)がある場合、192.168.0.0から192.168.0.255までの256の使用可能なアドレスがあります。

3. アルゴリズムのアイデア

一般に、IPアドレスを32ビットの数値として扱い、サブネットマスクがの場合、サブネットマスクは理論的にはの間の値を取ることができます。 次に、推定する2つのことがあります。指定されたサブネットマスクで可能なアドレスの数と、開始アドレスです。

可能なアドレスの数は、次の式で簡単に取得できます。 つまり、のサブネットマスクがある場合、可能なアドレスはです。 また、サブネットマスクがの場合、可能なアドレスの数はです。これは、この場合、指定されたアドレスが唯一の可能なアドレスであることを意味します。 のサブネットマスクの場合のもう1つの例では、アドレスがあります。

次に、このサブネットマスクをオクテット形式で解釈する必要があります。 のサブネットマスクがある場合、実際には32ビットの数値があり、残りの24ビットは1であり、残りは0です

前の表から、サブネットマスクをどのように解釈できるかがわかります。 したがって、192.168.0.10 / 24のようなIPアドレスがある場合は、それをテーブルに書き留めて、次と比較したバイナリオクテットを表示できます。

4. サブネット開始アドレス

次のサブネットマスクで開始アドレスを見つけるには、IPアドレスとサブネットマスクの間でバイナリの「and」操作を実行するだけです。

5. サブネットの最終アドレス

最後に、最後のIPアドレスを計算しますサブネットマスクのビット単位のバイナリ逆数を使用して「or」演算を最初のIPアドレスに適用します。

これらの簡単な手順で、可能なIPアドレスの数を見つける方法を知っています。 また、最初と最後のIPアドレスを見つけることができ、範囲は192.168.0.0から192.168.0.255までになります。

6. 例

オクテットの1つに正確に存在しないサブネットマスクがある場合も、同じ考えが起こります。 192.168.0.10/30の例を見てみましょう。 同じ考えに従うことで、可能なIPアドレスが得られます。

サブネットマスクが10.0.0.0/20のように最後のオクテットにないもう1つの例を見てみましょう。 この場合、可能なIPアドレスがあります。

幸い、ほとんどのプログラミング言語では、二項演算を行うために二項と小数の間で変換する必要はありません。 したがって、ほとんどのカウント可能な数値(整数や文字など)に二項演算を直接適用できます。 つまり、IPアドレスを32ビットの数値で表すか、それぞれ8ビットの数字(文字やバイトなど)を使用して表すことができます。

7. IPv6

IPv6では、サブネットの同じ考え方はIPv4に似ています。 ただし、違いはアドレスのサイズと許可される範囲にあります。 IPv6アドレスには、IPv4のビットと比較したビットがあります。アドレスは、IPv4のオクテットと比較してセグメントで表されます。 各セグメントは4つの16進数で、範囲は〜で、IPv4のオクテットあたり8ビット(10進数の範囲は〜)と比較されます。 IPv6のブロック間の区切りは、IPv4で使用されるドット(。)と比較してコロン(:)です。

一般に、IPv4で行ったのと同じ方法で、使用可能なIPアドレスの数を取得できます。 したがって、サイズのサブネットがある場合、使用可能なIPアドレスがあります。 そして、ビット単位でサイズビットのマスクを適用することにより、最初のビットを取得できます。最初のビットは1で、残りは0です。 そして、マスクの逆に最初のアドレスを追加することで、最後のアドレスを取得できます(最初のビットが0で、残りが1のビット)。

のIPv6の例を見てみましょう。 各セグメントは、16バイナリビットに等しい4桁の16進数として書き込まれることに注意してください。 アドレスの数は次のようになります:

と同等であることに注意してください。 もう1つの注意点は、IPv6アドレスは、任意のセグメントの先行ゼロを削除することによって短い形式をとることもできるということです。

したがって、最初のアドレスの例を記述します。

また、別の短縮形は、空のセグメントのシーケンスの1つ(すべてゼロのセグメント)を二重コロンに置き換えることです。 したがって、このアドレスの他の短縮形は次のようになります。

短縮バージョンでは、ゼロセグメントを省略するために複数回は許可されないことに注意してください。 したがって、次のように対処します。

短縮バージョンは次のようになります。

または:

この短縮バージョンでは、128ビットが8つのセグメントに分割されていることがわかっているため、削除されたゼロの数を知ることができます。 したがって、8から削除されたセグメントの数がわかり、これらは省略されたゼロです。

8. 複雑

IPアドレスの範囲を見つける時間とスペースの複雑さは、範囲を見つけるためにサブネットマスクを数式に入れる必要があるためです。

9. 結論

この記事では、サブネットマスクから可能なIPアドレスの範囲を推定する簡単な方法について説明しました。