たとえば、255.255.255.242のサブネットがあり、そのサブネット内に192.168.1.101という既知のIPがあるとします。
今私がIPの範囲を計算する方法はこれです:
サブネットマスクで、255ではない最初のオクテットを見つけます。私の例では、4番目のオクテットと242です。したがって、256を取り、242を引くと、14になります。これで、これらのネットワーク、192.168がわかります。 .1.xネットワーク、すべての範囲は14です。したがって、それらのリストを開始してください...
192.168.1.0
192.168.1.14
192.168.1.28
....42
....56
....70
....84
....98
....112
ここで停止できます。私のアドレス192.168.1.101は.98ネットワークに分類されます。 192.168.1.112が次のネットワークを開始することがわかっているため、.98には192.168.1.98から192.168.1.111までのすべてのIPアドレスが含まれます。
これが正しく、最も簡単なプロセスかどうかを確認したいと思います。
ネットマスクは一連の1ビットです。ビットは0ギャップなしでシーケンシャルでなければなりません。 1ビットを使用するものはすべてネットワークの一部であり、残りのものはそのネットワーク内のホスト割り当てに有効です。 255.255.255.224には27の「1」ビットがあり、これは/ 27ネットワークであることを意味します。
この権利を計算するには、IPを数値表現に変換する必要があります。たとえば、255.255.255.224は11111111 11111111 11111111 11100000で、4294967264です。192.168.1.101は3232235877(11000000 10101000 00000001 01100101)です。
IPを取得し、ビット単位でネットマスクとANDすると、ネットワークアドレスがわかります。これは範囲の下限です。
11111111 11111111 11111111 11100000 (mask)
11000000 10101000 00000001 01100101 (ip)
-----------------------------------
11000000 10101000 00000001 01100000 = 192.168.1.96 (network address)
マスクの補数(ビットごとのNOT)は、範囲のサイズを示します。
00000000 00000000 00000000 00011111 = 31
したがって、そのIPの範囲は192.168.1.96〜192.168.1.127です。 (127 = 96 + 31)
JoeとDig_123の両方に感謝しますが、Joeの答えは、/ 27魔女の代わりに/ 28サブネットを使用して明確にでき、彼の例に近づき、92-112の間に落ちました。
ジョーは、私があなたの主張を正しく理解していれば、サブネット化されたオクテットを取ると言っています。増分ビット値を決定し、それをSNオクテットのサブネット値に追加します。これにより範囲が与えられ、ネットワーク、最初のホスト、最後のホスト、およびブロードキャストアドレスの値が提供されます。あれは正しいですか?つまり、私の例では、4番目のオクテットは240で、増分は16になります。4番目のオクテットの値は96であるため、16ビット増分の計算範囲内にあり、実際には96と112の間にあります。この例のネットワークアドレスは次のように結論付けることができる16ビット範囲の1つ:
0-15
15-31
32-47
48-63
64-79
80-95
96-111
112-127
128
NW 192.168.1.96 /28
1st 192.168.1.97 /28
Last 192.168.1.110 /28
Bcast 192.168.1.111 /28
ジョーの答えに何かを追加するには:よりプログラムで操作を実行する場合(ビット演算子の知識があると想定)。
最後の数値のみが変更されることはすでにご存じでしょうが、この方法は、後で示すように、他のケースでは少し異なる方法で使用できます。
_Number from mask: 224
Number from IP: 101
_
例: pythonまたはお気に入りの電卓プログラム:
Start address byte: 224 & 101 = 96
_End address byte: (~224 & 255) | 96 = 127
_(~224 & 255)
_は、244に1でなかったすべてのビットを1に設定するだけです(つまり、最後の5ビット)。結果を_96
_でORすると、最初のアドレスから最初の3ビットがコピーされます。
したがって、結果は期待どおりです:192.168.1 .96-192.168.1 .127。
マスクが最後の番号の前で終了する場合、非常によく似た手順があります。例を見てみましょう:
255 .224。0.0をマスクとして使用し、同じIPアドレス(192 .168。1.101)を使用します。
繰り返しますが、処理する数は1つだけです。これは2番目の位置にある168です。
Start address byte: 224 & 168 = 160
_End address byte: (~224 & 255) | 160 = 191
これで、左側の数字(最初の位置)は同じまま(192)となり、右側の残りの数字は0〜255の範囲になります(ユーザーの質問に応じて、1〜254になる場合もあります)。
したがって、ソリューションは次のようになります:192 .16。0.0-192 .191。255.255