ネットマスクがサポートするホストの数をプログラムで見つける方法.
たとえば、 /30 がある場合、ルックアップ テーブルを使用せずに、その中にある IP の数をどのように見つけますか?
できれば、255.xxx.xxx.xxx 表記ではなく、「/」表記で作業できるようにします。
ネットマスクがサポートするホストの数をプログラムで見つける方法.
たとえば、 /30 がある場合、ルックアップ テーブルを使用せずに、その中にある IP の数をどのように見つけますか?
できれば、255.xxx.xxx.xxx 表記ではなく、「/」表記で作業できるようにします。
式は次のとおりです。2 ^ (32 - ネットマスク) - 2 ここで、ネットマスクは、上記の Cisco 表記で示したビット カウントです。したがって、/30 マスクを持つネットワークには 2 つの使用可能なアドレスがあります。
最小のネットワーク番号は常にネットワーク セグメント自体を表し、最大のネットワーク番号は常にブロードキャストです。これにより、式の末尾に -2 が付きます。
標準表記では、aaa.bbb.ccc.ddd ネットマスクを符号なし 4 バイト整数に変換し (多くのネットワーク ライブラリにこの関数があります)、2 ^ 32 - 2 からそれを引きます。
n は「/」の後の数字です。
>>> def number_of_hosts(n):
... return 2 ** (32 - n)
...
>>> number_of_hosts(32)
1
>>> number_of_hosts(30)
4
/ 30を使用すると、可能なホストは4つだけになります。
32-30 = 2
2 ^ 2 = 4
/ 24を使用すると、256のホストが可能になります32-24 = 8
8 ^ 2 = 256
/ 23を使用すると、512のホストが可能になります32-23 = 9
9 ^ 2 = 512
これは、サブネットマスクのビット表現によるものです。
255.255.255.252は次のように変換されます
11111111.11111111.11111111.11111100
最後の2バイトは=0であることに注意してください。これは32-30=2の場合と同じ2です。
また、すべてのサブネットで2つのIPが失われます。1つはブロードキャストアドレス用で、もう1つはゲートウェイアドレス用です。
http://www.unixwiz.net/techtips/netmask-ref.html
これにより、何をする必要があるかを判断するために必要なすべてのロジックが提供されます。
2^(32-n) - 2、ここで n は数値で、この場合は 30 です。数値 n は、アドレス範囲でカバーされるビット数を示します。これにより、残りの 32-n ビットが得られます。通信網。したがって、合計で 2^(32-n) 個のアドレスが可能です。答えを得るには、ネットワーク アドレスとブロードキャスト アドレスの 2 を引きます。